Skip to content

Commit f34935c

Browse files
committed
Fix review comments #597
1 parent 0bb4f32 commit f34935c

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

django_redis/client/default.py

+17-14
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,17 @@ def encode(self, value: EncodableT) -> Union[bytes, int]:
517517

518518
return value
519519

520+
def _decode_iterable_result(
521+
self, result: Any, covert_to_set: bool = True
522+
) -> Union[List[Any], None, Any]:
523+
if result is None:
524+
return None
525+
if isinstance(result, list):
526+
if covert_to_set:
527+
return {self.decode(value) for value in result}
528+
return [self.decode(value) for value in result]
529+
return self.decode(result)
530+
520531
def get_many(
521532
self,
522533
keys: Iterable[KeyT],
@@ -828,7 +839,7 @@ def sdiff(
828839
*keys: KeyT,
829840
version: Optional[int] = None,
830841
client: Optional[Redis] = None,
831-
) -> Set:
842+
) -> Set[Any]:
832843
if client is None:
833844
client = self.get_client(write=False)
834845

@@ -855,7 +866,7 @@ def sinter(
855866
*keys: KeyT,
856867
version: Optional[int] = None,
857868
client: Optional[Redis] = None,
858-
) -> Set:
869+
) -> Set[Any]:
859870
if client is None:
860871
client = self.get_client(write=False)
861872

@@ -910,7 +921,7 @@ def smembers(
910921
key: KeyT,
911922
version: Optional[int] = None,
912923
client: Optional[Redis] = None,
913-
) -> Set:
924+
) -> Set[Any]:
914925
if client is None:
915926
client = self.get_client(write=False)
916927

@@ -945,11 +956,7 @@ def spop(
945956

946957
nkey = self.make_key(key, version=version)
947958
result = client.spop(nkey, count)
948-
if result is None:
949-
return None
950-
if isinstance(result, list):
951-
return {self.decode(value) for value in result}
952-
return self.decode(result)
959+
return self._decode_iterable_result(result)
953960

954961
def srandmember(
955962
self,
@@ -963,11 +970,7 @@ def srandmember(
963970

964971
key = self.make_key(key, version=version)
965972
result = client.srandmember(key, count)
966-
if result is None:
967-
return None
968-
if isinstance(result, list):
969-
return [self.decode(value) for value in result]
970-
return self.decode(result)
973+
return self._decode_iterable_result(result, covert_to_set=False)
971974

972975
def srem(
973976
self,
@@ -1035,7 +1038,7 @@ def sunion(
10351038
*keys: KeyT,
10361039
version: Optional[int] = None,
10371040
client: Optional[Redis] = None,
1038-
) -> Set:
1041+
) -> Set[Any]:
10391042
if client is None:
10401043
client = self.get_client(write=False)
10411044

django_redis/client/sharded.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ def smembers(
367367
key: KeyT,
368368
version: Optional[int] = None,
369369
client: Optional[Redis] = None,
370-
) -> Set:
370+
) -> Set[Any]:
371371
if client is None:
372372
key = self.make_key(key, version=version)
373373
client = self.get_server(key)

0 commit comments

Comments
 (0)