--- /dev/null
+from types import TracebackType
+from typing import Any, Text, Type, Union
+from typing_extensions import Protocol
+
+from redis.client import Redis
+
+_TokenValue = Union[bytes, Text]
+
+class _Local(Protocol):
+ token: _TokenValue | None
+
+class Lock:
+ local: _Local
+ def __init__(
+ self,
+ redis: Redis[Any],
+ name: str,
+ timeout: float | None = ...,
+ sleep: float = ...,
+ blocking: bool = ...,
+ blocking_timeout: float | None = ...,
+ thread_local: bool = ...,
+ ) -> None: ...
+ def register_scripts(self) -> None: ...
+ def __enter__(self) -> Lock: ...
+ def __exit__(
+ self, exc_type: Type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None
+ ) -> bool | None: ...
+ def acquire(
+ self, blocking: bool | None = ..., blocking_timeout: None | int | float = ..., token: _TokenValue | None = ...
+ ) -> bool: ...
+ def do_acquire(self, token: _TokenValue) -> bool: ...
+ def locked(self) -> bool: ...
+ def owned(self) -> bool: ...
+ def release(self) -> None: ...
+ def do_release(self, expected_token: _TokenValue) -> None: ...
+ def extend(self, additional_time: int | float, replace_ttl: bool = ...) -> bool: ...
+ def do_extend(self, additional_time: int | float, replace_ttl: bool) -> bool: ...
+ def reacquire(self) -> bool: ...
+ def do_reacquire(self) -> bool: ...