diff options
Diffstat (limited to 'python-aiolimiter.spec')
-rw-r--r-- | python-aiolimiter.spec | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/python-aiolimiter.spec b/python-aiolimiter.spec new file mode 100644 index 0000000..8f13ff0 --- /dev/null +++ b/python-aiolimiter.spec @@ -0,0 +1,333 @@ +%global _empty_manifest_terminate_build 0 +Name: python-aiolimiter +Version: 1.0.0 +Release: 1 +Summary: asyncio rate limiter, a leaky bucket implementation +License: MIT +URL: https://github.com/mjpieters/aiolimiter +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/33/c9/854de19ff2b2a83111e892ef3028504a927f1aa19347de3f62abf38c2c99/aiolimiter-1.0.0.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp-theme +Requires: python3-importlib_metadata +Requires: python3-sphinx +Requires: python3-sphinx-autodoc-typehints +Requires: python3-sphinxcontrib-spelling +Requires: python3-toml + +%description +# aiolimiter + +[![Azure Pipelines status for master branch][azure_badge]][azure_status] +[![codecov.io status for master branch][codecov_badge]][codecov_status] +[![Latest PyPI package version][pypi_badge]][aiolimiter_release] +[![Latest Read The Docs][rtd_badge]][aiolimiter_docs] + +[azure_badge]: https://dev.azure.com/mjpieters/aiolimiter/_apis/build/status/CI?branchName=master +[azure_status]: https://dev.azure.com/mjpieters/aiolimiter/_build/latest?definitionId=4&branchName=master "Azure Pipelines status for master branch" +[codecov_badge]: https://codecov.io/gh/mjpieters/aiolimiter/branch/master/graph/badge.svg +[codecov_status]: https://codecov.io/gh/mjpieters/aiolimiter "codecov.io status for master branch" +[pypi_badge]: https://badge.fury.io/py/aiolimiter.svg +[aiolimiter_release]: https://pypi.org/project/aiolimiter "Latest PyPI package version" +[rtd_badge]: https://readthedocs.org/projects/aiolimiter/badge/?version=latest +[aiolimiter_docs]: https://aiolimiter.readthedocs.io/en/latest/?badge=latest "Latest Read The Docs" + +## Introduction + +An efficient implementation of a rate limiter for asyncio. + +This project implements the [Leaky bucket algorithm][], giving you precise control over the rate a code section can be entered: + +```python +from aiolimiter import AsyncLimiter + +# allow for 100 concurrent entries within a 30 second window +rate_limit = AsyncLimiter(100, 30) + + +async def some_coroutine(): + async with rate_limit: + # this section is *at most* going to entered 100 times + # in a 30 second period. + await do_something() +``` + +It was first developed [as an answer on Stack Overflow][so45502319]. + +## Documentation + +https://aiolimiter.readthedocs.io + +## Installation + +```sh +$ pip install aiolimiter +``` + +The library requires Python 3.6 or newer. + +## Requirements + +- Python >= 3.6 + +## License + +`aiolimiter` is offered under the [MIT license](./LICENSE.txt). + +## Source code + +The project is hosted on [GitHub][]. + +Please file an issue in the [bug tracker][] if you have found a bug +or have some suggestions to improve the library. + +## Developer setup + +This project uses [poetry][] to manage dependencies, testing and releases. Make sure you have installed that tool, then run the following command to get set up: + +```sh +poetry install -E docs && poetry run doit devsetup +``` + +Apart from using `poetry run doit devsetup`, you can either use `poetry shell` to enter a shell environment with a virtualenv set up for you, or use `poetry run ...` to run commands within the virtualenv. + +Tests are run with `pytest` and `tox`. Releases are made with `poetry build` and `poetry publish`. Code quality is maintained with `flake8`, `black` and `mypy`, and `pre-commit` runs quick checks to maintain the standards set. + +A series of `doit` tasks are defined; run `poetry run doit list` (or `doit list` with `poetry shell` activated) to list them. The default action is to run a full linting, testing and building run. It is recommended you run this before creating a pull request. + +[leaky bucket algorithm]: https://en.wikipedia.org/wiki/Leaky_bucket +[so45502319]: https://stackoverflow.com/a/45502319/100297 +[github]: https://github.com/mjpieters/aiolimiter +[bug tracker]: https://github.com/mjpieters/aiolimiter/issues +[poetry]: https://poetry.eustace.io/ + + + +%package -n python3-aiolimiter +Summary: asyncio rate limiter, a leaky bucket implementation +Provides: python-aiolimiter +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-aiolimiter +# aiolimiter + +[![Azure Pipelines status for master branch][azure_badge]][azure_status] +[![codecov.io status for master branch][codecov_badge]][codecov_status] +[![Latest PyPI package version][pypi_badge]][aiolimiter_release] +[![Latest Read The Docs][rtd_badge]][aiolimiter_docs] + +[azure_badge]: https://dev.azure.com/mjpieters/aiolimiter/_apis/build/status/CI?branchName=master +[azure_status]: https://dev.azure.com/mjpieters/aiolimiter/_build/latest?definitionId=4&branchName=master "Azure Pipelines status for master branch" +[codecov_badge]: https://codecov.io/gh/mjpieters/aiolimiter/branch/master/graph/badge.svg +[codecov_status]: https://codecov.io/gh/mjpieters/aiolimiter "codecov.io status for master branch" +[pypi_badge]: https://badge.fury.io/py/aiolimiter.svg +[aiolimiter_release]: https://pypi.org/project/aiolimiter "Latest PyPI package version" +[rtd_badge]: https://readthedocs.org/projects/aiolimiter/badge/?version=latest +[aiolimiter_docs]: https://aiolimiter.readthedocs.io/en/latest/?badge=latest "Latest Read The Docs" + +## Introduction + +An efficient implementation of a rate limiter for asyncio. + +This project implements the [Leaky bucket algorithm][], giving you precise control over the rate a code section can be entered: + +```python +from aiolimiter import AsyncLimiter + +# allow for 100 concurrent entries within a 30 second window +rate_limit = AsyncLimiter(100, 30) + + +async def some_coroutine(): + async with rate_limit: + # this section is *at most* going to entered 100 times + # in a 30 second period. + await do_something() +``` + +It was first developed [as an answer on Stack Overflow][so45502319]. + +## Documentation + +https://aiolimiter.readthedocs.io + +## Installation + +```sh +$ pip install aiolimiter +``` + +The library requires Python 3.6 or newer. + +## Requirements + +- Python >= 3.6 + +## License + +`aiolimiter` is offered under the [MIT license](./LICENSE.txt). + +## Source code + +The project is hosted on [GitHub][]. + +Please file an issue in the [bug tracker][] if you have found a bug +or have some suggestions to improve the library. + +## Developer setup + +This project uses [poetry][] to manage dependencies, testing and releases. Make sure you have installed that tool, then run the following command to get set up: + +```sh +poetry install -E docs && poetry run doit devsetup +``` + +Apart from using `poetry run doit devsetup`, you can either use `poetry shell` to enter a shell environment with a virtualenv set up for you, or use `poetry run ...` to run commands within the virtualenv. + +Tests are run with `pytest` and `tox`. Releases are made with `poetry build` and `poetry publish`. Code quality is maintained with `flake8`, `black` and `mypy`, and `pre-commit` runs quick checks to maintain the standards set. + +A series of `doit` tasks are defined; run `poetry run doit list` (or `doit list` with `poetry shell` activated) to list them. The default action is to run a full linting, testing and building run. It is recommended you run this before creating a pull request. + +[leaky bucket algorithm]: https://en.wikipedia.org/wiki/Leaky_bucket +[so45502319]: https://stackoverflow.com/a/45502319/100297 +[github]: https://github.com/mjpieters/aiolimiter +[bug tracker]: https://github.com/mjpieters/aiolimiter/issues +[poetry]: https://poetry.eustace.io/ + + + +%package help +Summary: Development documents and examples for aiolimiter +Provides: python3-aiolimiter-doc +%description help +# aiolimiter + +[![Azure Pipelines status for master branch][azure_badge]][azure_status] +[![codecov.io status for master branch][codecov_badge]][codecov_status] +[![Latest PyPI package version][pypi_badge]][aiolimiter_release] +[![Latest Read The Docs][rtd_badge]][aiolimiter_docs] + +[azure_badge]: https://dev.azure.com/mjpieters/aiolimiter/_apis/build/status/CI?branchName=master +[azure_status]: https://dev.azure.com/mjpieters/aiolimiter/_build/latest?definitionId=4&branchName=master "Azure Pipelines status for master branch" +[codecov_badge]: https://codecov.io/gh/mjpieters/aiolimiter/branch/master/graph/badge.svg +[codecov_status]: https://codecov.io/gh/mjpieters/aiolimiter "codecov.io status for master branch" +[pypi_badge]: https://badge.fury.io/py/aiolimiter.svg +[aiolimiter_release]: https://pypi.org/project/aiolimiter "Latest PyPI package version" +[rtd_badge]: https://readthedocs.org/projects/aiolimiter/badge/?version=latest +[aiolimiter_docs]: https://aiolimiter.readthedocs.io/en/latest/?badge=latest "Latest Read The Docs" + +## Introduction + +An efficient implementation of a rate limiter for asyncio. + +This project implements the [Leaky bucket algorithm][], giving you precise control over the rate a code section can be entered: + +```python +from aiolimiter import AsyncLimiter + +# allow for 100 concurrent entries within a 30 second window +rate_limit = AsyncLimiter(100, 30) + + +async def some_coroutine(): + async with rate_limit: + # this section is *at most* going to entered 100 times + # in a 30 second period. + await do_something() +``` + +It was first developed [as an answer on Stack Overflow][so45502319]. + +## Documentation + +https://aiolimiter.readthedocs.io + +## Installation + +```sh +$ pip install aiolimiter +``` + +The library requires Python 3.6 or newer. + +## Requirements + +- Python >= 3.6 + +## License + +`aiolimiter` is offered under the [MIT license](./LICENSE.txt). + +## Source code + +The project is hosted on [GitHub][]. + +Please file an issue in the [bug tracker][] if you have found a bug +or have some suggestions to improve the library. + +## Developer setup + +This project uses [poetry][] to manage dependencies, testing and releases. Make sure you have installed that tool, then run the following command to get set up: + +```sh +poetry install -E docs && poetry run doit devsetup +``` + +Apart from using `poetry run doit devsetup`, you can either use `poetry shell` to enter a shell environment with a virtualenv set up for you, or use `poetry run ...` to run commands within the virtualenv. + +Tests are run with `pytest` and `tox`. Releases are made with `poetry build` and `poetry publish`. Code quality is maintained with `flake8`, `black` and `mypy`, and `pre-commit` runs quick checks to maintain the standards set. + +A series of `doit` tasks are defined; run `poetry run doit list` (or `doit list` with `poetry shell` activated) to list them. The default action is to run a full linting, testing and building run. It is recommended you run this before creating a pull request. + +[leaky bucket algorithm]: https://en.wikipedia.org/wiki/Leaky_bucket +[so45502319]: https://stackoverflow.com/a/45502319/100297 +[github]: https://github.com/mjpieters/aiolimiter +[bug tracker]: https://github.com/mjpieters/aiolimiter/issues +[poetry]: https://poetry.eustace.io/ + + + +%prep +%autosetup -n aiolimiter-1.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-aiolimiter -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.0-1 +- Package Spec generated |