Issues with solving value constrained type var in presence of Any
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
In 1.11.0, classes that inherit from os.PathLike could be used with os.path methods. As of 3.12, these methods claim to accept "any object implementing the os.PathLike protocol". However, in 1.12.0, mypy emits an error.
To Reproduce
import os
class MyPath(os.PathLike):
def __init__(self, path: str):
super().__init__()
self.path = path
def __fspath__(self):
return self.path
print(os.path.abspath(MyPath(".")))
Expected Behavior
Unless I'm missing something, MyPath should be valid to pass, no?
Actual Behavior
pathlike.py:13: error: Value of type variable "AnyStr" of "abspath" cannot be "MyPath | Any"
Your Environment
- Mypy version used: 1.12.0
- Mypy command-line flags: N/A
- Mypy configuration options from
mypy.ini(and other config files): N/A - Python version used: 3.12
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 mit dem bereitgestellten Python-Reproduzierer unter Verwendung von os.PathLike, os.path.abspath und der Klasse MyPath und vergleiche das Verhalten zwischen mypy 1.11.0 und 1.12.0 unter Python 3.12. Verfolge, wie der Typechecker mit der eingeschränkten Typschablone AnyStr umgeht, wenn MyPath und Any beteiligt sind; abgeschlossen ist die Aufgabe, wenn der Reproduzierer ohne den gemeldeten Fehler typgeprüft wird und dabei gültige Diagnosen erhalten bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers, devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100