Skip to content

v0.27.0

Latest
Compare
Choose a tag to compare
@A5rocks A5rocks released this 16 Oct 23:34
· 158 commits to main since this release

Full Changelog: v0.26.2...v0.27.0

Breaking changes

  • trio.move_on_after and 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 ASYNC122. (#2512)

Features

  • CancelScope.relative_deadline and 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. (#2512)
  • trio.Lock and trio.StrictFIFOLock will now raise trio.BrokenResourceError when trio.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 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. (#3052)
  • Added trio.lowlevel.add_parking_lot_breaker and 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. 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 be NoReturn. (#3095)

Improved documentation

  • Add docstrings for memory channels' statistics() and aclose methods. (#3101)