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 anyawait
statements. This makes it pointless, as the timeout can only be triggered by a checkpoint. - TRIO101:
yield
inside 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 BaseException
andexcept trio.Cancelled
with a code path that doesn't re-raise. Note that anyraise
statements in loops are ignored since it's tricky to parse loop flow withbreak
,continue
and/or the zero-iteration case. - TRIO104:
Cancelled
andBaseException
must be re-raised - when a user tries toreturn
orraise
a different exception. - TRIO105: Calling a trio async function without immediately
await
ing it. - TRIO106: trio must be imported with
import trio
for 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 with
async for
.
Changelog
22.7.5
- Add TRIO103:
except BaseException
orexcept trio.Cancelled
with 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
await
ing 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
TRIO100
false-alarms on cancel scopes containingasync for
orasync 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
flake8-trio-22.7.5.tar.gz
(16.5 kB
view hashes)
Built Distribution
Close
Hashes for flake8_trio-22.7.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63c80794973db4fa5c95a834e77a7e6c26812d31cf30c4d37019e1b9a6d46c4a |
|
MD5 | c92c4e5e749424e5551b0b3ebd7047ae |
|
BLAKE2b-256 | 1317f42bb088a32820504dff818e2d22c0d7b556674b8905ea4f5bafa133dacd |