mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-07-16 11:02:24 +03:00
Add declarative catalog docs
This commit is contained in:
parent
3c0c3b3abc
commit
4683ada2ce
|
@ -1,5 +1,5 @@
|
||||||
Creating catalog provider bundles
|
Catalog provider bundles
|
||||||
---------------------------------
|
------------------------
|
||||||
|
|
||||||
``di.DeclarativeCatalog.Bundle`` is a limited collection of catalog providers.
|
``di.DeclarativeCatalog.Bundle`` is a limited collection of catalog providers.
|
||||||
While catalog could be used as a centralized place for particular providers
|
While catalog could be used as a centralized place for particular providers
|
||||||
|
|
65
docs/catalogs/declarative.rst
Normal file
65
docs/catalogs/declarative.rst
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
Declarative catalogs
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
``di.DeclarativeCatalog`` is a catalog of providers that could be defined in
|
||||||
|
declarative manner. It should cover most of the cases when list of providers
|
||||||
|
that would be included in catalog is deterministic (catalog will not change
|
||||||
|
its structure in runtime).
|
||||||
|
|
||||||
|
Definition of declarative catalogs
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Declarative catalogs have to extend base declarative catalog class -
|
||||||
|
``di.DeclarativeCatalog``.
|
||||||
|
|
||||||
|
Providers have to be defined like catalog's class attributes. Every provider in
|
||||||
|
catalog has name. This name should follow ``some_provider`` convention,
|
||||||
|
that is standard naming convention for attribute names in Python.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
It might be useful to add such ``""":type: di.Provider -> Object1"""``
|
||||||
|
docstrings just on the next line after provider's definition. It will
|
||||||
|
help code analyzing tools and IDE's to understand that variable above
|
||||||
|
contains some callable object, that returns particular instance as a
|
||||||
|
result of its call.
|
||||||
|
|
||||||
|
Here is an simple example of declarative catalog with several factories:
|
||||||
|
|
||||||
|
.. image:: /images/catalogs/declarative.png
|
||||||
|
:width: 85%
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/catalogs/declarative.py
|
||||||
|
:language: python
|
||||||
|
|
||||||
|
Declarative catalogs API
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
``di.DeclarativeCatalog`` has several features that could be useful for some
|
||||||
|
kind of operations on catalog's providers:
|
||||||
|
|
||||||
|
- ``di.DeclarativeCatalog.providers`` is read-only attribute that contains
|
||||||
|
``dict`` of all catalog providers, including providers that are inherited
|
||||||
|
from parent catalogs, where key is the name of provider and value is
|
||||||
|
provider itself.
|
||||||
|
- ``di.DeclarativeCatalog.cls_providers`` is read-only attribute contains
|
||||||
|
``dict`` of current catalog providers, where key is the name of provider
|
||||||
|
and value is provider itself.
|
||||||
|
- ``di.DeclarativeCatalog.inherited_providers`` is read-only attribute
|
||||||
|
contains ``dict`` of all providers that are inherited from parent catalogs,
|
||||||
|
where key is the name of provider and value is provider itself.
|
||||||
|
- ``di.DeclarativeCatalog.filter(provider_type=di.Provider)`` is a class
|
||||||
|
method that could be used for filtering catalog providers by provider types
|
||||||
|
(for example, for getting all ``di.Factory`` providers).
|
||||||
|
``di.DeclarativeCatalog.filter()`` method use
|
||||||
|
``di.DeclarativeCatalog.providers``.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. image:: /images/catalogs/declarative_api.png
|
||||||
|
:width: 100%
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
.. literalinclude:: ../../examples/catalogs/declarative_api.py
|
||||||
|
:language: python
|
2
docs/catalogs/dynamic.rst
Normal file
2
docs/catalogs/dynamic.rst
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Dynamic catalogs
|
||||||
|
----------------
|
|
@ -19,7 +19,7 @@ of providers.
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
writing
|
declarative
|
||||||
operating
|
dynamic
|
||||||
bundles
|
bundles
|
||||||
overriding
|
overriding
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
Operating with catalogs
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
``di.DeclarativeCatalog`` has several features that could be useful for some
|
|
||||||
kind of operations on catalog's providers:
|
|
||||||
|
|
||||||
- ``di.DeclarativeCatalog.providers`` is read-only attribute that contains
|
|
||||||
``dict`` of all catalog providers, including providers that are inherited
|
|
||||||
from parent catalogs, where key is the name of provider and value is
|
|
||||||
provider itself.
|
|
||||||
- ``di.DeclarativeCatalog.cls_providers`` is read-only attribute contains
|
|
||||||
``dict`` of current catalog providers, where key is the name of provider
|
|
||||||
and value is provider itself.
|
|
||||||
- ``di.DeclarativeCatalog.inherited_providers`` is read-only attribute
|
|
||||||
contains ``dict`` of all providers that are inherited from parent catalogs,
|
|
||||||
where key is the name of provider and value is provider itself.
|
|
||||||
- ``di.DeclarativeCatalog.filter(provider_type=di.Provider)`` is a class
|
|
||||||
method that could be used for filtering catalog providers by provider types
|
|
||||||
(for example, for getting all ``di.Factory`` providers).
|
|
||||||
``di.DeclarativeCatalog.filter()`` method use
|
|
||||||
``di.DeclarativeCatalog.providers``.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
.. image:: /images/catalogs/operating_with_providers.png
|
|
||||||
:width: 100%
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. literalinclude:: ../../examples/catalogs/operating_with_providers.py
|
|
||||||
:language: python
|
|
|
@ -1,25 +0,0 @@
|
||||||
Writing catalogs
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Catalogs have to extend base catalog class ``di.DeclarativeCatalog``.
|
|
||||||
|
|
||||||
Providers have to be defined like catalog's attributes. Every provider in
|
|
||||||
catalog has name. This name should follow ``some_provider`` convention,
|
|
||||||
that is standard naming convention for attribute names in Python.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
It might be useful to add such ``""":type: di.Provider -> Object1"""``
|
|
||||||
docstrings just on the next line after provider's definition. It will
|
|
||||||
help code analyzing tools and IDE's to understand that variable above
|
|
||||||
contains some callable object, that returns particular instance as a
|
|
||||||
result of its call.
|
|
||||||
|
|
||||||
Here is an simple example of catalog with several factories:
|
|
||||||
|
|
||||||
.. image:: /images/catalogs/writing_catalogs.png
|
|
||||||
:width: 85%
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. literalinclude:: ../../examples/catalogs/writing_catalogs.py
|
|
||||||
:language: python
|
|
|
@ -28,7 +28,7 @@ import re
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
# ones.
|
# ones.
|
||||||
extensions = []
|
extensions = ['sphinx.ext.autodoc']
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['_templates']
|
templates_path = ['_templates']
|
||||||
|
|
BIN
docs/images/catalogs/declarative.png
Normal file
BIN
docs/images/catalogs/declarative.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
docs/images/catalogs/declarative_api.png
Normal file
BIN
docs/images/catalogs/declarative_api.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 166 KiB |
Binary file not shown.
Before Width: | Height: | Size: 25 KiB |
|
@ -1,4 +1,4 @@
|
||||||
Writing custom providers
|
Writing of custom providers
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
List of *Dependency Injector* providers could be widened with custom providers.
|
List of *Dependency Injector* providers could be widened with custom providers.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
"""Catalog example."""
|
"""Declarative catalog example."""
|
||||||
|
|
||||||
import dependency_injector as di
|
import dependency_injector as di
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
"""Operating with catalog providers example."""
|
"""Declarative catalog API example."""
|
||||||
|
|
||||||
import dependency_injector as di
|
import dependency_injector as di
|
||||||
|
|
Loading…
Reference in New Issue
Block a user