code: def initialize_simulation(components: List, input_config: Mapping=None,
                            plugin_config: Mapping=None) -> InteractiveContext:
      
      config = build_simulation_configuration()
      config.update(input_config)
      plugin_manager = PluginManager(plugin_config)
  
      return InteractiveContext(config, components, plugin_manager)
docs: Construct a simulation from a list of components, component
      configuration, and a plugin configuration.
  
      The simulation context returned by this method still needs to be setup by
      calling its setup method. It is mostly useful for testing and debugging.
  
      Parameters
      ----------
      components
          A list of initialized simulation components. Corresponds to the
          components block of a model specification.
      input_config
          A nested dictionary with any additional simulation configuration
          information needed. Corresponds to the configuration block of a model
          specification.
      plugin_config
          A dictionary containing a description of any simulation plugins to
          include in the simulation. If you're using this argument, you're either
          deep in the process of simulation development or the maintainers have
          done something wrong. Corresponds to the plugins block of a model
          specification.
  
      Returns
      -------
          An initialized (but not set up) simulation context.