Changelog¶
v3.1.0 - 2022-04-19¶
Drop support for Python 3.7.
The
typing_extensionspackage is no longer a dependency.Use Python 3.10 for building release artifacts.
v3.0.5 - 2022-01-23¶
Formally declare support for Python 3.10.
Many minor updates to dev/test code and configuration.
Upgrade to newer versions of sphinx-related libraries.
v3.0.4 - 2021-08-16¶
Resolve more issues with using this library when mypy’s strict option is enabled.
v3.0.3 - 2021-08-16¶
Ensure py.typed file is actually included in built packages.
v3.0.2 - 2021-08-16¶
Add py.typed file so that mypy recognises this package as having type annotations.
v3.0.1 - 2021-08-09¶
Various small updates to documentation and docstrings.
v3.0.0 - 2021-08-08¶
This release provides several improvements and resolves several issues that were
only identified after the initial release of Freiner. Unfortunately some of
these changes necessitate another major version bump.
Moved strategy classes into separate files, one per strategy class.
Instead of a “base”
StorageProtocolclass and aMovingWindowStorageclass that extends from it, there are now two totally separateProtocolclasses:FixedWindowStorageandMovingWindowStorage. They are compatible with each other, so storage backends can (and do) implement both of them simultaneously.All time values are now returned as floats. Previously the interfaces claimed to only be returning integers, but I’m pretty sure floats were sometimes returned.
Some methods that previously returned tuples will now return named tuples.
Some timing issues that likely only arised in testing code have been resolved.
More symbols are available for import from the top-level
freinerpackage.The only modules that aren’t available should be ones that rely on external dependencies (eg. redis or memcached).
An internal locking mechanism has been renamed to properly indicate it is not part of the public API.
Tightened up the comparison logic for rate limit items.
Cleaned up some quirks in the rate limit string parser.
Massive improvements to the documentation, including class and method docstrings.
Documentation published at https://freiner.readthedocs.io
Minor adjustments to some exception messages.
v2.0.0 - 2021-08-05¶
First release after the fork from limits.
Renamed
HISTORY.rsttoCHANGELOG.rst.Support only Python 3.7 and above.
Support for Python 2.7 has been completely removed.
Support for pypy may exist, but is not being tested for. Patches are welcome, even if support for some storage backends is missing.
Removed code related to Google App Engine (GAE), as I cannot meaningfully maintain it.
Removed old references to Flask code from before the original split from Flask-Limiter.
Removed tests for Redis Cluster. Support is provided on a best-effort basis. Patches welcome.
Removed Dependabot config. This may return at some point.
Removed versioneer, CodeQL tooling, and overcommit config.
Removed OS-specific stuff for running tests. The new test suite is currently only tested on Linux, with the latest versions of docker and docker-compose. Patches are welcome as long as they don’t introduce significant complexity.
Removed the primary Makefile. Replaced it with
invoke, which is OS-agnostic.Replaced all code quality and formatting tools with
flake8,black, andisort.Introduced type annotations and
mypy.Moved all configuration out of
setup.py, mostly in tosetup.cfg.Eliminated the storage registry. There is no generic URI parsing system or generic storage factory now.
Changed the
Storagebase class to aProtocol.Storage classes no longer accept URIs to their constructors.
Most storage classes have a
from_uriclass method to parse URIs.Storage class constructors now accept instances of the actual backend client. This allows you to initialise the relevant client however you want, rather than being restricted to what the URI parser function is capable of.
Removed usage of deprecated
inspectfunctionality.Added many new tests to improve test quality and coverage.
Replaced usage of
hirowithfreezegunin tests.Various error types and messages have been improved.
Two unmerged PRs submitted to
limitshave been applied to this project.
Documentation is still a work in progress at this stage. It will eventually be published to ReadTheDocs.
v1.0.0 - 2015-01-08¶
Initial import of common rate limiting code from Flask-Limiter