summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-10 11:55:06 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-10 11:55:06 +0000
commit4ffb140e3da3ae275603d87c26ab8276f46eb0d0 (patch)
tree919faa340d64171c7ffccf3d886752bf8fa4dce8
parent56b7ec12b4be6abeac782285b69e6fd9ee3f6e88 (diff)
automatic import of python-dependency-injector
-rw-r--r--.gitignore1
-rw-r--r--python-dependency-injector.spec256
-rw-r--r--sources1
3 files changed, 258 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..c44b851 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..2f8b173
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+9b4d0a0a1b3b9476048d15970697cbac dependency-injector-4.41.0.tar.gz