├── .coveragerc ├── .github └── workflows │ └── build_test.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .python-version ├── .readthedocs.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── benchmarks └── stress_limiters.py ├── docker-compose.yaml ├── docs ├── _static │ ├── components.jpg │ └── logo.png ├── changelog.md ├── conf.py ├── contributing.md ├── index.md └── reference.md ├── examples ├── asyncio_decorator.py ├── asyncio_ratelimit.py ├── httpx_ratelimiter.py ├── in_memory_multiprocess.py ├── postgres_example.py ├── redis_example.py └── sqlite_filelock_multiprocess.py ├── noxfile.py ├── pyproject.toml ├── pyrate_limiter ├── __init__.py ├── _version.py ├── abstracts │ ├── __init__.py │ ├── bucket.py │ ├── rate.py │ └── wrappers.py ├── buckets │ ├── __init__.py │ ├── in_memory_bucket.py │ ├── mp_bucket.py │ ├── postgres.py │ ├── redis_bucket.py │ └── sqlite_bucket.py ├── clocks.py ├── limiter.py ├── limiter_factory.py ├── py.typed └── utils.py ├── setup.cfg ├── tests ├── __init__.py ├── conftest.py ├── demo_bucket_factory.py ├── helpers.py ├── test_blocking_timeouts.py ├── test_bucket_all.py ├── test_bucket_factory.py ├── test_closing.py ├── test_combinedlock.py ├── test_limiter.py ├── test_multi_bucket.py ├── test_multiprocessing.py └── test_others.py └── uv.lock /.coveragerc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/.coveragerc -------------------------------------------------------------------------------- /.github/workflows/build_test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/.github/workflows/build_test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/.gitignore -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.10 -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/.readthedocs.yml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/CONTRIBUTING.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/README.md -------------------------------------------------------------------------------- /benchmarks/stress_limiters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/benchmarks/stress_limiters.py -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docker-compose.yaml -------------------------------------------------------------------------------- /docs/_static/components.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docs/_static/components.jpg -------------------------------------------------------------------------------- /docs/_static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docs/_static/logo.png -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | ```{include} ../CHANGELOG.md 3 | :start-line: 1 4 | ``` 5 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing Guide 2 | ```{include} ../CONTRIBUTING.md 3 | :start-line: 1 4 | ``` 5 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docs/index.md -------------------------------------------------------------------------------- /docs/reference.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/docs/reference.md -------------------------------------------------------------------------------- /examples/asyncio_decorator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/asyncio_decorator.py -------------------------------------------------------------------------------- /examples/asyncio_ratelimit.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/asyncio_ratelimit.py -------------------------------------------------------------------------------- /examples/httpx_ratelimiter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/httpx_ratelimiter.py -------------------------------------------------------------------------------- /examples/in_memory_multiprocess.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/in_memory_multiprocess.py -------------------------------------------------------------------------------- /examples/postgres_example.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/postgres_example.py -------------------------------------------------------------------------------- /examples/redis_example.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/redis_example.py -------------------------------------------------------------------------------- /examples/sqlite_filelock_multiprocess.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/examples/sqlite_filelock_multiprocess.py -------------------------------------------------------------------------------- /noxfile.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/noxfile.py -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyproject.toml -------------------------------------------------------------------------------- /pyrate_limiter/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/__init__.py -------------------------------------------------------------------------------- /pyrate_limiter/_version.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/_version.py -------------------------------------------------------------------------------- /pyrate_limiter/abstracts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/abstracts/__init__.py -------------------------------------------------------------------------------- /pyrate_limiter/abstracts/bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/abstracts/bucket.py -------------------------------------------------------------------------------- /pyrate_limiter/abstracts/rate.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/abstracts/rate.py -------------------------------------------------------------------------------- /pyrate_limiter/abstracts/wrappers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/abstracts/wrappers.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/__init__.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/in_memory_bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/in_memory_bucket.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/mp_bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/mp_bucket.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/postgres.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/postgres.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/redis_bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/redis_bucket.py -------------------------------------------------------------------------------- /pyrate_limiter/buckets/sqlite_bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/buckets/sqlite_bucket.py -------------------------------------------------------------------------------- /pyrate_limiter/clocks.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/clocks.py -------------------------------------------------------------------------------- /pyrate_limiter/limiter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/limiter.py -------------------------------------------------------------------------------- /pyrate_limiter/limiter_factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/limiter_factory.py -------------------------------------------------------------------------------- /pyrate_limiter/py.typed: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pyrate_limiter/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/pyrate_limiter/utils.py -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/setup.cfg -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/conftest.py -------------------------------------------------------------------------------- /tests/demo_bucket_factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/demo_bucket_factory.py -------------------------------------------------------------------------------- /tests/helpers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/helpers.py -------------------------------------------------------------------------------- /tests/test_blocking_timeouts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_blocking_timeouts.py -------------------------------------------------------------------------------- /tests/test_bucket_all.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_bucket_all.py -------------------------------------------------------------------------------- /tests/test_bucket_factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_bucket_factory.py -------------------------------------------------------------------------------- /tests/test_closing.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_closing.py -------------------------------------------------------------------------------- /tests/test_combinedlock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_combinedlock.py -------------------------------------------------------------------------------- /tests/test_limiter.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_limiter.py -------------------------------------------------------------------------------- /tests/test_multi_bucket.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_multi_bucket.py -------------------------------------------------------------------------------- /tests/test_multiprocessing.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_multiprocessing.py -------------------------------------------------------------------------------- /tests/test_others.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/tests/test_others.py -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vutran1710/PyrateLimiter/HEAD/uv.lock --------------------------------------------------------------------------------