fields_nosuper_class
last analyzed

Complexity

Total Complexity 0

Size/Duplication

Total Lines 8
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 8
wmc 0
1
from collections import namedtuple
2
from functools import partial
3
4
import pytest
5
from attr import ib as badly_named_field
6
from attr import s as badly_named_class_decorator
7
from attr import Factory
8
from attr import make_class
9
from characteristic import Attribute
10
from characteristic import attributes
11
12
from fields import Fields
13
from fields import SlotsFields
14
from fields import Tuple
15
from fields import __base__
16
from fields import class_sealer
17
from fields import factory
18
from fields import make_init_func
19
20
try:
21
    from cnamedtuple import namedtuple as cnamedtuple
22
except ImportError:
23
    cnamedtuple = None
24
25
26
@attributes(["a", "b", Attribute("c", default_value="abc")])
27
class characteristic_class(object):
28
    pass
29
30
31
@badly_named_class_decorator
32
class attrs_decorated_class(object):
33
    a = badly_named_field()
34
    b = badly_named_field()
35
    c = badly_named_field(default=Factory("abc"))
36
37
38
class fields_nosuper_class(
39
    factory(
40
        class_sealer,
41
        base=object,
42
        make_init_func=partial(make_init_func, super_call=False)
43
    ).a.b.c["abc"]
44
):
45
    pass
46
47
48
class fields_class(Fields.a.b.c["abc"]):
49
    pass
50
51
52
class slots_class(SlotsFields.a.b.c["abc"]):
53
    pass
54
55
56
class tuple_class(Tuple.a.b.c["abc"]):
57
    pass
58
59
60
def make_super_dumb_class():
61
    class super_dumb_class(__base__):
62
        def __init__(self, a, b, c="abc"):
63
            self.a = a
64
            self.b = b
65
            self.c = c
66
            super(super_dumb_class, self).__init__(a=a, b=b, c=c)
67
68
    return super_dumb_class
69
70
71
super_dumb_class = make_super_dumb_class()
72
73
74
class dumb_class(object):
75
    def __init__(self, a, b, c="abc"):
76
        self.a = a
77
        self.b = b
78
        self.c = c
79
80
81
namedtuple_class = namedtuple("namedtuple_class", ["a", "b", "c"])
82
if cnamedtuple:
83
    cnamedtuple_class = cnamedtuple("namedtuple_class", ["a", "b", "c"])
84
else:
85
    cnamedtuple_class = lambda *args, **kwargs: pytest.skip("Not available.")
86
attrs_class = make_class("attrs_class", ["a", "b", "c"])
87
88
89
def test_characteristic(benchmark):
90
    assert benchmark(partial(characteristic_class, a=1, b=2, c=1))
91
92
93
def test_fields(benchmark):
94
    assert benchmark(partial(fields_class, a=1, b=2, c=1))
95
96
97
def test_fields_nosuper(benchmark):
98
    assert benchmark(partial(fields_nosuper_class, a=1, b=2, c=1))
99
100
101
def test_slots_fields(benchmark):
102
    assert benchmark(partial(slots_class, a=1, b=2, c=1))
103
104
105
def test_super_dumb(benchmark):
106
    assert benchmark(partial(super_dumb_class, a=1, b=2, c=1))
107
108
109
def test_dumb(benchmark):
110
    assert benchmark(partial(dumb_class, a=1, b=2, c=1))
111
112
113
def test_tuple(benchmark):
114
    assert benchmark(partial(tuple_class, a=1, b=2, c=1))
115
116
117
def test_namedtuple(benchmark):
118
    assert benchmark(partial(namedtuple_class, a=1, b=2, c=1))
119
120
121
def test_cnamedtuple(benchmark):
122
    assert benchmark(partial(cnamedtuple_class, a=1, b=2, c=1))
123
124
125
def test_attrs_decorated_class(benchmark):
126
    assert benchmark(partial(attrs_decorated_class, a=1, b=2, c=1))
127
128
129
def test_attrs_class(benchmark):
130
    assert benchmark(partial(attrs_class, a=1, b=2, c=1))
131