python / python/mypy

Incorrect stub generation for subclasses of `pydantic.BaseModel`

Offen
#16,968 5 Kommentare 5 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

stubgen does not properly generate ellipses for default values set in the scope of the class body of a Pydantic model.

To Reproduce

Running stubgen -m example

# example.py
from pydantic import BaseModel


class Foo(BaseModel):
    abc: int = 1
    xyz: str = "abc"

Should produce

Expected Behavior

# example.pyi
from pydantic import BaseModel

class Foo(BaseModel):
    abc: int = ...
    xyz: str = ...

stubgen should be populating the default annotation with ellipses, instead they are missing.

Actual Behavior

# example.pyi
from pydantic import BaseModel

class Foo(BaseModel):
    abc: int
    xyz: str

Your Environment

  • Mypy version used: mypy 1.8.0 (compiled: yes)
  • Mypy command-line flags: stubgen -m example
  • Mypy configuration options from mypy.ini (and other config files): N/A
  • Python version used: 3.11.8

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 damit, das Problem mit dem gezeigten example.py und stubgen -m example zu reproduzieren, und verfolge dann den stubgen-Pfad, der annotierte Klassenkörper-Standardwerte für Unterklassen von pydantic.BaseModel verarbeitet. Erledigt ist die Aufgabe, wenn das generierte example.pyi für beide Standardwerte ... enthält und eine Regressionstestabdeckung für diesen Fall vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

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