code: def get_extension_modules():
      """
      This function retrieves the extension modules
      """
      if "clean" in sys.argv:
          return None
  
      # make sure cython is available
      try:
          from Cython.Build import cythonize
      except ImportError as error:
          raise SystemExit(
              "ERROR: Cython.Build.cythonize not found. "
              "Cython is required to build pyproj."
          ) from error
  
      # By default we'll try to get options PROJ_DIR or the local version of proj
      proj_dir = get_proj_dir()
      library_dirs = get_proj_libdirs(proj_dir)
      include_dirs = get_proj_incdirs(proj_dir)
  
      proj_version = get_proj_version(proj_dir)
      check_proj_version(proj_version)
      (
          proj_version_major,
          proj_version_minor,
          proj_version_patch,
      ) = proj_version
  
      # setup extension options
      ext_options = {
          "include_dirs": include_dirs,
          "library_dirs": library_dirs,
          "runtime_library_dirs": (
              library_dirs
              if os.name != "nt" and sys.platform != "cygwin"
              else None
          ),
          "libraries": get_libraries(library_dirs),
      }
      # setup cythonized modules
      return cythonize(
          [
              Extension(
                  "pyproj._geod", ["pyproj/_geod.pyx"], **ext_options
              ),
              Extension(
                  "pyproj._crs", ["pyproj/_crs.pyx"], **ext_options
              ),
              Extension(
                  "pyproj._transformer",
                  ["pyproj/_transformer.pyx"],
                  **ext_options,
              ),
              Extension(
                  "pyproj._compat",
                  ["pyproj/_compat.pyx"],
                  **ext_options,
              ),
              Extension(
                  "pyproj.database",
                  ["pyproj/database.pyx"],
                  **ext_options,
              ),
              Extension(
                  "pyproj._datadir",
                  ["pyproj/_datadir.pyx"],
                  **ext_options,
              ),
              Extension(
                  "pyproj.list", ["pyproj/list.pyx"], **ext_options
              ),
              Extension(
                  "pyproj._network",
                  ["pyproj/_network.pyx"],
                  **ext_options,
              ),
              Extension(
                  "pyproj._sync", ["pyproj/_sync.pyx"], **ext_options
              ),
          ],
          quiet=True,
          compile_time_env={
              "CTE_PROJ_VERSION_MAJOR": proj_version_major,
              "CTE_PROJ_VERSION_MINOR": proj_version_minor,
              "CTE_PROJ_VERSION_PATCH": proj_version_patch,
              "CTE_PYTHON_IMPLEMENTATION": platform.python_implementation(),
          },
          **get_cythonize_options(),
      )
  
file_path: pyproj/setup.py
imports: import os
  import platform
  import re
  import shutil
  import subprocess
  import sys
  from pathlib import Path
  from setuptools import Extension, setup
label_desc: Use image node_id 9 for calling a global function with example usage: get_extension_modules() and returns: cythonize, None