Home / File/ test_pydantic_v1_error.py — fastapi Source File

test_pydantic_v1_error.py — fastapi Source File

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

File python FastAPI Responses 10 imports 8 functions 5 classes

Entity Profile

Dependency Diagram

graph LR
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5["test_pydantic_v1_error.py"]
  65099b90_26c1_5db5_09e6_30dc0ea421e3["sys"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 65099b90_26c1_5db5_09e6_30dc0ea421e3
  9c2c9cad_dfd2_7d1a_1c6d_b8a448285db4["warnings"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 9c2c9cad_dfd2_7d1a_1c6d_b8a448285db4
  0dda2280_3359_8460_301c_e98c77e78185["typing"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 0dda2280_3359_8460_301c_e98c77e78185
  5befe8bf_65d1_d058_6b78_4a597a8488e9["pytest"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 5befe8bf_65d1_d058_6b78_4a597a8488e9
  8fd7072e_05b0_6622_0f14_e1e357032855["utils.py"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 8fd7072e_05b0_6622_0f14_e1e357032855
  a62a9334_f166_f5e2_dd2f_2f371121ebbe["skip_module_if_py_gte_314"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> a62a9334_f166_f5e2_dd2f_2f371121ebbe
  534f6e44_61b8_3c38_8b89_6934a6df9802["__init__.py"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 534f6e44_61b8_3c38_8b89_6934a6df9802
  01c652c5_d85c_f45e_848e_412c94ea4172["exceptions.py"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 01c652c5_d85c_f45e_848e_412c94ea4172
  29cbb417_bbf9_d7ad_9350_e32187134958["PydanticV1NotSupportedError"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> 29cbb417_bbf9_d7ad_9350_e32187134958
  e196b5ee_ed27_19aa_2701_a14cdc5c0202["pydantic.v1"]
  91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 --> e196b5ee_ed27_19aa_2701_a14cdc5c0202
  style 91d1a80c_1c46_e7d1_13fc_d70d9ed094b5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import sys
import warnings
from typing import Union

import pytest

from tests.utils import skip_module_if_py_gte_314

if sys.version_info >= (3, 14):
    skip_module_if_py_gte_314()

from fastapi import FastAPI
from fastapi.exceptions import PydanticV1NotSupportedError

with warnings.catch_warnings():
    warnings.simplefilter("ignore", UserWarning)
    from pydantic.v1 import BaseModel


def test_raises_pydantic_v1_model_in_endpoint_param() -> None:
    class ParamModelV1(BaseModel):
        name: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.post("/param")
        def endpoint(data: ParamModelV1):  # pragma: no cover
            return data


def test_raises_pydantic_v1_model_in_return_type() -> None:
    class ReturnModelV1(BaseModel):
        name: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.get("/return")
        def endpoint() -> ReturnModelV1:  # pragma: no cover
            return ReturnModelV1(name="test")


def test_raises_pydantic_v1_model_in_response_model() -> None:
    class ResponseModelV1(BaseModel):
        name: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.get("/response-model", response_model=ResponseModelV1)
        def endpoint():  # pragma: no cover
            return {"name": "test"}


def test_raises_pydantic_v1_model_in_additional_responses_model() -> None:
    class ErrorModelV1(BaseModel):
        detail: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.get(
            "/responses", response_model=None, responses={400: {"model": ErrorModelV1}}
        )
        def endpoint():  # pragma: no cover
            return {"ok": True}


def test_raises_pydantic_v1_model_in_union() -> None:
    class ModelV1A(BaseModel):
        name: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.post("/union")
        def endpoint(data: Union[dict, ModelV1A]):  # pragma: no cover
            return data


def test_raises_pydantic_v1_model_in_sequence() -> None:
    class ModelV1A(BaseModel):
        name: str

    app = FastAPI()

    with pytest.raises(PydanticV1NotSupportedError):

        @app.post("/sequence")
        def endpoint(data: list[ModelV1A]):  # pragma: no cover
            return data

Domain

Subdomains

Frequently Asked Questions

What does test_pydantic_v1_error.py do?
test_pydantic_v1_error.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_pydantic_v1_error.py?
test_pydantic_v1_error.py defines 8 function(s): skip_module_if_py_gte_314, test_raises_pydantic_v1_model_in_additional_responses_model, test_raises_pydantic_v1_model_in_endpoint_param, test_raises_pydantic_v1_model_in_response_model, test_raises_pydantic_v1_model_in_return_type, test_raises_pydantic_v1_model_in_sequence, test_raises_pydantic_v1_model_in_union, warnings.
What does test_pydantic_v1_error.py depend on?
test_pydantic_v1_error.py imports 10 module(s): PydanticV1NotSupportedError, __init__.py, exceptions.py, pydantic.v1, pytest, skip_module_if_py_gte_314, sys, typing, and 2 more.
Where is test_pydantic_v1_error.py in the architecture?
test_pydantic_v1_error.py is located at tests/test_pydantic_v1_error.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