rush


Namerush JSON
Version 2021.4.0 PyPI version JSON
download
home_pagehttps://github.com/sigmavirus24/rush
SummaryA library for throttling algorithms
upload_time2021-04-01 17:58:37
maintainer
docs_urlNone
authorIan Stapleton Cordasco
requires_python>=3.6
licenseMIT
keywords throttles throttle algorithm gcra redis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            ===============================
 rush: A library for throttles
===============================

|build-status| |coverage-status| |docs|

This library is a small collection of algorithms that can be reused
when throttling user interactions with a resource (e.g., an API).

This library strives to allow any limiter and backing store to be used
together without needing to be worried about potential compatibility.


Installation
============

.. code::

   pip install rush

.. code::

   pipenv install rush


Features
========

- A basic periodic interval rate limiter - N accesses per period of time. An
  example would be the GitHub API that limits authenticated users to 5,000
  requests per hour.

- A leaky bucket rate limiter based off of the Generic Cell Ratelimiting
  Algorithm (a.k.a, GCRA).

- A Redis storage backend for rate limit results so that users can have state
  persisted across machines and application restarts.

- A in-memory dictionary storage backend for quick prototyping and testing.

- Type annotations built into the library, verified with mypy, and distributed
  to users.


Quality
=======

- 100% test coverage

- Code auto-formatted by Black (CI will check if formatting wasn't run prior
  to push)

- Commit messages following a uniform Kernel-like style

- Flake8, pylint, mypy, and bandit linting

- Complete type annotations

- Complete documentation linted by doclint and strictly compiled by Sphinx


Contributing
============

- All contributors are expected to read and follow our `Code of Conduct`_.

- To reduce the initial friction of submitting a pull request:

   - Please run ``tox`` prior to submitting your pull request.

   - After a commit, please run ``tox -e commitlint``.

- To make it easier to support you, please gather the following information
  prior to filing an issue:

   - How you installed ``rush`` and the versions of its dependencies (if
     you're using the Redis store, please include ``rfc3986`` and ``redis``
     version information).

   - What stores and limiters are you using?

   - An example that reproduces your problem


.. links

.. _Code of Conduct:
   ./CODE_OF_CONDUCT.txt
.. |build-status| image:: https://travis-ci.org/sigmavirus24/rush.svg?branch=master&style=flat
   :target: https://travis-ci.org/sigmavirus24/rush
   :alt: Build status
.. |coverage-status| image:: http://codecov.io/github/sigmavirus24/rush/coverage.svg?branch=master
   :target: http://codecov.io/github/sigmavirus24/rush?branch=master
   :alt: Test coverage
.. |docs| image:: https://readthedocs.org/projects/rush/badge/?version=latest&style=flat
   :target: http://rush.readthedocs.io/
   :alt: Documentation

.. vim:set tw=72



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/sigmavirus24/rush",
    "name": "rush",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "throttles throttle algorithm gcra redis",
    "author": "Ian Stapleton Cordasco",
    "author_email": "graffatcolmingov@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/ae/f8/3be2826ee081aeaf47f61bce24d56e4dbf32cb841a2f2708554d4b471ed4/rush-2021.4.0.tar.gz",
    "platform": "",
    "description": "===============================\n rush: A library for throttles\n===============================\n\n|build-status| |coverage-status| |docs|\n\nThis library is a small collection of algorithms that can be reused\nwhen throttling user interactions with a resource (e.g., an API).\n\nThis library strives to allow any limiter and backing store to be used\ntogether without needing to be worried about potential compatibility.\n\n\nInstallation\n============\n\n.. code::\n\n   pip install rush\n\n.. code::\n\n   pipenv install rush\n\n\nFeatures\n========\n\n- A basic periodic interval rate limiter - N accesses per period of time. An\n  example would be the GitHub API that limits authenticated users to 5,000\n  requests per hour.\n\n- A leaky bucket rate limiter based off of the Generic Cell Ratelimiting\n  Algorithm (a.k.a, GCRA).\n\n- A Redis storage backend for rate limit results so that users can have state\n  persisted across machines and application restarts.\n\n- A in-memory dictionary storage backend for quick prototyping and testing.\n\n- Type annotations built into the library, verified with mypy, and distributed\n  to users.\n\n\nQuality\n=======\n\n- 100% test coverage\n\n- Code auto-formatted by Black (CI will check if formatting wasn't run prior\n  to push)\n\n- Commit messages following a uniform Kernel-like style\n\n- Flake8, pylint, mypy, and bandit linting\n\n- Complete type annotations\n\n- Complete documentation linted by doclint and strictly compiled by Sphinx\n\n\nContributing\n============\n\n- All contributors are expected to read and follow our `Code of Conduct`_.\n\n- To reduce the initial friction of submitting a pull request:\n\n   - Please run ``tox`` prior to submitting your pull request.\n\n   - After a commit, please run ``tox -e commitlint``.\n\n- To make it easier to support you, please gather the following information\n  prior to filing an issue:\n\n   - How you installed ``rush`` and the versions of its dependencies (if\n     you're using the Redis store, please include ``rfc3986`` and ``redis``\n     version information).\n\n   - What stores and limiters are you using?\n\n   - An example that reproduces your problem\n\n\n.. links\n\n.. _Code of Conduct:\n   ./CODE_OF_CONDUCT.txt\n.. |build-status| image:: https://travis-ci.org/sigmavirus24/rush.svg?branch=master&style=flat\n   :target: https://travis-ci.org/sigmavirus24/rush\n   :alt: Build status\n.. |coverage-status| image:: http://codecov.io/github/sigmavirus24/rush/coverage.svg?branch=master\n   :target: http://codecov.io/github/sigmavirus24/rush?branch=master\n   :alt: Test coverage\n.. |docs| image:: https://readthedocs.org/projects/rush/badge/?version=latest&style=flat\n   :target: http://rush.readthedocs.io/\n   :alt: Documentation\n\n.. vim:set tw=72\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A library for throttling algorithms",
    "version": "2021.4.0",
    "project_urls": {
        "Homepage": "https://github.com/sigmavirus24/rush"
    },
    "split_keywords": [
        "throttles",
        "throttle",
        "algorithm",
        "gcra",
        "redis"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f08f38d9f6a3c6d9b5ea2a79414c9a65a7dd7bbe97ee1554396ffe1811a0fad",
                "md5": "87cb10fdc41bda4bd77437737441d3ed",
                "sha256": "0f775f35a951b7874442c78eaa312bbd442be130dee9508f8d05b2f43dbd3acc"
            },
            "downloads": -1,
            "filename": "rush-2021.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "87cb10fdc41bda4bd77437737441d3ed",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 18556,
            "upload_time": "2021-04-01T17:58:36",
            "upload_time_iso_8601": "2021-04-01T17:58:36.628721Z",
            "url": "https://files.pythonhosted.org/packages/1f/08/f38d9f6a3c6d9b5ea2a79414c9a65a7dd7bbe97ee1554396ffe1811a0fad/rush-2021.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aef83be2826ee081aeaf47f61bce24d56e4dbf32cb841a2f2708554d4b471ed4",
                "md5": "edaf657fd579fc57aaf890fb8ecd4485",
                "sha256": "818624075f0313f64a4c38ba62bc4a6526ee31b463990c8aebf03a98f5aaf264"
            },
            "downloads": -1,
            "filename": "rush-2021.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "edaf657fd579fc57aaf890fb8ecd4485",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 15378,
            "upload_time": "2021-04-01T17:58:37",
            "upload_time_iso_8601": "2021-04-01T17:58:37.928345Z",
            "url": "https://files.pythonhosted.org/packages/ae/f8/3be2826ee081aeaf47f61bce24d56e4dbf32cb841a2f2708554d4b471ed4/rush-2021.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-04-01 17:58:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sigmavirus24",
    "github_project": "rush",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": false,
    "tox": true,
    "lcname": "rush"
}
        
Elapsed time: 2.22446s