Erweitern Sie den bestehenden pydantischen TypPython

Python-Programme
Anonymous
 Erweitern Sie den bestehenden pydantischen Typ

Post by Anonymous »

Ich möchte vorhandene pydantische Typen wie Filepath von F.I. Hinzufügen eines Dateitypmusters < /code> für < /p>
  • Validierung < /li>
    Serialisierung zum JSON -Schema. Definieren Sie meinen benutzerdefinierten Typ filepathpattern filepath nach einem Muster , das bei Verwendung des benutzerdefinierten Typs :
    definiert ist

    Code: Select all

    from typing import Annotated
    
    from pydantic import Field, FilePath
    
    def get_pattern(
    field_data: dict[str, str]
    ) -> dict[str, str]:
    return {"pattern", field_data["pattern"]}
    
    FilePathPattern = Annotated[
    FilePath,
    Field(json_schema_extra=get_pattern),
    ]
    
    class MySchema(BaseModel):
    """My schema."""
    
    path_with_suffix: FilePathPattern = Field(
    title="Path to CSV or TXT",
    description="something",
    default="my_data.csv",
    pattern=r".*\.(csv|txt)$",
    )
    another_path: FilePathPattern = Field(
    pattern="some_pattern",
    )
    
    Expected outcome
    Which should

    Use the validators provided by the base type FilePath to check for existence
  • extend the validation by matching the regex pattern with STR (pATH_WITH_SUFFIX)
  • Serialisieren Sie das Modell zu einem JSON -Schema mit mySchema.model_json_schema () mit dem zusätzlichen Schlüsselmuster (das auch im JSON -SCHMA -Standard enthalten ist):

    Code: Select all

    {
    ...
    "properties": {
    "path_with_suffix": {
    "default": "my_data.csv",
    "description": "something",
    "format": "file-path",
    "pattern": ".*/struct.dat",
    "title": "Path to CSV or TXT"
    },
    "another_path": {...}
    },
    "title": "...",
    "type": "object"
    }
    < /code>
    < /li>
    < /ul>
     Problem < /h2>
    Unglücklicherweise funktioniert das nicht, da < /p>
    
    FilePath
    scheint kein Muster zu enthalten , selbst wenn im Feld der abgeleitete benutzerdefinierte Typ filepathpattern
  • das Muster explizit in json_schema_extra = {"Muster": r ". Geben Sie
  • mit withjsonschema im kommentierten dazu hin, alle anderen Schema -Schlüsselwörter wie Format
zu definieren, wie ein benutzerdefinierter Typ ein benutzerdefiniertes Typ ohne Überschreiben des vorhandenen Typs mit dem vorhandenen Typ des vorhandenen Typs definieren kann.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post