class_docstr: Stores artifacts on Google Cloud Storage.
  
  :param artifact_uri: URI of GCS bucket
  :param client: Optional. The client to use for GCS operations; a default
                     client object will be created if unspecified, using default
                     credentials as described in https://google-cloud.readthedocs.io/en/latest/core/auth.html
class_docstr_tok: ["Stores","artifacts","on","Google","Cloud","Storage",".",":","param","artifact_uri",":","URI","of","GCS","bucket",":","param","client",":","Optional",".","The","client","to","use","for","GCS","operations",";","a","default","client","object","will","be","created","if","unspecified",",","using","default","credentials","as","described","in","https",":","\/\/google-cloud.readthedocs.io\/en\/latest\/core\/auth.html"]
code: def __init__(self, artifact_uri, client=None):
      super().__init__(artifact_uri)
      from google.auth.exceptions import DefaultCredentialsError
      from google.cloud import storage as gcs_storage
      from google.cloud.storage.constants import _DEFAULT_TIMEOUT
  
      self._GCS_DOWNLOAD_CHUNK_SIZE = (
          MLFLOW_GCS_DOWNLOAD_CHUNK_SIZE.get()
      )
      self._GCS_UPLOAD_CHUNK_SIZE = MLFLOW_GCS_UPLOAD_CHUNK_SIZE.get()
      self._GCS_DEFAULT_TIMEOUT = (
          MLFLOW_ARTIFACT_UPLOAD_DOWNLOAD_TIMEOUT.get()
          or MLFLOW_GCS_DEFAULT_TIMEOUT.get()
          or _DEFAULT_TIMEOUT
      )
  
      # If the user-supplied timeout environment variable value is -1,
      # use `None` for `self._GCS_DEFAULT_TIMEOUT`
      # to use indefinite timeout
      self._GCS_DEFAULT_TIMEOUT = (
          None
          if self._GCS_DEFAULT_TIMEOUT == -1
          else self._GCS_DEFAULT_TIMEOUT
      )
      if client is not None:
          self.client = client
      else:
          try:
              self.client = gcs_storage.Client()
          except DefaultCredentialsError:
              self.client = gcs_storage.Client.create_anonymous_client()
  
imports: import datetime
  import importlib.metadata
  import os
  import posixpath
  import urllib.parse
  from collections import namedtuple
  from packaging.version import Version
  from mlflow.entities import FileInfo
  from mlflow.entities.multipart_upload import CreateMultipartUploadResponse, MultipartUploadCredential
  from mlflow.environment_variables import MLFLOW_ARTIFACT_UPLOAD_DOWNLOAD_TIMEOUT, MLFLOW_GCS_DEFAULT_TIMEOUT, MLFLOW_GCS_DOWNLOAD_CHUNK_SIZE, MLFLOW_GCS_UPLOAD_CHUNK_SIZE
  from mlflow.exceptions import _UnsupportedMultipartUploadException
  from mlflow.store.artifact.artifact_repo import ArtifactRepository, MultipartUploadMixin
  from mlflow.utils.file_utils import relative_path_to_artifact_path
label_desc: Use image node_id 1 to create a new GCSArtifactRepository object from inherited base classes: ArtifactRepository, MultipartUploadMixin with example: obj = GCSArtifactRepository(artifact_uri, client)