webber
Webber: A Pythonic executor framework aimed at making parallel computing easy for everyone.
1""" 2Webber: A Pythonic executor framework aimed at making parallel computing easy for everyone. 3""" 4import sys as _sys 5import logging as _logging 6import threading as _threading 7 8__version__ = '0.3.0' 9__supported__ = ("linux", "linux2", "win32") 10 11if _sys.platform not in __supported__: 12 _logging.warning(f"Webber {__version__} is only supported on these platforms: {', '.join(__supported__)}") 13 14from .core import DAG, Condition, QueueDAG 15from .xcoms import Promise 16 17# Event to signal when visualization libraries are ready (or failed gracefully) 18_viz_ready = _threading.Event() 19 20 21def _preload_viz() -> None: 22 """Background pre-import of visualization libraries to avoid circular imports.""" 23 try: 24 import matplotlib 25 # Only set backend if pyplot hasn't been imported yet 26 if 'matplotlib.pyplot' not in _sys.modules: 27 matplotlib.use('Agg') 28 import matplotlib.pyplot 29 import netgraph 30 except (ImportError, AttributeError, Exception): 31 # Preload failed - visualization will import on demand instead 32 pass 33 finally: 34 # Signal ready regardless of success 35 _viz_ready.set() 36 37 38def wait_for_viz_ready(timeout: float = 5.0) -> bool: 39 """ 40 Wait for visualization libraries to finish loading. 41 42 Called internally by visualization functions to avoid race conditions. 43 Does not block DAG execution - only affects visualize() calls. 44 45 Args: 46 timeout: Maximum seconds to wait (default 5.0) 47 48 Returns: 49 True if ready, False if timeout occurred 50 """ 51 return _viz_ready.wait(timeout=timeout) 52 53 54# Start background import on module load (daemon thread won't block exit) 55_threading.Thread(target=_preload_viz, daemon=True, name='webber-viz-preload').start()
def
wait_for_viz_ready(timeout: float = 5.0) -> bool:
39def wait_for_viz_ready(timeout: float = 5.0) -> bool: 40 """ 41 Wait for visualization libraries to finish loading. 42 43 Called internally by visualization functions to avoid race conditions. 44 Does not block DAG execution - only affects visualize() calls. 45 46 Args: 47 timeout: Maximum seconds to wait (default 5.0) 48 49 Returns: 50 True if ready, False if timeout occurred 51 """ 52 return _viz_ready.wait(timeout=timeout)
Wait for visualization libraries to finish loading.
Called internally by visualization functions to avoid race conditions. Does not block DAG execution - only affects visualize() calls.
Args: timeout: Maximum seconds to wait (default 5.0)
Returns: True if ready, False if timeout occurred