1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
==========
Change Log
==========
UNRELEASED
==========
v4.1
====
Additions:
----------
- Add RATELIMITE_HASH_ALGORITHM setting (#282, #285)
Minor changes:
--------------
- Fixed links in docs (#277)
- Test on Django 4.2 (#284)
v4.0
====
Breaking changes:
-----------------
- Renamed the package from ratelimit to django_ratelimit (#226)
- Changed the default value of the decorator's block kwarg to True (#271)
- Dropped support for Django versions < 3.2 (#263)
- Dropped support for Python versions < 3.7 (#263, #254, #266)
Additions:
----------
- Add RATELIMIT_IP_META_KEY setting (#218)
- Add RATELIMIT_EXCEPTION_CLASS setting (#247)
- Add a system check for cache configuration (#268)
Minor changes:
--------------
- Factor up _get_ip() logic into a single place (#218)
- Exception on empty REMOTE_ADDR is clearer (#220)
- Moved CI process to GitHub Actions (#219, #225)
- Automated release process (#273)
v3.0.1
======
Bug fixes
---------
- Fix import path values for rate= argument (#206)
v3.0
====
Breaking changes:
-----------------
- Drop Python 2 support (#167)
- Drop Django < 2.1 support (#167, #198)
- @ratelimit no longer directly supports class methods, use
@method_decorator
- Drop RatelimitMixin in favor of @method_decorator
- Moved is_ratelimited to ratelimit.core from ratelimit.utils
- Moved ratelimit.utils.get_usage_count to ratelimit.core.get_usage
Additions:
----------
- Made ratelimit.core.get_usage a documented, public method.
- Add IP address masking (#178)
- Add "Recipes" section to documentation
Minor changes:
--------------
- Update RatelimitMiddleware to modern style (#168)
- Refactor is_ratelimited and get_usage so is_ratelimited is a thinner
wrapper
v2.0.0
======
- A number of docs fixes
- Fail open when cache is unavailable
- Drop support for Django 1.8, 1.9, and 1.10
- Fix Django 2.0 compatibility and update documentation
- Test Django 2.1 support
v1.1.0
======
- Test against Django 1.11 and 2.0b
- Fix #85, explicitly set cache expiration slightly longer than cache
window.
- Add Django version classifiers.
v1.0.1
======
- Added Django 1.10 support.
v1.0.0
======
- Allow requests through when cache backend is unavailable.
- Add support for Django 1.9, drop support for Django <=1.7.
- Fix several small documentation issues.
- Fix support for missing headers.
v0.6
====
- Fix CBV inheritance.
- Better Django 1.8 support, fixing deprecation warnings and testing.
- Clean up some out-of-date docs.
- Fix counting behavior around increment and new cache keys.
- Correctly pass `group` to callable `key`s.
v0.5
====
- Rates are now counted in fixed—instead of sliding—windows, except for
per-second limits. See the Upgrade Notes.
- Mixin renamed to `RatelimitMixin` (lowercase `l`) for consistency.
- Dramatic rewrite.
- `ip`, `field`, and `keys` arguments replaced with `key`.
- well-known "key" values support.
- Custom callable rate functions.
- Support for "not limited" rate.
- Replaces ``skip_if`` argument.
v0.4
====
- (Sort of) make @ratelimit decorators stack.
- Add RateLimitMixin for CBVs.
- Fixes for Python <2.7.
- Clean up Travis and tox tests.
v0.3
====
- Drop the 'Backend' concept.
- Add settings: RATELIMIT_USE_CACHE and RATELIMIT_CACHE_PREFIX.
- Allow custom key functions.
- Tests with Django 1.4.x and 1.5.x.
- Refactor to simplify tests and development requirements.
v0.2
====
- Added real docs.
- Fix unicode field values.
- Add real tests.
- Use the Ratelimited exception, RatelimitMiddleware, and
RATELIMIT_VIEW setting.
- Add RATELIMIT_ENABLE setting.
- Add the skip_if argument.
- Always add request.limited.
v0.1
====
- Initial release.
|