code: def _find_existing_fcompiler(
      compiler_types,
      osname=None,
      platform=None,
      requiref90=False,
      c_compiler=None,
  ):
      from numpy.distutils.core import get_distribution
  
      dist = get_distribution(always=True)
      for compiler_type in compiler_types:
          v = None
          try:
              c = new_fcompiler(
                  plat=platform,
                  compiler=compiler_type,
                  c_compiler=c_compiler,
              )
              c.customize(dist)
              v = c.get_version()
              if requiref90 and c.compiler_f90 is None:
                  v = None
                  new_compiler = c.suggested_f90_compiler
                  if new_compiler:
                      log.warn(
                          "Trying %r compiler as suggested by %r "
                          "compiler for f90 support."
                          % (compiler_type, new_compiler)
                      )
                      c = new_fcompiler(
                          plat=platform,
                          compiler=new_compiler,
                          c_compiler=c_compiler,
                      )
                      c.customize(dist)
                      v = c.get_version()
                      if v is not None:
                          compiler_type = new_compiler
              if requiref90 and c.compiler_f90 is None:
                  raise ValueError(
                      "%s does not support compiling f90 codes, "
                      "skipping." % (c.__class__.__name__)
                  )
          except DistutilsModuleError:
              log.debug(
                  "_find_existing_fcompiler: compiler_type='%s' raised DistutilsModuleError",
                  compiler_type,
              )
          except CompilerNotFound:
              log.debug(
                  "_find_existing_fcompiler: compiler_type='%s' not found",
                  compiler_type,
              )
          if v is not None:
              return compiler_type
      return None
  
imports: from __future__ import division, absolute_import, print_function
  import os
  import sys
  import re
  import types
  from numpy.compat import open_latin1
  from distutils.sysconfig import get_python_lib
  from distutils.fancy_getopt import FancyGetopt
  from distutils.errors import DistutilsModuleError, DistutilsExecError, CompileError, LinkError, DistutilsPlatformError
  from distutils.util import split_quoted, strtobool
  from numpy.distutils.ccompiler import CCompiler, gen_lib_options
  from numpy.distutils import log
  from numpy.distutils.misc_util import is_string, all_strings, is_sequence, make_temp_file, get_shared_lib_extension
  from numpy.distutils.exec_command import find_executable
  from numpy.distutils.compat import get_exception
  from numpy.distutils import _shell_utils
  from .environment import EnvironmentConfig
label_desc: Use image node_id 5 for calling a global function with example usage: _find_existing_fcompiler(compiler_types, osname, platform, requiref90, c_compiler) and returns: None, compiler_type