class_docstr: Abstract artifact repo that defines how to upload (log) and download potentially large
  artifacts from different storage backends.
class_docstr_tok: ["Abstract","artifact","repo","that","defines","how","to","upload","(","log",")","and","download","potentially","large","artifacts","from","different","storage","backends","."]
docstr: Log a local file as an artifact, optionally taking an ``artifact_path`` to place it in
  within the run's artifacts. Run artifacts can be organized into directories, so you can
  place the artifact in a directory this way.
  
  :param local_file: Path to artifact to log
  :param artifact_path: Directory within the run's artifact directory in which to log the
                        artifact.
docstr_tok: ["Log","a","local","file","as","an","artifact",",","optionally","taking","an","``","artifact_path","``","to","place","it","in","within","the","run","'s","artifacts",".","Run","artifacts","can","be","organized","into","directories",",","so","you","can","place","the","artifact","in","a","directory","this","way",".",":","param","local_file",":","Path","to","artifact","to","log",":","param","artifact_path",":","Directory","within","the","run","'s","artifact","directory","in","which","to","log","the","artifact","."]
code: def log_artifact(self, local_file, artifact_path=None):
      """
      Log a local file as an artifact, optionally taking an ``artifact_path`` to place it in
      within the run's artifacts. Run artifacts can be organized into directories, so you can
      place the artifact in a directory this way.
  
      :param local_file: Path to artifact to log
      :param artifact_path: Directory within the run's artifact directory in which to log the
                            artifact.
      """
      pass
  
imports: import logging
  import os
  import posixpath
  from abc import ABC, ABCMeta, abstractmethod
  from concurrent.futures import ThreadPoolExecutor, as_completed
  from typing import List, Optional
  from mlflow.entities.file_info import FileInfo
  from mlflow.entities.multipart_upload import CreateMultipartUploadResponse, MultipartUploadPart
  from mlflow.environment_variables import MLFLOW_ENABLE_ARTIFACTS_PROGRESS_BAR
  from mlflow.exceptions import MlflowException
  from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE, RESOURCE_DOES_NOT_EXIST
  from mlflow.utils.annotations import developer_stable
  from mlflow.utils.file_utils import ArtifactProgressBar, create_tmp_dir
  from mlflow.utils.validation import bad_path_message, path_not_unique
label_desc: Use image node_id 3 for calling the ArtifactRepository obj's underlying member method code with example usage: obj.log_artifact(local_file, artifact_path) without return types