python-trio/trio (trio)
### [`v0.27.0`](https://redirect.github.com/python-trio/trio/releases/tag/v0.27.0)
[Compare Source](https://redirect.github.com/python-trio/trio/compare/v0.26.2...v0.27.0)
**Full Changelog**: https://github.com/python-trio/trio/compare/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`. ([https://github.com/python-trio/trio/issues/2512](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/2512](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3035](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3052](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3081](https://redirect.github.com/python-trio/trio/issues/3081))
## Bugfixes
- Allow sockets to bind any `os.PathLike` object. ([https://github.com/python-trio/trio/issues/3041](https://redirect.github.com/python-trio/trio/issues/3041))
- Update `trio.lowlevel.open_process`'s documentation to allow bytes. ([https://github.com/python-trio/trio/issues/3076](https://redirect.github.com/python-trio/trio/issues/3076))
- Update `trio.sleep_forever` to be `NoReturn`. ([https://github.com/python-trio/trio/issues/3095](https://redirect.github.com/python-trio/trio/issues/3095))
## Improved documentation
- Add docstrings for memory channels' `statistics()` and `aclose` methods. ([https://github.com/python-trio/trio/issues/3101](https://redirect.github.com/python-trio/trio/issues/3101))
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==0.26.2
->==0.27.0
Release Notes
python-trio/trio (trio)
### [`v0.27.0`](https://redirect.github.com/python-trio/trio/releases/tag/v0.27.0) [Compare Source](https://redirect.github.com/python-trio/trio/compare/v0.26.2...v0.27.0) **Full Changelog**: https://github.com/python-trio/trio/compare/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`. ([https://github.com/python-trio/trio/issues/2512](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/2512](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3035](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3052](https://redirect.github.com/python-trio/trio/issues/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. ([https://github.com/python-trio/trio/issues/3081](https://redirect.github.com/python-trio/trio/issues/3081)) ## Bugfixes - Allow sockets to bind any `os.PathLike` object. ([https://github.com/python-trio/trio/issues/3041](https://redirect.github.com/python-trio/trio/issues/3041)) - Update `trio.lowlevel.open_process`'s documentation to allow bytes. ([https://github.com/python-trio/trio/issues/3076](https://redirect.github.com/python-trio/trio/issues/3076)) - Update `trio.sleep_forever` to be `NoReturn`. ([https://github.com/python-trio/trio/issues/3095](https://redirect.github.com/python-trio/trio/issues/3095)) ## Improved documentation - Add docstrings for memory channels' `statistics()` and `aclose` methods. ([https://github.com/python-trio/trio/issues/3101](https://redirect.github.com/python-trio/trio/issues/3101))Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.