:py:mod:`core.registry`
=======================

.. py:module:: core.registry

.. autodoc2-docstring:: core.registry
   :allowtitles:

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

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Registry <core.registry.Registry>`
     - .. autodoc2-docstring:: core.registry.Registry
          :summary:
   * - :py:obj:`FooPlugin <core.registry.FooPlugin>`
     - .. autodoc2-docstring:: core.registry.FooPlugin
          :summary:
   * - :py:obj:`BarPlugin <core.registry.BarPlugin>`
     - .. autodoc2-docstring:: core.registry.BarPlugin
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`iter_namespace <core.registry.iter_namespace>`
     - .. autodoc2-docstring:: core.registry.iter_namespace
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`log <core.registry.log>`
     - .. autodoc2-docstring:: core.registry.log
          :summary:

API
~~~

.. py:data:: log
   :canonical: core.registry.log
   :value: None

   .. autodoc2-docstring:: core.registry.log

.. py:function:: iter_namespace(ns_pkg: types.ModuleType) -> collections.abc.Iterator[pkgutil.ModuleInfo]
   :canonical: core.registry.iter_namespace

   .. autodoc2-docstring:: core.registry.iter_namespace

.. py:class:: Registry(selected_plugins: list[str], **kwargs: polyconf.core.model.Plugin)
   :canonical: core.registry.Registry

   .. autodoc2-docstring:: core.registry.Registry

   .. rubric:: Initialization

   .. autodoc2-docstring:: core.registry.Registry.__init__

   .. py:method:: discover_plugins(package: types.ModuleType) -> None
      :canonical: core.registry.Registry.discover_plugins

      .. autodoc2-docstring:: core.registry.Registry.discover_plugins

   .. py:property:: discovered_plugins
      :canonical: core.registry.Registry.discovered_plugins
      :type: dict[str, types.ModuleType]

      .. autodoc2-docstring:: core.registry.Registry.discovered_plugins

   .. py:method:: init_plugins(package: types.ModuleType | None = None, **kwargs: typing.Any) -> None
      :canonical: core.registry.Registry.init_plugins

      .. autodoc2-docstring:: core.registry.Registry.init_plugins

   .. py:property:: available_plugins
      :canonical: core.registry.Registry.available_plugins
      :type: list[typing.Callable[[polyconf.core.model.Context], polyconf.core.model.Context]]

      .. autodoc2-docstring:: core.registry.Registry.available_plugins

   .. py:property:: plugins
      :canonical: core.registry.Registry.plugins
      :type: list[typing.Callable[[polyconf.core.model.Context], polyconf.core.model.Context]]

      .. autodoc2-docstring:: core.registry.Registry.plugins

   .. py:property:: plugin_map
      :canonical: core.registry.Registry.plugin_map
      :type: dict[str, polyconf.core.model.Plugin]

      .. autodoc2-docstring:: core.registry.Registry.plugin_map

   .. py:method:: register_plugin(name: str, plugin: polyconf.core.model.Plugin) -> None
      :canonical: core.registry.Registry.register_plugin

      .. autodoc2-docstring:: core.registry.Registry.register_plugin

   .. py:method:: resolve(context: polyconf.core.model.Context) -> polyconf.core.model.Context
      :canonical: core.registry.Registry.resolve

      .. autodoc2-docstring:: core.registry.Registry.resolve

.. py:class:: FooPlugin
   :canonical: core.registry.FooPlugin

   Bases: :py:obj:`polyconf.core.model.Plugin`

   .. autodoc2-docstring:: core.registry.FooPlugin

   .. py:attribute:: name
      :canonical: core.registry.FooPlugin.name
      :value: 'foo'

      .. autodoc2-docstring:: core.registry.FooPlugin.name

   .. py:method:: hydrate(context: polyconf.core.model.Context) -> polyconf.core.model.Context
      :canonical: core.registry.FooPlugin.hydrate

      .. autodoc2-docstring:: core.registry.FooPlugin.hydrate

.. py:class:: BarPlugin
   :canonical: core.registry.BarPlugin

   Bases: :py:obj:`polyconf.core.model.Plugin`

   .. autodoc2-docstring:: core.registry.BarPlugin

   .. py:attribute:: name
      :canonical: core.registry.BarPlugin.name
      :value: 'bar'

      .. autodoc2-docstring:: core.registry.BarPlugin.name

   .. py:method:: hydrate(context: polyconf.core.model.Context) -> polyconf.core.model.Context
      :canonical: core.registry.BarPlugin.hydrate

      .. autodoc2-docstring:: core.registry.BarPlugin.hydrate
