Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7edee0b
Integrate task groups from EdgeDb
gvanrossum Feb 10, 2022
f495375
Make test_taskgroups.py run and pass
gvanrossum Feb 10, 2022
a87275a
Rename taskgroup to taskgroups in the test code
gvanrossum Feb 10, 2022
4df0acc
Export TaskGroup from asyncio; remove __future__ import
gvanrossum Feb 10, 2022
56db921
Only keep the newest _is_base_error() and _task_cancel()
gvanrossum Feb 10, 2022
500581e
Get rid of MultiError in favor of ExceptionGroup
gvanrossum Feb 11, 2022
4843e94
Add TaskGroupError to __all__
gvanrossum Feb 11, 2022
63e712d
Avoid DeprecationWarning: There is no current event loop
gvanrossum Feb 11, 2022
d233dd1
Prevent warning "test altered the execution environment"
gvanrossum Feb 11, 2022
af574d5
Get rid of custom TaskGroupError
gvanrossum Feb 11, 2022
299f366
Update comments explaining why test 21 doesn't work
gvanrossum Feb 12, 2022
9de3c87
Add tests showing that 'plain' BaseExceptions work
gvanrossum Feb 12, 2022
0e1355d
Allow creating new tasks while __aexit__ is waiting
gvanrossum Feb 12, 2022
77ec0e4
Add an API to Task to manage 'cancel_requested' flag
gvanrossum Feb 14, 2022
17b64b5
Add tests for .cancelling() and .uncancel()
gvanrossum Feb 14, 2022
5e3f4b9
Merge remote-tracking branch 'origin/main' into taskgroups
gvanrossum Feb 14, 2022
0b9bccd
📜🤖 Added by blurb_it.
blurb-it[bot] Feb 14, 2022
137ebe6
Replace EdgeDb copyright with a simpler attribution
gvanrossum Feb 15, 2022
f693c1c
Use task.cancelling() in task repr instead of access to private attri…
asvetlov Feb 15, 2022
b83734c
Change the internal imports
gvanrossum Feb 15, 2022
de3d820
Avoid needing self.loop in test
gvanrossum Feb 15, 2022
9712241
Make test 14 more robust
gvanrossum Feb 15, 2022
b3d4d18
Update Lib/asyncio/taskgroups.py
1st1 Feb 15, 2022
c1e5d64
Update Lib/test/test_asyncio/test_taskgroups.py
1st1 Feb 15, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Change the internal imports
  • Loading branch information
gvanrossum committed Feb 15, 2022
commit b83734cf1efec6cce890c3f3ae65892e1612bb36
16 changes: 9 additions & 7 deletions Lib/asyncio/taskgroups.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@

__all__ = ["TaskGroup"]

import asyncio
import itertools
import textwrap
import traceback
import types
import weakref

from . import events
from . import exceptions
from . import tasks

class TaskGroup:

Expand Down Expand Up @@ -56,9 +58,9 @@ async def __aenter__(self):
self._entered = True

if self._loop is None:
self._loop = asyncio.get_running_loop()
self._loop = events.get_running_loop()

self._parent_task = asyncio.current_task(self._loop)
self._parent_task = tasks.current_task(self._loop)
if self._parent_task is None:
raise RuntimeError(
f'TaskGroup {self!r} cannot determine the parent task')
Expand All @@ -74,7 +76,7 @@ async def __aexit__(self, et, exc, tb):
self._base_error is None):
self._base_error = exc

if et is asyncio.CancelledError:
if et is exceptions.CancelledError:
if self._parent_cancel_requested:
# Only if we did request task to cancel ourselves
# we mark it as no longer cancelled.
Expand All @@ -89,7 +91,7 @@ async def __aexit__(self, et, exc, tb):
# g.create_task(...)
# await ... # <- CancelledError
#
if et is asyncio.CancelledError:
if et is exceptions.CancelledError:
propagate_cancellation_error = et

# or there's an exception in "async with":
Expand All @@ -110,7 +112,7 @@ async def __aexit__(self, et, exc, tb):

try:
await self._on_completed_fut
except asyncio.CancelledError as ex:
except exceptions.CancelledError as ex:
if not self._aborting:
# Our parent task is being cancelled:
#
Expand All @@ -137,7 +139,7 @@ async def __aexit__(self, et, exc, tb):
# request now.
raise propagate_cancellation_error

if et is not None and et is not asyncio.CancelledError:
if et is not None and et is not exceptions.CancelledError:
self._errors.append(exc)

if self._errors:
Expand Down