All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fix Redis CROSSSLOT Keys following issue #126
- Fix broken SqliteBucket following issue #132
- Allow to pass rates directly to Limiter to use default ImMemoryBucket with Limiter
- Allow to pass Duration to
max_delay
argument of Limiter
- Critical bug fix: importing redis fail crashing apps
Third major release with API breaking changes:
- Drop python 3.7 (only python ^3.8)
- Bucket must be initialized before passing to Limiter
- Auto leaking (provided by BucketFactory)
- Decorator API changes
- Limiter workable with both async/sync out-of-the-box
- Async RedisBucket built-in
- Contextmanager not available yet
- Add change log to sdist
- Improve test coverage
- Force check some bucket-keyword arguments
- Fix unit test to make test results stable
- Fix remaining-time calculation using exact 3 decimals only
- Increase test intesity to ensure correctness
- Fix SQLite OperationalError when getting more items than SQLite variable limit
- Build both
wheel
andsdist
on publish
- Add option to expire redis key when using RedisBucket
- Python 3.6 support
- Add Sphinx config
- Add documentation site: https://pyrate-limiter.readthedocs.io
- Add some missing type hints
- Add package metadata to indicate PEP-561 compliance
- Add
flush()
method to all bucket classes
- Add
FileLockSQliteBucket
for a SQLite backend with file-based locking - Add optional backend dependencies to package metadata
- Make SQLite bucket thread-safe and multiprocess-safe
- Remove development scripts from package published on PyPI
- Add
nox
to run development scripts
- Replace all formatting/linting tools with pre-commit
- Add
SQliteBucket
to persist rate limit data in a SQLite database
- Custom time source
- Add
RedisClusterBucket
to support usingPyrateLimiter
withredis-py-cluster
- Update README, add Table of Content
- Run CI tests for all supported python versions
- Fix issue with deployments on Travis CI
- Use
time.monotonic()
instead oftime.time()
- Support for floating point rate-limiting delays (more granular than 1 second)
- Bucket group initialization
- Support for python 3.6
- Incorrect type hint
- LICENSE file to be included in PyPI package
- Incorrect delay time when using using
Limiter.ratelimit()
withdelay=True
- Support for using
Limiter.ratelimit()
as a contextmanager or async contextmanager - Separate
LimitContextDecorator
class to handleLimiter.ratelimit()
behavior - Package published on conda-forge
- Internal: Reduce cognitive complexity
- Incorrect check log against time-window
Limiter.ratelimit()
method, an async-compatible decorator that optionally adds rate-limiting delays
- Code duplication
- Thread lock for Bucket's state modification in case of Multi-threading
- Html Cover Report
- LocalBucket's default init value being mutated
- Typos. A lot of friggin' typos.