python / python/typeshed

Validity of `collections.deque` as `typing.Sequence`

Offen
#12,047 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stubs: false negative
Vorherrschende Sprache
Python
Sterne
5.1k
Forks
2.1k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
82

Beschreibung

Hi

Based on this discussion on pyright: https://github.com/microsoft/pyright/discussions/7989#discussioncomment-9548709

A collections.deque is a valid typing.Sequence. However, typing.Sequence allows being sliceable, while a collections.deque does not support slicing. This makes room to make errors that is not caught by static type checkers like pyright and mypy.

It seems like this normally would be reported, but the errors are suppressed by type-ignore comments found here.

Is there any other way of handling this so that trying to slice a deque would result in a type-error?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit stdlib/collections/init.pyi etwa bei Zeile 258 und lies die verknüpfte Pyright-Diskussion. Vergleiche, wie pyright und mypy mit den aktuellen type-ignore-Kommentaren und der Beziehung von deque zu Sequence umgehen. Die Aufgabe ist abgeschlossen, wenn eine mit typeshed kompatible Möglichkeit zur Darstellung der Einschränkung beim Slicing identifiziert und vereinbart wurde und das relevante Verhalten der Checker berücksichtigt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.