1 from typing
import Any
, Dict
, Iterable
, Iterator
, MutableSet
, Optional
, TypeVar
3 __all__
= ['OrderedSet']
4 _T_co
= TypeVar('_T_co')
7 class OrderedSet(MutableSet
[_T_co
]):
8 __map
: Dict
[_T_co
, None]
10 def __init__(self
, iterable
: Iterable
[_T_co
] = ()):
11 self
.__map
= {i
: None for i
in iterable
}
13 def __len__(self
) -> int:
14 return len(self
.__map
)
16 def __contains__(self
, key
: Any
) -> bool:
17 return key
in self
.__map
19 def add(self
, key
: _T_co
):
20 self
.__map
[key
] = None
22 def discard(self
, key
: Any
):
23 self
.__map
.pop(key
, None)
25 def __iter__(self
) -> Iterator
[_T_co
]:
26 return iter(self
.__map
.keys())
28 def __repr__(self
) -> str:
31 return f
"OrderedSet({list(self)!r})"