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:: MANIFEST_FILE
   :value: '__manifest__.py'


.. py:function:: 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:function:: get_module(module_name: str, config: dict) -> 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:function:: 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:function:: available_modules(with_manifest: bool = False, limit_to_modules: List[str] = [], suppress_warnings: bool = False) -> List[LazyBaseModule]

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

   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:: type
      :type:  list


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


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


   .. 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


