get_definitions() — fastapi Function Reference
Architecture documentation for the get_definitions() function in v2.py from the fastapi codebase.
Entity Profile
Dependency Diagram
graph TD 49e5074e_c78c_a596_1014_055f9094a87d["get_definitions()"] 3e134d50_38c1_8523_f518_6686c1d9752b["v2.py"] 49e5074e_c78c_a596_1014_055f9094a87d -->|defined in| 3e134d50_38c1_8523_f518_6686c1d9752b 41e3e153_6be6_f36c_453e_3d06b11b55c4["get_flat_models_from_fields()"] 49e5074e_c78c_a596_1014_055f9094a87d -->|calls| 41e3e153_6be6_f36c_453e_3d06b11b55c4 fac9f9ed_ff79_d2bb_8ad2_67c368ec00c8["_has_computed_fields()"] 49e5074e_c78c_a596_1014_055f9094a87d -->|calls| fac9f9ed_ff79_d2bb_8ad2_67c368ec00c8 style 49e5074e_c78c_a596_1014_055f9094a87d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
fastapi/_compat/v2.py lines 227–288
def get_definitions(
*,
fields: Sequence[ModelField],
model_name_map: ModelNameMap,
separate_input_output_schemas: bool = True,
) -> tuple[
dict[tuple[ModelField, Literal["validation", "serialization"]], JsonSchemaValue],
dict[str, dict[str, Any]],
]:
schema_generator = GenerateJsonSchema(ref_template=REF_TEMPLATE)
validation_fields = [field for field in fields if field.mode == "validation"]
serialization_fields = [field for field in fields if field.mode == "serialization"]
flat_validation_models = get_flat_models_from_fields(
validation_fields, known_models=set()
)
flat_serialization_models = get_flat_models_from_fields(
serialization_fields, known_models=set()
)
flat_validation_model_fields = [
ModelField(
field_info=FieldInfo(annotation=model),
name=model.__name__,
mode="validation",
)
for model in flat_validation_models
]
flat_serialization_model_fields = [
ModelField(
field_info=FieldInfo(annotation=model),
name=model.__name__,
mode="serialization",
)
for model in flat_serialization_models
]
flat_model_fields = flat_validation_model_fields + flat_serialization_model_fields
input_types = {f.field_info.annotation for f in fields}
unique_flat_model_fields = {
f for f in flat_model_fields if f.field_info.annotation not in input_types
}
inputs = [
(
field,
(
field.mode
if (separate_input_output_schemas or _has_computed_fields(field))
else "validation"
),
field._type_adapter.core_schema,
)
for field in list(fields) + list(unique_flat_model_fields)
]
field_mapping, definitions = schema_generator.generate_definitions(inputs=inputs)
for item_def in cast(dict[str, dict[str, Any]], definitions).values():
if "description" in item_def:
item_description = cast(str, item_def["description"]).split("\f")[0]
item_def["description"] = item_description
# definitions: dict[DefsRef, dict[str, Any]]
# but mypy complains about general str in other places that are not declared as
# DefsRef, although DefsRef is just str:
# DefsRef = NewType('DefsRef', str)
# So, a cast to simplify the types here
return field_mapping, cast(dict[str, dict[str, Any]], definitions)
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does get_definitions() do?
get_definitions() is a function in the fastapi codebase, defined in fastapi/_compat/v2.py.
Where is get_definitions() defined?
get_definitions() is defined in fastapi/_compat/v2.py at line 227.
What does get_definitions() call?
get_definitions() calls 2 function(s): _has_computed_fields, get_flat_models_from_fields.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free