|
|
@ -34,6 +34,7 @@ def get_cached_model_fields(model: Type[BaseModel]) -> Any: |
|
|
return v1.get_model_fields(model) |
|
|
return v1.get_model_fields(model) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.get_model_fields(model) |
|
|
return v2.get_model_fields(model) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -42,6 +43,7 @@ def _is_undefined(value: object) -> bool: |
|
|
return True |
|
|
return True |
|
|
elif PYDANTIC_V2: |
|
|
elif PYDANTIC_V2: |
|
|
from pydantic_core import PydanticUndefined |
|
|
from pydantic_core import PydanticUndefined |
|
|
|
|
|
|
|
|
return value is PydanticUndefined |
|
|
return value is PydanticUndefined |
|
|
else: |
|
|
else: |
|
|
return False |
|
|
return False |
|
|
@ -56,6 +58,7 @@ def _get_model_config(model: BaseModel) -> Any: |
|
|
|
|
|
|
|
|
if PYDANTIC_V2: |
|
|
if PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2._get_model_config(model) |
|
|
return v2._get_model_config(model) |
|
|
|
|
|
|
|
|
return getattr(model, "__config__", None) |
|
|
return getattr(model, "__config__", None) |
|
|
@ -72,6 +75,7 @@ def _model_dump( |
|
|
|
|
|
|
|
|
if PYDANTIC_V2: |
|
|
if PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2._model_dump(model, mode=mode, **kwargs) |
|
|
return v2._model_dump(model, mode=mode, **kwargs) |
|
|
|
|
|
|
|
|
return model.dict(**kwargs) |
|
|
return model.dict(**kwargs) |
|
|
@ -96,12 +100,11 @@ def copy_field_info(*, field_info: FieldInfo, annotation: Any) -> FieldInfo: |
|
|
return v1.copy_field_info(field_info=field_info, annotation=annotation) |
|
|
return v1.copy_field_info(field_info=field_info, annotation=annotation) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.copy_field_info(field_info=field_info, annotation=annotation) |
|
|
return v2.copy_field_info(field_info=field_info, annotation=annotation) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_body_model( |
|
|
def create_body_model(*, fields: List[ModelField], model_name: str) -> Any: |
|
|
*, fields: List[ModelField], model_name: str |
|
|
|
|
|
) -> Any: |
|
|
|
|
|
if fields and v1_isinstance(fields[0], "ModelField"): |
|
|
if fields and v1_isinstance(fields[0], "ModelField"): |
|
|
v1 = get_v1_if_loaded() |
|
|
v1 = get_v1_if_loaded() |
|
|
if v1 is None: |
|
|
if v1 is None: |
|
|
@ -109,6 +112,7 @@ def create_body_model( |
|
|
return v1.create_body_model(fields=fields, model_name=model_name) |
|
|
return v1.create_body_model(fields=fields, model_name=model_name) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.create_body_model(fields=fields, model_name=model_name) |
|
|
return v2.create_body_model(fields=fields, model_name=model_name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -124,6 +128,7 @@ def get_annotation_from_field_info( |
|
|
) |
|
|
) |
|
|
else: |
|
|
else: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.get_annotation_from_field_info( |
|
|
return v2.get_annotation_from_field_info( |
|
|
annotation=annotation, field_info=field_info, field_name=field_name |
|
|
annotation=annotation, field_info=field_info, field_name=field_name |
|
|
) |
|
|
) |
|
|
@ -137,6 +142,7 @@ def is_bytes_field(field: ModelField) -> Any: |
|
|
return v1.is_bytes_field(field) |
|
|
return v1.is_bytes_field(field) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.is_bytes_field(field) |
|
|
return v2.is_bytes_field(field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -148,6 +154,7 @@ def is_bytes_sequence_field(field: ModelField) -> Any: |
|
|
return v1.is_bytes_sequence_field(field) |
|
|
return v1.is_bytes_sequence_field(field) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.is_bytes_sequence_field(field) |
|
|
return v2.is_bytes_sequence_field(field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -159,6 +166,7 @@ def is_scalar_field(field: ModelField) -> Any: |
|
|
return v1.is_scalar_field(field) |
|
|
return v1.is_scalar_field(field) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.is_scalar_field(field) |
|
|
return v2.is_scalar_field(field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -170,6 +178,7 @@ def is_scalar_sequence_field(field: ModelField) -> Any: |
|
|
return v1.is_scalar_sequence_field(field) |
|
|
return v1.is_scalar_sequence_field(field) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.is_scalar_sequence_field(field) |
|
|
return v2.is_scalar_sequence_field(field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -181,6 +190,7 @@ def is_sequence_field(field: ModelField) -> Any: |
|
|
return v1.is_sequence_field(field) |
|
|
return v1.is_sequence_field(field) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.is_sequence_field(field) |
|
|
return v2.is_sequence_field(field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -192,18 +202,30 @@ def serialize_sequence_value(*, field: ModelField, value: Any) -> Any: |
|
|
return v1.serialize_sequence_value(field=field, value=value) |
|
|
return v1.serialize_sequence_value(field=field, value=value) |
|
|
|
|
|
|
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.serialize_sequence_value(field=field, value=value) |
|
|
return v2.serialize_sequence_value(field=field, value=value) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_compat_model_name_map(fields: List[ModelField]) -> Any: |
|
|
def get_compat_model_name_map(fields: List[ModelField]) -> Any: |
|
|
v1 = get_v1_if_loaded() |
|
|
v1 = get_v1_if_loaded() |
|
|
v1_model_fields = [field for field in fields if v1_isinstance(field, "ModelField")] if v1 else [] |
|
|
v1_model_fields = ( |
|
|
v1_flat_models = v1.get_flat_models_from_fields(v1_model_fields, known_models=set()) if v1 and v1_model_fields else set() |
|
|
[field for field in fields if v1_isinstance(field, "ModelField")] if v1 else [] |
|
|
|
|
|
) |
|
|
|
|
|
v1_flat_models = ( |
|
|
|
|
|
v1.get_flat_models_from_fields(v1_model_fields, known_models=set()) |
|
|
|
|
|
if v1 and v1_model_fields |
|
|
|
|
|
else set() |
|
|
|
|
|
) |
|
|
all_flat_models = v1_flat_models |
|
|
all_flat_models = v1_flat_models |
|
|
if PYDANTIC_V2: |
|
|
if PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
v2_model_fields = [field for field in fields if not v1_isinstance(field, "ModelField")] |
|
|
|
|
|
v2_flat_models = v2.get_flat_models_from_fields(v2_model_fields, known_models=set()) |
|
|
v2_model_fields = [ |
|
|
|
|
|
field for field in fields if not v1_isinstance(field, "ModelField") |
|
|
|
|
|
] |
|
|
|
|
|
v2_flat_models = v2.get_flat_models_from_fields( |
|
|
|
|
|
v2_model_fields, known_models=set() |
|
|
|
|
|
) |
|
|
all_flat_models = v1_flat_models | v2_flat_models |
|
|
all_flat_models = v1_flat_models | v2_flat_models |
|
|
model_name_map = v2.get_model_name_map(all_flat_models) |
|
|
model_name_map = v2.get_model_name_map(all_flat_models) |
|
|
return model_name_map |
|
|
return model_name_map |
|
|
@ -221,7 +243,9 @@ def get_definitions( |
|
|
Dict[str, Dict[str, Any]], |
|
|
Dict[str, Dict[str, Any]], |
|
|
]: |
|
|
]: |
|
|
v1 = get_v1_if_loaded() |
|
|
v1 = get_v1_if_loaded() |
|
|
v1_fields = [field for field in fields if v1_isinstance(field, "ModelField")] if v1 else [] |
|
|
v1_fields = ( |
|
|
|
|
|
[field for field in fields if v1_isinstance(field, "ModelField")] if v1 else [] |
|
|
|
|
|
) |
|
|
if v1_fields and v1: |
|
|
if v1_fields and v1: |
|
|
v1_field_maps, v1_definitions = v1.get_definitions( |
|
|
v1_field_maps, v1_definitions = v1.get_definitions( |
|
|
fields=v1_fields, |
|
|
fields=v1_fields, |
|
|
@ -233,7 +257,10 @@ def get_definitions( |
|
|
v1_definitions = {} |
|
|
v1_definitions = {} |
|
|
if PYDANTIC_V2: |
|
|
if PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
v2_fields = [field for field in fields if not v1_isinstance(field, "ModelField")] |
|
|
|
|
|
|
|
|
v2_fields = [ |
|
|
|
|
|
field for field in fields if not v1_isinstance(field, "ModelField") |
|
|
|
|
|
] |
|
|
v2_field_maps, v2_definitions = v2.get_definitions( |
|
|
v2_field_maps, v2_definitions = v2.get_definitions( |
|
|
fields=v2_fields, |
|
|
fields=v2_fields, |
|
|
model_name_map=model_name_map, |
|
|
model_name_map=model_name_map, |
|
|
@ -266,6 +293,7 @@ def get_schema_from_model_field( |
|
|
) |
|
|
) |
|
|
else: |
|
|
else: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.get_schema_from_model_field( |
|
|
return v2.get_schema_from_model_field( |
|
|
field=field, |
|
|
field=field, |
|
|
model_name_map=model_name_map, |
|
|
model_name_map=model_name_map, |
|
|
@ -279,6 +307,7 @@ def _is_model_field(value: Any) -> bool: |
|
|
return True |
|
|
return True |
|
|
elif PYDANTIC_V2: |
|
|
elif PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2._is_model_field(value) |
|
|
return v2._is_model_field(value) |
|
|
else: |
|
|
else: |
|
|
return False |
|
|
return False |
|
|
@ -289,6 +318,7 @@ def _is_model_class(value: Any) -> bool: |
|
|
return True |
|
|
return True |
|
|
elif PYDANTIC_V2: |
|
|
elif PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2._is_model_class(value) |
|
|
return v2._is_model_class(value) |
|
|
else: |
|
|
else: |
|
|
return False |
|
|
return False |
|
|
@ -302,12 +332,16 @@ def get_missing_field_error(loc: Tuple[str, ...], field: ModelField) -> Any: |
|
|
return v1.get_missing_field_error(loc=loc, field=field) |
|
|
return v1.get_missing_field_error(loc=loc, field=field) |
|
|
else: |
|
|
else: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.get_missing_field_error(loc=loc, field=field) |
|
|
return v2.get_missing_field_error(loc=loc, field=field) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def evaluate_forwardref(type_: Any, globalns: Dict[str, Any], localns: Dict[str, Any]) -> Any: |
|
|
def evaluate_forwardref( |
|
|
|
|
|
type_: Any, globalns: Dict[str, Any], localns: Dict[str, Any] |
|
|
|
|
|
) -> Any: |
|
|
if PYDANTIC_V2: |
|
|
if PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
return v2.evaluate_forwardref(type_, globalns, localns) |
|
|
return v2.evaluate_forwardref(type_, globalns, localns) |
|
|
else: |
|
|
else: |
|
|
v1 = get_v1_if_loaded() |
|
|
v1 = get_v1_if_loaded() |
|
|
@ -334,7 +368,9 @@ def with_info_plain_validator_function( |
|
|
v1 = get_v1_if_loaded() |
|
|
v1 = get_v1_if_loaded() |
|
|
if v1 is None: |
|
|
if v1 is None: |
|
|
return func |
|
|
return func |
|
|
return v1.with_info_plain_validator_function(func=func, info_argname=info_argname) |
|
|
return v1.with_info_plain_validator_function( |
|
|
|
|
|
func=func, info_argname=info_argname |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _model_rebuild(model: Any) -> None: |
|
|
def _model_rebuild(model: Any) -> None: |
|
|
@ -344,6 +380,7 @@ def _model_rebuild(model: Any) -> None: |
|
|
v1._model_rebuild(model) |
|
|
v1._model_rebuild(model) |
|
|
elif PYDANTIC_V2: |
|
|
elif PYDANTIC_V2: |
|
|
from . import v2 |
|
|
from . import v2 |
|
|
|
|
|
|
|
|
v2._model_rebuild(model) |
|
|
v2._model_rebuild(model) |
|
|
else: |
|
|
else: |
|
|
model.update_forward_refs() |
|
|
model.update_forward_refs() |
|
|
|