github / github/codeql

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

Đang mở
#6,846 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
false-positive
Ngôn ngữ chính
CodeQL
Star
10.1k
Fork
2.1k
Merge trung bình
2 ngày 15 giờ
Pull request đã merge (30 ngày)
141

Mô tả

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.