summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/build/unreleased/195.rst9
-rw-r--r--dogpile/cache/api.py12
2 files changed, 17 insertions, 4 deletions
diff --git a/docs/build/unreleased/195.rst b/docs/build/unreleased/195.rst
new file mode 100644
index 0000000..e7ba8f4
--- /dev/null
+++ b/docs/build/unreleased/195.rst
@@ -0,0 +1,9 @@
+.. change::
+ :tags: bug, region
+ :tickets: 195
+
+ 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.
+
diff --git a/dogpile/cache/api.py b/dogpile/cache/api.py
index d89ac56..3d6bfa4 100644
--- a/dogpile/cache/api.py
+++ b/dogpile/cache/api.py
@@ -141,7 +141,7 @@ class CacheBackend:
"""
- serializer: Optional[Serializer] = None
+ serializer: Union[None, Serializer, staticmethod] = None
"""Serializer function that will be used by default if not overridden
by the region.
@@ -149,7 +149,7 @@ class CacheBackend:
"""
- deserializer: Optional[Deserializer] = None
+ deserializer: Union[None, Deserializer, staticmethod] = None
"""deserializer function that will be used by default if not overridden
by the region.
@@ -435,8 +435,12 @@ class CacheBackend:
class DefaultSerialization:
- serializer: Optional[Serializer] = pickle.dumps
- deserializer: Optional[Deserializer] = pickle.loads
+ serializer: Union[None, Serializer, staticmethod] = staticmethod(
+ pickle.dumps
+ )
+ deserializer: Union[None, Deserializer, staticmethod] = staticmethod(
+ pickle.loads
+ )
class BytesBackend(DefaultSerialization, CacheBackend):