Skip to content

LGTM.com - false positive: py/unreachable-statement after context manager with while True loop #7256

Open
@takluyver

Description

@takluyver

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

https://lgtm.com/projects/g/European-XFEL/sfollow/snapshot/2b50fa3bd622a5ed2dd5bf12948cee0174d55faa/files/sfollow/sfollow.py?sort=name&dir=ASC&mode=heatmap#x7fd2565924064ca:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions