aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Lib/asyncio/exceptions.py
blob: 0957fe61382f330ac193ea462c2f992010f0bfec (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"""asyncio exceptions.""" 
 
 
__all__ = ('CancelledError', 'InvalidStateError', 'TimeoutError', 
           'IncompleteReadError', 'LimitOverrunError', 
           'SendfileNotAvailableError') 
 
 
class CancelledError(BaseException): 
    """The Future or Task was cancelled.""" 
 
 
class TimeoutError(Exception): 
    """The operation exceeded the given deadline.""" 
 
 
class InvalidStateError(Exception): 
    """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): 
        r_expected = 'undefined' if expected is None else repr(expected) 
        super().__init__(f'{len(partial)} bytes read on a total of ' 
                         f'{r_expected} 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)