From 151c526ae99df5cebbf363c95d451ac2bb9d2a7b Mon Sep 17 00:00:00 2001 From: Artur Mostowski Date: Mon, 19 Aug 2024 14:28:51 +0200 Subject: [PATCH 1/5] typing for client __init__ --- redis/client.py | 88 ++++++++++++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/redis/client.py b/redis/client.py index 4fa410c65e..72979722eb 100755 --- a/redis/client.py +++ b/redis/client.py @@ -4,7 +4,7 @@ import time import warnings from itertools import chain -from typing import Any, Callable, Dict, List, Optional, Type, Union +from typing import Any, Callable, Dict, List, Optional, Type, Union, Mapping, TYPE_CHECKING from redis._parsers.encoders import Encoder from redis._parsers.helpers import ( @@ -53,6 +53,10 @@ str_if_bytes, ) +if TYPE_CHECKING: + import OpenSSL + import ssl + SYM_EMPTY = b"" EMPTY_RESPONSE = "EMPTY_RESPONSE" @@ -175,47 +179,47 @@ def from_pool( def __init__( self, - host="localhost", - port=6379, - db=0, - password=None, - socket_timeout=None, - socket_connect_timeout=None, - socket_keepalive=None, - socket_keepalive_options=None, - connection_pool=None, - unix_socket_path=None, - encoding="utf-8", - encoding_errors="strict", - charset=None, - errors=None, - decode_responses=False, - retry_on_timeout=False, - retry_on_error=None, - ssl=False, - ssl_keyfile=None, - ssl_certfile=None, - ssl_cert_reqs="required", - ssl_ca_certs=None, - ssl_ca_path=None, - ssl_ca_data=None, - ssl_check_hostname=False, - ssl_password=None, - ssl_validate_ocsp=False, - ssl_validate_ocsp_stapled=False, - ssl_ocsp_context=None, - ssl_ocsp_expected_cert=None, - ssl_min_version=None, - ssl_ciphers=None, - max_connections=None, - single_connection_client=False, - health_check_interval=0, - client_name=None, - lib_name="redis-py", - lib_version=get_lib_version(), - username=None, - retry=None, - redis_connect_func=None, + host: str = "localhost", + port: int = 6379, + db: int = 0, + password: Optional[str] = None, + socket_timeout: Optional[float] = None, + socket_connect_timeout: Optional[float] = None, + socket_keepalive: Optional[bool] = None, + socket_keepalive_options: Optional[Mapping[int, Union[int, bytes]]] = None, + connection_pool: Optional[ConnectionPool] = None, + unix_socket_path: Optional[str] = None, + encoding: str = "utf-8", + encoding_errors: str = "strict", + charset: Optional[str] = None, + errors: Optional[str] = None, + decode_responses: bool = False, + retry_on_timeout: bool = False, + retry_on_error: Optional[list] = None, + ssl: bool = False, + ssl_keyfile: Optional[str] = None, + ssl_certfile: Optional[str] = None, + ssl_cert_reqs: str = "required", + ssl_ca_certs: Optional[str] = None, + ssl_ca_path: Optional[str] = None, + ssl_ca_data: Optional[str] = None, + ssl_check_hostname: bool = False, + ssl_password: Optional[str] = None, + ssl_validate_ocsp: bool = False, + ssl_validate_ocsp_stapled: bool = False, + ssl_ocsp_context: Optional[OpenSSL.SSL.Context] = None, + ssl_ocsp_expected_cert: Optional[str] = None, + ssl_min_version: Optional[ssl.TLSVersion] = None, + ssl_ciphers: Optional[str] = None, + max_connections: Optional[int] = None, + single_connection_client: bool = False, + health_check_interval: int = 0, + client_name: Optional[str] = None, + lib_name: Optional[str] = "redis-py", + lib_version: Optional[str] = get_lib_version(), + username: Optional[str] = None, + retry: Union[Any, None] = None, + redis_connect_func: Optional[Callable[[], None]] = None, credential_provider: Optional[CredentialProvider] = None, protocol: Optional[int] = 2, cache: Optional[CacheInterface] = None, From dd22102013731092ea3437aeba4b66e691528d9e Mon Sep 17 00:00:00 2001 From: Artur Mostowski Date: Wed, 4 Sep 2024 11:20:33 +0200 Subject: [PATCH 2/5] typing with string literals --- redis/client.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/redis/client.py b/redis/client.py index 72979722eb..2af961f9fb 100755 --- a/redis/client.py +++ b/redis/client.py @@ -4,7 +4,7 @@ import time import warnings from itertools import chain -from typing import Any, Callable, Dict, List, Optional, Type, Union, Mapping, TYPE_CHECKING +from typing import Any, Callable, Dict, List, Optional, Type, Union, Mapping from redis._parsers.encoders import Encoder from redis._parsers.helpers import ( @@ -53,10 +53,6 @@ str_if_bytes, ) -if TYPE_CHECKING: - import OpenSSL - import ssl - SYM_EMPTY = b"" EMPTY_RESPONSE = "EMPTY_RESPONSE" @@ -207,9 +203,9 @@ def __init__( ssl_password: Optional[str] = None, ssl_validate_ocsp: bool = False, ssl_validate_ocsp_stapled: bool = False, - ssl_ocsp_context: Optional[OpenSSL.SSL.Context] = None, + ssl_ocsp_context: Optional["OpenSSL.SSL.Context"] = None, ssl_ocsp_expected_cert: Optional[str] = None, - ssl_min_version: Optional[ssl.TLSVersion] = None, + ssl_min_version: Optional["ssl.TLSVersion"] = None, ssl_ciphers: Optional[str] = None, max_connections: Optional[int] = None, single_connection_client: bool = False, From f5e91630ce898567c0e3e76f696c8d6a4a395499 Mon Sep 17 00:00:00 2001 From: Artur Mostowski Date: Tue, 4 Feb 2025 13:29:53 +0100 Subject: [PATCH 3/5] retry_on_error more specific typing --- redis/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redis/client.py b/redis/client.py index 2af961f9fb..0f7fc3df93 100755 --- a/redis/client.py +++ b/redis/client.py @@ -191,7 +191,7 @@ def __init__( errors: Optional[str] = None, decode_responses: bool = False, retry_on_timeout: bool = False, - retry_on_error: Optional[list] = None, + retry_on_error: Optional[List[Type[Exception]]] = None, ssl: bool = False, ssl_keyfile: Optional[str] = None, ssl_certfile: Optional[str] = None, From 8cb9e8573cca76ea24dda6cfc55e73a6b54b3b29 Mon Sep 17 00:00:00 2001 From: Artur Mostowski Date: Tue, 4 Feb 2025 13:31:41 +0100 Subject: [PATCH 4/5] retry typing --- redis/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redis/client.py b/redis/client.py index 0f7fc3df93..b08655616e 100755 --- a/redis/client.py +++ b/redis/client.py @@ -214,7 +214,7 @@ def __init__( lib_name: Optional[str] = "redis-py", lib_version: Optional[str] = get_lib_version(), username: Optional[str] = None, - retry: Union[Any, None] = None, + retry: Optional[Retry] = None, redis_connect_func: Optional[Callable[[], None]] = None, credential_provider: Optional[CredentialProvider] = None, protocol: Optional[int] = 2, From 4fd061def625687260f48717546faaed098ca40f Mon Sep 17 00:00:00 2001 From: Artur Mostowski Date: Wed, 5 Feb 2025 14:29:05 +0100 Subject: [PATCH 5/5] fix lint --- redis/client.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/redis/client.py b/redis/client.py index b08655616e..9f83ebaaa6 100755 --- a/redis/client.py +++ b/redis/client.py @@ -4,7 +4,17 @@ import time import warnings from itertools import chain -from typing import Any, Callable, Dict, List, Optional, Type, Union, Mapping +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + List, + Mapping, + Optional, + Type, + Union, +) from redis._parsers.encoders import Encoder from redis._parsers.helpers import ( @@ -53,6 +63,11 @@ str_if_bytes, ) +if TYPE_CHECKING: + import ssl + + import OpenSSL + SYM_EMPTY = b"" EMPTY_RESPONSE = "EMPTY_RESPONSE"