2018-09-12 01:13:04 +08:00
|
|
|
"""asyncio exceptions."""
|
|
|
|
|
|
|
|
|
2022-03-26 06:01:21 +08:00
|
|
|
__all__ = ('BrokenBarrierError',
|
|
|
|
'CancelledError', 'InvalidStateError', 'TimeoutError',
|
2018-09-12 01:13:04 +08:00
|
|
|
'IncompleteReadError', 'LimitOverrunError',
|
|
|
|
'SendfileNotAvailableError')
|
|
|
|
|
|
|
|
|
2019-05-27 20:45:12 +08:00
|
|
|
class CancelledError(BaseException):
|
2018-09-12 01:13:04 +08:00
|
|
|
"""The Future or Task was cancelled."""
|
|
|
|
|
|
|
|
|
2021-12-19 19:22:40 +08:00
|
|
|
TimeoutError = TimeoutError # make local alias for the standard exception
|
2018-09-12 01:13:04 +08:00
|
|
|
|
|
|
|
|
2019-05-27 20:45:12 +08:00
|
|
|
class InvalidStateError(Exception):
|
2018-09-12 01:13:04 +08:00
|
|
|
"""The operation is not allowed in this state."""
|
|
|
|
|
|
|
|
|
|
|
|
class SendfileNotAvailableError(RuntimeError):
|
|
|
|
"""Sendfile syscall is not available.
|
|
|
|
|
|
|
|
Raised if OS does not support sendfile syscall for given socket or
|
|
|
|
file type.
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
class IncompleteReadError(EOFError):
|
|
|
|
"""
|
|
|
|
Incomplete read error. Attributes:
|
|
|
|
|
|
|
|
- partial: read bytes string before the end of stream was reached
|
|
|
|
- expected: total number of expected bytes (or None if unknown)
|
|
|
|
"""
|
|
|
|
def __init__(self, partial, expected):
|
2020-11-28 22:27:28 +08:00
|
|
|
r_expected = 'undefined' if expected is None else repr(expected)
|
2018-09-12 01:13:04 +08:00
|
|
|
super().__init__(f'{len(partial)} bytes read on a total of '
|
2020-11-28 22:27:28 +08:00
|
|
|
f'{r_expected} expected bytes')
|
2018-09-12 01:13:04 +08:00
|
|
|
self.partial = partial
|
|
|
|
self.expected = expected
|
|
|
|
|
|
|
|
def __reduce__(self):
|
|
|
|
return type(self), (self.partial, self.expected)
|
|
|
|
|
|
|
|
|
|
|
|
class LimitOverrunError(Exception):
|
|
|
|
"""Reached the buffer limit while looking for a separator.
|
|
|
|
|
|
|
|
Attributes:
|
|
|
|
- consumed: total number of to be consumed bytes.
|
|
|
|
"""
|
|
|
|
def __init__(self, message, consumed):
|
|
|
|
super().__init__(message)
|
|
|
|
self.consumed = consumed
|
|
|
|
|
|
|
|
def __reduce__(self):
|
|
|
|
return type(self), (self.args[0], self.consumed)
|
2022-03-26 06:01:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
class BrokenBarrierError(RuntimeError):
|
|
|
|
"""Barrier is broken by barrier.abort() call."""
|