History¶
1.1.1 - unreleased¶
TBD
1.1.0 - 2025-02-18¶
Support KeyDB as an protocol-compatible alternative to Redis (no code change i.e. previous versions also worked)
Support Python 3.13, drop support for Python 3.8 (end-of-life)
Support PyPy 3.10 (PPA rolling from 3.9)
Use Heptapod Pages to host documentation (readthedocs.org is obsolete)
Support dynamic TTL for cache entries (#13)
1.0.0 - 2024-03-10¶
Support Python 3.11 and 3.12, drop Python 3.7 support
Support PyPy 3.9 (moving from 3.7)
Separate API reference from other content in documentation
Promote
asyncio
support to “provisional” statusIntegrate
asv
for performance testing and run it in CI
0.10.0 - 2022-01-03¶
Experimental
asyncio
coroutine function caching supportUse own error type,
HermesError
Turn
cachedcls
keyword-only argument for a customCached
classes intocachedfactory
for a custom factory function returning a sublcass ofCached
depending on the wrapped callableSimplify
hermes.backend.AbstractBackend.save
to only accept a mapping as the positional argumentRename
hermes.backend.dict
tohermes.backend.inprocess
Switch to supported Memcached client,
pymemcache
, droppython3-memcached
andpylibmc
. Because of thatservers
keyword argument passed to the client has become singularserver
Support Python 3.10
Drop support for Python 3.6 implementations
0.9.0 - 2021-05-09¶
Add Heptapod/Gitlab CI/CD
Support Python 3.9
Support PyPy 3.6 and 3.7
Break down
README.rst
into multi-page Sphinx documentationAPI documentation improvement
Change of arguments of dunder init of
Hermes
:positional
backendClass
is renamed tobackend
. Actual argument can be a (sub)class or an instance ofhermes.backend.AbstractBackend
.keyword
manglerClass
is renamed tomangler
. It can only be an instance ofMangler
.keyword
cachedClass
is renamed tocachedcls
.
Change of arguments of dunder init of
hermes.backend.redis.Backend
andhermes.backend.memcached.Backend
. Lock options are passed aslockconf
dictionary at once.Serialisation and compression delegates,
Serialiser
andCompressor
as the attributes ofMangler
.Cache is compressed by default (
zlib
auto-level-1
which currently corresponds to level 6). Opt out bycache.mangler.compressor = None
.Replace default hash function,
Mangler.hash
, with base64-encoded MD5.
0.8.0 - 2020-06-30¶
Implement
dict
backend key expirationMore strict argument passing
Pass
**kwargs
to backends to be able to configure extra optionsCache-point instances depend on
Hermes
frontend to accessbackend
andmangler
to be able to change backend in runtimeAllow class-level cache-point object access
Drop support for Python 2 and also 3.4, 3.5
Support Python 3.7 and 3.8
Integrate Flake8
Drop deprecated
setuptools
test_suite
, useunittest
load_tests
protocol for test module discoveryFlee to Heptapod from BitBucket
0.7.2 - 2018-01-09¶
Improve
Mangler.nameEntry
to support non-function callables with__name__
Include module name by default in cache key sequence
0.7.1 - 2017-12-25¶
Support caching descriptors e.g.
classmethod
andstaticmethod
Drop Python 3.3 support
0.6.1 - 2017-02-18¶
Backends connect lazily
Support and test on Python 3.4, 3.5, 3.6
Test improvement
Integrate BitBucket Pipelines
0.6.0 - 2015-12-06¶
Use atomic Redis
SET lock value NX EX 900
in place of twoSETNX
andEXPIRE
Make cache-point class overridable without monkeypatching
0.5.2 - 2015-06-09¶
Test and documentation improvement
0.5.1 - 2015-03-13¶
Migrate to BitBucket
0.5.0 - 2014-07-25¶
Fix class-level cache-point instance sharing
Use unambiguous spdx.org license code: LGPL-2.1+
Configure
setuptools
to allowpython setup.py test
Integrate Tox
0.4.0 - 2014-04-10¶
Support Python 3.3
0.3.0 - 2014-03-31¶
Improve cache-point descriptor protocol implementation
Cache-point key function now doesn’t receive
self
directly, but throughfn.__self__
0.2.0 - 2013-10-31¶
Use own Redis lock implementation because the client’s is broken
Test improvement
0.1.5 - 2013-07-19¶
Initial release