code: def run(self):
      # 'filelist' contains the list of files that will make up the
      # manifest
      self.filelist = FileList()
  
      # Run sub commands
      for cmd_name in self.get_sub_commands():
          self.run_command(cmd_name)
  
      # Do whatever it takes to get the list of files to process
      # (process the manifest template, read an existing manifest,
      # whatever).  File list is accumulated in 'self.filelist'.
      self.get_file_list()
  
      # If user just wanted us to regenerate the manifest, stop now.
      if self.manifest_only:
          return
  
      # Otherwise, go ahead and create the source distribution tarball,
      # or zipfile, or whatever.
      self.make_distribution()
  
imports: import os
  import sys
  from glob import glob
  from warnings import warn
  from ..core import Command
  from distutils import dir_util
  from distutils import file_util
  from distutils import archive_util
  from ..text_file import TextFile
  from ..filelist import FileList
  from distutils._log import log
  from ..util import convert_path
  from ..errors import DistutilsOptionError, DistutilsTemplateError
label_desc: Use image node_id 4 for calling the sdist obj's underlying member method code with example usage: obj.run() without return types