python / python/cpython

Avoid eagerly evaluating annotations

Offen
#132,493 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

3.14 stdlib type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

There are various places in the stdlib where we access the .__annotations__ attribute. Under PEP-649 / PEP-749, this now forces evaluation of lazy annotations. We should avoid evaluating annotations where it is not necessary.

For example, currently typing.Protocol evaluates its annotations at protocol creation time.

Linked PRs
  • gh-132494
  • gh-132534
  • gh-132596
  • gh-133411
  • gh-133415
  • gh-133796

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 der Durchsicht der verlinkten PRs und der Stellen in der stdlib, die auf .__annotations__ zugreifen, wobei typing.Protocol als konkretes Beispiel genannt wird. Verwende PEP-649 und PEP-749, um das Verhalten verzögerter Annotationen zu verstehen; abgeschlossen ist die Aufgabe, wenn die unnötige Auswertung von Annotationen vermieden wird, insbesondere während der Erstellung von Protokollen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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