code: def do_setup():
      """Do main VCS-independent setup function for installing Versioneer."""
      root = get_root()
      try:
          cfg = get_config_from_root(root)
      except (
          OSError,
          configparser.NoSectionError,
          configparser.NoOptionError,
      ) as e:
          if isinstance(e, (OSError, configparser.NoSectionError)):
              print(
                  "Adding sample versioneer config to setup.cfg",
                  file=sys.stderr,
              )
              with open(os.path.join(root, "setup.cfg"), "a") as f:
                  f.write(SAMPLE_CONFIG)
          print(CONFIG_ERROR, file=sys.stderr)
          return 1
  
      print(" creating %s" % cfg.versionfile_source)
      with open(cfg.versionfile_source, "w") as f:
          LONG = LONG_VERSION_PY[cfg.VCS]
          f.write(
              LONG
              % {
                  "DOLLAR": "$",
                  "STYLE": cfg.style,
                  "TAG_PREFIX": cfg.tag_prefix,
                  "PARENTDIR_PREFIX": cfg.parentdir_prefix,
                  "VERSIONFILE_SOURCE": cfg.versionfile_source,
              }
          )
  
      ipy = os.path.join(
          os.path.dirname(cfg.versionfile_source), "__init__.py"
      )
      if os.path.exists(ipy):
          try:
              with open(ipy, "r") as f:
                  old = f.read()
          except OSError:
              old = ""
          module = os.path.splitext(
              os.path.basename(cfg.versionfile_source)
          )[0]
          snippet = INIT_PY_SNIPPET.format(module)
          if OLD_SNIPPET in old:
              print(" replacing boilerplate in %s" % ipy)
              with open(ipy, "w") as f:
                  f.write(old.replace(OLD_SNIPPET, snippet))
          elif snippet not in old:
              print(" appending to %s" % ipy)
              with open(ipy, "a") as f:
                  f.write(snippet)
          else:
              print(" %s unmodified" % ipy)
      else:
          print(" %s doesn't exist, ok" % ipy)
          ipy = None
  
      # Make VCS-specific changes. For git, this means creating/changing
      # .gitattributes to mark _version.py for export-subst keyword
      # substitution.
      do_vcs_install(cfg.versionfile_source, ipy)
      return 0
  
imports: import configparser
  import errno
  import json
  import os
  import re
  import subprocess
  import sys
  from typing import Callable, Dict
  import functools
label_desc: Use image node_id 26 for calling a global function with example usage: do_setup() and returns: int, int