Skip to content

Commit 56c6527

Browse files
committed
Enhance markcoroutinefunction to support functools.partial
1 parent 3ec941b commit 56c6527

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

Lib/inspect.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ def markcoroutinefunction(func):
317317
"""
318318
if hasattr(func, '__func__'):
319319
func = func.__func__
320+
func = functools._unwrap_partial(func)
320321
func._is_coroutine_marker = _is_coroutine_mark
321322
return func
322323

Lib/test/test_inspect/test_inspect.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,17 @@ def do_something_static():
334334
self.assertTrue(inspect.iscoroutinefunction(Cl3.do_something_classy))
335335
self.assertTrue(inspect.iscoroutinefunction(Cl3.do_something_static))
336336

337+
# Test markcoroutinefunction with functools.partial
338+
async def _fn4():
339+
pass
340+
341+
def fn4():
342+
return _fn4()
343+
344+
partial_fn4 = functools.partial(fn4)
345+
marked_partial_fn4 = inspect.markcoroutinefunction(partial_fn4)
346+
self.assertTrue(inspect.iscoroutinefunction(marked_partial_fn4))
347+
337348
self.assertFalse(
338349
inspect.iscoroutinefunction(unittest.mock.Mock()))
339350
self.assertTrue(
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix markcoroutinefunction by letting it set the coroutine function marker on
2+
underlying function correctly.

0 commit comments

Comments
 (0)