code: def pre_build_check():
      
      if os.environ.get('CASS_DRIVER_NO_PRE_BUILD_CHECK'):
          return True
  
      try:
          from distutils.ccompiler import new_compiler
          from distutils.sysconfig import customize_compiler
          from distutils.dist import Distribution
  
          # base build_ext just to emulate compiler option setup
          be = build_ext(Distribution())
          be.initialize_options()
          be.finalize_options()
  
          # First, make sure we have a Python include directory
          have_python_include = any(os.path.isfile(os.path.join(p, 'Python.h')) for p in be.include_dirs)
          if not have_python_include:
              sys.stderr.write("Did not find 'Python.h' in %s.\n" % (be.include_dirs,))
              return False
  
          compiler = new_compiler(compiler=be.compiler)
          customize_compiler(compiler)
  
          try:
              # We must be able to initialize the compiler if it has that method
              if hasattr(compiler, "initialize"):
                  compiler.initialize()
          except:
              return False
  
          executables = []
          if compiler.compiler_type in ('unix', 'cygwin'):
              executables = [compiler.executables[exe][0] for exe in ('compiler_so', 'linker_so')]
          elif compiler.compiler_type == 'nt':
              executables = [getattr(compiler, exe) for exe in ('cc', 'linker')]
  
          if executables:
              from distutils.spawn import find_executable
              for exe in executables:
                  if not find_executable(exe):
                      sys.stderr.write("Failed to find %s for compiler type %s.\n" % (exe, compiler.compiler_type))
                      return False
  
      except Exception as exc:
          sys.stderr.write('%s\n' % str(exc))
          sys.stderr.write("Failed pre-build check. Attempting anyway.\n")
  
      # if we are unable to positively id the compiler type, or one of these assumptions fails,
      # just proceed as we would have without the check
      return True
docs: Try to verify build tools