* [usecase] [memcached] Added support for pymemcache socket keepalive
and retrying client.
* [bug] [general] Fixed Python 3.10 deprecation warning involving
threading. Pull request
* [bug] [regression] [tests] Repaired the test suite to work with the
5.x series of the decorator module, which now appears to make use of
the __signature__ attribute.
* [bug] [regression] Fixed regression where ProxyBackend was missing
several methods that were added as part of the 1.1 release.
* [feature] [region] Added new region method CacheRegion.key_is_locked().
Returns True if the given key is subject to the dogpile lock, which
would indicate that the generator function is running at that time.
* [feature] [memcached] Added support for the pymemcache backend, using
the "dogpile.cache.pymemcache" backend identifier.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=69
- Fixed regression where the serialization and deserialization
functions could be inadvertently turned into instance methods with
an unexpected argument signature, namely when pickle.dumps and
pickle.loads are the pure Python version as is the case in pypy.
- Reworked the means by which values are serialized and deserialized
from backends, and provided for custom serialization of values.
Added the CacheRegion.serializer and CacheRegion.deserializer
parameters which may be set to any serializer.
- Serialization and deserialization now take place within the
CacheRegion so that backends may now assume string values in all
cases. This simplifies the existing backends and also makes custom
backends easier to write and maintain.
- Additionally, the serializer is now applied to the user-defined
value portion of the CachedValue and not to the metadata or other
portions of CachedValue object itself, so the serialized portion is
effectively a "payload" within the larger CachedValue structure that
is passed as part of the larger string format. The overall format is
a separate JSON of the cached value metadata, followed by the
serialized form. This allows for end-user serialization schemes that
are hardwired to the values themselves without the need to serialize
dogpile's internal structures as well.
- Existing custom backends should continue to work without issue; they
now have the option to forego any separate serialization steps, and
can also subclass a new backend BytesBackend that marks them as
a backend that only deals with bytes coming in and out; all internal
serialization logic from such a backend can be removed.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=60
* Added support for TLS connections to the bmemcached backend.
* dogpile.cache 1.0.0 was released with a minimum Python version of 3.5.
However, due to a dependency issue, the minimum version is now Python 3.6.
* Removed the "universal=1" directive from setup.cfg as this would create
py2/py3 wheels. dogpile 1.0.x is Python 3 only so a py3-only wheel is now
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=58
Ensured that the "pyproject.toml" file is not included in builds, as the
presence of this file indicates to pip that a pep-517 installation process
should be used. As this mode of operation appears to be not well supported
by current tools / distros, these problems are avoided within the scope of
dogpile.cache installation by omitting the file.
Added option to the Redis backend
:paramref:`.RedisBackend.thread_local_lock`, which when set to False will
disable the use of a threading local by the ``redis`` 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 the :paramref:`.CacheRegion.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 to :class:`.RedisBackend` that specifies whether or not a
thread-local Redis lock should be used. This is the default, but it breaks
asynchronous runner compatibility.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=54
- Update to 0.8.0
* 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 against ``Signature``. While Python plans to
improve upon this situation, SQLAlchemy projects for now are using a simple
replacement to avoid any future issues.
* Pinned minimum version of Python decorator module at 4.0.0.
* Fixed the :func:`.sha1_mangle_key` key mangler to coerce incoming Unicode
objects into bytes.
OBS-URL: https://build.opensuse.org/request/show/735293
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=50
* Project hosting has moved to GitHub, under the SQLAlchemy
organization at https://github.com/sqlalchemy/dogpile.cache
* Fixed issue in the :meth:`.CacheRegion.get_or_create_multi` method which
was erroneously considering the cached value as the timestamp field if the
:meth:`.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`.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=45
- update to 0.6.4:
* The method :meth:`.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 the :paramref:`.Region.get_or_create_multi.should_cache_fn`
function. This empty dictionary is unnecessary and can cause API
problems for backends like that of Redis.
* The :attr:`.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.
* A new exception class :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 plain ``Exception`` was thrown.
* Added ``replace_existing_backend`` to
:meth:`.CacheRegion.configure_from_config`.
OBS-URL: https://build.opensuse.org/request/show/517970
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=26
- update to 0.6.2:
* Added a new system to allow custom plugins specific to the issue of
"invalidate the entire region", using a new base class
:class:`.RegionInvalidationStrategy`. As there are many potential
strategies to this (special backend function, storing special keys, etc.)
the mechanism for both soft and hard invalidation is now customizable.
New approaches to region invalidation can be contributed as documented
recipes.
* Added a new cache key generator :func:`.kwarg_function_key_generator`,
which takes keyword arguments as well as positional arguments into
account when forming the cache key.
* Restored some more util symbols that users may have been relying upon
(although these were not necessarily intended as user-facing):
``dogpile.cache.util.coerce_string_conf``,
``dogpile.cache.util.KeyReentrantMutex``,
``dogpile.cache.util.memoized_property``,
``dogpile.cache.util.PluginLoader``,
``dogpile.cache.util.to_list``.
* Drop 0001-Link-moved-functions-in-dogpile.cache.util.patch
applied upstream
OBS-URL: https://build.opensuse.org/request/show/423982
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=19
- update to 0.5.7:
* Added new parameter :paramref:`.GenericMemcachedBackend.lock_timeout`,
used in conjunction with :paramref:`.GenericMemcachedBackend.distributed_lock`,
will specify the timeout used when communicating to the ``.add()`` method of
the memcached client.
* Added a new flag :paramref:`.CacheRegion.configure.replace_existing_backend`,
allows a region to have a new backend replace an existing one.
* Test suite now runs using py.test.
* Repaired the :meth:`.CacheRegion.get_multi` method when used with a
list of zero length against the redis backend.
OBS-URL: https://build.opensuse.org/request/show/367263
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-dogpile.cache?expand=0&rev=13