61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
|
"""asyncio exceptions."""
|
||
|
|
||
|
|
||
|
__all__ = ('CancelledError', 'InvalidStateError', 'TimeoutError',
|
||
|
'IncompleteReadError', 'LimitOverrunError',
|
||
|
'SendfileNotAvailableError')
|
||
|
|
||
|
import concurrent.futures
|
||
|
from . import base_futures
|
||
|
|
||
|
|
||
|
class CancelledError(concurrent.futures.CancelledError):
|
||
|
"""The Future or Task was cancelled."""
|
||
|
|
||
|
|
||
|
class TimeoutError(concurrent.futures.TimeoutError):
|
||
|
"""The operation exceeded the given deadline."""
|
||
|
|
||
|
|
||
|
class InvalidStateError(concurrent.futures.InvalidStateError):
|
||
|
"""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):
|
||
|
super().__init__(f'{len(partial)} bytes read on a total of '
|
||
|
f'{expected!r} expected bytes')
|
||
|
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)
|