code: def setup_package():
      write_git_info_py()
      if len(sys.argv) > 1 and sys.argv[1] == "clean":
          return clean(PACKAGE_ROOT)
  
      with (PACKAGE_ROOT / "about.py").open("r") as f:
          about = {}
          exec(f.read(), about)
  
      for copy_file, target_dir in COPY_FILES.items():
          if copy_file.exists():
              shutil.copy(str(copy_file), str(target_dir))
              print(f"Copied {copy_file} -> {target_dir}")
  
      include_dirs = [
          numpy.get_include(),
          get_path("include"),
      ]
      ext_modules = []
      ext_modules.append(
          Extension(
              "spacy.matcher.levenshtein",
              [
                  "spacy/matcher/levenshtein.pyx",
                  "spacy/matcher/polyleven.c",
              ],
              language="c",
              include_dirs=include_dirs,
          )
      )
      for name in MOD_NAMES:
          mod_path = name.replace(".", "/") + ".pyx"
          ext = Extension(
              name,
              [mod_path],
              language="c++",
              include_dirs=include_dirs,
              extra_compile_args=["-std=c++11"],
          )
          ext_modules.append(ext)
      print("Cythonizing sources")
      ext_modules = cythonize(
          ext_modules, compiler_directives=COMPILER_DIRECTIVES
      )
  
      setup(
          name="spacy",
          packages=PACKAGES,
          version=about["__version__"],
          ext_modules=ext_modules,
          cmdclass={"build_ext": build_ext_subclass},
          package_data={"": ["*.pyx", "*.pxd", "*.pxi"]},
      )
  
file_path: spaCy/setup.py
imports: from setuptools import Extension, setup, find_packages
  import sys
  import numpy
  from setuptools.command.build_ext import build_ext
  from sysconfig import get_path
  from pathlib import Path
  import shutil
  from Cython.Build import cythonize
  from Cython.Compiler import Options
  import os
  import subprocess
label_desc: Use image node_id 3 for calling a global function with example usage: setup_package() and returns: clean