diff options
-rw-r--r-- | docs/build/unreleased/195.rst | 9 | ||||
-rw-r--r-- | dogpile/cache/api.py | 12 |
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): |