core.module
===========

.. py:module:: core.module

.. autoapi-nested-parse::

   Defines the Step abstract base class, which acts as a blueprint for steps in the archiving pipeline
   by handling user configuration, validating the steps properties, and implementing dynamic instantiation.







Module Contents
---------------

.. py:data:: HAS_SETUP_PATHS
   :value: False


.. py:class:: ModuleFactory

   .. py:method:: setup_paths(paths: list[str]) -> None

      Sets up the paths for the modules to be loaded from

      This is necessary for the modules to be imported correctly




   .. py:method:: get_module(module_name: str, config: dict) -> Type[core.base_module.BaseModule]

      Gets and sets up a module using the provided config

      This will actually load and instantiate the module, and load all its dependencies (i.e. not lazy)




   .. py:method:: get_module_lazy(module_name: str, suppress_warnings: bool = False) -> LazyBaseModule

      Lazily loads a module, returning a LazyBaseModule

      This has all the information about the module, but does not load the module itself or its dependencies

      To load an actual module, call .setup() on a lazy module




   .. py:method:: available_modules(limit_to_modules: List[str] = [], suppress_warnings: bool = False) -> List[LazyBaseModule]


.. py:class:: LazyBaseModule(module_name, path, factory: ModuleFactory)

   A lazy module class, which only loads the manifest and does not load the module itself.

   This is useful for getting information about a module without actually loading it.



   .. py:attribute:: name
      :type:  str


   .. py:attribute:: description
      :type:  str


   .. py:attribute:: path
      :type:  str


   .. py:attribute:: module_factory
      :type:  ModuleFactory


   .. py:property:: type


   .. py:property:: entry_point


   .. py:property:: dependencies
      :type: dict



   .. py:property:: configs
      :type: dict



   .. py:property:: requires_setup
      :type: bool



   .. py:property:: display_name
      :type: str



   .. py:property:: manifest
      :type: dict



   .. py:method:: load(config) -> core.base_module.BaseModule


