Trio

Latest version: v0.27.0

Safety actively analyzes 682334 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.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)


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)
- `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)
- `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)
- 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)


Bugfixes
---

- Allow sockets to bind any ``os.PathLike`` object. (https://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)
- Update `trio.sleep_forever` to be `NoReturn`. (https://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)

0.26.2

**Full Changelog**: https://github.com/python-trio/trio/compare/v0.26.1...v0.26.2

Bugfixes
---

- Remove remaining ``hash`` usage and fix test configuration issue that prevented it from being caught. (https://github.com/python-trio/trio/issues/3053)

0.26.1

**Full Changelog**: https://github.com/python-trio/trio/compare/v0.26.0...v0.26.1

Bugfixes
---

- Switched ``attrs`` usage off of ``hash``, which is now deprecated. (https://github.com/python-trio/trio/issues/3053)


Miscellaneous internal changes
---

- Use PyPI's Trusted Publishers to make releases. (https://github.com/python-trio/trio/issues/2980)

0.26.0

**Full Changelog**: https://github.com/python-trio/trio/compare/v0.25.1...v0.26.0

Features
---

- Added an interactive interpreter ``python -m trio``.

This makes it easier to try things and experiment with trio in the a Python repl.
Use the ``await`` keyword without needing to call ``trio.run()``

sh
$ python -m trio
Trio 0.26.0, Python 3.10.6
Use "await" directly instead of "trio.run()".
Type "help", "copyright", "credits" or "license" for more information.
>>> import trio
>>> await trio.sleep(1); print("hi") prints after one second
hi


See [interactive debugging](https://trio.readthedocs.io/en/stable/reference-core.html#interactive-debugging) for further detail. (https://github.com/python-trio/trio/issues/2972)
- `trio.testing.RaisesGroup` can now catch an unwrapped exception with ``unwrapped=True``. This means that the behaviour of `except*` can be fully replicated in combination with ``flatten_subgroups=True`` (formerly ``strict=False``). (https://github.com/python-trio/trio/issues/2989)


Bugfixes
---

- Fixed a bug where `trio.testing.RaisesGroup(..., strict=False)` would check the number of exceptions in the raised `ExceptionGroup` before flattening subgroups, leading to incorrectly failed matches.
It now properly supports end (``$``) regex markers in the ``match`` message, by no longer including " (x sub-exceptions)" in the string it matches against. (https://github.com/python-trio/trio/issues/2989)


Deprecations and removals
---

- Deprecated ``strict`` parameter from `trio.testing.RaisesGroup`, previous functionality of ``strict=False`` is now in ``flatten_subgroups=True``. (https://github.com/python-trio/trio/issues/2989)

0.25.1

**Full Changelog**: https://github.com/python-trio/trio/compare/v0.25.0...v0.25.1

Bugfixes
---

- Fix crash when importing trio in embedded Python on Windows, and other installs that remove docstrings. (https://github.com/python-trio/trio/issues/2987)

0.25.0

**Full Changelog**: https://github.com/python-trio/trio/compare/v0.24.0...v0.25.0

Breaking changes
---

- The `strict_exception_groups` parameter now defaults to `True` in `trio.run` and `trio.lowlevel.start_guest_run`. `trio.open_nursery` still defaults to the same value as was specified in `trio.run`/`trio.lowlevel.start_guest_run`, but if you didn't specify it there then all subsequent calls to `trio.open_nursery` will change.
This is unfortunately very tricky to change with a deprecation period, as raising a `DeprecationWarning` whenever `strict_exception_groups` is not specified would raise a lot of unnecessary warnings.

Notable side effects of changing code to run with ``strict_exception_groups==True``

* If an iterator raises `StopAsyncIteration` or `StopIteration` inside a nursery, then python will not recognize wrapped instances of those for stopping iteration.
* `trio.run_process` is now documented that it can raise an `ExceptionGroup`. It previously could do this in very rare circumstances, but with `strict_exception_groups` set to `True` it will now do so whenever exceptions occur in ``deliver_cancel`` or with problems communicating with the subprocess.

* Errors in opening the process is now done outside the internal nursery, so if code previously ran with ``strict_exception_groups=True`` there are cases now where an `ExceptionGroup` is *no longer* added.
* `trio.TrioInternalError` ``.__cause__`` might be wrapped in one or more `ExceptionGroups <ExceptionGroup>` (https://github.com/python-trio/trio/issues/2786)


Features
---

- Add `trio.testing.wait_all_threads_completed`, which blocks until no threads are running tasks. This is intended to be used in the same way as `trio.testing.wait_all_tasks_blocked`. (https://github.com/python-trio/trio/issues/2937)
- `Path` is now a subclass of `pathlib.PurePath`, allowing it to interoperate with other standard
`pathlib` types.

Instantiating `Path` now returns a concrete platform-specific subclass, one of `PosixPath` or
`WindowsPath`, matching the behavior of `pathlib.Path`. (https://github.com/python-trio/trio/issues/2959)


Bugfixes
---

- The pthread functions are now correctly found on systems using vanilla versions of musl libc. (https://github.com/python-trio/trio/issues/2939)


Miscellaneous internal changes
---

- use the regular readme for the PyPI long_description (https://github.com/python-trio/trio/issues/2866)

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.