diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-10 11:55:06 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 11:55:06 +0000 |
commit | 4ffb140e3da3ae275603d87c26ab8276f46eb0d0 (patch) | |
tree | 919faa340d64171c7ffccf3d886752bf8fa4dce8 | |
parent | 56b7ec12b4be6abeac782285b69e6fd9ee3f6e88 (diff) |
automatic import of python-dependency-injector
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-dependency-injector.spec | 256 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 258 insertions, 0 deletions
@@ -0,0 +1 @@ +/dependency-injector-4.41.0.tar.gz diff --git a/python-dependency-injector.spec b/python-dependency-injector.spec new file mode 100644 index 0000000..969655f --- /dev/null +++ b/python-dependency-injector.spec @@ -0,0 +1,256 @@ +%global _empty_manifest_terminate_build 0 +Name: python-dependency-injector +Version: 4.41.0 +Release: 1 +Summary: Dependency injection framework for Python +License: BSD New +URL: https://github.com/ets-labs/python-dependency-injector +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/eb/c5/ec73412b4b460fe1ebeef8380d1aee5e8bd0374a2e234a05b5d40b0b3db0/dependency-injector-4.41.0.tar.gz + +Requires: python3-six +Requires: python3-aiohttp +Requires: python3-flask +Requires: python3-pydantic +Requires: python3-pyyaml + +%description +``Dependency Injector`` is a dependency injection framework for Python. +It helps implement the dependency injection principle. +Key features of the ``Dependency Injector``: +- **Providers**. Provides ``Factory``, ``Singleton``, ``Callable``, ``Coroutine``, ``Object``, + ``List``, ``Dict``, ``Configuration``, ``Resource``, ``Dependency``, and ``Selector`` providers + that help assemble your objects. + See `Providers <https://python-dependency-injector.ets-labs.org/providers/index.html>`_. +- **Overriding**. Can override any provider by another provider on the fly. This helps in testing + and configuring dev/stage environment to replace API clients with stubs etc. See + `Provider overriding <https://python-dependency-injector.ets-labs.org/providers/overriding.html>`_. +- **Configuration**. Reads configuration from ``yaml``, ``ini``, and ``json`` files, ``pydantic`` settings, + environment variables, and dictionaries. + See `Configuration provider <https://python-dependency-injector.ets-labs.org/providers/configuration.html>`_. +- **Resources**. Helps with initialization and configuring of logging, event loop, thread + or process pool, etc. Can be used for per-function execution scope in tandem with wiring. + See `Resource provider <https://python-dependency-injector.ets-labs.org/providers/resource.html>`_. +- **Containers**. Provides declarative and dynamic containers. + See `Containers <https://python-dependency-injector.ets-labs.org/containers/index.html>`_. +- **Wiring**. Injects dependencies into functions and methods. Helps integrate with + other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc. + See `Wiring <https://python-dependency-injector.ets-labs.org/wiring.html>`_. +- **Asynchronous**. Supports asynchronous injections. + See `Asynchronous injections <https://python-dependency-injector.ets-labs.org/providers/async.html>`_. +- **Typing**. Provides typing stubs, ``mypy``-friendly. + See `Typing and mypy <https://python-dependency-injector.ets-labs.org/providers/typing_mypy.html>`_. +- **Performance**. Fast. Written in ``Cython``. +- **Maturity**. Mature and production-ready. Well-tested, documented, and supported. + from dependency_injector import containers, providers + from dependency_injector.wiring import Provide, inject + class Container(containers.DeclarativeContainer): + config = providers.Configuration() + api_client = providers.Singleton( + ApiClient, + api_key=config.api_key, + timeout=config.timeout, + ) + service = providers.Factory( + Service, + api_client=api_client, + ) + @inject + def main(service: Service = Provide[Container.service]) -> None: + if __name__ == "__main__": + container = Container() + container.config.api_key.from_env("API_KEY", required=True) + container.config.timeout.from_env("TIMEOUT", as_=int, default=5) + container.wire(modules=[__name__]) + main() # <-- dependency is injected automatically + with container.api_client.override(mock.Mock()): + main() # <-- overridden dependency is injected automatically +When you call the ``main()`` function the ``Service`` dependency is assembled and injected automatically. +When you do testing, you call the ``container.api_client.override()`` method to replace the real API +client with a mock. When you call ``main()``, the mock is injected. +You can override any provider with another provider. +It also helps you in a re-configuring project for different environments: replace an API client +with a stub on the dev or stage. +With the ``Dependency Injector``, object assembling is consolidated in a container. Dependency injections are defined explicitly. +This makes it easier to understand and change how an application works. +Visit the docs to know more about the +`Dependency injection and inversion of control in Python <https://python-dependency-injector.ets-labs.org/introduction/di_in_python.html>`_. + +%package -n python3-dependency-injector +Summary: Dependency injection framework for Python +Provides: python-dependency-injector +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-cffi +BuildRequires: gcc +BuildRequires: gdb +%description -n python3-dependency-injector +``Dependency Injector`` is a dependency injection framework for Python. +It helps implement the dependency injection principle. +Key features of the ``Dependency Injector``: +- **Providers**. Provides ``Factory``, ``Singleton``, ``Callable``, ``Coroutine``, ``Object``, + ``List``, ``Dict``, ``Configuration``, ``Resource``, ``Dependency``, and ``Selector`` providers + that help assemble your objects. + See `Providers <https://python-dependency-injector.ets-labs.org/providers/index.html>`_. +- **Overriding**. Can override any provider by another provider on the fly. This helps in testing + and configuring dev/stage environment to replace API clients with stubs etc. See + `Provider overriding <https://python-dependency-injector.ets-labs.org/providers/overriding.html>`_. +- **Configuration**. Reads configuration from ``yaml``, ``ini``, and ``json`` files, ``pydantic`` settings, + environment variables, and dictionaries. + See `Configuration provider <https://python-dependency-injector.ets-labs.org/providers/configuration.html>`_. +- **Resources**. Helps with initialization and configuring of logging, event loop, thread + or process pool, etc. Can be used for per-function execution scope in tandem with wiring. + See `Resource provider <https://python-dependency-injector.ets-labs.org/providers/resource.html>`_. +- **Containers**. Provides declarative and dynamic containers. + See `Containers <https://python-dependency-injector.ets-labs.org/containers/index.html>`_. +- **Wiring**. Injects dependencies into functions and methods. Helps integrate with + other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc. + See `Wiring <https://python-dependency-injector.ets-labs.org/wiring.html>`_. +- **Asynchronous**. Supports asynchronous injections. + See `Asynchronous injections <https://python-dependency-injector.ets-labs.org/providers/async.html>`_. +- **Typing**. Provides typing stubs, ``mypy``-friendly. + See `Typing and mypy <https://python-dependency-injector.ets-labs.org/providers/typing_mypy.html>`_. +- **Performance**. Fast. Written in ``Cython``. +- **Maturity**. Mature and production-ready. Well-tested, documented, and supported. + from dependency_injector import containers, providers + from dependency_injector.wiring import Provide, inject + class Container(containers.DeclarativeContainer): + config = providers.Configuration() + api_client = providers.Singleton( + ApiClient, + api_key=config.api_key, + timeout=config.timeout, + ) + service = providers.Factory( + Service, + api_client=api_client, + ) + @inject + def main(service: Service = Provide[Container.service]) -> None: + if __name__ == "__main__": + container = Container() + container.config.api_key.from_env("API_KEY", required=True) + container.config.timeout.from_env("TIMEOUT", as_=int, default=5) + container.wire(modules=[__name__]) + main() # <-- dependency is injected automatically + with container.api_client.override(mock.Mock()): + main() # <-- overridden dependency is injected automatically +When you call the ``main()`` function the ``Service`` dependency is assembled and injected automatically. +When you do testing, you call the ``container.api_client.override()`` method to replace the real API +client with a mock. When you call ``main()``, the mock is injected. +You can override any provider with another provider. +It also helps you in a re-configuring project for different environments: replace an API client +with a stub on the dev or stage. +With the ``Dependency Injector``, object assembling is consolidated in a container. Dependency injections are defined explicitly. +This makes it easier to understand and change how an application works. +Visit the docs to know more about the +`Dependency injection and inversion of control in Python <https://python-dependency-injector.ets-labs.org/introduction/di_in_python.html>`_. + +%package help +Summary: Development documents and examples for dependency-injector +Provides: python3-dependency-injector-doc +%description help +``Dependency Injector`` is a dependency injection framework for Python. +It helps implement the dependency injection principle. +Key features of the ``Dependency Injector``: +- **Providers**. Provides ``Factory``, ``Singleton``, ``Callable``, ``Coroutine``, ``Object``, + ``List``, ``Dict``, ``Configuration``, ``Resource``, ``Dependency``, and ``Selector`` providers + that help assemble your objects. + See `Providers <https://python-dependency-injector.ets-labs.org/providers/index.html>`_. +- **Overriding**. Can override any provider by another provider on the fly. This helps in testing + and configuring dev/stage environment to replace API clients with stubs etc. See + `Provider overriding <https://python-dependency-injector.ets-labs.org/providers/overriding.html>`_. +- **Configuration**. Reads configuration from ``yaml``, ``ini``, and ``json`` files, ``pydantic`` settings, + environment variables, and dictionaries. + See `Configuration provider <https://python-dependency-injector.ets-labs.org/providers/configuration.html>`_. +- **Resources**. Helps with initialization and configuring of logging, event loop, thread + or process pool, etc. Can be used for per-function execution scope in tandem with wiring. + See `Resource provider <https://python-dependency-injector.ets-labs.org/providers/resource.html>`_. +- **Containers**. Provides declarative and dynamic containers. + See `Containers <https://python-dependency-injector.ets-labs.org/containers/index.html>`_. +- **Wiring**. Injects dependencies into functions and methods. Helps integrate with + other frameworks: Django, Flask, Aiohttp, Sanic, FastAPI, etc. + See `Wiring <https://python-dependency-injector.ets-labs.org/wiring.html>`_. +- **Asynchronous**. Supports asynchronous injections. + See `Asynchronous injections <https://python-dependency-injector.ets-labs.org/providers/async.html>`_. +- **Typing**. Provides typing stubs, ``mypy``-friendly. + See `Typing and mypy <https://python-dependency-injector.ets-labs.org/providers/typing_mypy.html>`_. +- **Performance**. Fast. Written in ``Cython``. +- **Maturity**. Mature and production-ready. Well-tested, documented, and supported. + from dependency_injector import containers, providers + from dependency_injector.wiring import Provide, inject + class Container(containers.DeclarativeContainer): + config = providers.Configuration() + api_client = providers.Singleton( + ApiClient, + api_key=config.api_key, + timeout=config.timeout, + ) + service = providers.Factory( + Service, + api_client=api_client, + ) + @inject + def main(service: Service = Provide[Container.service]) -> None: + if __name__ == "__main__": + container = Container() + container.config.api_key.from_env("API_KEY", required=True) + container.config.timeout.from_env("TIMEOUT", as_=int, default=5) + container.wire(modules=[__name__]) + main() # <-- dependency is injected automatically + with container.api_client.override(mock.Mock()): + main() # <-- overridden dependency is injected automatically +When you call the ``main()`` function the ``Service`` dependency is assembled and injected automatically. +When you do testing, you call the ``container.api_client.override()`` method to replace the real API +client with a mock. When you call ``main()``, the mock is injected. +You can override any provider with another provider. +It also helps you in a re-configuring project for different environments: replace an API client +with a stub on the dev or stage. +With the ``Dependency Injector``, object assembling is consolidated in a container. Dependency injections are defined explicitly. +This makes it easier to understand and change how an application works. +Visit the docs to know more about the +`Dependency injection and inversion of control in Python <https://python-dependency-injector.ets-labs.org/introduction/di_in_python.html>`_. + +%prep +%autosetup -n dependency-injector-4.41.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-dependency-injector -f filelist.lst +%dir %{python3_sitearch}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 4.41.0-1 +- Package Spec generated @@ -0,0 +1 @@ +9b4d0a0a1b3b9476048d15970697cbac dependency-injector-4.41.0.tar.gz |