Releases: sqlalchemy/dogpile.cache
0.9.1
0.9.1
Released: Wed Apr 29 2020
bug
-
[bug] [tests] Added
decorator
module as a required testing dependency to
tox.ini
so that tests work when this is not pre-installed. -
[bug] [redis] Added option to the Redis backend
RedisBackend.thread_local_lock
, which when set to False will
disable the use of a threading local by theredis
module in its
distributed lock service, which is known to interfere with the lock's
behavior when used in an "async" use case, within dogpile this would be
when using theCacheRegion.async_creation_runner
feature. The
default is conservatively being left at True, but it's likely this should
be set to False in all cases, so a warning is emitted if this flag is not
set to False in conjunction with the distributed lock. Added an optional
argument toRedisBackend
that specifies whether or not a
thread-local Redis lock should be used. This is the default, but it breaks
asynchronous runner compatibility.References: #171
0.9.0
0.9.0
Released: Mon Oct 28 2019
feature
- [feature] Added logging facililities into
CacheRegion
, to indicate key
events such as cache keys missing or regeneration of values. As these can
be very high volume log messages,logging.DEBUG
is used as the log
level for the events. Pull request courtesy Stéphane Brunner.
0.8.0
0.8.0
no release date
-
[bug] [setup] Removed the "python setup.py test" feature in favor of a straight run of
"tox". Per Pypa / pytest developers, "setup.py" commands are in general
headed towards deprecation in favor of tox. The tox.ini script has been
updated such that running "tox" with no arguments will perform a single run
of the test suite against the default installed Python interpreter.References: #157
-
[bug] [py3k] Replaced the Python compatbility routines for
getfullargspec()
with a
fully vendored version from Python 3.3. Originally, Python was emitting
deprecation warnings for this function in Python 3.8 alphas. While this
change was reverted, it was observed that Python 3 implementations for
getfullargspec()
are an order of magnitude slower as of the 3.4 series
where it was rewritten againstSignature
. While Python plans to
improve upon this situation, SQLAlchemy projects for now are using a simple
replacement to avoid any future issues.References: #154
-
[bug] [installation] Pinned minimum version of Python decorator module at 4.0.0 (July, 2015) as
previous versions don't provide the API that dogpile is using.References: #160
-
[bug] [py3k] Fixed the
sha1_mangle_key()
key mangler to coerce incoming Unicode
objects into bytes as is required by the Py3k version of this function.References: #159
0.7.1
0.7.1
Released: Tue Dec 11 2018
-
[bug] [region] Fixed regression in 0.7.0 caused by #136 where the assumed
arguments for theCacheRegion.async_creation_runner
expanded to
include the newCacheRegion.get_or_create.creator_args
parameter, as it was not tested that the async runner would be implicitly
called with these arguments when theCacheRegion.cache_on_arguments()
decorator was used. The exact signature ofasync_creation_runner
is
now restored to have the same arguments in all cases.References: #139
0.7.0
0.7.0
Released: Mon Dec 10 2018
-
[bug] The
decorator
module is now used when creating function decorators
withinCacheRegion.cache_on_arguments()
and
CacheRegion.cache_multi_on_arguments()
so that function signatures
are preserved. Pull request courtesy ankitpatel96.Additionally adds a small performance enhancement which is to avoid
internally creating a@wraps()
decorator for the creator function on
every get operation, by allowing the arguments to the creator be passed
separately toCacheRegion.get_or_create()
.References: #137
-
[bug] [py3k] Fixed all Python 3.x deprecation warnings including
inspect.getargspec()
.References: #129
0.6.8
0.6.8
Released: Sat Nov 24 2018
- [change] Project hosting has moved to GitHub, under the SQLAlchemy
organization at https://github.com/sqlalchemy/dogpile.cache
0.6.7
0.6.7
Released: Thu Jul 26 2018
-
[bug] Fixed issue in the
CacheRegion.get_or_create_multi()
method which
was erroneously considering the cached value as the timestamp field if the
CacheRegion.invalidate()
method had ben used, usually causing a
TypeError
to occur, or in less frequent cases an invalid result for
whether or not the cached value was invalid, leading to excessive caching
or regeneration. The issue was a regression caused by an implementation
issue in the pluggable invalidation feature added in #38.References: #128
0.6.6
0.6.6
Released: Wed Jun 27 2018
-
[feature] Added method
CacheRegion.actual_backend
which calculates and
caches the actual backend for the region, which may be abstracted by
the use of one or moreProxyBackend
subclasses.References: #123
-
[bug] Fixed a condition in the
Lock
where the "get" function could be
called a second time unnecessarily, when returning an existing, expired
value from the cache.References: #122
0.6.5
0.6.4
0.6.4
Released: Mon Jun 26, 2017
-
[bug] The method
Region.get_or_create_multi()
will not pass to the
cache backend if no values are ultimately to be stored, based on
the use of theRegion.get_or_create_multi.should_cache_fn
function. This empty dictionary is unnecessary and can cause API
problems for backends like that of Redis. Pull request courtesy
Tobias Sauerwein. -
[bug] The
api.NO_VALUE
constant now has a fixed__repr__()
output, so that scenarios where this constant's string value
ends up being used as a cache key do not create multiple values.
Pull request courtesy Paul Brown. -
[bug] A new exception class
exception.PluginNotFound
is now
raised when a particular cache plugin class cannot be located
either as a setuptools entrypoint or as a registered backend.
Previously, a plainException
was thrown. Pull request
courtesy Jamie Lennox.