{ "info": { "author": "Ian Stapleton Cordasco", "author_email": "graffatcolmingov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "===============================\n rush: A library for throttles\n===============================\n\nThis library is intended to be a collection of algorithms that can be reused\nwhen throttling user interactions with a resource (e.g., an API).\n\nThis library is still a work in progress. See goals for what we're striving\nfor.\n\n\nInstallation\n============\n\n.. code::\n\n pip install rush\n\n\nGoals\n=====\n\nBelow is the project's list of goals broken down by category\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 Redis GCRA implementation, likely borrowed from Ruby's `redis-gcra`_ gem.\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\nDesign\n------\n\n- Composable - ability to confidently use one algorithmic limiter with any\n properly written storage backend\n\n- Easy to understand - hopefully it will be easy to understand how the library\n works because of how composable it will be\n\n\n.. links\n\n.. _redis-gcra:\n https://github.com/rwz/redis-gcra/tree/master/vendor\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sigmavirus24/rush", "keywords": "throttles throttle algorithm gcra redis", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rush", "package_url": "https://pypi.org/project/rush/", "platform": "", "project_url": "https://pypi.org/project/rush/", "project_urls": { "Homepage": "https://github.com/sigmavirus24/rush" }, "release_url": "https://pypi.org/project/rush/2018.12.1/", "requires_dist": [ "attrs (>=18.1.0)", "redis ; extra == 'redis'", "rfc3986 (>=1.2.0) ; extra == 'redis'" ], "requires_python": ">= 3.6", "summary": "A library for throttling algorithms", "version": "2018.12.1" }, "last_serial": 4633435, "releases": { "2018.12.0": [ { "comment_text": "", "digests": { "md5": "659ea980cf4d6765a33880947751ac8a", "sha256": "ca7cd04a562e7798b807c83bf7553e61ace73bb172483b7b000e1edda1d47d8b" }, "downloads": -1, "filename": "rush-2018.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "659ea980cf4d6765a33880947751ac8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.6", "size": 15101, "upload_time": "2018-12-22T16:38:02", "url": "https://files.pythonhosted.org/packages/04/84/cc86c4afab4bf8fb70b3811087faa3f18bbc616de5b747db56108022b0c8/rush-2018.12.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "57795decfa78322041c0927a013ff9a6", "sha256": "92cf1337e81d1e99afd7cbd49892fcf3a57d6f1e179a239b4b094e4d762d2655" }, "downloads": -1, "filename": "rush-2018.12.0.tar.gz", "has_sig": false, "md5_digest": "57795decfa78322041c0927a013ff9a6", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.6", "size": 10918, "upload_time": "2018-12-22T16:38:04", "url": "https://files.pythonhosted.org/packages/1b/b8/d606c742f7f8d38829866a06993041740cc4d8a0ae21b8a1bb035b8e505b/rush-2018.12.0.tar.gz" } ], "2018.12.1": [ { "comment_text": "", "digests": { "md5": "03387b5da158d70df43b518b3e2195f7", "sha256": "7d0eaed37f58b009a49f835a410d6fd5121e1480705abcefe90b6871b9118e76" }, "downloads": -1, "filename": "rush-2018.12.1-py3-none-any.whl", "has_sig": false, "md5_digest": "03387b5da158d70df43b518b3e2195f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.6", "size": 15460, "upload_time": "2018-12-25T12:48:06", "url": "https://files.pythonhosted.org/packages/3d/42/5628bd0f6f440d00e128baa6eb343e66fe7f03f92c9797a63b588f0286fe/rush-2018.12.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19bf135baa85d6c439c20da05ecd1ec5", "sha256": "402f3ea6d5e3f90d636c2403b84729be831bfc8d6973645ab5febeeeb9fcef41" }, "downloads": -1, "filename": "rush-2018.12.1.tar.gz", "has_sig": false, "md5_digest": "19bf135baa85d6c439c20da05ecd1ec5", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.6", "size": 11147, "upload_time": "2018-12-25T12:48:08", "url": "https://files.pythonhosted.org/packages/e3/51/2e9c67b1daa66a6ebee6325eb0cc6b1c136914e40ea563848722d6775c5e/rush-2018.12.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "03387b5da158d70df43b518b3e2195f7", "sha256": "7d0eaed37f58b009a49f835a410d6fd5121e1480705abcefe90b6871b9118e76" }, "downloads": -1, "filename": "rush-2018.12.1-py3-none-any.whl", "has_sig": false, "md5_digest": "03387b5da158d70df43b518b3e2195f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">= 3.6", "size": 15460, "upload_time": "2018-12-25T12:48:06", "url": "https://files.pythonhosted.org/packages/3d/42/5628bd0f6f440d00e128baa6eb343e66fe7f03f92c9797a63b588f0286fe/rush-2018.12.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19bf135baa85d6c439c20da05ecd1ec5", "sha256": "402f3ea6d5e3f90d636c2403b84729be831bfc8d6973645ab5febeeeb9fcef41" }, "downloads": -1, "filename": "rush-2018.12.1.tar.gz", "has_sig": false, "md5_digest": "19bf135baa85d6c439c20da05ecd1ec5", "packagetype": "sdist", "python_version": "source", "requires_python": ">= 3.6", "size": 11147, "upload_time": "2018-12-25T12:48:08", "url": "https://files.pythonhosted.org/packages/e3/51/2e9c67b1daa66a6ebee6325eb0cc6b1c136914e40ea563848722d6775c5e/rush-2018.12.1.tar.gz" } ] }