code: def get_config_from_root(root: str) -> VersioneerConfig:
      """Read the project setup.cfg file to determine Versioneer config."""
      # This might raise OSError (if setup.cfg is missing), or
      # configparser.NoSectionError (if it lacks a [versioneer] section), or
      # configparser.NoOptionError (if it lacks "VCS="). See the docstring at
      # the top of versioneer.py for instructions on writing your setup.cfg .
      root_pth = Path(root)
      pyproject_toml = root_pth / "pyproject.toml"
      setup_cfg = root_pth / "setup.cfg"
      section: Union[
          Dict[str, Any], configparser.SectionProxy, None
      ] = None
      if pyproject_toml.exists() and have_tomllib:
          try:
              with open(pyproject_toml, "rb") as fobj:
                  pp = tomllib.load(fobj)
              section = pp["tool"]["versioneer"]
          except (tomllib.TOMLDecodeError, KeyError) as e:
              print(f"Failed to load config from {pyproject_toml}: {e}")
              print("Try to load it from setup.cfg")
      if not section:
          parser = configparser.ConfigParser()
          with open(setup_cfg) as cfg_file:
              parser.read_file(cfg_file)
          parser.get("versioneer", "VCS")  # raise error if missing
  
          section = parser["versioneer"]
  
      # `cast`` really shouldn't be used, but its simplest for the
      # common VersioneerConfig users at the moment. We verify against
      # `None` values elsewhere where it matters
  
      cfg = VersioneerConfig()
      cfg.VCS = section["VCS"]
      cfg.style = section.get("style", "")
      cfg.versionfile_source = cast(
          str, section.get("versionfile_source")
      )
      cfg.versionfile_build = section.get("versionfile_build")
      cfg.tag_prefix = cast(str, section.get("tag_prefix"))
      if cfg.tag_prefix in ("''", '""', None):
          cfg.tag_prefix = ""
      cfg.parentdir_prefix = section.get("parentdir_prefix")
      if isinstance(section, configparser.SectionProxy):
          # Make sure configparser translates to bool
          cfg.verbose = section.getboolean("verbose")
      else:
          cfg.verbose = section.get("verbose")
  
      return cfg
  
imports: import configparser
  import errno
  import json
  import os
  import re
  import subprocess
  import sys
  from pathlib import Path
  from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Union
  from typing import NoReturn
  import functools
label_desc: Use image node_id 2 for calling a global function with example usage: get_config_from_root(root) and returns: cfg