code: def _get_entrypoint(
      self,
      program_relpath: str,
      metadata: Dict[str, Any],
  ) -> List[str]:
      # if building a partial job from CLI, overwrite entrypoint and notebook
      # should already be in metadata from create_job
      if metadata.get("_partial"):
          if metadata.get("entrypoint"):
              entrypoint: List[str] = metadata["entrypoint"]
              return entrypoint
  
          # if entrypoint is not in metadata, then construct from python
          assert metadata.get("python")
  
          python = metadata["python"]
          if python.count(".") > 1:
              python = ".".join(python.split(".")[:2])
  
          entrypoint = [f"python{python}", program_relpath]
          return entrypoint
  
      # job is being built from a run
      entrypoint = [os.path.basename(sys.executable), program_relpath]
  
      return entrypoint
  
imports: import json
  import logging
  import os
  import re
  import sys
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
  import wandb
  from wandb.sdk.artifacts.artifact import Artifact
  from wandb.sdk.data_types._dtypes import TypeRegistry
  from wandb.sdk.lib.filenames import DIFF_FNAME, METADATA_FNAME, REQUIREMENTS_FNAME
  from wandb.util import make_artifact_name_safe
  from .settings_static import SettingsStatic
label_desc: Use image node_id 11 for calling the JobBuilder obj's underlying member method code with example usage: obj._get_entrypoint(program_relpath, metadata) and returns: entrypoint, entrypoint, entrypoint