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.
pip install flake8-trio
- 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.