Full Changelog: v0.26.2...v0.27.0
Breaking changes
trio.move_on_after
andtrio.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 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_deadline
andCancelScope.is_relative
added, as well as arelative_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. (#2512)trio.Lock
andtrio.StrictFIFOLock
will now raisetrio.BrokenResourceError
whentrio.Lock.acquire
would 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_at
andtrio.fail_after
now accept shield as a keyword argument. If specified, it provides an initial value for the~trio.CancelScope.shield
attribute of thetrio.CancelScope
object created by the context manager. (#3052)- Added
trio.lowlevel.add_parking_lot_breaker
andtrio.lowlevel.remove_parking_lot_breaker
to allow creating custom lock/semaphore implementations that will break their underlying parking lot if a task exits unexpectedly.trio.lowlevel.ParkingLot.break_lot
is also added, to allow breaking a parking lot intentionally. (#3081)
Bugfixes
- Allow sockets to bind any
os.PathLike
object. (#3041) - Update
trio.lowlevel.open_process
's documentation to allow bytes. (#3076) - Update
trio.sleep_forever
to beNoReturn
. (#3095)
Improved documentation
- Add docstrings for memory channels'
statistics()
andaclose
methods. (#3101)