orderingdict.orderingdict()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nop 3
1
#!/usr/bin/env python
2
import collections
3
from orderdict import orderdict
4
import public
5
6
7
@public.add
8
class OrderingDict(collections.OrderedDict):
9
    ordering = []
10
11
    def __init__(self, *args, **kwargs):
12
        if "ordering" in kwargs:
13
            self.ordering = kwargs["ordering"]
14
            del kwargs["ordering"]
15
        ordereddict = orderdict(self.ordering, *args, **kwargs)
16
        super(OrderingDict, self).__init__(ordereddict)
17
18
    def update(self, *args, **kwargs):
19
        items = dict(self)
20
        items.update(*args, **kwargs)
21
        ordereddict = orderdict(self.ordering, items)
22
        self.clear()
23
        super(OrderingDict, self).update(ordereddict)
24
25
    def __setitem__(self, key, value):
26
        items = dict(self)
27
        items[key] = value
28
        ordereddict = orderdict(self.ordering, items)
29
        self.clear()
30
        for k, v in ordereddict.items():
31
            super(OrderingDict, self).__setitem__(k, v)
32
33
34
@public.add
35
def orderingdict(ordering, *args, **kwargs):
36
    return OrderingDict(*args, ordering=ordering, **kwargs)
37