Skip to content

Commit 671c9b0

Browse files
authored
Add basic benchmarks for model equality (#13061)
1 parent d17d71e commit 671c9b0

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

tests/benchmarks/test_model_eq.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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)

0 commit comments

Comments
 (0)