code: def run(self):
      # remove the build/temp.<plat> directory (unless it's already
      # gone)
      if os.path.exists(self.build_temp):
          remove_tree(self.build_temp, dry_run=self.dry_run)
      else:
          log.debug(
              "'%s' does not exist -- can't clean it", self.build_temp
          )
  
      if self.all:
          # remove build directories
          for directory in (
              self.build_lib,
              self.bdist_base,
              self.build_scripts,
          ):
              if os.path.exists(directory):
                  remove_tree(directory, dry_run=self.dry_run)
              else:
                  log.warn(
                      "'%s' does not exist -- can't clean it", directory
                  )
  
      # just for the heck of it, try to remove the base build directory:
      # we might have emptied it right now, but if not we don't care
      if not self.dry_run:
          try:
              os.rmdir(self.build_base)
              log.info("removing '%s'", self.build_base)
          except OSError:
              pass
  
file_path: catboost/contrib/tools/python3/src/Lib/distutils/command/clean.py
imports: import os
  from distutils.core import Command
  from distutils.dir_util import remove_tree
  from distutils import log
label_desc: Use image node_id 3 for calling the clean obj's underlying member method code with example usage: obj.run() without return types