A highly opinionated flake8 plugin for Trio-related problems.
Project description
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:unless 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.
Changelog
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flake8-trio-22.7.5.tar.gz.
File metadata
- Download URL: flake8-trio-22.7.5.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da50921f7838f0dc5f1c2af913721b1bb080da36dc59efa37b25eff47ad4a842
|
|
| MD5 |
359f4a314faad3135f161eab378d8975
|
|
| BLAKE2b-256 |
d443fca8b805a03b7a9d7d6d9d33497c291236b8b5e02951fca9dbad4273a859
|
File details
Details for the file flake8_trio-22.7.5-py3-none-any.whl.
File metadata
- Download URL: flake8_trio-22.7.5-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63c80794973db4fa5c95a834e77a7e6c26812d31cf30c4d37019e1b9a6d46c4a
|
|
| MD5 |
c92c4e5e749424e5551b0b3ebd7047ae
|
|
| BLAKE2b-256 |
1317f42bb088a32820504dff818e2d22c0d7b556674b8905ea4f5bafa133dacd
|