1Metadata-Version: 2.1
2Name: rush
3Version: 2021.4.0
4Summary: A library for throttling algorithms
5Home-page: https://github.com/sigmavirus24/rush
6Author: Ian Stapleton Cordasco
7Author-email: graffatcolmingov@gmail.com
8License: MIT
9Description: ===============================
10         rush: A library for throttles
11        ===============================
12
13        |build-status| |coverage-status| |docs|
14
15        This library is a small collection of algorithms that can be reused
16        when throttling user interactions with a resource (e.g., an API).
17
18        This library strives to allow any limiter and backing store to be used
19        together without needing to be worried about potential compatibility.
20
21
22        Installation
23        ============
24
25        .. code::
26
27           pip install rush
28
29        .. code::
30
31           pipenv install rush
32
33
34        Features
35        ========
36
37        - A basic periodic interval rate limiter - N accesses per period of time. An
38          example would be the GitHub API that limits authenticated users to 5,000
39          requests per hour.
40
41        - A leaky bucket rate limiter based off of the Generic Cell Ratelimiting
42          Algorithm (a.k.a, GCRA).
43
44        - A Redis storage backend for rate limit results so that users can have state
45          persisted across machines and application restarts.
46
47        - A in-memory dictionary storage backend for quick prototyping and testing.
48
49        - Type annotations built into the library, verified with mypy, and distributed
50          to users.
51
52
53        Quality
54        =======
55
56        - 100% test coverage
57
58        - Code auto-formatted by Black (CI will check if formatting wasn't run prior
59          to push)
60
61        - Commit messages following a uniform Kernel-like style
62
63        - Flake8, pylint, mypy, and bandit linting
64
65        - Complete type annotations
66
67        - Complete documentation linted by doclint and strictly compiled by Sphinx
68
69
70        Contributing
71        ============
72
73        - All contributors are expected to read and follow our `Code of Conduct`_.
74
75        - To reduce the initial friction of submitting a pull request:
76
77           - Please run ``tox`` prior to submitting your pull request.
78
79           - After a commit, please run ``tox -e commitlint``.
80
81        - To make it easier to support you, please gather the following information
82          prior to filing an issue:
83
84           - How you installed ``rush`` and the versions of its dependencies (if
85             you're using the Redis store, please include ``rfc3986`` and ``redis``
86             version information).
87
88           - What stores and limiters are you using?
89
90           - An example that reproduces your problem
91
92
93        .. links
94
95        .. _Code of Conduct:
96           ./CODE_OF_CONDUCT.txt
97        .. |build-status| image:: https://travis-ci.org/sigmavirus24/rush.svg?branch=master&style=flat
98           :target: https://travis-ci.org/sigmavirus24/rush
99           :alt: Build status
100        .. |coverage-status| image:: http://codecov.io/github/sigmavirus24/rush/coverage.svg?branch=master
101           :target: http://codecov.io/github/sigmavirus24/rush?branch=master
102           :alt: Test coverage
103        .. |docs| image:: https://readthedocs.org/projects/rush/badge/?version=latest&style=flat
104           :target: http://rush.readthedocs.io/
105           :alt: Documentation
106
107        .. vim:set tw=72
108
109Keywords: throttles throttle algorithm gcra redis
110Platform: UNKNOWN
111Classifier: Development Status :: 5 - Production/Stable
112Classifier: Environment :: Console
113Classifier: Intended Audience :: Developers
114Classifier: License :: OSI Approved :: MIT License
115Classifier: Programming Language :: Python
116Classifier: Programming Language :: Python :: 3.6
117Classifier: Programming Language :: Python :: 3.7
118Requires-Python: >=3.6
119Description-Content-Type: text/x-rst
120Provides-Extra: redis
121