From aacee4474d1d4b47b207428cf773a9cd30aea6f9 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:20:17 +0300 Subject: [PATCH 1/7] Python 3 compatibility fix --- redis_ds/redis_dict.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/redis_ds/redis_dict.py b/redis_ds/redis_dict.py index cc82922..574c0f2 100644 --- a/redis_ds/redis_dict.py +++ b/redis_ds/redis_dict.py @@ -6,7 +6,11 @@ not a Redis hashmap. If you prefer an interface to a hashmap, the ``redis_hash_dict`` file does just that. """ -import UserDict +try: + import UserDict +except ImportError: + from collections import UserDict + import redis_ds.redis_config as redis_config from redis_ds.serialization import PassThroughSerializer, PickleSerializer, JSONSerializer From 549bdaf8cdf98b3acba189aa58f4d0777e473bd3 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:24:03 +0300 Subject: [PATCH 2/7] Python 3 compatibility fix --- redis_ds/serialization.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/redis_ds/serialization.py b/redis_ds/serialization.py index 76d333e..68a5a1f 100644 --- a/redis_ds/serialization.py +++ b/redis_ds/serialization.py @@ -1,7 +1,9 @@ "Mixins for serializing objects." import json -import cPickle as pickle - +try: + import cPickle as pickle +except ImportError: + import _pickle as pickle class PassThroughSerializer(object): "Don't serialize." From 3bb253321f1be55040beac61ad208cfff5dad729 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:26:03 +0300 Subject: [PATCH 3/7] Python 3 compatibility fix --- redis_ds/redis_dict.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/redis_ds/redis_dict.py b/redis_ds/redis_dict.py index 574c0f2..e2fd003 100644 --- a/redis_ds/redis_dict.py +++ b/redis_ds/redis_dict.py @@ -10,6 +10,8 @@ import UserDict except ImportError: from collections import UserDict + from collections import MutableMapping as DictMixin + UserDict.DictMixin = DictMixin import redis_ds.redis_config as redis_config from redis_ds.serialization import PassThroughSerializer, PickleSerializer, JSONSerializer From 7f3249b0dd0d1a694fb61485edcfda914bb11f25 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:27:48 +0300 Subject: [PATCH 4/7] Python 3 compatibility fix --- redis_ds/redis_dict.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/redis_ds/redis_dict.py b/redis_ds/redis_dict.py index e2fd003..38d57ca 100644 --- a/redis_ds/redis_dict.py +++ b/redis_ds/redis_dict.py @@ -8,16 +8,17 @@ """ try: import UserDict + _DictMixin = UserDict.DictMixin except ImportError: from collections import UserDict from collections import MutableMapping as DictMixin - UserDict.DictMixin = DictMixin + _DictMixin = DictMixin import redis_ds.redis_config as redis_config from redis_ds.serialization import PassThroughSerializer, PickleSerializer, JSONSerializer -class RedisDict(UserDict.DictMixin, PassThroughSerializer): +class RedisDict(_DictMixin, PassThroughSerializer): "Dictionary interface to Redis database." def __init__(self, redis_client=redis_config.CLIENT): """ From 84f29e61b9d80e87420a4b4ab92b3e5fbaaac666 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:29:03 +0300 Subject: [PATCH 5/7] Python 3 compatibility fix --- redis_ds/redis_hash_dict.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/redis_ds/redis_hash_dict.py b/redis_ds/redis_hash_dict.py index 6a74f4d..1188305 100644 --- a/redis_ds/redis_hash_dict.py +++ b/redis_ds/redis_hash_dict.py @@ -4,10 +4,15 @@ """ import redis_ds.redis_config as redis_config from redis_ds.serialization import PassThroughSerializer, PickleSerializer, JSONSerializer -import UserDict - - -class RedisHashDict(UserDict.DictMixin, PassThroughSerializer): +try: + import UserDict + _DictMixin = UserDict.DictMixin +except ImportError: + from collections import UserDict + from collections import MutableMapping as DictMixin + _DictMixin = DictMixin + +class RedisHashDict(_DictMixin, PassThroughSerializer): "A dictionary interface to Redis hashmaps." def __init__(self, hash_key, redis_client=redis_config.CLIENT): "Initialize the redis hashmap dictionary interface." From b4f15aaf6667c274db6766e9830bed9f7a0f828d Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:44:35 +0300 Subject: [PATCH 6/7] Add implementation for abstract __iter__() --- redis_ds/redis_dict.py | 4 ++++ redis_ds/redis_hash_dict.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/redis_ds/redis_dict.py b/redis_ds/redis_dict.py index 38d57ca..6babb67 100644 --- a/redis_ds/redis_dict.py +++ b/redis_ds/redis_dict.py @@ -58,6 +58,10 @@ def get(self, key, default=None): "Retrieve a key's value from the database falling back to a default." return self.__getitem__(key) or default + def __iter__(self): + "Return iterator over dictionary keys" + return iter(self.keys()) + class PickleRedisDict(RedisDict, PickleSerializer): "Serialize redis dictionary values via pickle." diff --git a/redis_ds/redis_hash_dict.py b/redis_ds/redis_hash_dict.py index 1188305..257da25 100644 --- a/redis_ds/redis_hash_dict.py +++ b/redis_ds/redis_hash_dict.py @@ -48,6 +48,10 @@ def get(self, key, default=None): "Retrieve a key's value or a default value if the key does not exist." return self.__getitem__(key) or default + def __iter__(self): + "Return iterator over dictionary keys" + return iter(self.keys()) + class PickleRedisHashDict(RedisHashDict, PickleSerializer): "Serialize hashmap values using pickle." From 3a3376c8ff069447d54473784a03547384981186 Mon Sep 17 00:00:00 2001 From: Aleksei Romanenko Date: Sun, 27 Jun 2021 02:47:57 +0300 Subject: [PATCH 7/7] fix indent --- redis_ds/redis_dict.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redis_ds/redis_dict.py b/redis_ds/redis_dict.py index 6babb67..a0782fb 100644 --- a/redis_ds/redis_dict.py +++ b/redis_ds/redis_dict.py @@ -59,7 +59,7 @@ def get(self, key, default=None): return self.__getitem__(key) or default def __iter__(self): - "Return iterator over dictionary keys" + "Return iterator over dictionary keys" return iter(self.keys())