code: def load(self, cnf, metadata_construction=False):
          
          _uc = self.unicode_convert
          for arg in COMMON_ARGS:
              if arg == "virtual_organization":
                  if "virtual_organization" in cnf:
                      for key, val in cnf["virtual_organization"].items():
                          self.vorg[key] = VirtualOrg(None, key, val)
                  continue
              elif arg == "extension_schemas":
                  # List of filename of modules representing the schemas
                  if "extension_schemas" in cnf:
                      for mod_file in cnf["extension_schemas"]:
                          _mod = self._load(mod_file)
                          self.extension_schema[_mod.NAMESPACE] = _mod
  
              try:
                  setattr(self, arg, _uc(cnf[arg]))
              except KeyError:
                  pass
              except TypeError:  # Something that can't be a string
                  setattr(self, arg, cnf[arg])
  
          if "service" in cnf:
              for typ in ["aa", "idp", "sp", "pdp", "aq"]:
                  try:
                      self.load_special(
                          cnf["service"][typ], typ,
                          metadata_construction=metadata_construction)
                      self.serves.append(typ)
                  except KeyError:
                      pass
  
          if "extensions" in cnf:
              self.do_extensions(cnf["extensions"])
  
          self.load_complex(cnf, metadata_construction=metadata_construction)
          self.context = self.def_context
  
          return self
docs: The base load method, loads the configuration
  
          :param cnf: The configuration as a dictionary
          :param metadata_construction: Is this only to be able to construct
              metadata. If so some things can be left out.
          :return: The Configuration instance