class_docstr: A launch project specification.
class_docstr_tok: ["A","launch","project","specification","."]
docstr: Returns a unique string identifying the source of an image.
docstr_tok: ["Returns","a","unique","string","identifying","the","source","of","an","image","."]
code: def get_image_source_string(self) -> str:
      """Returns a unique string identifying the source of an image."""
      if self.source == LaunchSource.LOCAL:
          # TODO: more correct to get a hash of local uri contents
          assert isinstance(self.uri, str)
          return self.uri
      elif self.source == LaunchSource.JOB:
          assert self._job_artifact is not None
          return (
              f"{self._job_artifact.name}:v{self._job_artifact.version}"
          )
      elif self.source == LaunchSource.GIT:
          assert isinstance(self.uri, str)
          ret = self.uri
          if self.git_version:
              ret += self.git_version
          return ret
      elif self.source == LaunchSource.WANDB:
          assert isinstance(self.uri, str)
          return self.uri
      elif self.source == LaunchSource.DOCKER:
          assert isinstance(self.docker_image, str)
          _logger.debug("")
          return self.docker_image
      else:
          raise LaunchError(
              "Unknown source type when determing image source string"
          )
  
imports: import enum
  import json
  import logging
  import os
  import tempfile
  from copy import deepcopy
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, cast
  import wandb
  import wandb.docker
  from wandb.apis.internal import Api
  from wandb.errors import CommError
  from wandb.sdk.launch import utils
  from wandb.sdk.lib.runid import generate_id
  from .errors import LaunchError
  from .utils import LOG_PREFIX, recursive_macro_sub
label_desc: Use image node_id 19 for calling the LaunchProject obj's underlying member method code with example usage: obj.get_image_source_string() and returns: self, self, str, self, ret, self, self