code: def run(self):
      import twine  # we require twine locally  # noqa
  
      assert "dev" not in __version__, (
          "Only non-devel versions are allowed. "
          "__version__ == {}".format(__version__)
      )
  
      with os.popen("git status --short") as fp:
          git_status = fp.read().strip()
          if git_status:
              print("Error: git repository is not clean.\n")
              os.system("git status --short")
              sys.exit(1)
  
      try:
          from shutil import rmtree
  
          self.status("Removing previous builds ...")
          rmtree(os.path.join(__PATH__, "dist"))
      except OSError:
          pass
  
      self.status(
          "Building Source and Wheel (universal) distribution ..."
      )
      os.system(
          "GPUSTAT_VERSION='{}' sh -c '{} setup.py sdist'".format(
              __version__, sys.executable
          )
      )
  
      self.status("Uploading the package to PyPI via Twine ...")
      ret = os.system("twine upload dist/*")
      if ret != 0:
          sys.exit(ret)
  
      self.status("Creating git tags ...")
      os.system("git tag v{0}".format(__version__))
      os.system("git tag --list")
      sys.exit()
  
file_path: gpustat/setup.py
imports: import sys
  import os
  import re
  from setuptools import setup, Command
label_desc: Use image node_id 4 for calling the DeployCommand obj's underlying member method code with example usage: obj.run() without return types