summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago Bellini Ribeiro <hackedbellini@gmail.com>2023-03-27 18:32:44 -0300
committerGitHub <noreply@github.com>2023-03-28 00:32:44 +0300
commit480253037afe4c12e38a0f98cadd3019a3724254 (patch)
tree5e25192d71a64f80f7cb7a157d5c6736cd70eba0
parent66a4d6b2a493dd3a20cc299ab5fef3c14baad965 (diff)
downloadredis-py-480253037afe4c12e38a0f98cadd3019a3724254.tar.gz
fix: do not use asyncio's timeout lib before 3.11.2 (#2659)
There's an issue in asyncio's timeout lib before 3.11.3 that causes async calls to raise `CancelledError`. This is a cpython issue that was fixed in this commit [1] and cherry-picked to previous versions, meaning 3.11.3 will work correctly. Check [2] for more info. [1] https://github.com/python/cpython/commit/04adf2df395ded81922c71360a5d66b597471e49 [2] https://github.com/redis/redis-py/issues/2633
-rw-r--r--redis/asyncio/connection.py4
-rw-r--r--setup.py2
-rw-r--r--tests/test_asyncio/test_pubsub.py4
3 files changed, 7 insertions, 3 deletions
diff --git a/redis/asyncio/connection.py b/redis/asyncio/connection.py
index 057067a..58dcd66 100644
--- a/redis/asyncio/connection.py
+++ b/redis/asyncio/connection.py
@@ -25,7 +25,9 @@ from typing import (
)
from urllib.parse import ParseResult, parse_qs, unquote, urlparse
-if sys.version_info.major >= 3 and sys.version_info.minor >= 11:
+# the functionality is available in 3.11.x but has a major issue before
+# 3.11.3. See https://github.com/redis/redis-py/issues/2633
+if sys.version_info >= (3, 11, 3):
from asyncio import timeout as async_timeout
else:
from async_timeout import timeout as async_timeout
diff --git a/setup.py b/setup.py
index 3003c59..3b7347d 100644
--- a/setup.py
+++ b/setup.py
@@ -34,7 +34,7 @@ setup(
install_requires=[
'importlib-metadata >= 1.0; python_version < "3.8"',
'typing-extensions; python_version<"3.8"',
- 'async-timeout>=4.0.2; python_version<"3.11"',
+ 'async-timeout>=4.0.2; python_version<="3.11.2"',
],
classifiers=[
"Development Status :: 5 - Production/Stable",
diff --git a/tests/test_asyncio/test_pubsub.py b/tests/test_asyncio/test_pubsub.py
index 0df7847..8f3817a 100644
--- a/tests/test_asyncio/test_pubsub.py
+++ b/tests/test_asyncio/test_pubsub.py
@@ -5,7 +5,9 @@ import sys
from typing import Optional
from unittest.mock import patch
-if sys.version_info.major >= 3 and sys.version_info.minor >= 11:
+# the functionality is available in 3.11.x but has a major issue before
+# 3.11.3. See https://github.com/redis/redis-py/issues/2633
+if sys.version_info >= (3, 11, 3):
from asyncio import timeout as async_timeout
else:
from async_timeout import timeout as async_timeout