code: def _check_cython_sources(self, extension):
          
  
          # Determine the compiler we'll be using
          if self.compiler is None:
              compiler = get_default_compiler()
          else:
              compiler = self.compiler
  
          # Replace .pyx with C-equivalents, unless c files are missing
          for jdx, src in enumerate(extension.sources):
              base, ext = os.path.splitext(src)
              pyxfn = base + '.pyx'
              cfn = base + '.c'
              cppfn = base + '.cpp'
  
              if not os.path.isfile(pyxfn):
                  continue
  
              if self._uses_cython:
                  extension.sources[jdx] = pyxfn
              else:
                  if os.path.isfile(cfn):
                      extension.sources[jdx] = cfn
                  elif os.path.isfile(cppfn):
                      extension.sources[jdx] = cppfn
                  else:
                      msg = (
                          'Could not find C/C++ file {0}.(c/cpp) for Cython '
                          'file {1} when building extension {2}. Cython '
                          'must be installed to build from a git '
                          'checkout.'.format(base, pyxfn, extension.name))
                      raise IOError(errno.ENOENT, msg, cfn)
  
              # Cython (at least as of 0.29.2) uses deprecated Numpy API features
              # the use of which produces a few warnings when compiling.
              # These additional flags should squelch those warnings.
              # TODO: Feel free to remove this if/when a Cython update
              # removes use of the deprecated Numpy API
              if compiler == 'unix':
                  extension.extra_compile_args.extend([
                      '-Wp,-w', '-Wno-unused-function'])
docs: Where relevant, make sure that the .c files associated with .pyx
          modules are present (if building without Cython installed).