History¶
1.2.0 - unreleased¶
Support Python 3.14, drop support for Python 3.9 (end-of-life)
Support PyPy 3.11 (PPA rolling from 3.10)
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
asynciosupport to “provisional” statusIntegrate
asvfor performance testing and run it in CI
0.10.0 - 2022-01-03¶
Experimental
asynciocoroutine function caching supportUse own error type,
HermesErrorTurn
cachedclskeyword-only argument for a customCachedclasses intocachedfactoryfor a custom factory function returning a sublcass ofCacheddepending on the wrapped callableSimplify
hermes.backend.AbstractBackend.saveto only accept a mapping as the positional argumentRename
hermes.backend.dicttohermes.backend.inprocessSwitch to supported Memcached client,
pymemcache, droppython3-memcachedandpylibmc. Because of thatserverskeyword argument passed to the client has become singularserverSupport 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.rstinto multi-page Sphinx documentationAPI documentation improvement
Change of arguments of dunder init of
Hermes:positional
backendClassis renamed tobackend. Actual argument can be a (sub)class or an instance ofhermes.backend.AbstractBackend.keyword
manglerClassis renamed tomangler. It can only be an instance ofMangler.keyword
cachedClassis renamed tocachedcls.
Change of arguments of dunder init of
hermes.backend.redis.Backendandhermes.backend.memcached.Backend. Lock options are passed aslockconfdictionary at once.Serialisation and compression delegates,
SerialiserandCompressoras the attributes ofMangler.Cache is compressed by default (
zlibauto-level-1which 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
dictbackend key expirationMore strict argument passing
Pass
**kwargsto backends to be able to configure extra optionsCache-point instances depend on
Hermesfrontend to accessbackendandmanglerto 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
setuptoolstest_suite, useunittestload_testsprotocol for test module discoveryFlee to Heptapod from BitBucket
0.7.2 - 2018-01-09¶
Improve
Mangler.nameEntryto 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.
classmethodandstaticmethodDrop 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 900in place of twoSETNXandEXPIREMake 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
setuptoolsto allowpython setup.py testIntegrate 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
selfdirectly, 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