Coverage for tests/pydantic_specific/test_prebuild.py: 100%
20 statements
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
1from __future__ import annotations 1abcdefghijklmno
3from pydantic import BaseModel 1abcdefghijklmno
5from fast_depends import Provider 1abcdefghijklmno
6from fast_depends.core import build_call_model 1abcdefghijklmno
7from fast_depends.pydantic import PydanticSerializer 1abcdefghijklmno
8from fast_depends.pydantic._compat import PYDANTIC_V2 1abcdefghijklmno
10from .wrapper import noop_wrap 1abcdefghijklmno
13class Model(BaseModel): 1abcdefghijklmno
14 a: str 1abcdefghijklmno
17def model_func(m: Model) -> str: 1abcdefghijklmno
18 return m.a 1abcdefghijklmno
21def test_prebuild_with_wrapper() -> None: 1abcdefghijklmno
22 func = noop_wrap(model_func) 1abcdefghijklmno
23 assert func(Model(a="Hi!")) == "Hi!" 1abcdefghijklmno
25 # build_call_model should work even if function is wrapped with a
26 # wrapper that is imported from different module
27 call_model = build_call_model( 1abcdefghijklmno
28 func,
29 dependency_provider=Provider(),
30 serializer_cls=PydanticSerializer(use_fastdepends_errors=True),
31 )
33 model = call_model.serializer.model 1abcdefghijklmno
34 assert model 1abcdefghijklmno
35 # Fails if function unwrapping is not done at type introspection
37 if PYDANTIC_V2: 1abcdefghijklmno
38 model.model_rebuild() 1cdfhjklmno
39 else:
40 # pydantic v1
41 model.update_forward_refs() 1abegi