Inconsistent constraint resolution for tuples.
Offen
Dieses Issue hat noch niemand übernommen.
bug
topic-pep-646
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- Ø Merge
- 1 T. 18 Std.
- Gemergte PRs (30 T.)
- 54
Beschreibung
Adding the following test to ConstraintsSuite fails with assert set() == {1 <: B, 1 <: A}:
def test_wrapped_tuple_identical_results(self) -> None:
# test inferred constraints of tuple[T, ...] <: tuple[A, B]
# vs inferred constraints of tuple[*tuple[T, ...]] <: tuple[A, B]
fx = self.fx
t = Instance(fx.std_tuplei, [fx.t])
assert set(infer_constraints(
t,
TupleType([self.fx.a, self.fx.b], fallback=self.fx.std_tuple),
SUBTYPE_OF,
)) == set(infer_constraints(
TupleType([UnpackType(t)], fallback=self.fx.std_tuple),
TupleType([self.fx.a, self.fx.b], fallback=self.fx.std_tuple),
SUBTYPE_OF,
))
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in ConstraintsSuite mit test_wrapped_tuple_identical_results und untersuche infer_constraints für die beiden gezeigten Tupelformen. Reproduziere die Assertion, sorge dann dafür, dass beide Aufrufe von infer_constraints identische Constraints erzeugen, und führe den fokussierten ConstraintsSuite-Test erneut aus, um zu bestätigen, dass er erfolgreich ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 48/100