Skip to content

Commit a70fa15

Browse files
majiayu000claude
andcommitted
Fix type hints for register_script to support RedisCluster (#3712)
Update type annotations in Script, AsyncScript, and their corresponding register_script methods to accept both Redis and RedisCluster types. This fixes mypy errors when calling register_script on RedisCluster instances. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent 793af91 commit a70fa15

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

redis/commands/core.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@
5656

5757
if TYPE_CHECKING:
5858
import redis.asyncio.client
59+
import redis.asyncio.cluster
5960
import redis.client
61+
import redis.cluster
6062

6163

6264
class ACLCommands(CommandsProtocol):
@@ -5914,7 +5916,11 @@ class Script:
59145916
An executable Lua script object returned by ``register_script``
59155917
"""
59165918

5917-
def __init__(self, registered_client: "redis.client.Redis", script: ScriptTextT):
5919+
def __init__(
5920+
self,
5921+
registered_client: Union["redis.client.Redis", "redis.cluster.RedisCluster"],
5922+
script: ScriptTextT,
5923+
):
59185924
self.registered_client = registered_client
59195925
self.script = script
59205926
# Precalculate and store the SHA1 hex digest of the script.
@@ -5930,7 +5936,7 @@ def __call__(
59305936
self,
59315937
keys: Union[Sequence[KeyT], None] = None,
59325938
args: Union[Iterable[EncodableT], None] = None,
5933-
client: Union["redis.client.Redis", None] = None,
5939+
client: Union["redis.client.Redis", "redis.cluster.RedisCluster", None] = None,
59345940
):
59355941
"""Execute the script, passing any required ``args``"""
59365942
keys = keys or []
@@ -5979,7 +5985,9 @@ class AsyncScript:
59795985

59805986
def __init__(
59815987
self,
5982-
registered_client: "redis.asyncio.client.Redis",
5988+
registered_client: Union[
5989+
"redis.asyncio.client.Redis", "redis.asyncio.cluster.RedisCluster"
5990+
],
59835991
script: ScriptTextT,
59845992
):
59855993
self.registered_client = registered_client
@@ -6001,7 +6009,9 @@ async def __call__(
60016009
self,
60026010
keys: Union[Sequence[KeyT], None] = None,
60036011
args: Union[Iterable[EncodableT], None] = None,
6004-
client: Union["redis.asyncio.client.Redis", None] = None,
6012+
client: Union[
6013+
"redis.asyncio.client.Redis", "redis.asyncio.cluster.RedisCluster", None
6014+
] = None,
60056015
):
60066016
"""Execute the script, passing any required ``args``"""
60076017
keys = keys or []
@@ -6234,7 +6244,10 @@ def script_load(self, script: ScriptTextT) -> ResponseT:
62346244
"""
62356245
return self.execute_command("SCRIPT LOAD", script)
62366246

6237-
def register_script(self: "redis.client.Redis", script: ScriptTextT) -> Script:
6247+
def register_script(
6248+
self: Union["redis.client.Redis", "redis.cluster.RedisCluster"],
6249+
script: ScriptTextT,
6250+
) -> Script:
62386251
"""
62396252
Register a Lua ``script`` specifying the ``keys`` it will touch.
62406253
Returns a Script object that is callable and hides the complexity of
@@ -6249,7 +6262,9 @@ async def script_debug(self, *args) -> None:
62496262
return super().script_debug()
62506263

62516264
def register_script(
6252-
self: "redis.asyncio.client.Redis",
6265+
self: Union[
6266+
"redis.asyncio.client.Redis", "redis.asyncio.cluster.RedisCluster"
6267+
],
62536268
script: ScriptTextT,
62546269
) -> AsyncScript:
62556270
"""

0 commit comments

Comments
 (0)