17db96d56Sopenharmony_ci"""asyncio exceptions."""
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci__all__ = ('BrokenBarrierError',
57db96d56Sopenharmony_ci           'CancelledError', 'InvalidStateError', 'TimeoutError',
67db96d56Sopenharmony_ci           'IncompleteReadError', 'LimitOverrunError',
77db96d56Sopenharmony_ci           'SendfileNotAvailableError')
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ciclass CancelledError(BaseException):
117db96d56Sopenharmony_ci    """The Future or Task was cancelled."""
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ciTimeoutError = TimeoutError  # make local alias for the standard exception
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_ciclass InvalidStateError(Exception):
187db96d56Sopenharmony_ci    """The operation is not allowed in this state."""
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ciclass SendfileNotAvailableError(RuntimeError):
227db96d56Sopenharmony_ci    """Sendfile syscall is not available.
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    Raised if OS does not support sendfile syscall for given socket or
257db96d56Sopenharmony_ci    file type.
267db96d56Sopenharmony_ci    """
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ciclass IncompleteReadError(EOFError):
307db96d56Sopenharmony_ci    """
317db96d56Sopenharmony_ci    Incomplete read error. Attributes:
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci    - partial: read bytes string before the end of stream was reached
347db96d56Sopenharmony_ci    - expected: total number of expected bytes (or None if unknown)
357db96d56Sopenharmony_ci    """
367db96d56Sopenharmony_ci    def __init__(self, partial, expected):
377db96d56Sopenharmony_ci        r_expected = 'undefined' if expected is None else repr(expected)
387db96d56Sopenharmony_ci        super().__init__(f'{len(partial)} bytes read on a total of '
397db96d56Sopenharmony_ci                         f'{r_expected} expected bytes')
407db96d56Sopenharmony_ci        self.partial = partial
417db96d56Sopenharmony_ci        self.expected = expected
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci    def __reduce__(self):
447db96d56Sopenharmony_ci        return type(self), (self.partial, self.expected)
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ciclass LimitOverrunError(Exception):
487db96d56Sopenharmony_ci    """Reached the buffer limit while looking for a separator.
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci    Attributes:
517db96d56Sopenharmony_ci    - consumed: total number of to be consumed bytes.
527db96d56Sopenharmony_ci    """
537db96d56Sopenharmony_ci    def __init__(self, message, consumed):
547db96d56Sopenharmony_ci        super().__init__(message)
557db96d56Sopenharmony_ci        self.consumed = consumed
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci    def __reduce__(self):
587db96d56Sopenharmony_ci        return type(self), (self.args[0], self.consumed)
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_ci
617db96d56Sopenharmony_ciclass BrokenBarrierError(RuntimeError):
627db96d56Sopenharmony_ci    """Barrier is broken by barrier.abort() call."""
63