docs: def run(self):
          """Create the versioneer.py file."""
  
          print(" creating %s" % versionfile_source)
          with open(versionfile_source, "w") as f:
              f.write(get_vcs_code())
  
          ipy = os.path.join(os.path.dirname(versionfile_source), "__init__.py")
          try:
              with open(ipy, "r") as f:
                  old = f.read()
          except EnvironmentError:
              old = ""
          if INIT_PY_SNIPPET not in old:
              print(" appending to %s" % ipy)
              with open(ipy, "a") as f:
                  f.write(INIT_PY_SNIPPET)
          else:
              print(" %s unmodified" % ipy)
  
          # Make sure both the top-level "versioneer.py" and versionfile_source
          # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so
          # they'll be copied into source distributions. Pip won't be able to
          # install the package without this.
          manifest_in = os.path.join(get_root(), "MANIFEST.in")
          simple_includes = set()
          try:
              with open(manifest_in, "r") as f:
                  for line in f:
                      if line.startswith("include "):
                          for include in line.split()[1:]:
                              simple_includes.add(include)
          except EnvironmentError:
              pass
          # That doesn't cover everything MANIFEST.in can do
          # (http://docs.python.org/2/distutils/sourcedist.html#commands), so
          # it might give some false negatives. Appending redundant 'include'
          # lines is safe, though.
          if "versioneer.py" not in simple_includes:
              print(" appending 'versioneer.py' to MANIFEST.in")
              with open(manifest_in, "a") as f:
                  f.write("include versioneer.py\n")
          else:
              print(" 'versioneer.py' already in MANIFEST.in")
          if versionfile_source not in simple_includes:
              print(" appending versionfile_source ('%s') to MANIFEST.in" %
                    versionfile_source)
              with open(manifest_in, "a") as f:
                  f.write("include %s\n" % versionfile_source)
          else:
              print(" versionfile_source already in MANIFEST.in")
  
          # Make VCS-specific changes. For git, this means creating/changing
          # .gitattributes to mark _version.py for export-time keyword
          # substitution.
          
          do_vcs_install_f = getattr(sys.modules[__name__], VCS + '_do_vcs_install')
          do_vcs_install_f(manifest_in, versionfile_source, ipy)