Version 0.4.0
-------------

### new
- added support for msgspec serialization (both json and msgpack)
- support django 6
- support python 3.14

### Breaking changes
- dropped support for django 5.0 and 5.1
- `BackendCommands` and `AsyncBackendCommands` are no longer decorated with `omit_exception`.
- added `omit_exception_async` to decorate async operations, instead of using `omit_exception` for both sync and async.
- `omit_exception` no longer supports async functions and generators.
- added `DecoratedBackendCommands` and `DecoratedAsyncBackendCommands` as commands decorated with `omit_exception` and `omit_exception_async`.
- `AsyncValkeyCache` and `ValkeyCache` no longer inherit from `BackendCommands` and `AsyncBackendCommands`, they inherit from `DecoratedBackendCommands` and `DecoratedAsyncBackendCommands` instead.
- stdlib `zstd` is used instead of `pyzstd` (`zstd` is the same as `pyzstd`, but since the package name are different this is counted is breaking change)

### improvement
- removed the undecorator loop from cluster client

Version 0.3.2
-------------

- add `decr_version` method to be compatible with django's `BaseCache`

Version 0.3.1
-------------

- allow access to `make_key` and `make_pattern` from backend
- fix typos
- update pre-commit hooks
- add codespell
- attend a deprecated function in testcase
- add django 6 as supported version

Version 0.3.0
-------------

### New
- official support for cluster servers!!!
- now all operations support omitting exceptions
- `make_key`, `make_pattern`, `encode` and `decode` are now functions, so they can be used outside the backend (e.g: when using the raw client)
- `django_valkey.get_valkey_connection` now works with shard client as well
- replace django's `close_caches` receiver with `close_async_caches` 

### bug fix
- fixed bug of `omit_exception` not handling generator and async generators
- fixed bug of async `get_valkey_connection` checking if the client is async.

### internal change
- `make_key` and `make_pattern` return None if key/pattern is None
- moved all operations from `django_valkey.cache` and `django_valkey.async_cache.cache` to `django_valkey.base`.
- cluster client now uses the same methods as normal client, unless it has to have a specific method.
- prefixing async methods with `a` is done dynamically now; (so no more `aset = set`), it's all handled in `__getattr__`.
- moved async client methods to `django_valkey.base_client.AsyncClientCommands`.
- moved sync client methods to `django_valkey.base_client.ClientCommands`.
- `make_key`, `make_pattern`, `encode`, `decode`, `_decode_iterable_result` are now all sync methods and moved to `django_valkey.base_client.BaseClient`.
- `AsyncHerdClient._pack` and `AsyncHerdClient._unpack` are now sync methods.
- common parts of herd clients now live in `django_valkey.base_client`
- shard client now has `get_client` instead of `get_server`
- all tests now use pytest tools
- use anyio for async tests instead of `pytest-asyncio`
- add editorconfig file

Version 0.2.0
-------------

- drop support for EOL django versions

- floats are no longer serialized
    this is to support atomic float operations

- minor bug fix

Version 0.1.8
-------------

- Added ``AsyncSentinelClient``

- internal bug fix

Version 0.1.7
-------------

- added ``AsyncHerdClient``

Version 0.1.6
-------------

- added ``blocking`` and ``lock_class`` to get_lock parameters.

Version 0.1.5
-------------

- Added mset and mget (atomic)

- get_many() is now non-atomic

- extended base.BaseValkeyCache to have more logic

Version 0.1.4
-------------

- Added BaseClient class

- **BREAKING:** changed BaseConnectionPool to BaeConnectionFactory

Version 0.1.3
-------------

- Moved some method implementation out of BaseConnectionFactory class

- added a guide to use the base classes


Version 0.1.2
-------------

- Added an async backend

- Added an async client

- Added two async connection factories

- Added documentation for async client

Version 0.0.17
--------------

- Added migration guide to documents

- changed documentation setup

- added RESP3 documentation

- changes in README.rst

- cleaning up the codebase

- fixed some test settings

- major internal refactoring

- renamed ``lock()`` to ``get_lock()``, but the old form is still available.

Version 0.0.15
--------------

Released 2024/09/07

-  Added this documentation!

-  changed ``VALKEY_CLIENT_CLASS`` to ``BASE_CLIENT_CLASS`` for clarity

-  changed ``CLIENT_KWARGS`` to ``BASE_CLIENT_KWARGS`` for clarity

- added some docstring to compressor classes

- fixed some messages generated by autocomplete
