flake8-trio
A highly opinionated flake8 plugin for Trio-related problems.
This can include anything from outright bugs, to pointless/dead code, to likely performance issues, to minor points of idiom that might signal a misunderstanding.
It may well be too noisy for anyone with different opinions, that's OK.
Pairs well with flake8-async and flake8-bugbear.
Installation
pip install flake8-trio
List of warnings
- TRIO100: a
with trio.fail_after(...):orwith trio.move_on_after(...):context does not contain anyawaitstatements. This makes it pointless, as the timeout can only be triggered by a checkpoint. - TRIO101:
yieldinside a nursery or cancel scope is only safe when implementing a context manager - otherwise, it breaks exception handling. - TRIO102: it's unsafe to await inside
finally:orexcept BaseException/trio.Cancelledunless you use a shielded cancel scope with a timeout. - TRIO103:
except BaseExceptionandexcept trio.Cancelledwith a code path that doesn't re-raise. Note that anyraisestatements in loops are ignored since it's tricky to parse loop flow withbreak,continueand/or the zero-iteration case. - TRIO104:
CancelledandBaseExceptionmust be re-raised - when a user tries toreturnorraisea different exception. - TRIO105: Calling a trio async function without immediately
awaiting it. - TRIO106: trio must be imported with
import triofor the linter to work. - TRIO107: Async functions must have at least one checkpoint on every code path, unless an exception is raised.
- TRIO108: Early return from async function must have at least one checkpoint on every code path before it, unless an exception is raised.
Checkpoints are
await,async withasync for. - TRIO109: Async function definition with a
timeoutparameter - usetrio.[fail/move_on]_[after/at]instead - TRIO110:
while <condition>: await trio.sleep()should be replaced by atrio.Event.
Changelog
22.8.1
- Added TRIO109: Async definitions should not have a
timeoutparameter. Usetrio.[fail/move_on]_[at/after] - Added TRIO110:
while <condition>: await trio.sleep()should be replaced by atrio.Event.
22.7.6
- Extend TRIO102 to also check inside
except BaseExceptionandexcept trio.Cancelled - Extend TRIO104 to also check for
yield - Update error messages on TRIO102 and TRIO103
22.7.5
- Add TRIO103:
except BaseExceptionorexcept trio.Cancelledwith a code path that doesn't re-raise - Add TRIO104: "Cancelled and BaseException must be re-raised" if user tries to return or raise a different exception.
- Added TRIO107: Async functions must have at least one checkpoint on every code path, unless an exception is raised
- Added TRIO108: Early return from async function must have at least one checkpoint on every code path before it.
22.7.4
- Added TRIO105 check for not immediately
awaiting async trio functions. - Added TRIO106 check that trio is imported in a form that the plugin can easily parse.
22.7.3
- Added TRIO102 check for unsafe checkpoints inside
finally:blocks
22.7.2
- Avoid
TRIO100false-alarms on cancel scopes containingasync fororasync with.
22.7.1
- Initial release with TRIO100 and TRIO101
Release files for flake8-trio 22.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flake8-trio-22.8.1.tar.gz | 17.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flake8_trio-22.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.1 kB
Release files / flake8-trio-22.8.1.tar.gz
| Download URL | flake8-trio-22.8.1.tar.gz |
|---|---|
| Size | 17.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
52ef183263fa428a834bef1e2c1f35a746fb58e4c105d6d5e1210f35846b2a73
|
|
BLAKE2b-256 checksum How to use checksums |
d52d4ec3701fc9b6632691e7ca8f0193df6034a1c42ad0a0ba7998ca08dd32d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.5
|
Release files / flake8_trio-22.8.1-py3-none-any.whl
| Download URL | flake8_trio-22.8.1-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09634c95d178e2f37fa876d55e483c24829a0b06eb66ec97db896d31115b2da7
|
|
BLAKE2b-256 checksum How to use checksums |
e1caa1a7a6f474fa7b0e8fe695da16ebc745ee8248ffe9e4d37fd37a744d1955
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.5
|