Home / File/ test_compat.py — fastapi Source File

test_compat.py — fastapi Source File

Architecture documentation for test_compat.py, a python file in the fastapi codebase. 10 imports, 0 dependents.

File python FastAPI Responses 10 imports 8 functions 3 classes

Entity Profile

Dependency Diagram

graph LR
  d8f09690_317a_a71d_db2f_7a9171e4e6fd["test_compat.py"]
  8fd7072e_05b0_6622_0f14_e1e357032855["utils.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 8fd7072e_05b0_6622_0f14_e1e357032855
  0dda2280_3359_8460_301c_e98c77e78185["typing"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 0dda2280_3359_8460_301c_e98c77e78185
  534f6e44_61b8_3c38_8b89_6934a6df9802["__init__.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 534f6e44_61b8_3c38_8b89_6934a6df9802
  aac750d7_00e7_a28d_9e64_89918311078b["__init__.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> aac750d7_00e7_a28d_9e64_89918311078b
  3e898b29_4dd8_c417_2d9b_a84d867423b4["shared.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 3e898b29_4dd8_c417_2d9b_a84d867423b4
  7902a3e7_b475_cc3f_95dd_6266d428706b["is_bytes_sequence_annotation"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 7902a3e7_b475_cc3f_95dd_6266d428706b
  a7c04dee_ee23_5891_b185_47ff6bed036d["testclient.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> a7c04dee_ee23_5891_b185_47ff6bed036d
  6913fbd4_39df_d14b_44bb_522e99b65b90["pydantic"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 6913fbd4_39df_d14b_44bb_522e99b65b90
  b736e30b_692b_1eb3_fc90_f9fee804449e["pydantic.fields"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> b736e30b_692b_1eb3_fc90_f9fee804449e
  3e134d50_38c1_8523_f518_6686c1d9752b["v2.py"]
  d8f09690_317a_a71d_db2f_7a9171e4e6fd --> 3e134d50_38c1_8523_f518_6686c1d9752b
  style d8f09690_317a_a71d_db2f_7a9171e4e6fd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

from typing import Union

from fastapi import FastAPI, UploadFile
from fastapi._compat import (
    Undefined,
    is_uploadfile_sequence_annotation,
)
from fastapi._compat.shared import is_bytes_sequence_annotation
from fastapi.testclient import TestClient
from pydantic import BaseModel, ConfigDict
from pydantic.fields import FieldInfo

from .utils import needs_py310


def test_model_field_default_required():
    from fastapi._compat import v2

    # For coverage
    field_info = FieldInfo(annotation=str)
    field = v2.ModelField(name="foo", field_info=field_info)
    assert field.default is Undefined


def test_complex():
    app = FastAPI()

    @app.post("/")
    def foo(foo: Union[str, list[int]]):
        return foo

    client = TestClient(app)

    response = client.post("/", json="bar")
    assert response.status_code == 200, response.text
    assert response.json() == "bar"

    response2 = client.post("/", json=[1, 2])
    assert response2.status_code == 200, response2.text
    assert response2.json() == [1, 2]


def test_propagates_pydantic2_model_config():
    app = FastAPI()

    class Missing:
        def __bool__(self):
            return False

    class EmbeddedModel(BaseModel):
        model_config = ConfigDict(arbitrary_types_allowed=True)
        value: Union[str, Missing] = Missing()

    class Model(BaseModel):
        model_config = ConfigDict(
            arbitrary_types_allowed=True,
        )
        value: Union[str, Missing] = Missing()
        embedded_model: EmbeddedModel = EmbeddedModel()

// ... (75 more lines)

Domain

Subdomains

Frequently Asked Questions

What does test_compat.py do?
test_compat.py is a source file in the fastapi codebase, written in python. It belongs to the FastAPI domain, Responses subdomain.
What functions are defined in test_compat.py?
test_compat.py defines 8 function(s): test_complex, test_is_bytes_sequence_annotation_union, test_is_uploadfile_sequence_annotation, test_model_field_default_required, test_propagates_pydantic2_model_config, test_serialize_sequence_value_with_none_first_in_union, test_serialize_sequence_value_with_optional_list, test_serialize_sequence_value_with_optional_list_pipe_union.
What does test_compat.py depend on?
test_compat.py imports 10 module(s): __init__.py, __init__.py, is_bytes_sequence_annotation, pydantic, pydantic.fields, shared.py, testclient.py, typing, and 2 more.
Where is test_compat.py in the architecture?
test_compat.py is located at tests/test_compat.py (domain: FastAPI, subdomain: Responses, directory: tests).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free