Skip to content

LGTM.com - false positive – too pedantic on Python structural typing / Protocol #6846

Open
@maxfischer2781

Description

@maxfischer2781

LGTM is overly pedantic with Python's typing.Protocol, i.e. structural typing, expecting it to be complete like a regular class.


A Protocol is often used for type-hints of the minimum required functionality. In the false positive, a Protocol is used to express "can be compared by <"; this is the minimum required to allow sorting:

The sort algorithm uses only < comparisons between items.

The sort routines are guaranteed to use __lt__() when making comparisons between two objects.

So the entire purpose of the Protocol is just to express the minimum not complete functionality.

LGTM instead treats this Protocol as a regular class and warns because it expects the complete set of comparison operators.

https://lgtm.com/projects/g/maxfischer2781/asyncstdlib/snapshot/cac1578bed589b6d1d858ec05441edb1a9756407/files/asyncstdlib/_typing.py?sort=name&dir=ASC&mode=heatmap#x5f23fe7abe3304d0:1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions