class_docstr: Specifies the Conda environment for the step.
  
  Information in this decorator will augment any
  attributes set in the `@conda_base` flow-level decorator. Hence,
  you can use `@conda_base` to set packages required by all
  steps and use `@conda` to specify step-specific overrides.
  
  Parameters
  ----------
  packages : Dict[str, str], default: {}
      Packages to use for this step. The key is the name of the package
      and the value is the version to use.
  libraries : Dict[str, str], default: {}
      Supported for backward compatibility. When used with packages, packages will take precedence.
  python : str, optional
      Version of Python to use, e.g. '3.7.4'. A default value of None implies
      that the version used will correspond to the version of the Python interpreter used to start the run.
  disabled : bool, default: False
      If set to True, disables @conda.
class_docstr_tok: ["Specifies","the","Conda","environment","for","the","step",".","Information","in","this","decorator","will","augment","any","attributes","set","in","the","`","@","conda_base","`","flow-level","decorator",".","Hence",",","you","can","use","`","@","conda_base","`","to","set","packages","required","by","all","steps","and","use","`","@","conda","`","to","specify","step-specific","overrides",".","Parameters","--","--","--","--","--","packages",":","Dict","[","str",",","str","]",",","default",":","{","}","Packages","to","use","for","this","step",".","The","key","is","the","name","of","the","package","and","the","value","is","the","version","to","use",".","libraries",":","Dict","[","str",",","str","]",",","default",":","{","}","Supported","for","backward","compatibility",".","When","used","with","packages",",","packages","will","take","precedence",".","python",":","str",",","optional","Version","of","Python","to","use",",","e.g",".","'","3.7.4","'",".","A","default","value","of","None","implies","that","the","version","used","will","correspond","to","the","version","of","the","Python","interpreter","used","to","start","the","run",".","disabled",":","bool",",","default",":","False","If","set","to","True",",","disables","@","conda","."]
code: def runtime_init(self, flow, graph, package, run_id):
      if self.disabled:
          return
      # Create a symlink to metaflow installed outside the virtual environment.
      self.metaflow_dir = tempfile.TemporaryDirectory(dir="/tmp")
      os.symlink(
          os.path.join(get_metaflow_root(), "metaflow"),
          os.path.join(self.metaflow_dir.name, "metaflow"),
      )
  
      info = os.path.join(
          get_metaflow_root(), os.path.basename(INFO_FILE)
      )
      # Symlink the INFO file as well to properly propagate down the Metaflow version
      if os.path.isfile(info):
          os.symlink(
              info,
              os.path.join(
                  self.metaflow_dir.name, os.path.basename(INFO_FILE)
              ),
          )
      else:
          # If there is no info file, we will actually create one in this new
          # place because we won't be able to properly resolve the EXT_PKG extensions
          # the same way as outside conda (looking at distributions, etc.). In a
          # Conda environment, as shown below (where we set self.addl_paths), all
          # EXT_PKG extensions are PYTHONPATH extensions. Instead of re-resolving,
          # we use the resolved information that is written out to the INFO file.
          with open(
              os.path.join(
                  self.metaflow_dir.name, os.path.basename(INFO_FILE)
              ),
              mode="wt",
              encoding="utf-8",
          ) as f:
              f.write(
                  json.dumps(
                      self.environment.get_environment_info(
                          include_ext_info=True
                      )
                  )
              )
  
      # Support metaflow extensions.
      self.addl_paths = None
      try:
          m = importlib.import_module(EXT_PKG)
      except ImportError:
          # No additional check needed because if we are here, we already checked
          # for other issues when loading at the toplevel.
          pass
      else:
          custom_paths = list(set(m.__path__))
          # For some reason, at times, unique paths appear multiple times. We
          # simplify to avoid un-necessary links.
  
          if len(custom_paths) == 1:
              # Regular package; we take a quick shortcut here.
              os.symlink(
                  custom_paths[0],
                  os.path.join(self.metaflow_dir.name, EXT_PKG),
              )
          else:
              # This is a namespace package, we therefore create a bunch of
              # directories so that we can symlink in those separately, and we will
              # add those paths to the PYTHONPATH for the interpreter. Note that we
              # don't symlink to the parent of the package because that could end up
              # including more stuff we don't want
              self.addl_paths = []
              for p in custom_paths:
                  temp_dir = tempfile.mkdtemp(
                      dir=self.metaflow_dir.name
                  )
                  os.symlink(p, os.path.join(temp_dir, EXT_PKG))
                  self.addl_paths.append(temp_dir)
  
imports: import importlib
  import json
  import os
  import platform
  import sys
  import tempfile
  from metaflow.decorators import FlowDecorator, StepDecorator
  from metaflow.extension_support import EXT_PKG
  from metaflow.metaflow_environment import InvalidEnvironmentException
  from metaflow.util import get_metaflow_root
  from ...None import INFO_FILE
label_desc: Use image node_id 3 for calling the CondaStepDecorator obj's underlying member method code with example usage: obj.runtime_init(flow, graph, package, run_id) without return types