|
|
@ -180,8 +180,13 @@ def get_schema_from_model_field( |
|
|
], |
|
|
], |
|
|
separate_input_output_schemas: bool = True, |
|
|
separate_input_output_schemas: bool = True, |
|
|
) -> Dict[str, Any]: |
|
|
) -> Dict[str, Any]: |
|
|
|
|
|
computed_fields = field._type_adapter.core_schema.get("schema", {}).get( |
|
|
|
|
|
"computed_fields", [] |
|
|
|
|
|
) |
|
|
override_mode: Union[Literal["validation"], None] = ( |
|
|
override_mode: Union[Literal["validation"], None] = ( |
|
|
None if separate_input_output_schemas else "validation" |
|
|
None |
|
|
|
|
|
if (separate_input_output_schemas or len(computed_fields) > 0) |
|
|
|
|
|
else "validation" |
|
|
) |
|
|
) |
|
|
# This expects that GenerateJsonSchema was already used to generate the definitions |
|
|
# This expects that GenerateJsonSchema was already used to generate the definitions |
|
|
json_schema = field_mapping[(field, override_mode or field.mode)] |
|
|
json_schema = field_mapping[(field, override_mode or field.mode)] |
|
|
@ -203,9 +208,14 @@ def get_definitions( |
|
|
Dict[Tuple[ModelField, Literal["validation", "serialization"]], JsonSchemaValue], |
|
|
Dict[Tuple[ModelField, Literal["validation", "serialization"]], JsonSchemaValue], |
|
|
Dict[str, Dict[str, Any]], |
|
|
Dict[str, Dict[str, Any]], |
|
|
]: |
|
|
]: |
|
|
|
|
|
has_computed_fields: bool = any( |
|
|
|
|
|
field._type_adapter.core_schema.get("schema", {}).get("computed_fields", []) |
|
|
|
|
|
for field in fields |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
schema_generator = GenerateJsonSchema(ref_template=REF_TEMPLATE) |
|
|
schema_generator = GenerateJsonSchema(ref_template=REF_TEMPLATE) |
|
|
override_mode: Union[Literal["validation"], None] = ( |
|
|
override_mode: Union[Literal["validation"], None] = ( |
|
|
None if separate_input_output_schemas else "validation" |
|
|
None if (separate_input_output_schemas or has_computed_fields) else "validation" |
|
|
) |
|
|
) |
|
|
validation_fields = [field for field in fields if field.mode == "validation"] |
|
|
validation_fields = [field for field in fields if field.mode == "validation"] |
|
|
serialization_fields = [field for field in fields if field.mode == "serialization"] |
|
|
serialization_fields = [field for field in fields if field.mode == "serialization"] |
|
|
|