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","."]
docstr: Return a list of metric objects corresponding to all values logged for a given metric.
  
  :param run_id: Unique identifier for run
  :param key: Metric name within the run
  
  :return: A list of :py:class:`mlflow.entities.Metric` entities if logged, else empty list
docstr_tok: ["Return","a","list","of","metric","objects","corresponding","to","all","values","logged","for","a","given","metric",".",":","param","run_id",":","Unique","identifier","for","run",":","param","key",":","Metric","name","within","the","run",":","return",":","A","list","of",":","py",":","class",":","`","mlflow.entities.Metric","`","entities","if","logged",",","else","empty","list"]
code: def get_metric_history(self, run_id, key):
      """
      Return a list of metric objects corresponding to all values logged for a given metric.
  
      :param run_id: Unique identifier for run
      :param key: Metric name within the run
  
      :return: A list of :py:class:`mlflow.entities.Metric` entities if logged, else empty list
      """
  
      # NB: Paginated query support is currently only available for the RestStore backend.
      # FileStore and SQLAlchemy store do not provide support for paginated queries and will
      # raise an MlflowException if the `page_token` argument is not None when calling this
      # API for a continuation query.
      history = self.store.get_metric_history(
          run_id=run_id,
          metric_key=key,
          max_results=GET_METRIC_HISTORY_MAX_RESULTS,
          page_token=None,
      )
      token = history.token
      # Continue issuing queries to the backend store to retrieve all pages of
      # metric history.
      while token is not None:
          paged_history = self.store.get_metric_history(
              run_id=run_id,
              metric_key=key,
              max_results=GET_METRIC_HISTORY_MAX_RESULTS,
              page_token=token,
          )
          history.extend(paged_history)
          token = paged_history.token
      return history
  
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 4 for calling the TrackingServiceClient obj's underlying member method code with example usage: obj.get_metric_history(run_id, key) and returns: history