class_docstr: Client of an MLflow Tracking Server that creates and manages experiments and runs.
class_docstr_tok: ["Client","of","an","MLflow","Tracking","Server","that","creates","and","manages","experiments","and","runs","."]
code: def _get_artifact_repo(self, run_id):
      # Attempt to fetch the artifact repo from a local cache
      cached_repo = TrackingServiceClient._artifact_repos_cache.get(
          run_id
      )
      if cached_repo is not None:
          return cached_repo
      else:
          run = self.get_run(run_id)
          artifact_uri = add_databricks_profile_info_to_artifact_uri(
              run.info.artifact_uri, self.tracking_uri
          )
          artifact_repo = get_artifact_repository(artifact_uri)
          # Cache the artifact repo to avoid a future network call, removing the oldest
          # entry in the cache if there are too many elements
          if len(TrackingServiceClient._artifact_repos_cache) > 1024:
              TrackingServiceClient._artifact_repos_cache.popitem(
                  last=False
              )
          TrackingServiceClient._artifact_repos_cache[
              run_id
          ] = artifact_repo
          return artifact_repo
  
imports: import os
  from collections import OrderedDict
  from itertools import zip_longest
  from typing import List, Optional
  from mlflow.entities import ExperimentTag, Metric, Param, RunStatus, RunTag, ViewType
  from mlflow.entities.dataset_input import DatasetInput
  from mlflow.exceptions import MlflowException
  from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE, ErrorCode
  from mlflow.store.artifact.artifact_repository_registry import get_artifact_repository
  from mlflow.store.tracking import GET_METRIC_HISTORY_MAX_RESULTS, SEARCH_MAX_RESULTS_DEFAULT
  from mlflow.tracking._tracking_service import utils
  from mlflow.tracking.metric_value_conversion_utils import convert_metric_value_to_float_if_possible
  from mlflow.utils import chunk_list
  from mlflow.utils.async_logging.run_operations import RunOperations, get_combined_run_operations
  from mlflow.utils.mlflow_tags import MLFLOW_USER
  from mlflow.utils.string_utils import is_string_type
  from mlflow.utils.time import get_current_time_millis
  from mlflow.utils.uri import add_databricks_profile_info_to_artifact_uri
  from mlflow.utils.validation import MAX_ENTITIES_PER_BATCH, MAX_METRICS_PER_BATCH, MAX_PARAMS_TAGS_PER_BATCH, PARAM_VALIDATION_MSG, _validate_experiment_artifact_location, _validate_run_id
label_desc: Use image node_id 22 for calling the TrackingServiceClient obj's underlying member method code with example usage: obj._get_artifact_repo(run_id) and returns: cached_repo, artifact_repo