Path to this page:
Subject: CVS commit: pkgsrc/devel/py-trio
From: Adam Ciarcinski
Date: 2024-12-25 22:57:13
Message id: 20241225215713.ADFAEFC1D@cvs.NetBSD.org
Log Message:
py-trio: updated to 0.28.0
Trio 0.28.0 (2024-12-25)
Bugfixes
- :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
`@enable_ki_protection <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 `@enable_ki_protection <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.
Improved documentation
- Improve error message when run after gevent's monkey patching.
- Document that :func:`trio.sleep_forever` is guaranteed to raise an exception now.
Removals without deprecations
- Remove workaround for OpenSSL 1.1.1 DTLS ClientHello bug.
- Drop support for Python 3.8.
Miscellaneous internal changes
- 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
Files: