Overlapping type
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne mit den Beispielen für sich überschneidende Typen im Issue und prüfe die aktuelle Diskussion, auf die dort verwiesen wird. Lege die beabsichtigte Semantik für einen Overlapping-Typ fest, einschließlich Unions, Literalen und nicht überlappenden Typen; als abgeschlossen gilt die Aufgabe, wenn Verhalten und Typisierungsregeln vereinbart sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
This is an rough idea from the recent discussion of whether to use object/Any or _KT for arguments of certain methods like pop or __sub__. E.g.:
class MyPoppable[KT, VT]:
def pop(self, x: X) -> VT: ...
What should X be? Using KT (or KT | None) finds type errors like the following:
poppable: MyPoppable[str]
poppable.pop(123)
But has a problem with overlapping types:
def foo(x: int | str):
poppable.pop(x)
On the other hand, using object doesn't catch type errors like poppable.pop(123).
The solution would be able to specify that any partially overlapping type would be accepted:
class MyPoppable[KT, VT]:
def pop(self, x: Overlapping[KT]) -> VT: ...
MyPoppable[str]().pop() would accept str, str | None, Literal["x"], str | int, etc., but not e.g. plain int.
- Vorherrschende Sprache
- Python
- Sterne
- 1.8k
- Forks
- 302
- Ø Merge
- 23 Std.
- Gemergte PRs (30 T.)
- 8
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python/typing
-
topic: typing spec
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
topic: typing spec
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
topic: documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
topic: documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
topic: conformance tests topic: typing spec
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
Ähnliche Issues
-
sponsored
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Diaoul/subliminal#1382 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
-
triage/confirmed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
agentscope-ai/agentscope#2775 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100