Source code for visiomatic.server.config.fields

"""
Group and define Pydantic-compatible fields.
"""
# Copyright UParisSaclay/CEA/CFHT/CNRS
# Licensed under the MIT licence

from __future__ import annotations

from typing import Any

from pydantic import Field



[docs] def SField(short: str | None = None, **kwargs) -> Any: """ Return Pydantic field with augmented JSON schema including a command-line "shortcut" keyword. Examples -------- >>> from pydantic_settings import BaseSettings >>> class Settings(BaseSettings): ... parameter: float = SField( ... short='p', ... description="an arbitrary parameter", ... default=10., ... ) >>> s = Settings(parameter=3.) >>> s.model_json_schema() {'additionalProperties': False, 'properties': {'parameter': {'default': 10.0, 'description': 'an arbitrary parameter', 'short': 'p', 'title': 'Parameter', 'type': 'number'}}, 'title': 'Settings', 'type': 'object'} Parameters ---------- short: str, optional Shortcut for keyword **kwargs: Additional Field arguments. Returns ------- Pydantic Field with augmented JSON schema. """ return Field(**kwargs, json_schema_extra={'short': short})