code: def build_module(name, objs, doc='', source=None, mode='ignore'):
      
      import types
      import warnings
      import logging
  
      logging.captureWarnings(capture=True)
  
      try:
          out = types.ModuleType(name, doc)
      except TypeError:
          msg = "Module '{}' is not properly formatted".format(name)
          raise TypeError(msg)
  
      for key, obj in objs.items():
          if isinstance(obj, str) and source is not None:
              module_mappings = getattr(source, obj, None)
          else:
              module_mappings = obj
  
          if module_mappings is None:
              msg = "{} has not been implemented.".format(obj)
              if mode == 'raise':
                  raise NotImplementedError(msg)
              elif mode == 'warn':
                  warnings.warn(msg)
              else:
                  logging.info(msg)
  
          else:
              out.__dict__[key] = module_mappings
              try:
                  module_mappings.__module__ = name
              except AttributeError:
                  msg = "{} is not a function".format(module_mappings)
                  raise AttributeError(msg)
  
      sys.modules[name] = out
      return out
docs: Create a module from imported objects.
  
      Parameters
      ----------
      name : str
        New module name.
      objs : dict
        Dictionary of the objects (or their name) to import into the module,
        keyed by the name they will take in the created module.
      doc : str
        Docstring of the new module.
      source : Module object
        Module where objects are defined if not explicitly given.
      mode : {'raise', 'warn', 'ignore'}
        How to deal with missing objects.
  
  
      Returns
      -------
      ModuleType
        A module built from a list of objects' name.