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: Write a local file or directory to the remote ``artifact_uri``.
  
  :param local_path: Path to the file or directory to write.
  :param artifact_path: If provided, the directory in ``artifact_uri`` to write to.
docstr_tok: ["Write","a","local","file","or","directory","to","the","remote","``","artifact_uri","``",".",":","param","local_path",":","Path","to","the","file","or","directory","to","write",".",":","param","artifact_path",":","If","provided",",","the","directory","in","``","artifact_uri","``","to","write","to","."]
code: def log_artifact(self, run_id, local_path, artifact_path=None):
      """
      Write a local file or directory to the remote ``artifact_uri``.
  
      :param local_path: Path to the file or directory to write.
      :param artifact_path: If provided, the directory in ``artifact_uri`` to write to.
      """
      artifact_repo = self._get_artifact_repo(run_id)
      if os.path.isdir(local_path):
          dir_name = os.path.basename(os.path.normpath(local_path))
          path_name = (
              os.path.join(artifact_path, dir_name)
              if artifact_path is not None
              else dir_name
          )
          artifact_repo.log_artifacts(local_path, path_name)
      else:
          artifact_repo.log_artifact(local_path, artifact_path)
  
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 23 for calling the TrackingServiceClient obj's underlying member method code with example usage: obj.log_artifact(run_id, local_path, artifact_path) without return types