From eef24cb9787aa8f4f1707b4889ccd2a71419e3ce Mon Sep 17 00:00:00 2001 From: A5rocks Date: Fri, 3 Nov 2023 13:57:51 +0900 Subject: [PATCH] Bump version to 0.23.0 --- docs/source/history.rst | 71 +++++++++++++++++++++++++++++++ newsfragments/1457.feature.rst | 7 --- newsfragments/2392.feature.rst | 5 --- newsfragments/2611.bugfix.rst | 5 --- newsfragments/2668.removal.rst | 1 - newsfragments/2696.feature.rst | 4 -- newsfragments/2700.misc.rst | 4 -- newsfragments/2702.removal.rst | 1 - newsfragments/2807.misc.rst | 1 - newsfragments/2841.deprecated.rst | 8 ---- newsfragments/2842.deprecated.rst | 1 - newsfragments/543.headline.rst | 1 - trio/__init__.py | 6 --- trio/_version.py | 2 +- 14 files changed, 72 insertions(+), 45 deletions(-) delete mode 100644 newsfragments/1457.feature.rst delete mode 100644 newsfragments/2392.feature.rst delete mode 100644 newsfragments/2611.bugfix.rst delete mode 100644 newsfragments/2668.removal.rst delete mode 100644 newsfragments/2696.feature.rst delete mode 100644 newsfragments/2700.misc.rst delete mode 100644 newsfragments/2702.removal.rst delete mode 100644 newsfragments/2807.misc.rst delete mode 100644 newsfragments/2841.deprecated.rst delete mode 100644 newsfragments/2842.deprecated.rst delete mode 100644 newsfragments/543.headline.rst diff --git a/docs/source/history.rst b/docs/source/history.rst index f1baffbea7..b3afd74772 100644 --- a/docs/source/history.rst +++ b/docs/source/history.rst @@ -5,6 +5,77 @@ Release history .. towncrier release notes start +Trio 0.23.0 (2023-11-03) +------------------------ + +Headline features +~~~~~~~~~~~~~~~~~ + +- Add type hints. (`#543 `__) + + +Features +~~~~~~~~ + +- When exiting a nursery block, the parent task always waits for child + tasks to exit. This wait cannot be cancelled. However, previously, if + you tried to cancel it, it *would* inject a `Cancelled` exception, + even though it wasn't cancelled. Most users probably never noticed + either way, but injecting a `Cancelled` here is not really useful, and + in some rare cases caused confusion or problems, so Trio no longer + does that. (`#1457 `__) +- If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and + `trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; + this means that context variables and cancel scopes naturally propagate 'through' + threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` + to efficiently check for cancellation without reentering the Trio thread. (`#2392 `__) +- :func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run + before it returns to its caller, so that the caller can immediately make calls to + :func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, + :func:`trio.lowlevel.current_trio_token`, etc. (`#2696 `__) + + +Bugfixes +~~~~~~~~ + +- When a starting function raises before calling :func:`trio.TaskStatus.started`, + :func:`trio.Nursery.start` will no longer wrap the exception in an undocumented + :exc:`ExceptionGroup`. Previously, :func:`trio.Nursery.start` would incorrectly + raise an :exc:`ExceptionGroup` containing it when using ``trio.run(..., + strict_exception_groups=True)``. (`#2611 `__) + + +Deprecations and removals +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- To better reflect the underlying thread handling semantics, + the keyword argument for `trio.to_thread.run_sync` that was + previously called ``cancellable`` is now named ``abandon_on_cancel``. + It still does the same thing -- allow the thread to be abandoned + if the call to `trio.to_thread.run_sync` is cancelled -- but since we now + have other ways to propagate a cancellation without abandoning + the thread, "cancellable" has become somewhat of a misnomer. + The old ``cancellable`` name is now deprecated. (`#2841 `__) +- Deprecated support for ``math.inf`` for the ``backlog`` argument in ``open_tcp_listeners``, making its docstring correct in the fact that only ``TypeError`` is raised if invalid arguments are passed. (`#2842 `__) + + +Removals without deprecations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Drop support for Python3.7 and PyPy3.7/3.8. (`#2668 `__) +- Removed special ``MultiError`` traceback handling for IPython. As of `version 8.15 `_ `ExceptionGroup` is handled natively. (`#2702 `__) + + +Miscellaneous internal changes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Trio now indicates its presence to `sniffio` using the ``sniffio.thread_local`` + interface that is preferred since sniffio v1.3.0. This should be less likely + than the previous approach to cause :func:`sniffio.current_async_library` to + return incorrect results due to unintended inheritance of contextvars. (`#2700 `__) +- On windows, if SIO_BASE_HANDLE failed and SIO_BSP_HANDLE_POLL didn't return a different socket, runtime error will now raise from the OSError that indicated the issue so that in the event it does happen it might help with debugging. (`#2807 `__) + + Trio 0.22.2 (2023-07-13) ------------------------ diff --git a/newsfragments/1457.feature.rst b/newsfragments/1457.feature.rst deleted file mode 100644 index fc4250cb20..0000000000 --- a/newsfragments/1457.feature.rst +++ /dev/null @@ -1,7 +0,0 @@ -When exiting a nursery block, the parent task always waits for child -tasks to exit. This wait cannot be cancelled. However, previously, if -you tried to cancel it, it *would* inject a `Cancelled` exception, -even though it wasn't cancelled. Most users probably never noticed -either way, but injecting a `Cancelled` here is not really useful, and -in some rare cases caused confusion or problems, so Trio no longer -does that. diff --git a/newsfragments/2392.feature.rst b/newsfragments/2392.feature.rst deleted file mode 100644 index 985d3235af..0000000000 --- a/newsfragments/2392.feature.rst +++ /dev/null @@ -1,5 +0,0 @@ -If called from a thread spawned by `trio.to_thread.run_sync`, `trio.from_thread.run` and -`trio.from_thread.run_sync` now reuse the task and cancellation status of the host task; -this means that context variables and cancel scopes naturally propagate 'through' -threads spawned by Trio. You can also use `trio.from_thread.check_cancelled` -to efficiently check for cancellation without reentering the Trio thread. diff --git a/newsfragments/2611.bugfix.rst b/newsfragments/2611.bugfix.rst deleted file mode 100644 index a39faa2dcd..0000000000 --- a/newsfragments/2611.bugfix.rst +++ /dev/null @@ -1,5 +0,0 @@ -When a starting function raises before calling :func:`trio.TaskStatus.started`, -:func:`trio.Nursery.start` will no longer wrap the exception in an undocumented -:exc:`ExceptionGroup`. Previously, :func:`trio.Nursery.start` would incorrectly -raise an :exc:`ExceptionGroup` containing it when using ``trio.run(..., -strict_exception_groups=True)``. diff --git a/newsfragments/2668.removal.rst b/newsfragments/2668.removal.rst deleted file mode 100644 index 512f681077..0000000000 --- a/newsfragments/2668.removal.rst +++ /dev/null @@ -1 +0,0 @@ -Drop support for Python3.7 and PyPy3.7/3.8. diff --git a/newsfragments/2696.feature.rst b/newsfragments/2696.feature.rst deleted file mode 100644 index 560cf3b365..0000000000 --- a/newsfragments/2696.feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -:func:`trio.lowlevel.start_guest_run` now does a bit more setup of the guest run -before it returns to its caller, so that the caller can immediately make calls to -:func:`trio.current_time`, :func:`trio.lowlevel.spawn_system_task`, -:func:`trio.lowlevel.current_trio_token`, etc. diff --git a/newsfragments/2700.misc.rst b/newsfragments/2700.misc.rst deleted file mode 100644 index a70924816e..0000000000 --- a/newsfragments/2700.misc.rst +++ /dev/null @@ -1,4 +0,0 @@ -Trio now indicates its presence to `sniffio` using the ``sniffio.thread_local`` -interface that is preferred since sniffio v1.3.0. This should be less likely -than the previous approach to cause :func:`sniffio.current_async_library` to -return incorrect results due to unintended inheritance of contextvars. diff --git a/newsfragments/2702.removal.rst b/newsfragments/2702.removal.rst deleted file mode 100644 index 900da04498..0000000000 --- a/newsfragments/2702.removal.rst +++ /dev/null @@ -1 +0,0 @@ -Removed special ``MultiError`` traceback handling for IPython. As of `version 8.15 `_ `ExceptionGroup` is handled natively. diff --git a/newsfragments/2807.misc.rst b/newsfragments/2807.misc.rst deleted file mode 100644 index 3d7857d79e..0000000000 --- a/newsfragments/2807.misc.rst +++ /dev/null @@ -1 +0,0 @@ -On windows, if SIO_BASE_HANDLE failed and SIO_BSP_HANDLE_POLL didn't return a different socket, runtime error will now raise from the OSError that indicated the issue so that in the event it does happen it might help with debugging. diff --git a/newsfragments/2841.deprecated.rst b/newsfragments/2841.deprecated.rst deleted file mode 100644 index 687573f39a..0000000000 --- a/newsfragments/2841.deprecated.rst +++ /dev/null @@ -1,8 +0,0 @@ -To better reflect the underlying thread handling semantics, -the keyword argument for `trio.to_thread.run_sync` that was -previously called ``cancellable`` is now named ``abandon_on_cancel``. -It still does the same thing -- allow the thread to be abandoned -if the call to `trio.to_thread.run_sync` is cancelled -- but since we now -have other ways to propagate a cancellation without abandoning -the thread, "cancellable" has become somewhat of a misnomer. -The old ``cancellable`` name is now deprecated. diff --git a/newsfragments/2842.deprecated.rst b/newsfragments/2842.deprecated.rst deleted file mode 100644 index 1a2ede5022..0000000000 --- a/newsfragments/2842.deprecated.rst +++ /dev/null @@ -1 +0,0 @@ -Deprecated support for ``math.inf`` for the ``backlog`` argument in ``open_tcp_listeners``, making its docstring correct in the fact that only ``TypeError`` is raised if invalid arguments are passed. diff --git a/newsfragments/543.headline.rst b/newsfragments/543.headline.rst deleted file mode 100644 index bcd4fbe2b7..0000000000 --- a/newsfragments/543.headline.rst +++ /dev/null @@ -1 +0,0 @@ -Add type hints. diff --git a/trio/__init__.py b/trio/__init__.py index 0574186c5d..5adf14618e 100644 --- a/trio/__init__.py +++ b/trio/__init__.py @@ -119,12 +119,6 @@ _deprecate.enable_attribute_deprecations(__name__) __deprecated_attributes__: dict[str, _deprecate.DeprecatedAttribute] = { - "open_process": _deprecate.DeprecatedAttribute( - value=lowlevel.open_process, - version="0.20.0", - issue=1104, - instead="trio.lowlevel.open_process", - ), "MultiError": _deprecate.DeprecatedAttribute( value=_MultiError, version="0.22.0", diff --git a/trio/_version.py b/trio/_version.py index 65242863a9..8f1ab44b93 100644 --- a/trio/_version.py +++ b/trio/_version.py @@ -1,3 +1,3 @@ # This file is imported from __init__.py and exec'd from setup.py -__version__ = "0.22.2+dev" +__version__ = "0.23.0"