code: def run(self):
      # Remove .cpp and .so files for a clean build
      if os.path.exists("build"):
          shutil.rmtree("build")
      for dirpath, dirnames, filenames in os.walk("cornac"):
          for filename in filenames:
              root, extension = os.path.splitext(filename)
  
              if extension in [".so", ".pyd", ".dll", ".pyc"]:
                  os.unlink(os.path.join(dirpath, filename))
  
              if extension in [".c", ".cpp"]:
                  pyx_file = str.replace(filename, extension, ".pyx")
                  if os.path.exists(os.path.join(dirpath, pyx_file)):
                      os.unlink(os.path.join(dirpath, filename))
  
          for dirname in dirnames:
              if dirname == "__pycache__":
                  shutil.rmtree(os.path.join(dirpath, dirname))
  
file_path: cornac/setup.py
imports: import os
  import sys
  import glob
  import shutil
  from setuptools import Extension, Command, setup, find_packages
label_desc: Use image node_id 3 for calling the CleanCommand obj's underlying member method code with example usage: obj.run() without return types