Skip to content

Commit eca7075

Browse files
Fix incorrect return annotation in asyncio.lock (#2155)
NoReturn should be used only when the function never returns. In this case, the awaitable returns None if releasing the lock succeeds, so `Awaitable[None]` is right. Noticed this while reviewing python/typeshed#7676
1 parent 09a52db commit eca7075

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

redis/asyncio/lock.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import threading
44
import uuid
55
from types import SimpleNamespace
6-
from typing import TYPE_CHECKING, Awaitable, NoReturn, Optional, Union
6+
from typing import TYPE_CHECKING, Awaitable, Optional, Union
77

88
from redis.exceptions import LockError, LockNotOwnedError
99

@@ -243,15 +243,15 @@ async def owned(self) -> bool:
243243
stored_token = encoder.encode(stored_token)
244244
return self.local.token is not None and stored_token == self.local.token
245245

246-
def release(self) -> Awaitable[NoReturn]:
246+
def release(self) -> Awaitable[None]:
247247
"""Releases the already acquired lock"""
248248
expected_token = self.local.token
249249
if expected_token is None:
250250
raise LockError("Cannot release an unlocked lock")
251251
self.local.token = None
252252
return self.do_release(expected_token)
253253

254-
async def do_release(self, expected_token: bytes):
254+
async def do_release(self, expected_token: bytes) -> None:
255255
if not bool(
256256
await self.lua_release(
257257
keys=[self.name], args=[expected_token], client=self.redis

0 commit comments

Comments
 (0)