File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ from pydantic import BaseModel , create_model
2+
3+ ModelNoExtra = create_model (
4+ 'ModelNoExtra' ,
5+ __config__ = {'extra' : 'forbid' },
6+ ** {f'f{ i } ' : (int , i ) for i in range (30 )}, # pyright: ignore
7+ )
8+
9+ ModelExtra = create_model (
10+ 'ModelNoExtra' ,
11+ __config__ = {'extra' : 'allow' },
12+ ** {f'f{ i } ' : (int , i ) for i in range (30 )}, # pyright: ignore
13+ )
14+
15+
16+ def model_eq (m1 : BaseModel , m2 : BaseModel ) -> bool :
17+ return m1 == m2
18+
19+
20+ def test_model_eq_extra_forbid (benchmark ) -> None :
21+ m1 = ModelNoExtra ()
22+ m2 = ModelNoExtra ()
23+
24+ benchmark (model_eq , m1 , m2 )
25+
26+
27+ def test_model_eq_extra_allow_no_extra (benchmark ) -> None :
28+ m1 = ModelExtra ()
29+ m2 = ModelExtra ()
30+
31+ benchmark (model_eq , m1 , m2 )
32+
33+
34+ def test_model_eq_extra_allow_extra (benchmark ) -> None :
35+ m1 = ModelExtra (extra1 = 'test' , extra2 = 'other' , extra3 = 2 )
36+ m2 = ModelExtra (extra1 = 'test' , extra2 = 'other' , extra3 = 2 )
37+
38+ benchmark (model_eq , m1 , m2 )
You can’t perform that action at this time.
0 commit comments