code: def make_pipeline_sdk_required_install_packages():
      return [
          "absl-py>=0.9,<2.0.0",
          "ml-metadata"
          + select_constraint(
              # LINT.IfChange
              default=">=1.14.0,<1.15.0",
              # LINT.ThenChange(tfx/workspace.bzl)
              nightly=">=1.15.0.dev",
              git_master="@git+https://github.com/google/ml-metadata@master",
          ),
          "packaging>=22",
          "portpicker>=1.3.1,<2",
          "protobuf>=3.20.3,<5",
          "docker>=4.1,<5",
          "google-apitools>=0.5,<1",
          "google-api-python-client>=1.8,<2",
          # TODO(b/176812386): Deprecate usage of jinja2 for placeholders.
          "jinja2>=2.7.3,<4",
          # typing-extensions allows consistent & future-proof interface for typing.
          # Since kfp<2 uses typing-extensions<4, lower bound is the latest 3.x, and
          # upper bound is <5 as the semver started from 4.0 according to their doc.
          "typing-extensions>=3.10.0.2,<5",
      ]
  
file_path: tfx/tfx/dependencies.py
imports: import os
label_desc: Use image node_id 2 for calling a global function with example usage: make_pipeline_sdk_required_install_packages() and returns: list