Skip to content

Commit 45e858a

Browse files
kristjanvalurdvora-h
authored andcommitted
Fix parsing resp3 dicts (#2982)
1 parent e2127e4 commit 45e858a

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

redis/_parsers/resp3.py

+12-7
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ def _read_response(self, disable_decoding=False, push_request=False):
9696
pass
9797
# map response
9898
elif byte == b"%":
99-
# we use this approach and not dict comprehension here
100-
# because this dict comprehension fails in python 3.7
99+
# We cannot use a dict-comprehension to parse stream.
100+
# Evaluation order of key:val expression in dict comprehension only
101+
# became defined to be left-right in version 3.8
101102
resp_dict = {}
102103
for _ in range(int(response)):
103104
key = self._read_response(disable_decoding=disable_decoding)
@@ -225,12 +226,16 @@ async def _read_response(
225226
pass
226227
# map response
227228
elif byte == b"%":
228-
response = {
229-
(await self._read_response(disable_decoding=disable_decoding)): (
230-
await self._read_response(disable_decoding=disable_decoding)
229+
# We cannot use a dict-comprehension to parse stream.
230+
# Evaluation order of key:val expression in dict comprehension only
231+
# became defined to be left-right in version 3.8
232+
resp_dict = {}
233+
for _ in range(int(response)):
234+
key = await self._read_response(disable_decoding=disable_decoding)
235+
resp_dict[key] = await self._read_response(
236+
disable_decoding=disable_decoding, push_request=push_request
231237
)
232-
for _ in range(int(response))
233-
}
238+
response = resp_dict
234239
# push response
235240
elif byte == b">":
236241
response = [

0 commit comments

Comments
 (0)