class_docstr: Base class for a TFX pipeline component.
  
  An instance of a subclass of BaseComponent represents the parameters for a
  single execution of that TFX pipeline component.
  
  All subclasses of BaseComponent must override the SPEC_CLASS field with the
  ComponentSpec subclass that defines the interface of this component.
  
  Attributes:
    SPEC_CLASS: a subclass of types.ComponentSpec used by this component
      (required). This is a class level value.
    EXECUTOR_SPEC: an instance of executor_spec.ExecutorSpec which describes how
      to execute this component (required). This is a class level value.
    DRIVER_CLASS: a subclass of base_driver.BaseDriver as a custom driver for
      this component (optional, defaults to base_driver.BaseDriver). This is a
      class level value.
    PRE_EXECUTABLE_SPEC: an optional PythonClassExecutableSpec of pre-execution
      hook.
    POST_EXECUTABLE_SPEC an optional PythonClassExecutableSpec of post-execution
      hook.
    spec: an instance of `SPEC_CLASS`. See types.ComponentSpec for more details.
    platform_config: a protobuf message representing platform config for a
      component instance.
class_docstr_tok: ["Base","class","for","a","TFX","pipeline","component",".","An","instance","of","a","subclass","of","BaseComponent","represents","the","parameters","for","a","single","execution","of","that","TFX","pipeline","component",".","All","subclasses","of","BaseComponent","must","override","the","SPEC_CLASS","field","with","the","ComponentSpec","subclass","that","defines","the","interface","of","this","component",".","Attributes",":","SPEC_CLASS",":","a","subclass","of","types.ComponentSpec","used","by","this","component","(","required",")",".","This","is","a","class","level","value",".","EXECUTOR_SPEC",":","an","instance","of","executor_spec.ExecutorSpec","which","describes","how","to","execute","this","component","(","required",")",".","This","is","a","class","level","value",".","DRIVER_CLASS",":","a","subclass","of","base_driver.BaseDriver","as","a","custom","driver","for","this","component","(","optional",",","defaults","to","base_driver.BaseDriver",")",".","This","is","a","class","level","value",".","PRE_EXECUTABLE_SPEC",":","an","optional","PythonClassExecutableSpec","of","pre-execution","hook",".","POST_EXECUTABLE_SPEC","an","optional","PythonClassExecutableSpec","of","post-execution","hook",".","spec",":","an","instance","of","`","SPEC_CLASS","`",".","See","types.ComponentSpec","for","more","details",".","platform_config",":","a","protobuf","message","representing","platform","config","for","a","component","instance","."]
docstr: Experimental: resolve pip dependencies into specifiers.
docstr_tok: ["Experimental",":","resolve","pip","dependencies","into","specifiers","."]
code: def _resolve_pip_dependencies(self, pipeline_root: str) -> None:
      """Experimental: resolve pip dependencies into specifiers."""
      if not hasattr(self, "_pip_dependencies"):
          return
      new_pip_dependencies = []
      for dependency in self._pip_dependencies:
          if isinstance(dependency, str):
              new_pip_dependencies.append(dependency)
          elif isinstance(dependency, _PipDependencyFuture):
              resolved_dependency = dependency.resolve(pipeline_root)
              if resolved_dependency:
                  new_pip_dependencies.append(resolved_dependency)
          else:
              raise ValueError(
                  "Invalid pip dependency object: %s." % dependency
              )
      self._pip_dependencies = new_pip_dependencies
  
imports: import abc
  import inspect
  from typing import Any, Dict, Optional, Type, Union
  from tfx import types
  from tfx.dsl.components.base import base_driver
  from tfx.dsl.components.base import base_node
  from tfx.dsl.components.base import executor_spec
  from tfx.types import channel
  from tfx.types.system_executions import SystemExecution
  from tfx.utils import abc_utils
  from tfx.utils import doc_controls
  from google.protobuf import message
label_desc: Use image node_id 11 for calling the BaseComponent obj's underlying member method code with example usage: obj._resolve_pip_dependencies(pipeline_root) without return types