Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit98ef920

Browse files
agronholmmiss-islington
authored andcommitted
1 parent25ee0c3 commit98ef920

File tree

6 files changed

+52
-1
lines changed

6 files changed

+52
-1
lines changed

‎Doc/library/asyncio-task.rst‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,12 @@ Task Object
842842
The *file* argument is an I/O stream to which the output
843843
is written; by default output is written to:data:`sys.stderr`.
844844

845+
..method::get_coro()
846+
847+
Return the coroutine object wrapped by the:class:`Task`.
848+
849+
..versionadded::3.8
850+
845851
..method::get_name()
846852

847853
Return the name of the Task.

‎Lib/asyncio/tasks.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ def __del__(self):
152152
def_repr_info(self):
153153
returnbase_tasks._task_repr_info(self)
154154

155+
defget_coro(self):
156+
returnself._coro
157+
155158
defget_name(self):
156159
returnself._name
157160

‎Lib/test/test_asyncio/test_tasks.py‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2425,6 +2425,16 @@ async def main():
24252425

24262426
self.assertEqual(cvar.get(),-1)
24272427

2428+
deftest_get_coro(self):
2429+
loop=asyncio.new_event_loop()
2430+
coro=coroutine_function()
2431+
try:
2432+
task=self.new_task(loop,coro)
2433+
loop.run_until_complete(task)
2434+
self.assertIs(task.get_coro(),coro)
2435+
finally:
2436+
loop.close()
2437+
24282438

24292439
defadd_subclass_tests(cls):
24302440
BaseTask=cls.Task
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Add the ``asyncio.Task.get_coro()`` method to publicly expose the tasks's
2+
coroutine object.

‎Modules/_asynciomodule.c‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2313,6 +2313,18 @@ _asyncio_Task_set_exception(TaskObj *self, PyObject *exception)
23132313
returnNULL;
23142314
}
23152315

2316+
/*[clinic input]
2317+
_asyncio.Task.get_coro
2318+
[clinic start generated code]*/
2319+
2320+
staticPyObject*
2321+
_asyncio_Task_get_coro_impl(TaskObj*self)
2322+
/*[clinic end generated code: output=bcac27c8cc6c8073 input=d2e8606c42a7b403]*/
2323+
{
2324+
Py_INCREF(self->task_coro);
2325+
returnself->task_coro;
2326+
}
2327+
23162328
/*[clinic input]
23172329
_asyncio.Task.get_name
23182330
[clinic start generated code]*/
@@ -2439,6 +2451,7 @@ static PyMethodDef TaskType_methods[] = {
24392451
_ASYNCIO_TASK__REPR_INFO_METHODDEF
24402452
_ASYNCIO_TASK_GET_NAME_METHODDEF
24412453
_ASYNCIO_TASK_SET_NAME_METHODDEF
2454+
_ASYNCIO_TASK_GET_CORO_METHODDEF
24422455
{NULL,NULL}/* Sentinel */
24432456
};
24442457

‎Modules/clinic/_asynciomodule.c.h‎

Lines changed: 18 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp