From 730ff76f9b5508772c60ef6d55960e328f3e0fd3 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 10 May 2023 05:33:47 +0000 Subject: automatic import of python-zookeeper --- python-zookeeper.spec | 463 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 463 insertions(+) create mode 100644 python-zookeeper.spec (limited to 'python-zookeeper.spec') diff --git a/python-zookeeper.spec b/python-zookeeper.spec new file mode 100644 index 0000000..68033d8 --- /dev/null +++ b/python-zookeeper.spec @@ -0,0 +1,463 @@ +%global _empty_manifest_terminate_build 0 +Name: python-zookeeper +Version: 1.3.3 +Release: 1 +Summary: A small library for managing deep learning models, hyper-parameters and datasets +License: Apache 2.0 +URL: https://github.com/larq/zookeeper +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3b/63/43ad867c4ec7d9c6cd8ee68b815fc37e5dc742b0d9bcdef5d80cf207785d/zookeeper-1.3.3.tar.gz +BuildArch: noarch + +Requires: python3-click +Requires: python3-tensorflow-datasets +Requires: python3-typeguard +Requires: python3-importlib-metadata +Requires: python3-tensorflow +Requires: python3-tensorflow-gpu +Requires: python3-black +Requires: python3-docformatter +Requires: python3-flake8 +Requires: python3-isort +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytype + +%description +# Zookeeper + +[![GitHub Actions](https://github.com/larq/zookeeper/workflows/Unittest/badge.svg)](https://github.com/larq/zookeeper/actions?workflow=Unittest) [![Codecov](https://img.shields.io/codecov/c/github/larq/zookeeper)](https://codecov.io/github/larq/zookeeper?branch=main) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI](https://img.shields.io/pypi/v/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI - License](https://img.shields.io/pypi/l/zookeeper.svg)](https://github.com/plumerai/zookeeper/blob/main/LICENSE) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) + +A small library for configuring modular applications. + +### Installation + +```console +pip install zookeeper +``` + +### Components + +The fundamental building blocks of Zookeeper are components. The +[`@component`](zookeeper/component.py) decorator is used to turn classes into +components. These component classes can have configurable fields, which are +declared with the `Field` constructor and class-level type annotations. Fields +can be created with or without default values. Components can also be nested, +with `ComponentField`s, such that child componenents can access the field values +defined on their parents. + +For example: + +```python +from zookeeper import component + +@component +class ChildComponent: + a: int = Field() # An `int` field with no default set + b: str = Field("foo") # A `str` field with default value `"foo"` + +@component +class ParentComponent: + a: int = Field() # The same `int` field as the child + child: ChildComponent = ComponentField() # A nested component field, of type `ChildComponent` +``` + +After instantiation, components can be 'configured' with a configuration +dictionary, containing values for a tree of nested fields. This process +automatically injects the correct values into each field. + +If a child sub-component declares a field which already exists in some +containing ancestor component, then it will pick up the value that's set on the +parent, unless a 'scoped' value is set on the child. + +For example: + +``` +from zookeeper import configure + +p = ParentComponent() + +configure( + p, + { + "a": 5, + "child.a": 4, + } +) + +>>> 'ChildComponent' is the only concrete component class that satisfies the type +>>> of the annotated parameter 'ParentComponent.child'. Using an instance of this +>>> class by default. + +print(p) + +>>> ParentComponent( +>>> a = 5, +>>> child = ChildComponent( +>>> a = 4, +>>> b = "foo" +>>> ) +>>> ) +``` + +### Tasks and the CLI + +The [`@task`](zookeeper/task.py) decorator is used to define Zookeeper tasks and +can be applied to any class that implements an argument-less `run` method. Such +tasks can be run through the Zookeeper CLI, with parameter values passed in +through CLI arguments (`configure` is implicitly called). + +For example: + +```python +from zookeeper import cli, task + +@task +class UseChildA: + parent: ParentComponent = ComponentField() + def run(self): + print(self.parent.child.a) + +@task +class UseParentA(UseChildA): + def run(self): + print(self.parent.a) + +if __name__ == "__main__": + cli() +``` + +Running the above file then gives a nice CLI interface: + +``` +python test.py use_child_a +>>> ValueError: No configuration value found for annotated parameter 'UseChildA.parent.a' of type 'int'. + +python test.py use_child_a a=5 +>>> 5 + +python test.py use_child_a a=5 child.a=3 +>>> 3 + +python test.py use_parent_a a=5 child.a=3 +>>> 5 +``` + +### Using Zookeeper to define Larq or Keras experiments + +See [examples/larq_experiment.py](examples/larq_experiment.py) for an example of +how to use Zookeeper to define all the necessary components (dataset, +preprocessing, and model) of a Larq experiment: training a BinaryNet on +MNIST. This example can be easily adapted to other Larq or Keras models and +other datasets. + + +%package -n python3-zookeeper +Summary: A small library for managing deep learning models, hyper-parameters and datasets +Provides: python-zookeeper +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-zookeeper +# Zookeeper + +[![GitHub Actions](https://github.com/larq/zookeeper/workflows/Unittest/badge.svg)](https://github.com/larq/zookeeper/actions?workflow=Unittest) [![Codecov](https://img.shields.io/codecov/c/github/larq/zookeeper)](https://codecov.io/github/larq/zookeeper?branch=main) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI](https://img.shields.io/pypi/v/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI - License](https://img.shields.io/pypi/l/zookeeper.svg)](https://github.com/plumerai/zookeeper/blob/main/LICENSE) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) + +A small library for configuring modular applications. + +### Installation + +```console +pip install zookeeper +``` + +### Components + +The fundamental building blocks of Zookeeper are components. The +[`@component`](zookeeper/component.py) decorator is used to turn classes into +components. These component classes can have configurable fields, which are +declared with the `Field` constructor and class-level type annotations. Fields +can be created with or without default values. Components can also be nested, +with `ComponentField`s, such that child componenents can access the field values +defined on their parents. + +For example: + +```python +from zookeeper import component + +@component +class ChildComponent: + a: int = Field() # An `int` field with no default set + b: str = Field("foo") # A `str` field with default value `"foo"` + +@component +class ParentComponent: + a: int = Field() # The same `int` field as the child + child: ChildComponent = ComponentField() # A nested component field, of type `ChildComponent` +``` + +After instantiation, components can be 'configured' with a configuration +dictionary, containing values for a tree of nested fields. This process +automatically injects the correct values into each field. + +If a child sub-component declares a field which already exists in some +containing ancestor component, then it will pick up the value that's set on the +parent, unless a 'scoped' value is set on the child. + +For example: + +``` +from zookeeper import configure + +p = ParentComponent() + +configure( + p, + { + "a": 5, + "child.a": 4, + } +) + +>>> 'ChildComponent' is the only concrete component class that satisfies the type +>>> of the annotated parameter 'ParentComponent.child'. Using an instance of this +>>> class by default. + +print(p) + +>>> ParentComponent( +>>> a = 5, +>>> child = ChildComponent( +>>> a = 4, +>>> b = "foo" +>>> ) +>>> ) +``` + +### Tasks and the CLI + +The [`@task`](zookeeper/task.py) decorator is used to define Zookeeper tasks and +can be applied to any class that implements an argument-less `run` method. Such +tasks can be run through the Zookeeper CLI, with parameter values passed in +through CLI arguments (`configure` is implicitly called). + +For example: + +```python +from zookeeper import cli, task + +@task +class UseChildA: + parent: ParentComponent = ComponentField() + def run(self): + print(self.parent.child.a) + +@task +class UseParentA(UseChildA): + def run(self): + print(self.parent.a) + +if __name__ == "__main__": + cli() +``` + +Running the above file then gives a nice CLI interface: + +``` +python test.py use_child_a +>>> ValueError: No configuration value found for annotated parameter 'UseChildA.parent.a' of type 'int'. + +python test.py use_child_a a=5 +>>> 5 + +python test.py use_child_a a=5 child.a=3 +>>> 3 + +python test.py use_parent_a a=5 child.a=3 +>>> 5 +``` + +### Using Zookeeper to define Larq or Keras experiments + +See [examples/larq_experiment.py](examples/larq_experiment.py) for an example of +how to use Zookeeper to define all the necessary components (dataset, +preprocessing, and model) of a Larq experiment: training a BinaryNet on +MNIST. This example can be easily adapted to other Larq or Keras models and +other datasets. + + +%package help +Summary: Development documents and examples for zookeeper +Provides: python3-zookeeper-doc +%description help +# Zookeeper + +[![GitHub Actions](https://github.com/larq/zookeeper/workflows/Unittest/badge.svg)](https://github.com/larq/zookeeper/actions?workflow=Unittest) [![Codecov](https://img.shields.io/codecov/c/github/larq/zookeeper)](https://codecov.io/github/larq/zookeeper?branch=main) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI](https://img.shields.io/pypi/v/zookeeper.svg)](https://pypi.org/project/zookeeper/) [![PyPI - License](https://img.shields.io/pypi/l/zookeeper.svg)](https://github.com/plumerai/zookeeper/blob/main/LICENSE) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) + +A small library for configuring modular applications. + +### Installation + +```console +pip install zookeeper +``` + +### Components + +The fundamental building blocks of Zookeeper are components. The +[`@component`](zookeeper/component.py) decorator is used to turn classes into +components. These component classes can have configurable fields, which are +declared with the `Field` constructor and class-level type annotations. Fields +can be created with or without default values. Components can also be nested, +with `ComponentField`s, such that child componenents can access the field values +defined on their parents. + +For example: + +```python +from zookeeper import component + +@component +class ChildComponent: + a: int = Field() # An `int` field with no default set + b: str = Field("foo") # A `str` field with default value `"foo"` + +@component +class ParentComponent: + a: int = Field() # The same `int` field as the child + child: ChildComponent = ComponentField() # A nested component field, of type `ChildComponent` +``` + +After instantiation, components can be 'configured' with a configuration +dictionary, containing values for a tree of nested fields. This process +automatically injects the correct values into each field. + +If a child sub-component declares a field which already exists in some +containing ancestor component, then it will pick up the value that's set on the +parent, unless a 'scoped' value is set on the child. + +For example: + +``` +from zookeeper import configure + +p = ParentComponent() + +configure( + p, + { + "a": 5, + "child.a": 4, + } +) + +>>> 'ChildComponent' is the only concrete component class that satisfies the type +>>> of the annotated parameter 'ParentComponent.child'. Using an instance of this +>>> class by default. + +print(p) + +>>> ParentComponent( +>>> a = 5, +>>> child = ChildComponent( +>>> a = 4, +>>> b = "foo" +>>> ) +>>> ) +``` + +### Tasks and the CLI + +The [`@task`](zookeeper/task.py) decorator is used to define Zookeeper tasks and +can be applied to any class that implements an argument-less `run` method. Such +tasks can be run through the Zookeeper CLI, with parameter values passed in +through CLI arguments (`configure` is implicitly called). + +For example: + +```python +from zookeeper import cli, task + +@task +class UseChildA: + parent: ParentComponent = ComponentField() + def run(self): + print(self.parent.child.a) + +@task +class UseParentA(UseChildA): + def run(self): + print(self.parent.a) + +if __name__ == "__main__": + cli() +``` + +Running the above file then gives a nice CLI interface: + +``` +python test.py use_child_a +>>> ValueError: No configuration value found for annotated parameter 'UseChildA.parent.a' of type 'int'. + +python test.py use_child_a a=5 +>>> 5 + +python test.py use_child_a a=5 child.a=3 +>>> 3 + +python test.py use_parent_a a=5 child.a=3 +>>> 5 +``` + +### Using Zookeeper to define Larq or Keras experiments + +See [examples/larq_experiment.py](examples/larq_experiment.py) for an example of +how to use Zookeeper to define all the necessary components (dataset, +preprocessing, and model) of a Larq experiment: training a BinaryNet on +MNIST. This example can be easily adapted to other Larq or Keras models and +other datasets. + + +%prep +%autosetup -n zookeeper-1.3.3 + +%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-zookeeper -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot - 1.3.3-1 +- Package Spec generated -- cgit v1.2.3