Source code for traits_futures.i_event_loop_helper

# (C) Copyright 2018-2021 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!

"""
Interface for toolkit-specific event loop helper class.
"""

import abc


[docs]class IEventLoopHelper(abc.ABC): """ Interface for toolkit-specific event loop helper class. An IEventLoopHelper instance provides a way to run the event loop programmatically until a given condition occurs. Its primary use is in testing. """
[docs] @abc.abstractmethod def init(self): """ Prepare the event loop for use. This method is not thread-safe. It should always be called on the event loop's thread. """
[docs] @abc.abstractmethod def dispose(self): """ Dispose of any resources used by this object. This method is not thread-safe. It should always be called on the event loop's thread. """
[docs] @abc.abstractmethod def setattr_soon(self, obj, name, value): """ Arrange for an attribute to be set once the event loop is running. In typical usage, *obj* will be a ``HasTraits`` instance and *name* will be the name of a trait on *obj*. This method is not thread-safe. It should always be called on the event loop's thread. Parameters ---------- obj : object Object to set the given attribute on. name : str Name of the attribute to set; typically this is a traited attribute. value : object Value to set the attribute to. """
[docs] @abc.abstractmethod def run_until(self, object, trait, condition, timeout): """ Run event loop until a given condition occurs, or timeout. The condition is re-evaluated, with the object as argument, every time the trait changes. This method is not thread-safe. It should always be called on the event loop's thread. Parameters ---------- object : traits.has_traits.HasTraits Object whose trait we monitor. trait : str Name of the trait to monitor for changes. condition Single-argument callable, returning a boolean. This will be called with *object* as the only input. timeout : float Number of seconds to allow before timing out with an exception. Raises ------ RuntimeError If timeout is reached, regardless of whether the condition is true or not at that point. """