diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-more-executors.spec | 376 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 378 insertions, 0 deletions
@@ -0,0 +1 @@ +/more-executors-2.11.4.tar.gz diff --git a/python-more-executors.spec b/python-more-executors.spec new file mode 100644 index 0000000..e8ce223 --- /dev/null +++ b/python-more-executors.spec @@ -0,0 +1,376 @@ +%global _empty_manifest_terminate_build 0 +Name: python-more-executors +Version: 2.11.4 +Release: 1 +Summary: A library of composable Python executors and futures +License: GNU General Public License +URL: https://github.com/rohanpm/more-executors +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b1/aa/b16e2197fcf2721e0840ebcd88c687fdf0446608260d6a6d1fcb3e175a8d/more-executors-2.11.4.tar.gz +BuildArch: noarch + +Requires: python3-six +Requires: python3-futures +Requires: python3-monotonic +Requires: python3-prometheus-client + +%description +# more-executors + +[](https://circleci.com/gh/rohanpm/more-executors/tree/master) +[](https://codeclimate.com/github/rohanpm/more-executors/maintainability) +[](https://codeclimate.com/github/rohanpm/more-executors/test_coverage) + +- [API documentation](https://rohanpm.github.io/more-executors/) +- [Source](https://github.com/rohanpm/more-executors) +- [PyPI](https://pypi.python.org/pypi/more-executors) + +This library is intended for use with the +[`concurrent.futures`](https://docs.python.org/3/library/concurrent.futures.html) +module. It includes a collection of `Executor` implementations in order to +extend the behavior of `Future` objects. + +## Features + +- Futures with implicit retry +- Futures with implicit cancel on executor shutdown +- Futures with implicit cancel after timeout +- Futures with transformed output values (sync & async) +- Futures resolved by a caller-provided polling function +- Throttle the number of futures running at once +- Synchronous executor +- Bridge `concurrent.futures` with `asyncio` +- Convenience API for creating executors +- Instrumented with [Prometheus](https://prometheus.io/) + +See the [API documentation](https://rohanpm.github.io/more-executors/) for detailed information on usage. + +## Example + +This example combines the map and retry executors to create futures for +HTTP requests running concurrently, decoding JSON responses within the +future and retrying on error. + +```python +import requests +from concurrent.futures import as_completed +from more_executors import Executors + + +def get_json(response): + response.raise_for_status() + return (response.url, response.json()) + + +def fetch_urls(urls): + # Configure an executor: + # - run up to 4 requests concurrently, in separate threads + # - run get_json on each response + # - retry up to several minutes on any errors + executor = Executors.\ + thread_pool(max_workers=4).\ + with_map(get_json).\ + with_retry() + + # Submit requests for each given URL + futures = [executor.submit(requests.get, url) + for url in urls] + + # Futures API works as normal; we can block on the completed + # futures and map/retry happens implicitly + for future in as_completed(futures): + (url, data) = future.result() + do_something(url, data) +``` + +## Development + +`virtualenv` and `pip` may be used to locally install this project from +source: + +``` +virtualenv ~/dev/python +. ~/dev/python/bin/activate + +git clone https://github.com/rohanpm/more-executors +cd more-executors + +pip install --editable . +``` + +Autotests may be run with pytest: + +``` +pip install -r test-requirements.txt +py.test +``` + +Submit pull requests against https://github.com/rohanpm/more-executors. + +## License + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + + + + +%package -n python3-more-executors +Summary: A library of composable Python executors and futures +Provides: python-more-executors +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-more-executors +# more-executors + +[](https://circleci.com/gh/rohanpm/more-executors/tree/master) +[](https://codeclimate.com/github/rohanpm/more-executors/maintainability) +[](https://codeclimate.com/github/rohanpm/more-executors/test_coverage) + +- [API documentation](https://rohanpm.github.io/more-executors/) +- [Source](https://github.com/rohanpm/more-executors) +- [PyPI](https://pypi.python.org/pypi/more-executors) + +This library is intended for use with the +[`concurrent.futures`](https://docs.python.org/3/library/concurrent.futures.html) +module. It includes a collection of `Executor` implementations in order to +extend the behavior of `Future` objects. + +## Features + +- Futures with implicit retry +- Futures with implicit cancel on executor shutdown +- Futures with implicit cancel after timeout +- Futures with transformed output values (sync & async) +- Futures resolved by a caller-provided polling function +- Throttle the number of futures running at once +- Synchronous executor +- Bridge `concurrent.futures` with `asyncio` +- Convenience API for creating executors +- Instrumented with [Prometheus](https://prometheus.io/) + +See the [API documentation](https://rohanpm.github.io/more-executors/) for detailed information on usage. + +## Example + +This example combines the map and retry executors to create futures for +HTTP requests running concurrently, decoding JSON responses within the +future and retrying on error. + +```python +import requests +from concurrent.futures import as_completed +from more_executors import Executors + + +def get_json(response): + response.raise_for_status() + return (response.url, response.json()) + + +def fetch_urls(urls): + # Configure an executor: + # - run up to 4 requests concurrently, in separate threads + # - run get_json on each response + # - retry up to several minutes on any errors + executor = Executors.\ + thread_pool(max_workers=4).\ + with_map(get_json).\ + with_retry() + + # Submit requests for each given URL + futures = [executor.submit(requests.get, url) + for url in urls] + + # Futures API works as normal; we can block on the completed + # futures and map/retry happens implicitly + for future in as_completed(futures): + (url, data) = future.result() + do_something(url, data) +``` + +## Development + +`virtualenv` and `pip` may be used to locally install this project from +source: + +``` +virtualenv ~/dev/python +. ~/dev/python/bin/activate + +git clone https://github.com/rohanpm/more-executors +cd more-executors + +pip install --editable . +``` + +Autotests may be run with pytest: + +``` +pip install -r test-requirements.txt +py.test +``` + +Submit pull requests against https://github.com/rohanpm/more-executors. + +## License + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + + + + +%package help +Summary: Development documents and examples for more-executors +Provides: python3-more-executors-doc +%description help +# more-executors + +[](https://circleci.com/gh/rohanpm/more-executors/tree/master) +[](https://codeclimate.com/github/rohanpm/more-executors/maintainability) +[](https://codeclimate.com/github/rohanpm/more-executors/test_coverage) + +- [API documentation](https://rohanpm.github.io/more-executors/) +- [Source](https://github.com/rohanpm/more-executors) +- [PyPI](https://pypi.python.org/pypi/more-executors) + +This library is intended for use with the +[`concurrent.futures`](https://docs.python.org/3/library/concurrent.futures.html) +module. It includes a collection of `Executor` implementations in order to +extend the behavior of `Future` objects. + +## Features + +- Futures with implicit retry +- Futures with implicit cancel on executor shutdown +- Futures with implicit cancel after timeout +- Futures with transformed output values (sync & async) +- Futures resolved by a caller-provided polling function +- Throttle the number of futures running at once +- Synchronous executor +- Bridge `concurrent.futures` with `asyncio` +- Convenience API for creating executors +- Instrumented with [Prometheus](https://prometheus.io/) + +See the [API documentation](https://rohanpm.github.io/more-executors/) for detailed information on usage. + +## Example + +This example combines the map and retry executors to create futures for +HTTP requests running concurrently, decoding JSON responses within the +future and retrying on error. + +```python +import requests +from concurrent.futures import as_completed +from more_executors import Executors + + +def get_json(response): + response.raise_for_status() + return (response.url, response.json()) + + +def fetch_urls(urls): + # Configure an executor: + # - run up to 4 requests concurrently, in separate threads + # - run get_json on each response + # - retry up to several minutes on any errors + executor = Executors.\ + thread_pool(max_workers=4).\ + with_map(get_json).\ + with_retry() + + # Submit requests for each given URL + futures = [executor.submit(requests.get, url) + for url in urls] + + # Futures API works as normal; we can block on the completed + # futures and map/retry happens implicitly + for future in as_completed(futures): + (url, data) = future.result() + do_something(url, data) +``` + +## Development + +`virtualenv` and `pip` may be used to locally install this project from +source: + +``` +virtualenv ~/dev/python +. ~/dev/python/bin/activate + +git clone https://github.com/rohanpm/more-executors +cd more-executors + +pip install --editable . +``` + +Autotests may be run with pytest: + +``` +pip install -r test-requirements.txt +py.test +``` + +Submit pull requests against https://github.com/rohanpm/more-executors. + +## License + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + + + + +%prep +%autosetup -n more-executors-2.11.4 + +%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-more-executors -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 2.11.4-1 +- Package Spec generated @@ -0,0 +1 @@ +50bcdc8af7ef4791be633f32be0d098c more-executors-2.11.4.tar.gz |