A Python port of the Invisible Internet Project (I2P)
1"""Collection utilities — OrderedProperties.
2
3Ported from net.i2p.util.OrderedProperties.
4"""
5
6from collections import OrderedDict
7
8
9class OrderedProperties(OrderedDict):
10 """Properties dict that maintains insertion order and sorts for iteration.
11
12 When iterated (keys, items), returns entries sorted by key.
13 """
14
15 def keys(self):
16 return sorted(super().keys())
17
18 def items(self):
19 return sorted(super().items(), key=lambda x: x[0])
20
21 def values(self):
22 return [v for _, v in self.items()]
23
24 def get_property(self, key: str, default: str = "") -> str:
25 return self.get(key, default)
26
27 def set_property(self, key: str, value: str) -> None:
28 self[key] = value