Open
Description
Description of the false positive
The code looks like this:
with trio.CancelScope() as cscope:
task_status.started(cscope)
while True:
# ...
await trio.sleep(0.5)
do_more_things() # This code is marked as unreachable
A trio Cancelled
exception is expected to break out of the loop, and then be caught by the CancelScope
being used as a context manager. Trio's CancelScope
is also used to build other context managers like with trio.move_on_after(5):
, which implements a timeout by raising a Cancelled
error and then catching it.
See also the discussion on #2351 - it's not only contextlib.suppress
that can catch exceptions.
URL to the alert on the project page on LGTM.com