Skip to content

Commit b452c03

Browse files
Fix incorrect return annotation in asyncio.lock
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 40fdb15 commit b452c03

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)