code: def get_versions(verbose: bool = False) -> Dict[str, Any]:
      """Get the project version from whatever source is available.
  
      Returns dict with two keys: 'version' and 'full'.
      """
      if "versioneer" in sys.modules:
          # see the discussion in cmdclass.py:get_cmdclass()
          del sys.modules["versioneer"]
  
      root = get_root()
      cfg = get_config_from_root(root)
  
      assert (
          cfg.VCS is not None
      ), "please set [versioneer]VCS= in setup.cfg"
      handlers = HANDLERS.get(cfg.VCS)
      assert handlers, "unrecognized VCS '%s'" % cfg.VCS
      verbose = verbose or bool(
          cfg.verbose
      )  # `bool()` used to avoid `None`
      assert (
          cfg.versionfile_source is not None
      ), "please set versioneer.versionfile_source"
      assert (
          cfg.tag_prefix is not None
      ), "please set versioneer.tag_prefix"
  
      versionfile_abs = os.path.join(root, cfg.versionfile_source)
  
      # extract version from first of: _version.py, VCS command (e.g. 'git
      # describe'), parentdir. This is meant to work for developers using a
      # source checkout, for users of a tarball created by 'setup.py sdist',
      # and for users of a tarball/zipball created by 'git archive' or github's
      # download-from-tag feature or the equivalent in other VCSes.
  
      get_keywords_f = handlers.get("get_keywords")
      from_keywords_f = handlers.get("keywords")
      if get_keywords_f and from_keywords_f:
          try:
              keywords = get_keywords_f(versionfile_abs)
              ver = from_keywords_f(keywords, cfg.tag_prefix, verbose)
              if verbose:
                  print("got version from expanded keyword %s" % ver)
              return ver
          except NotThisMethod:
              pass
  
      try:
          ver = versions_from_file(versionfile_abs)
          if verbose:
              print(
                  "got version from file %s %s" % (versionfile_abs, ver)
              )
          return ver
      except NotThisMethod:
          pass
  
      from_vcs_f = handlers.get("pieces_from_vcs")
      if from_vcs_f:
          try:
              pieces = from_vcs_f(cfg.tag_prefix, root, verbose)
              ver = render(pieces, cfg.style)
              if verbose:
                  print("got version from VCS %s" % ver)
              return ver
          except NotThisMethod:
              pass
  
      try:
          if cfg.parentdir_prefix:
              ver = versions_from_parentdir(
                  cfg.parentdir_prefix, root, verbose
              )
              if verbose:
                  print("got version from parentdir %s" % ver)
              return ver
      except NotThisMethod:
          pass
  
      if verbose:
          print("unable to compute version")
  
      return {
          "version": "0+unknown",
          "full-revisionid": None,
          "dirty": None,
          "error": "unable to compute version",
          "date": None,
      }
  
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 23 for calling a global function with example usage: get_versions(verbose) and returns: dict, ver, ver, ver, ver