code: def run(self):
      version = self.distribution.get_version()
      pkgName = self.distribution.get_name()
      debName = "python-" + pkgName
      debDir = self.debDir
  
      assert os.getcwd() == self.cwd, (
          "Must be in package root: %s" % self.cwd
      )
  
      if os.path.isdir(debDir):
          raise Exception('DEB build dir already exists: "%s"' % debDir)
      sdist = "dist/%s-%s.tar.gz" % (pkgName, version)
      if not os.path.isfile(sdist):
          raise Exception(
              "No source distribution; " + "run `setup.py sdist` first."
          )
  
      # copy sdist to build directory and extract
      os.mkdir(debDir)
      renamedSdist = "%s_%s.orig.tar.gz" % (debName, version)
      print(
          "copy %s => %s" % (sdist, os.path.join(debDir, renamedSdist))
      )
      shutil.copy(sdist, os.path.join(debDir, renamedSdist))
      print("cd %s; tar -xzf %s" % (debDir, renamedSdist))
      if os.system("cd %s; tar -xzf %s" % (debDir, renamedSdist)) != 0:
          raise Exception("Error extracting source distribution.")
      buildDir = "%s/%s-%s" % (debDir, pkgName, version)
  
      # copy debian control structure
      print(
          "copytree %s => %s" % (self.debTemplate, buildDir + "/debian")
      )
      shutil.copytree(self.debTemplate, buildDir + "/debian")
  
      # Write new changelog
      chlog = generateDebianChangelog(
          pkgName, "CHANGELOG", version, self.maintainer
      )
      print("write changelog %s" % buildDir + "/debian/changelog")
      open(buildDir + "/debian/changelog", "w").write(chlog)
  
      # build package
      print("cd %s; debuild -us -uc" % buildDir)
      if os.system("cd %s; debuild -us -uc" % buildDir) != 0:
          raise Exception("Error during debuild.")
  
imports: from contextlib import suppress
  import json
  import os
  import re
  import shutil
  import subprocess
  import sys
  from distutils import core
  from typing import Dict, Any
  from .generateChangelog import generateDebianChangelog
label_desc: Use image node_id 3 for calling the DebCommand obj's underlying member method code with example usage: obj.run() without return types