MCPcopy
hub / github.com/SFTtech/openage / OrderedSet

Class OrderedSet

openage/util/ordered_set.py:15–126  ·  view source on GitHub ↗

Set that saves the input order of elements.

Source from the content-addressed store, hash-verified

13
14
15class OrderedSet(Generic[OrderedSetItem]):
16 """
17 Set that saves the input order of elements.
18 """
19
20 __slots__ = ('ordered_set',)
21
22 def __init__(self, elements: Hashable = None):
23 self.ordered_set = {}
24
25 if elements:
26 self.update(elements)
27
28 def add(self, elem: Hashable) -> None:
29 """
30 Set-like add that calls append_right().
31 """
32 self.append_right(elem)
33
34 def append_left(self, elem: Hashable) -> None:
35 """
36 Add an element to the front of the set.
37 """
38 if elem not in self.ordered_set:
39 temp_set = {elem: 0}
40
41 # Update indices
42 for key in self.ordered_set:
43 self.ordered_set[key] += 1
44
45 temp_set.update(self.ordered_set)
46 self.ordered_set = temp_set
47
48 def append_right(self, elem: Hashable) -> None:
49 """
50 Add an element to the back of the set.
51 """
52 if elem not in self.ordered_set:
53 self.ordered_set[elem] = len(self)
54
55 def discard(self, elem: Hashable) -> None:
56 """
57 Remove an element from the set.
58 """
59 index = self.ordered_set.pop(elem, -1)
60
61 if index > -1:
62 # Update indices
63 for key, value in self.ordered_set.items():
64 if value > index:
65 self.ordered_set[key] -= 1
66
67 def get_list(self) -> list:
68 """
69 Returns a normal list containing the values from the ordered set.
70 """
71 return list(self.ordered_set.keys())
72

Callers 8

__init__Method · 0.85
gather_abilityMethod · 0.85
gather_abilityMethod · 0.85
create_ambient_groupsMethod · 0.85
__init__Method · 0.85
__init__Method · 0.85
_type_conversionMethod · 0.85
unionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected