Home / Function/ get_definitions() — fastapi Function Reference

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

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