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:
RevisionActionfile
1.22modifypkgsrc/devel/py-trio/Makefile
1.12modifypkgsrc/devel/py-trio/PLIST
1.16modifypkgsrc/devel/py-trio/distinfo