v0.27.0
Full Changelog: v0.26.2...v0.27.0
Breaking changes
trio.move_on_afterandtrio.fail_afterpreviously 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 usetrio.move_on_at(trio.current_time() + ...).
flake8-async has a new rule to catch this, in case you're supporting older trio versions. SeeASYNC122. (#2512)
Features
CancelScope.relative_deadlineandCancelScope.is_relativeadded, as well as arelative_deadlineparameter to__init__. This allows initializing scopes ahead of time, but where the specified relative deadline doesn't count down until the scope is entered. (#2512)trio.Lockandtrio.StrictFIFOLockwill now raisetrio.BrokenResourceErrorwhentrio.Lock.acquirewould previously stall due to the owner of the lock exiting without releasing the lock. (#3035)trio.move_on_at,trio.move_on_after,trio.fail_atandtrio.fail_afternow accept shield as a keyword argument. If specified, it provides an initial value for the~trio.CancelScope.shieldattribute of thetrio.CancelScopeobject created by the context manager. (#3052)- Added
trio.lowlevel.add_parking_lot_breakerandtrio.lowlevel.remove_parking_lot_breakerto allow creating custom lock/semaphore implementations that will break their underlying parking lot if a task exits unexpectedly.trio.lowlevel.ParkingLot.break_lotis also added, to allow breaking a parking lot intentionally. (#3081)
Bugfixes
- Allow sockets to bind any
os.PathLikeobject. (#3041) - Update
trio.lowlevel.open_process's documentation to allow bytes. (#3076) - Update
trio.sleep_foreverto beNoReturn. (#3095)
Improved documentation
- Add docstrings for memory channels'
statistics()andaclosemethods. (#3101)