logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

mixins.py (803B)


  1. """Event loop mixins."""
  2. import threading
  3. from . import events
  4. _global_lock = threading.Lock()
  5. # Used as a sentinel for loop parameter
  6. _marker = object()
  7. class _LoopBoundMixin:
  8. _loop = None
  9. def __init__(self, *, loop=_marker):
  10. if loop is not _marker:
  11. raise TypeError(
  12. f'As of 3.10, the *loop* parameter was removed from '
  13. f'{type(self).__name__}() since it is no longer necessary'
  14. )
  15. def _get_loop(self):
  16. loop = events._get_running_loop()
  17. if self._loop is None:
  18. with _global_lock:
  19. if self._loop is None:
  20. self._loop = loop
  21. if loop is not self._loop:
  22. raise RuntimeError(f'{self!r} is bound to a different event loop')
  23. return loop