| """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) |