code: def load(self, filename="mpi.cfg", section="mpi"):
      if isinstance(filename, str):
          filenames = filename.split(os.path.pathsep)
      else:
          filenames = list(filename)
      if isinstance(section, str):
          sections = section.split(",")
      else:
          sections = list(section)
      #
      try:
          parser = ConfigParser(dict_type=OrderedDict)
      except TypeError:
          parser = ConfigParser()
      try:
          read_ok = parser.read(filenames)
      except ConfigParserError:
          self.log.error(
              "error: parsing configuration file/s '%s'",
              os.path.pathsep.join(filenames),
          )
          return None
      for section in sections:
          if parser.has_section(section):
              break
          section = None
      if not section:
          self.log.error(
              "error: section/s '%s' not found in file/s '%s'",
              ",".join(sections),
              os.path.pathsep.join(filenames),
          )
          return None
      parser_items = list(parser.items(section, vars=None))
      #
      compiler_info = type(self.compiler_info)()
      for option, value in parser_items:
          if option in self.compiler_info:
              compiler_info[option] = value
      #
      pathsep = os.path.pathsep
      expanduser = os.path.expanduser
      expandvars = os.path.expandvars
      library_info = type(self.library_info)()
      for k, v in parser_items:
          if k in (
              "define_macros",
              "undef_macros",
          ):
              macros = [e.strip() for e in v.split(",")]
              if k == "define_macros":
                  for i, m in enumerate(macros):
                      try:  # -DFOO=bar
                          idx = m.index("=")
                          macro = (m[:idx], m[idx + 1 :] or None)
                      except ValueError:  # -DFOO
                          macro = (m, None)
                      macros[i] = macro
              library_info[k] = macros
          elif k in (
              "include_dirs",
              "library_dirs",
              "rpath",
              "runtime_dirs",
              "runtime_library_dirs",
          ):
              if k in ("rpath", "runtime_dirs"):
                  k = "runtime_library_dirs"
              pathlist = [p.strip() for p in v.split(pathsep)]
              library_info[k] = [
                  expanduser(expandvars(p)) for p in pathlist if p
              ]
          elif k == "libraries":
              library_info[k] = [e.strip() for e in shlex.split(v)]
          elif k in (
              "extra_compile_args",
              "extra_link_args",
          ):
              library_info[k] = shlex.split(v)
          elif k == "extra_objects":
              library_info[k] = [
                  expanduser(expandvars(e)) for e in shlex.split(v)
              ]
          elif hasattr(self, k):
              library_info[k] = v.strip()
          else:
              pass
      #
      self.section = section
      self.filename = read_ok
      self.compiler_info.update(compiler_info)
      self.library_info.update(library_info)
      return compiler_info, library_info, section, read_ok
  
imports: import os
  import sys
  import shlex
  import shutil
  import logging
  import platform
  from collections import OrderedDict
  from configparser import ConfigParser
  from configparser import Error
label_desc: Use image node_id 13 for calling the Config obj's underlying member method code with example usage: obj.load(filename, section) and returns: compiler_info,  library_info,  section,  read_ok, None, None