class_docstr: This is the `ExpManager` class for managing experiments. The API is designed similar to mlflow.
  (The link: https://mlflow.org/docs/latest/python_api/mlflow.html)
  
  The `ExpManager` is expected to be a singleton (btw, we can have multiple `Experiment`s with different uri. user can get different experiments from different uri, and then compare records of them). Global Config (i.e. `C`)  is also a singleton.
  
  So we try to align them together.  They share the same variable, which is called **default uri**. Please refer to `ExpManager.default_uri` for details of variable sharing.
  
  When the user starts an experiment, the user may want to set the uri to a specific uri (it will override **default uri** during this period), and then unset the **specific uri** and fallback to the **default uri**.    `ExpManager._active_exp_uri` is that **specific uri**.
docstr: Get the default tracking URI from qlib.config.C
code: def default_uri(self):
      """
      Get the default tracking URI from qlib.config.C
      """
      if (
          "kwargs" not in C.exp_manager
          or "uri" not in C.exp_manager["kwargs"]
      ):
          raise ValueError(
              "The default URI is not set in qlib.config.C"
          )
      return C.exp_manager["kwargs"]["uri"]
  
imports: from urllib.parse import urlparse
  import mlflow
  from filelock import FileLock
  from mlflow.exceptions import MlflowException, RESOURCE_ALREADY_EXISTS, ErrorCode
  from mlflow.entities import ViewType
  import os
  from typing import Optional, Text
  from .exp import MLflowExperiment, Experiment
  from ..config import C
  from .recorder import Recorder
  from ..log import get_module_logger
  from ..utils.exceptions import ExpAlreadyExistError
label_desc: Use image node_id 13 for calling the ExpManager obj's underlying member method code with example usage: obj.default_uri() and returns: C