class_docstr: Container for building and publishing ray docker images
code: def _get_canonical_tag(self) -> str:
      # The canonical tag is the first tag in the list of tags. The list of tag is
      # never empty because the image is always tagged with at least the sha tag.
      #
      # The canonical tag is the most complete tag with no abbreviation,
      # e.g. sha-pyversion-platform
      return (
          self.canonical_tag
          if self.canonical_tag
          else self._get_image_tags()[0]
      )
  
file_path: ray/ci/ray_ci/docker_container.py
imports: import os
  from typing import List
  from ci.ray_ci.linux_container import LinuxContainer
  from ci.ray_ci.builder_container import DEFAULT_ARCHITECTURE, DEFAULT_PYTHON_VERSION
label_desc: Use image node_id 3 for calling the DockerContainer obj's underlying member method code with example usage: obj._get_canonical_tag() and returns: unknown