==========
Change Log
==========

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.
