You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: docs/changelog.rst
+5-1
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,13 @@ Changelog
4
4
5
5
`CalVer, YY.month.patch <https://calver.org/>`_
6
6
7
+
24.11.4
8
+
=======
9
+
- :ref:`ASYNC100 <async100>` once again ignores :func:`trio.open_nursery` and :func:`anyio.create_task_group`, unless we find a call to ``.start_soon()``.
10
+
7
11
24.11.3
8
12
=======
9
-
- Revert :ref:`ASYNC100 <async100>` ignoring :func:`trio.open_nursery` and :func:`anyio.create_task_group` due to it not viewing `start_soon()` as introducing a :ref:`cancel point <cancel_point>`.
13
+
- Revert :ref:`ASYNC100 <async100>` ignoring :func:`trio.open_nursery` and :func:`anyio.create_task_group` due to it not viewing ``.start_soon()`` as introducing a :ref:`cancel point <cancel_point>`.
Copy file name to clipboardexpand all lines: docs/glossary.rst
+1-1
Original file line number
Diff line number
Diff line change
@@ -99,7 +99,7 @@ functions defined by Trio will either checkpoint or raise an exception when
99
99
iteration, and when exhausting the iterator, and ``async with`` will checkpoint
100
100
on at least one of enter/exit.
101
101
102
-
The one exception is :func:`trio.open_nursery` and :func:`anyio.create_task_group` which are :ref:`schedule points<schedule_point>` but not :ref:`cancel points<cancel_point>`.
102
+
The one exception is :func:`trio.open_nursery` and :func:`anyio.create_task_group`. They do not checkpoint on entry, and on exit they insert a :ref:`schedule point<schedule_point>`. However, if sub-tasks are cancelled they will be propagated on exit, so if you're starting tasks you can usually treat the exit as a :ref:`cancel point<cancel_point>`.
103
103
104
104
asyncio does not place any guarantees on if or when asyncio functions will
105
105
checkpoint. This means that enabling and adhering to :ref:`ASYNC91x <ASYNC910>`
A :ref:`timeout_context` does not contain any :ref:`checkpoints <checkpoint>`.
14
14
This makes it pointless, as the timeout can only be triggered by a checkpoint.
15
15
This check also treats ``yield`` as a checkpoint, since checkpoints can happen in the caller we yield to.
16
+
:func:`trio.open_nursery` and :func:`anyio.create_task_group` are excluded, as they are :ref:`schedule points <schedule_point>` but not :ref:`cancel points <cancel_point>` (unless they have tasks started in them).
16
17
See :ref:`ASYNC912 <async912>` which will in addition guarantee checkpoints on every code path.
0 commit comments