code: def new_compiler(
      plat=None, compiler=None, verbose=0, dry_run=0, force=0
  ):
      """Generate an instance of some CCompiler subclass for the supplied
      platform/compiler combination.  'plat' defaults to 'os.name'
      (eg. 'posix', 'nt'), and 'compiler' defaults to the default compiler
      for that platform.  Currently only 'posix' and 'nt' are supported, and
      the default compilers are "traditional Unix interface" (UnixCCompiler
      class) and Visual C++ (MSVCCompiler class).  Note that it's perfectly
      possible to ask for a Unix compiler object under Windows, and a
      Microsoft compiler object under Unix -- if you supply a value for
      'compiler', 'plat' is ignored.
      """
      if plat is None:
          plat = os.name
  
      try:
          if compiler is None:
              compiler = get_default_compiler(plat)
  
          (module_name, class_name, long_description) = compiler_class[
              compiler
          ]
      except KeyError:
          msg = (
              "don't know how to compile C/C++ code on platform '%s'"
              % plat
          )
          if compiler is not None:
              msg = msg + " with '%s' compiler" % compiler
          raise DistutilsPlatformError(msg)
  
      try:
          module_name = "distutils." + module_name
          __import__(module_name)
          module = sys.modules[module_name]
          klass = vars(module)[class_name]
      except ImportError:
          raise DistutilsModuleError(
              "can't compile C/C++ code: unable to load module '%s'"
              % module_name
          )
      except KeyError:
          raise DistutilsModuleError(
              "can't compile C/C++ code: unable to find class '%s' "
              "in module '%s'" % (class_name, module_name)
          )
  
      # XXX The None is necessary to preserve backwards compatibility
      # with classes that expect verbose to be the first positional
      # argument.
      return klass(None, dry_run, force)
  
imports: import sys
  import os
  import re
  import warnings
  from .errors import CompileError, LinkError, UnknownFileError, DistutilsPlatformError, DistutilsModuleError
  from .spawn import spawn
  from .file_util import move_file
  from .dir_util import mkpath
  from ._modified import newer_group
  from .util import split_quoted, execute
  from ._log import log
label_desc: Use image node_id 3 for calling a global function with example usage: new_compiler(plat, compiler, verbose, dry_run, force) and returns: klass