class_docstr: Util class for setting up and logging to MLflow.
  
  Use this util for any library that needs MLflow logging/tracking logic
  such as Ray Tune or Ray Train.
class_docstr_tok: ["Util","class","for","setting","up","and","logging","to","MLflow",".","Use","this","util","for","any","library","that","needs","MLflow","logging\/tracking","logic","such","as","Ray","Tune","or","Ray","Train","."]
docstr: Saves directory as artifact to the run specified by run_id.
  
  If no ``run_id`` is passed in, then saves to the current active run.
  If there is not active run, then creates a new run and sets it as
  the active run.
  
  Args:
      dir: Path to directory containing the files to save.
      run_id (Optional[str]): The ID of the run to log to.
docstr_tok: ["Saves","directory","as","artifact","to","the","run","specified","by","run_id",".","If","no","``","run_id","``","is","passed","in",",","then","saves","to","the","current","active","run",".","If","there","is","not","active","run",",","then","creates","a","new","run","and","sets","it","as","the","active","run",".","Args",":","dir",":","Path","to","directory","containing","the","files","to","save",".","run_id","(","Optional","[","str","]",")",":","The","ID","of","the","run","to","log","to","."]
code: def save_artifacts(self, dir: str, run_id: Optional[str] = None):
      """Saves directory as artifact to the run specified by run_id.
  
      If no ``run_id`` is passed in, then saves to the current active run.
      If there is not active run, then creates a new run and sets it as
      the active run.
  
      Args:
          dir: Path to directory containing the files to save.
          run_id (Optional[str]): The ID of the run to log to.
      """
      if run_id and self._run_exists(run_id):
          client = self._get_client()
          client.log_artifacts(run_id=run_id, local_dir=dir)
      else:
          self._mlflow.log_artifacts(local_dir=dir)
  
file_path: ray/python/ray/air/_internal/mlflow.py
imports: import logging
  import os
  from packaging import version
  from copy import deepcopy
  from typing import TYPE_CHECKING, Dict, Optional
  from ray._private.dict import flatten_dict
label_desc: Use image node_id 11 for calling the _MLflowLoggerUtil obj's underlying member method code with example usage: obj.save_artifacts(dir, run_id) without return types