diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 18:25:18 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 18:25:18 +0000 |
commit | db65f490e0e04a539ce181519050932a5df0d1ea (patch) | |
tree | 5af2a86ba1de039a9714c7e1082473670fe7854d | |
parent | 750ed79979413f9d32ec759af588d86638e844a0 (diff) |
automatic import of python-antidote
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-antidote.spec | 172 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 174 insertions, 0 deletions
@@ -0,0 +1 @@ +/antidote-2.0.0.tar.gz diff --git a/python-antidote.spec b/python-antidote.spec new file mode 100644 index 0000000..7be423e --- /dev/null +++ b/python-antidote.spec @@ -0,0 +1,172 @@ +%global _empty_manifest_terminate_build 0 +Name: python-antidote +Version: 2.0.0 +Release: 1 +Summary: Dependency injection. +License: MIT +URL: https://github.com/Finistere/antidote +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/c1/53/5f44fe4d4df87866ae32957c1a80394cf82cf9e20918a2958c25988d0031/antidote-2.0.0.tar.gz +BuildArch: noarch + +Requires: python3-typing-extensions + +%description +Antidote works with a :code:`Catalog` which is a sort of collection of dependencies. Multiple ones can co-exist, but :code:`world` is used by default. The most common form of a dependency is an instance of a given class + from antidote import injectable + @injectable + class Service: + pass + world[Service] # retrieve the instance + world.get(Service, default='something') # similar to a dict +By default, :code:`@injectable` defines a singleton but alternative lifetimes (how long the :code:`world` keeps value alive in its cache) exists such as :code:`transient` where nothing is cached at all. Dependencies can also be injected into a function/method with :code:`@inject`. With both, Mypy, Pyright and PyCharm will infer the correct types. + from antidote import inject + @inject # ⯆ Infers the dependency from the type hint + def f(service: Service = inject.me()) -> Service: + return service + f() # service injected + f(Service()) # useful for testing: no injection, argument is used + from antidote import InjectMe + # recommended with inject.me() for best static-typing experience + @inject + def f2(service = inject[Service]): + @inject(kwargs={'service': Service}) + def f3(service): + @inject + def f4(service: InjectMe[Service]): +Classes can also be fully wired, all methods injected, easily with :code:`@wire`. It is also possible to +inject the first argument, commonly named :code:`self`, of a method with an instance of a class: + @injectable + class Dummy: + @inject.method + def method(self) -> 'Dummy': + return self + # behaves like a class method + assert Dummy.method() is world[Dummy] + # useful for testing: when accessed trough an instance, no injection + dummy = Dummy() + assert dummy.method() is dummy + +%package -n python3-antidote +Summary: Dependency injection. +Provides: python-antidote +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-antidote +Antidote works with a :code:`Catalog` which is a sort of collection of dependencies. Multiple ones can co-exist, but :code:`world` is used by default. The most common form of a dependency is an instance of a given class + from antidote import injectable + @injectable + class Service: + pass + world[Service] # retrieve the instance + world.get(Service, default='something') # similar to a dict +By default, :code:`@injectable` defines a singleton but alternative lifetimes (how long the :code:`world` keeps value alive in its cache) exists such as :code:`transient` where nothing is cached at all. Dependencies can also be injected into a function/method with :code:`@inject`. With both, Mypy, Pyright and PyCharm will infer the correct types. + from antidote import inject + @inject # ⯆ Infers the dependency from the type hint + def f(service: Service = inject.me()) -> Service: + return service + f() # service injected + f(Service()) # useful for testing: no injection, argument is used + from antidote import InjectMe + # recommended with inject.me() for best static-typing experience + @inject + def f2(service = inject[Service]): + @inject(kwargs={'service': Service}) + def f3(service): + @inject + def f4(service: InjectMe[Service]): +Classes can also be fully wired, all methods injected, easily with :code:`@wire`. It is also possible to +inject the first argument, commonly named :code:`self`, of a method with an instance of a class: + @injectable + class Dummy: + @inject.method + def method(self) -> 'Dummy': + return self + # behaves like a class method + assert Dummy.method() is world[Dummy] + # useful for testing: when accessed trough an instance, no injection + dummy = Dummy() + assert dummy.method() is dummy + +%package help +Summary: Development documents and examples for antidote +Provides: python3-antidote-doc +%description help +Antidote works with a :code:`Catalog` which is a sort of collection of dependencies. Multiple ones can co-exist, but :code:`world` is used by default. The most common form of a dependency is an instance of a given class + from antidote import injectable + @injectable + class Service: + pass + world[Service] # retrieve the instance + world.get(Service, default='something') # similar to a dict +By default, :code:`@injectable` defines a singleton but alternative lifetimes (how long the :code:`world` keeps value alive in its cache) exists such as :code:`transient` where nothing is cached at all. Dependencies can also be injected into a function/method with :code:`@inject`. With both, Mypy, Pyright and PyCharm will infer the correct types. + from antidote import inject + @inject # ⯆ Infers the dependency from the type hint + def f(service: Service = inject.me()) -> Service: + return service + f() # service injected + f(Service()) # useful for testing: no injection, argument is used + from antidote import InjectMe + # recommended with inject.me() for best static-typing experience + @inject + def f2(service = inject[Service]): + @inject(kwargs={'service': Service}) + def f3(service): + @inject + def f4(service: InjectMe[Service]): +Classes can also be fully wired, all methods injected, easily with :code:`@wire`. It is also possible to +inject the first argument, commonly named :code:`self`, of a method with an instance of a class: + @injectable + class Dummy: + @inject.method + def method(self) -> 'Dummy': + return self + # behaves like a class method + assert Dummy.method() is world[Dummy] + # useful for testing: when accessed trough an instance, no injection + dummy = Dummy() + assert dummy.method() is dummy + +%prep +%autosetup -n antidote-2.0.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-antidote -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.0-1 +- Package Spec generated @@ -0,0 +1 @@ +3f00f60e572dcc065dcda6a0eab4cc4d antidote-2.0.0.tar.gz |