Source code for leads.os
from atexit import register as _register
from threading import Lock as _Lock
from types import FrameType as _FrameType
[docs]
def _currentframe() -> _FrameType:
try:
raise Exception
except Exception as exc:
return exc.__traceback__.tb_frame.f_back
[docs]
class _ThreadFlags(object):
def __init__(self) -> None:
self._lock: _Lock = _Lock()
self._active: bool = True
@property
def active(self) -> bool:
return self._active
@active.setter
def active(self, active: bool) -> None:
self._lock.acquire()
try:
self._active = active
finally:
self._lock.release()
_thread_flags: _ThreadFlags = _ThreadFlags()
[docs]
@_register
def _request_threads_stop() -> None:
_thread_flags.active = False