code: def run(self):
      try:
          self.status("Removing previous builds…")
          rmtree(os.path.join(here, "dist"))
          rmtree(os.path.join(here, "build"))
          rmtree(os.path.join(here, "{0}.egg-info".format(__title__)))
      except OSError:
          pass
  
      self.status("Building Source and Wheel distribution…")
      os.system("{0} setup.py sdist bdist_wheel".format(sys.executable))
  
      self.status("Uploading the package to PyPI via Twine…")
      os.system("twine upload dist/*")
  
      self.status("Pushing git tags…")
      os.system(
          'git tag -a v{0} -m "release version v{0}"'.format(
              __version__
          )
      )
      os.system("git push origin v{0}".format(__version__))
  
      sys.exit()
  
file_path: pyecharts/setup.py
imports: import os
  import sys
  from shutil import rmtree
  from setuptools import Command, find_packages, setup
label_desc: Use image node_id 4 for calling the UploadCommand obj's underlying member method code with example usage: obj.run() without return types