Updates
This commit is contained in:
68
ETB-API/venv/lib/python3.12/site-packages/vine/abstract.py
Normal file
68
ETB-API/venv/lib/python3.12/site-packages/vine/abstract.py
Normal file
@@ -0,0 +1,68 @@
|
||||
"""Abstract classes."""
|
||||
import abc
|
||||
from collections.abc import Callable
|
||||
|
||||
__all__ = ['Thenable']
|
||||
|
||||
|
||||
class Thenable(Callable, metaclass=abc.ABCMeta): # pragma: no cover
|
||||
"""Object that supports ``.then()``."""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
@abc.abstractmethod
|
||||
def then(self, on_success, on_error=None):
|
||||
raise NotImplementedError()
|
||||
|
||||
@abc.abstractmethod
|
||||
def throw(self, exc=None, tb=None, propagate=True):
|
||||
raise NotImplementedError()
|
||||
|
||||
@abc.abstractmethod
|
||||
def cancel(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
@classmethod
|
||||
def __subclasshook__(cls, C):
|
||||
if cls is Thenable:
|
||||
if any('then' in B.__dict__ for B in C.__mro__):
|
||||
return True
|
||||
return NotImplemented
|
||||
|
||||
@classmethod
|
||||
def register(cls, other):
|
||||
# overide to return other so `register` can be used as a decorator
|
||||
type(cls).register(cls, other)
|
||||
return other
|
||||
|
||||
|
||||
@Thenable.register
|
||||
class ThenableProxy:
|
||||
"""Proxy to object that supports ``.then()``."""
|
||||
|
||||
def _set_promise_target(self, p):
|
||||
self._p = p
|
||||
|
||||
def then(self, on_success, on_error=None):
|
||||
return self._p.then(on_success, on_error)
|
||||
|
||||
def cancel(self):
|
||||
return self._p.cancel()
|
||||
|
||||
def throw1(self, exc=None):
|
||||
return self._p.throw1(exc)
|
||||
|
||||
def throw(self, exc=None, tb=None, propagate=True):
|
||||
return self._p.throw(exc, tb=tb, propagate=propagate)
|
||||
|
||||
@property
|
||||
def cancelled(self):
|
||||
return self._p.cancelled
|
||||
|
||||
@property
|
||||
def ready(self):
|
||||
return self._p.ready
|
||||
|
||||
@property
|
||||
def failed(self):
|
||||
return self._p.failed
|
||||
Reference in New Issue
Block a user