jvconnected.utils
¶
-
class
jvconnected.utils.
IndexedDict
(*args, **kwargs)[source]¶ Bases:
pydispatch.dispatch.Dispatcher
A
dict
like container that tracks indices for its items- Events
-
on_item_added
(key=key, item=item, index=index_)¶ Fired when an item is added
-
on_item_removed
(key=key, item=item, index=index_)¶ Fired when an item is removed
-
on_item_index_changed
(key=key, item=item, old_index=cur_index, new_index=new_index)¶ Fired when an item’s index changes
-
-
add
(key: Any, item: Any, index_: int = - 1) → int[source]¶ Add an item
- Parameters
key – The dictionary key
item – The dictionary value
index – The index for the item. If
-1
, the item will be appended to the end, otherwise it will be inserted at the specified index
- Returns
The inserted item’s index
- Return type
-
remove
(key: Any)[source]¶ Remove an item
- Parameters
key – The dictionary key
- Returns
The item that was removed
-
change_item_index
(key: Any, new_index: int)[source]¶ Change the index for an existing item. If necessary, change indices for any conflicting items
- Parameters
key – the dictionary key
new_index (int) – New index for the item
-
keys
() → Iterator[Any][source]¶ Return an iterator of the dictionary keys, sorted by the item indices
-
values
() → Iterator[Any][source]¶ Return an iterator of the dictionary values, sorted by the item indices
-
items
() → Iterator[Tuple[Any, Any]][source]¶ Return an iterator of the dictionary key, value pairs, sorted by the item indices
-
iter_indices
(start_index: int = 0) → Iterator[int][source]¶ Iterate through sorted indices starting from the one given
- Parameters
start_index (int, optional) – The starting index, defaults to
0
-
iter_consecutive_indices
(start_index: int = 0) → Iterator[int][source]¶ Iterate through sorted indices starting from the one given, but stop at the first gap
- Parameters
start_index (int, optional) – The starting index, defaults to
0
-
class
jvconnected.utils.
NamedItem
(key: Any, item: Any)[source]¶ Bases:
object
Helper class for
NamedQueue
-
key
: Any¶ The item key
-
item
: Any¶ The item itself
-
-
class
jvconnected.utils.
NamedQueue
(maxsize=0, *, loop=None)[source]¶ Bases:
asyncio.queues.Queue
A
asyncio.Queue
subclass that stores items by user-defined keys.The items placed on the queue must be instances of
NamedItem
. For convenience, there is acreate_item()
contructor method.-
classmethod
create_item
(key: Any, item: Any) → jvconnected.utils.NamedItem[source]¶ Create a
NamedItem
to be put on the queue
-
async
put
(item: jvconnected.utils.NamedItem)[source]¶ Put a
NamedItem
into the queue.If the queue is full, wait until a free slot is available before adding item.
If an item with the same
key
already exists in the queue, it will be replaced.
-
put_nowait
(item: jvconnected.utils.NamedItem)[source]¶ Put an item into the queue without blocking.
If no free slot is immediately available, raise QueueFull.
-
async
get
() → jvconnected.utils.NamedItem[source]¶ Remove and return an item from the queue.
If queue is empty, wait until an item is available.
-
get_nowait
() → jvconnected.utils.NamedItem[source]¶ Remove and return an item from the queue.
Return an item if one is immediately available, else raise QueueEmpty.
-
classmethod