Wie kann der Zwangsmodus von Pydantics nicht streng, für ganzzahlige Literale gelten?Python

Python-Programme
Guest
 Wie kann der Zwangsmodus von Pydantics nicht streng, für ganzzahlige Literale gelten?

Post by Guest »

Ich validiere Eingaben für eine Funktion unter Verwendung von Pydantics @validate_call wie folgt:

Code: Select all

from typing import Literal
from pydantic import validate_call

@validate_call
def foo(a: Literal[0, 90, 180, 270]) -> None:
print(a, type(a))
Ich möchte, dass Pydantic seinen Standardtyp-Zwang ausführt, wie es mit dem int Typ:

Code: Select all

foo(90)    # Works as expected
foo('90')  # Doesn't work, but I want it to
Wenn ich die Annotation A: int verwende, erzwungen es, Strings wie '180' zu erzwingen, aber dann muss ich manuell validieren, welche Ganzzahlen angegeben werden. < /p>
Wie mache ich Pydantic -Typ -Zwang für Literale? Dies erfordert, dass ein < /code> ein String -Typ anstelle einer Ganzzahl ist, solange er immer noch sowohl eine Ganzzahl- als auch die String -Eingabe ermöglicht. < /em> < /p>

< H3> Schlechte Lösungen < /h3>

[*] Ich möchte nicht jeden wörtlichen Fall hinzufügen. Buchstäblich [0, 90, 180, 270, '0', '90', '180', '270'] ist schlecht, weil es die Zeichenfolgen nicht zulässt. '-0' oder ' 180.0 '. Annotiert [int, field (ge = 90, le = 90)] | ... , aber das ist dumm ausführlich. Zu diesem Zeitpunkt ist es einfacher, nur a: int zu akzeptieren und den bestimmten Wert innerhalb der Methode zu validieren.

[/u]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post