From 0f88afc1d9517784a1aada08c9e3b730b7662e4415a819de446626008b0f9b64 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Wed, 30 Oct 2024 19:46:02 +0000 Subject: [PATCH 1/2] - update to 0.27.0: * :func:`trio.move_on_after` and :func:`trio.fail_after` previously set the deadline relative to initialization time, instead of more intuitively upon entering the context manager. This might change timeouts if a program relied on this behavior. If you want to restore previous behavior you should instead use trio.move_on_at(trio.current_time() + ...). flake8-async has a new rule to catch this, in case you're supporting older trio versions. See :ref:`ASYNC122`. * :meth:`CancelScope.relative_deadline` and :meth:`CancelScope.is_relative` added, as well as a relative_deadline parameter to __init__. This allows initializing scopes ahead of time, but where the specified relative deadline doesn't count down until the scope is entered. * :class:`trio.Lock` and :class:`trio.StrictFIFOLock` will now raise :exc:`trio.BrokenResourceError` when :meth:`trio.Lock.acquire` would previously stall due to the owner of the lock exiting without releasing the lock. * trio.move_on_at, trio.move_on_after, trio.fail_at and trio.fail_after now accept shield as a keyword argument. If specified, it provides an initial value for the ~trio.CancelScope.shield attribute of the trio.CancelScope object created by the context manager. * Added :func:`trio.lowlevel.add_parking_lot_breaker` and :func:`trio.lowlevel.remove_parking_lot_breaker` to allow creating custom lock/semaphore implementations that will break their underlying parking lot if a task exits unexpectedly. :meth:`trio.lowlevel.ParkingLot.break_lot` is also added, to allow breaking a parking lot intentionally. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=51 --- python-trio.changes | 40 ++++++++++++++++++++++++++++++++++++++++ python-trio.spec | 2 +- trio-0.26.2.tar.gz | 3 --- trio-0.27.0.tar.gz | 3 +++ 4 files changed, 44 insertions(+), 4 deletions(-) delete mode 100644 trio-0.26.2.tar.gz create mode 100644 trio-0.27.0.tar.gz diff --git a/python-trio.changes b/python-trio.changes index 0ae0567..95b2708 100644 --- a/python-trio.changes +++ b/python-trio.changes @@ -1,3 +1,43 @@ +------------------------------------------------------------------- +Wed Oct 30 19:45:40 UTC 2024 - Dirk Müller + +- update to 0.27.0: + * :func:`trio.move_on_after` and :func:`trio.fail_after` + previously set the deadline relative to initialization time, + instead of more intuitively upon entering the context + manager. This might change timeouts if a program relied on + this behavior. If you want to restore previous behavior you + should instead use trio.move_on_at(trio.current_time() + + ...). flake8-async has a new rule to catch this, in case + you're supporting older trio versions. See :ref:`ASYNC122`. + * :meth:`CancelScope.relative_deadline` and + :meth:`CancelScope.is_relative` added, as well as a + relative_deadline parameter to __init__. This allows + initializing scopes ahead of time, but where the specified + relative deadline doesn't count down until the scope is + entered. + * :class:`trio.Lock` and :class:`trio.StrictFIFOLock` will now + raise :exc:`trio.BrokenResourceError` when + :meth:`trio.Lock.acquire` would previously stall due to the + owner of the lock exiting without releasing the lock. + * trio.move_on_at, trio.move_on_after, trio.fail_at and + trio.fail_after now accept shield as a keyword argument. If + specified, it provides an initial value for the + ~trio.CancelScope.shield attribute of the trio.CancelScope + object created by the context manager. + * Added :func:`trio.lowlevel.add_parking_lot_breaker` and + :func:`trio.lowlevel.remove_parking_lot_breaker` to allow + creating custom lock/semaphore implementations that will + break their underlying parking lot if a task exits + unexpectedly. :meth:`trio.lowlevel.ParkingLot.break_lot` is + also added, to allow breaking a parking lot intentionally. + * Allow sockets to bind any os.PathLike object. + * Update trio.lowlevel.open_process's documentation to allow + bytes. + * Update :func:`trio.sleep_forever` to be NoReturn. + * Add docstrings for memory channels' statistics() and aclose + methods. + ------------------------------------------------------------------- Sun Sep 8 15:06:48 UTC 2024 - Dirk Müller diff --git a/python-trio.spec b/python-trio.spec index 166c221..d705a98 100644 --- a/python-trio.spec +++ b/python-trio.spec @@ -26,7 +26,7 @@ %endif %{?sle15_python_module_pythons} Name: python-trio%{psuffix} -Version: 0.26.2 +Version: 0.27.0 Release: 0 Summary: Python async/await-native I/O library License: Apache-2.0 OR MIT diff --git a/trio-0.26.2.tar.gz b/trio-0.26.2.tar.gz deleted file mode 100644 index d7a2b5f..0000000 --- a/trio-0.26.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0346c3852c15e5c7d40ea15972c4805689ef2cb8b5206f794c9c19450119f3a4 -size 561156 diff --git a/trio-0.27.0.tar.gz b/trio-0.27.0.tar.gz new file mode 100644 index 0000000..8fa4dac --- /dev/null +++ b/trio-0.27.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dcc95ab1726b2da054afea8fd761af74bad79bd52381b84eae408e983c76831 +size 568064 From ad8bf48c8c78a3cc5b8a3a962b65f37368c2234060b877903246596f8106cfa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Tue, 28 Jan 2025 11:09:05 +0000 Subject: [PATCH 2/2] Accepting request 1240795 from home:glaubitz:branches:devel:languages:python - Update to 0.28.0 * :func:inspect.iscoroutinefunction and the like now give correct answers when called on KI-protected functions. * Rework KeyboardInterrupt protection to track code objects, rather than frames, as protected or not. The new implementation no longer needs to access frame.f_locals dictionaries, so it won't artificially extend the lifetime of local variables. Since KeyboardInterrupt protection is now imposed statically (when a protected function is defined) rather than each time the function runs, its previously-noticeable performance overhead should now be near zero. The lack of a call-time wrapper has some other benefits as well: * :func:inspect.iscoroutinefunction and the like now give correct answers when called on KI-protected functions. * Calling a synchronous KI-protected function no longer pushes an additional stack frame, so tracebacks are clearer. * A synchronous KI-protected function invoked from C code (such as a weakref finalizer) is now guaranteed to start executing; previously there would be a brief window in which KeyboardInterrupt could be raised before the protection was established. * One minor drawback of the new approach is that multiple instances of the same closure share a single KeyboardInterrupt protection state (because they share a single code object). That means that if you apply trio.lowlevel.enable_ki_protection to some of them and not others, you won't get the protection semantics you asked for. See the documentation of trio.lowlevel.enable_ki_protection for more details and a workaround. * Rework foreign async generator finalization to track async generator ids rather than mutating ag_frame.f_locals. This fixes an issue with the previous implementation: locals' lifetimes will no longer be extended by materialization in the ag_frame.f_locals dictionary that the previous finalization dispatcher logic needed to access to do its work. OBS-URL: https://build.opensuse.org/request/show/1240795 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-trio?expand=0&rev=52 --- python-trio.changes | 45 +++++++++++++++++++++++++++++++++++++++++++++ python-trio.spec | 4 ++-- trio-0.27.0.tar.gz | 3 --- trio-0.28.0.tar.gz | 3 +++ 4 files changed, 50 insertions(+), 5 deletions(-) delete mode 100644 trio-0.27.0.tar.gz create mode 100644 trio-0.28.0.tar.gz diff --git a/python-trio.changes b/python-trio.changes index 95b2708..fa7954f 100644 --- a/python-trio.changes +++ b/python-trio.changes @@ -1,3 +1,48 @@ +------------------------------------------------------------------- +Tue Jan 28 10:44:39 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 0.28.0 + * :func:inspect.iscoroutinefunction and the like now give correct answers when + called on KI-protected functions. + * Rework KeyboardInterrupt protection to track code objects, rather than frames, + as protected or not. The new implementation no longer needs to access + frame.f_locals dictionaries, so it won't artificially extend the lifetime of + local variables. Since KeyboardInterrupt protection is now imposed statically + (when a protected function is defined) rather than each time the function runs, + its previously-noticeable performance overhead should now be near zero. + The lack of a call-time wrapper has some other benefits as well: + * :func:inspect.iscoroutinefunction and the like now give correct answers when + called on KI-protected functions. + * Calling a synchronous KI-protected function no longer pushes an additional stack + frame, so tracebacks are clearer. + * A synchronous KI-protected function invoked from C code (such as a weakref + finalizer) is now guaranteed to start executing; previously there would be a brief + window in which KeyboardInterrupt could be raised before the protection was + established. + * One minor drawback of the new approach is that multiple instances of the same + closure share a single KeyboardInterrupt protection state (because they share a + single code object). That means that if you apply + trio.lowlevel.enable_ki_protection to some of them + and not others, you won't get the protection semantics you asked for. See the + documentation of trio.lowlevel.enable_ki_protection + for more details and a workaround. + * Rework foreign async generator finalization to track async generator + ids rather than mutating ag_frame.f_locals. This fixes an issue + with the previous implementation: locals' lifetimes will no longer be + extended by materialization in the ag_frame.f_locals dictionary that + the previous finalization dispatcher logic needed to access to do its work. + * Ensure that Pyright recognizes our underscore prefixed attributes for attrs + classes. + * Fix trio.testing.RaisesGroup's typing. + * Improve error message when run after gevent's monkey patching. + * Document that trio.sleep_forever is guaranteed to raise an exception now. + * Remove workaround for OpenSSL 1.1.1 DTLS ClientHello bug. + * Drop support for Python 3.8. + * Switch to using PEP570 for positional-only arguments for trio.socket.SocketType's + methods. + * Improve type annotations in several places by removing Any usage. + * Get and enforce 100% coverage. + ------------------------------------------------------------------- Wed Oct 30 19:45:40 UTC 2024 - Dirk Müller diff --git a/python-trio.spec b/python-trio.spec index d705a98..619ae4d 100644 --- a/python-trio.spec +++ b/python-trio.spec @@ -1,7 +1,7 @@ # # spec file for package python-trio # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -26,7 +26,7 @@ %endif %{?sle15_python_module_pythons} Name: python-trio%{psuffix} -Version: 0.27.0 +Version: 0.28.0 Release: 0 Summary: Python async/await-native I/O library License: Apache-2.0 OR MIT diff --git a/trio-0.27.0.tar.gz b/trio-0.27.0.tar.gz deleted file mode 100644 index 8fa4dac..0000000 --- a/trio-0.27.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1dcc95ab1726b2da054afea8fd761af74bad79bd52381b84eae408e983c76831 -size 568064 diff --git a/trio-0.28.0.tar.gz b/trio-0.28.0.tar.gz new file mode 100644 index 0000000..7631dfc --- /dev/null +++ b/trio-0.28.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e547896fe9e8a5658e54e4c7c5fa1db748cbbbaa7c965e7d40505b928c73c05 +size 580318