1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 from UserDict import DictMixin
18
20 """
21 Ordered dictionary
22 Provides dictionary-like access to parsed values
23 Input order is kept
24 """
25
27 self.name = name
28 self._keys = []
29 self._values = []
30
31
32
35
36
37
39 return ((_k, _v) for _k, _v in zip(self._keys, self._values))
40
41
42
45
46
47
50
51
52
54 return u"<ODict object: %s>" % unicode([(k, v)
55 for k, v in self.iteritems()])
56
57
58
61
62
63
66
67
68
71
72
73
75 try:
76 _at = self._keys.index(var)
77 del(self._keys[_at])
78 del(self._values[_at])
79 except ValueError:
80 raise KeyError()
81
82
83
85 return key in self._keys
86
87
88
90 return (_k for _k in self._keys)
91
92
93
94 - def get(self, var, default):
95 """
96 Lookup for var or return default
97 """
98
99 try:
100 self.lookup(var)
101 except KeyError:
102 return default
103
104
105
107 """
108 Lookup variable by index
109 """
110
111 if index >= len(self._values):
112 raise AttributeError()
113 else:
114 return self._values[index]
115
116
117
119 """
120 Lookup for value of variable
121 If variable does not exist raise KeyError
122 """
123
124 for _k, _v in zip(self._keys, self._values):
125 if var == _k:
126 return _v
127 else:
128 raise KeyError()
129
130
131
132 - def set(self, var, val):
133 """
134 Set new value to variable
135 """
136
137
138 try:
139 _at = self._keys.index(var)
140 self._keys[_at] = var
141 self._values[_at] = val
142 except ValueError:
143 self._keys.append(var)
144 self._values.append(val)
145