python / python/mypy

Issues with solving value constrained type var in presence of Any

Offen
#17,952 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
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

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 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

Neue Issues direkt in Ihr Postfach

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