model.model_config[parameter] = value # type: ignore[literal-required]
def get_model_fields(model: InstanceOrType[BaseModel]) -> Dict[str, "FieldInfo"]:
- return model.model_fields
+ # TODO: refactor the usage of this function to always pass the class
+ # not the instance, and then remove this extra check
+ # this is for compatibility with Pydantic v3
+ if isinstance(model, type):
+ use_model = model
+ else:
+ use_model = model.__class__
+ return use_model.model_fields
def get_fields_set(
object: InstanceOrType["SQLModel"],
class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta):
__sqlmodel_relationships__: Dict[str, RelationshipInfo]
model_config: SQLModelConfig
- model_fields: Dict[str, FieldInfo] # type: ignore[assignment]
+ model_fields: ClassVar[Dict[str, FieldInfo]]
__config__: Type[SQLModelConfig]
__fields__: Dict[str, ModelField] # type: ignore[assignment]
return cls.__name__.lower()
@classmethod
- def model_validate(
+ def model_validate( # type: ignore[override]
cls: Type[_TSQLModel],
obj: Any,
*,
mode: Union[Literal["json", "python"], str] = "python",
include: Union[IncEx, None] = None,
exclude: Union[IncEx, None] = None,
- context: Union[Dict[str, Any], None] = None,
- by_alias: bool = False,
+ context: Union[Any, None] = None,
+ by_alias: Union[bool, None] = None,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False,
round_trip: bool = False,
warnings: Union[bool, Literal["none", "warn", "error"]] = True,
+ fallback: Union[Callable[[Any], Any], None] = None,
serialize_as_any: bool = False,
) -> Dict[str, Any]:
+ if PYDANTIC_MINOR_VERSION < (2, 11):
+ by_alias = by_alias or False
if PYDANTIC_MINOR_VERSION >= (2, 7):
extra_kwargs: Dict[str, Any] = {
"context": context,
"serialize_as_any": serialize_as_any,
}
+ if PYDANTIC_MINOR_VERSION >= (2, 11):
+ extra_kwargs["fallback"] = fallback
else:
extra_kwargs = {}
if IS_PYDANTIC_V2:
return super().dict(
include=include,
exclude=exclude,
- by_alias=by_alias,
+ by_alias=by_alias or False,
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
exclude_none=exclude_none,