python / python/typing_extensions

Multiple inheritance and ReadOnly issues?

Offen
#308 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
583
Forks
146
Ø Merge
10 Std. 11 Min.
Gemergte PRs (30 T.)
5

Beschreibung

I believe the following should be a passing test suite for multiple inheritance and ReadOnly:

from typing_extensions import TypedDict, Required, NotRequired, ReadOnly

class A(TypedDict):
  k: ReadOnly[Required[int]]
  
class B(TypedDict):
  k: ReadOnly[NotRequired[int]]

class C(A, B): pass

assert C.__required_keys__ == {'k'}
assert C.__optional_keys__ == set()

class D(B, A): pass 

assert D.__required_keys__ == {'k'}
assert D.__optional_keys__ == set()

class E(TypedDict):
  k: Required[int]
  
class F(A, E): pass

assert F.__readonly_keys__ == set()
assert F.__mutable_keys__ == {'k'}

class G(E, A): pass

assert G.__readonly_keys__ == set()
assert G.__mutable_keys__ == {'k'}

Unfortunately, with typing-extensions 4.9.0-rc1 in Python 3.10.1, every one of these properties is {'k'}

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

Führe den bereitgestellten Reproducer mit typing-extensions 4.9.0-rc1 unter Python 3.10.1 aus und vergleiche jedes gemeldete Schlüsselset mit den erwarteten Assertions. Verfolge die Behandlung der Mehrfachvererbung von TypedDict für Required, NotRequired und ReadOnly und füge eine Regressionstestabdeckung hinzu, die zeigt, dass alle Assertions bestehen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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