diff --git a/python-trio.changes b/python-trio.changes index 0ae0567..fa7954f 100644 --- a/python-trio.changes +++ b/python-trio.changes @@ -1,3 +1,88 @@ +------------------------------------------------------------------- +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 + +- 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..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.26.2 +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.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.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