11"""Benchmark attrs containing other attrs classes."""
2- import attr
2+
33import pytest
4+ from attrs import define
45
56from cattr import BaseConverter , Converter , UnstructureStrategy
67
1213def test_unstructure_attrs_nested (benchmark , converter_cls , unstructure_strat ):
1314 c = converter_cls (unstruct_strat = unstructure_strat )
1415
15- @attr . define
16+ @define
1617 class InnerA :
1718 a : int
1819 b : float
1920 c : str
2021 d : bytes
2122
22- @attr . define
23+ @define
2324 class InnerB :
2425 a : int
2526 b : float
2627 c : str
2728 d : bytes
2829
29- @attr . define
30+ @define
3031 class InnerC :
3132 a : int
3233 b : float
3334 c : str
3435 d : bytes
3536
36- @attr . define
37+ @define
3738 class InnerD :
3839 a : int
3940 b : float
4041 c : str
4142 d : bytes
4243
43- @attr . define
44+ @define
4445 class InnerE :
4546 a : int
4647 b : float
4748 c : str
4849 d : bytes
4950
50- @attr . define
51+ @define
5152 class Outer :
5253 a : InnerA
5354 b : InnerB
@@ -56,11 +57,11 @@ class Outer:
5657 e : InnerE
5758
5859 inst = Outer (
59- InnerA (1 , 1.0 , "one" , "one" . encode () ),
60- InnerB (2 , 2.0 , "two" , "two" . encode () ),
61- InnerC (3 , 3.0 , "three" , "three" . encode () ),
62- InnerD (4 , 4.0 , "four" , "four" . encode () ),
63- InnerE (5 , 5.0 , "five" , "five" . encode () ),
60+ InnerA (1 , 1.0 , "one" , b "one" ),
61+ InnerB (2 , 2.0 , "two" , b "two" ),
62+ InnerC (3 , 3.0 , "three" , b "three" ),
63+ InnerD (4 , 4.0 , "four" , b "four" ),
64+ InnerE (5 , 5.0 , "five" , b "five" ),
6465 )
6566
6667 benchmark (c .unstructure , inst )
@@ -73,53 +74,62 @@ class Outer:
7374def test_unstruct_attrs_deep_nest (benchmark , converter_cls , unstructure_strat ):
7475 c = converter_cls (unstruct_strat = unstructure_strat )
7576
76- @attr . define
77+ @define
7778 class InnerA :
7879 a : int
7980 b : float
8081 c : str
8182 d : bytes
8283
83- @attr . define
84+ @define
8485 class InnerB :
8586 a : InnerA
8687 b : InnerA
8788 c : InnerA
8889 d : InnerA
8990
90- @attr . define
91+ @define
9192 class InnerC :
9293 a : InnerB
9394 b : InnerB
9495 c : InnerB
9596 d : InnerB
9697
97- @attr . define
98+ @define
9899 class InnerD :
99100 a : InnerC
100101 b : InnerC
101102 c : InnerC
102103 d : InnerC
103104
104- @attr . define
105+ @define
105106 class InnerE :
106107 a : InnerD
107108 b : InnerD
108109 c : InnerD
109110 d : InnerD
110111
111- @attr . define
112+ @define
112113 class Outer :
113114 a : InnerE
114115 b : InnerE
115116 c : InnerE
116117 d : InnerE
117118
118- make_inner_a = lambda : InnerA (1 , 1.0 , "one" , "one" .encode ())
119- make_inner_b = lambda : InnerB (* [make_inner_a () for _ in range (4 )])
120- make_inner_c = lambda : InnerC (* [make_inner_b () for _ in range (4 )])
121- make_inner_d = lambda : InnerD (* [make_inner_c () for _ in range (4 )])
122- make_inner_e = lambda : InnerE (* [make_inner_d () for _ in range (4 )])
119+ def make_inner_a ():
120+ return InnerA (1 , 1.0 , "one" , b"one" )
121+
122+ def make_inner_b ():
123+ return InnerB (* [make_inner_a () for _ in range (4 )])
124+
125+ def make_inner_c ():
126+ return InnerC (* [make_inner_b () for _ in range (4 )])
127+
128+ def make_inner_d ():
129+ return InnerD (* [make_inner_c () for _ in range (4 )])
130+
131+ def make_inner_e ():
132+ return InnerE (* [make_inner_d () for _ in range (4 )])
123133
124134 inst = Outer (* [make_inner_e () for _ in range (4 )])
125135
0 commit comments