Handle maximum channels limit;

Proper handle of a case where the app ends up with more channels from ACLs than is supported
This commit is contained in:
DevilXD committed 2022-02-13 20:13:11 +01:00
1 parent ce9af7b4ba
commit 423e51bc27
7 files changed
+111 -72

No files matched your search

+17 -5
View File
@@ -56,14 +56,14 @@ class OrderedSet(MutableSet[_V]):
Implementation of a set that preserves insertion order,
based on OrderedDict with values set to None.
"""
def __init__(self, iterable: Iterable[_V] = []):
def __init__(self, /, iterable: Iterable[_V] = []):
self._items: OrderedDict[_V, None] = OrderedDict((item, None) for item in iterable)
def __repr__(self) -> str:
return f"{self.__class__.__name__}([{', '.join(map(repr, self._items))}])"
def __contains__(self, x: object) -> bool:
return x in self._items
def __contains__(self, /, item: object) -> bool:
return item in self._items
def __iter__(self) -> Iterator[_V]:
return iter(self._items)
@@ -71,13 +71,25 @@ class OrderedSet(MutableSet[_V]):
def __len__(self) -> int:
return len(self._items)
def add(self, item: _V) -> None:
def add(self, /, item: _V) -> None:
self._items[item] = None
def discard(self, item: _V) -> None:
def discard(self, /, item: _V) -> None:
with suppress(KeyError):
del self._items[item]
def update(self, /, *others: Iterable[_V]) -> None:
for it in others:
for item in it:
if item not in self._items:
self._items[item] = None
def difference_update(self, *others: Iterable[_V]) -> None:
for it in others:
for item in it:
if item in self._items:
del self._items[item]
class AwaitableValue(Generic[_V]):
def __init__(self):