pydispatch.aioutils module

AioWeakMethodContainer class

class AioWeakMethodContainer[source]

Bases: pydispatch.utils.WeakMethodContainer

Storage for coroutine functions as weak references

New in version 0.1.0.

__call__(*args, **kwargs)[source]

Triggers all stored callbacks (coroutines)

Parameters:
  • *args – Positional arguments to pass to callbacks
  • **kwargs – Keyword arguments to pass to callbacks
add_method(loop, callback)[source]

Add a coroutine function

Parameters:
  • loop – The event loop instance on which to schedule callbacks
  • callback – The coroutine function to add
iter_instances()[source]

Iterate over the stored objects

iter_methods()[source]

Iterate over stored coroutine functions

Yields:Stored coroutine function objects
submit_coroutine(coro, loop)[source]

Schedule and await a coroutine on the specified loop

The coroutine is wrapped and scheduled using asyncio.run_coroutine_threadsafe(). While the coroutine is “awaited”, the result is not available as method returns immediately.

Parameters:
  • coro – The coroutine to schedule
  • loop – The event loop on which to schedule the coroutine

Note

This method is used internally by __call__() and is not meant to be called directly.

AioEventWaiters class

class AioEventWaiters[source]

Container used to manage await use with events

Used by pydispatch.dispatch.Event when it is awaited

waiters

Instances of AioEventWaiter currently “awaiting” the event

Type:set
lock

A sync/async lock to guard modification to the waiters container during event emission

Type:AioSimpleLock

New in version 0.1.0.

__call__(*args, **kwargs)[source]

Triggers any stored waiters

Calls AioEventWaiter.trigger() method on all instances stored in waiters. After completion, the waiters are removed.

Parameters:
add_waiter()[source]

Add a AioEventWaiter to the waiters container

The event loop to use for AioEventWaiter.loop is found in the current context using asyncio.get_event_loop()

Returns:The created AioEventWaiter instance
Return type:waiter
wait()[source]

Creates a waiter and “awaits” its result

This method is used by pydispatch.dispatch.Event instances when they are “awaited” and is the primary functionality of AioEventWaiters and AioEventWaiter.

Returns:Positional arguments attached to the event kwargs (dict): Keyword arguments attached to the event
Return type:args (list)

AioEventWaiter class

class AioEventWaiter(loop)[source]

Stores necessary information for a single “waiter”

Used by AioEventWaiters to handle awaiting an Event on a specific event loop

loop

The EventLoop instance

aio_event

An asyncio.Event used to track event emission

args

The positional arguments attached to the event

Type:list
kwargs

The keyword arguments attached to the event

Type:dict

New in version 0.1.0.

trigger(*args, **kwargs)[source]

Called on event emission and notifies the wait() method

Called by AioEventWaiters when the Event instance is dispatched.

Positional and keyword arguments are stored as instance attributes for use in the wait() method and aio_event is set.

wait()[source]

Waits for event emission and returns the event parameters

Returns:Positional arguments attached to the event kwargs (dict): Keyword arguments attached to the event
Return type:args (list)

AioSimpleLock class

class AioSimpleLock[source]

asyncio.Lock alternative backed by a threading.Lock

This is a context manager that supports use in both with and async with context blocks.

lock

Instance of threading.Lock

New in version 0.1.0.

acquire(blocking=True, timeout=-1)[source]

Acquire the lock

Parameters:
Returns:

True if the lock was acquired, otherwise False

Return type:

bool

acquire_async()[source]

Acquire the lock asynchronously

release()[source]

Release the lock