LGTM.com - false positive – too pedantic on Python structural typing / Protocol
- Langage dominant
- CodeQL
- Étoiles
- 10.1k
- Forks
- 2.1k
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 141
Description
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.](https://docs.python.org/3/library/functions.html#sorted)
> [The sort routines are guaranteed to use `__lt__()` when making comparisons between two objects.](https://docs.python.org/3/howto/sorting.html#odd-and-ends)
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
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.