Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
_exceptions.py157 linesDownload Raw Back to _core
1from __future__ import annotations2 3import sys4from collections.abc import Generator5from textwrap import dedent6from typing import Any7 8if sys.version_info < (3, 11):9    from exceptiongroup import BaseExceptionGroup10 11 12class BrokenResourceError(Exception):13    """14    Raised when trying to use a resource that has been rendered unusable due to external15    causes (e.g. a send stream whose peer has disconnected).16    """17 18 19class BrokenWorkerProcess(Exception):20    """21    Raised by :meth:`~anyio.to_process.run_sync` if the worker process terminates abruptly or22    otherwise misbehaves.23    """24 25 26class BrokenWorkerInterpreter(Exception):27    """28    Raised by :meth:`~anyio.to_interpreter.run_sync` if an unexpected exception is29    raised in the subinterpreter.30    """31 32    def __init__(self, excinfo: Any):33        # This was adapted from concurrent.futures.interpreter.ExecutionFailed34        msg = excinfo.formatted35        if not msg:36            if excinfo.type and excinfo.msg:37                msg = f"{excinfo.type.__name__}: {excinfo.msg}"38            else:39                msg = excinfo.type.__name__ or excinfo.msg40 41        super().__init__(msg)42        self.excinfo = excinfo43 44    def __str__(self) -> str:45        try:46            formatted = self.excinfo.errdisplay47        except Exception:48            return super().__str__()49        else:50            return dedent(51                f"""52                {super().__str__()}53 54                Uncaught in the interpreter:55 56                {formatted}57                """.strip()58            )59 60 61class BusyResourceError(Exception):62    """63    Raised when two tasks are trying to read from or write to the same resource64    concurrently.65    """66 67    def __init__(self, action: str):68        super().__init__(f"Another task is already {action} this resource")69 70 71class ClosedResourceError(Exception):72    """Raised when trying to use a resource that has been closed."""73 74 75class ConnectionFailed(OSError):76    """77    Raised when a connection attempt fails.78 79    .. note:: This class inherits from :exc:`OSError` for backwards compatibility.80    """81 82 83def iterate_exceptions(84    exception: BaseException,85) -> Generator[BaseException, None, None]:86    if isinstance(exception, BaseExceptionGroup):87        for exc in exception.exceptions:88            yield from iterate_exceptions(exc)89    else:90        yield exception91 92 93class DelimiterNotFound(Exception):94    """95    Raised during96    :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_until` if the97    maximum number of bytes has been read without the delimiter being found.98    """99 100    def __init__(self, max_bytes: int) -> None:101        super().__init__(102            f"The delimiter was not found among the first {max_bytes} bytes"103        )104 105 106class EndOfStream(Exception):107    """108    Raised when trying to read from a stream that has been closed from the other end.109    """110 111 112class IncompleteRead(Exception):113    """114    Raised during115    :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_exactly` or116    :meth:`~anyio.streams.buffered.BufferedByteReceiveStream.receive_until` if the117    connection is closed before the requested amount of bytes has been read.118    """119 120    def __init__(self) -> None:121        super().__init__(122            "The stream was closed before the read operation could be completed"123        )124 125 126class TypedAttributeLookupError(LookupError):127    """128    Raised by :meth:`~anyio.TypedAttributeProvider.extra` when the given typed attribute129    is not found and no default value has been given.130    """131 132 133class WouldBlock(Exception):134    """Raised by ``X_nowait`` functions if ``X()`` would block."""135 136 137class NoEventLoopError(RuntimeError):138    """139    Raised by several functions that require an event loop to be running in the current140    thread when there is no running event loop.141 142    This is also raised by :func:`.from_thread.run` and :func:`.from_thread.run_sync`143    if not calling from an AnyIO worker thread, and no ``token`` was passed.144    """145 146 147class RunFinishedError(RuntimeError):148    """149    Raised by :func:`.from_thread.run` and :func:`.from_thread.run_sync` if the event150    loop associated with the explicitly passed token has already finished.151    """152 153    def __init__(self) -> None:154        super().__init__(155            "The event loop associated with the given token has already finished"156        )157 
codekingpro/portable-devtools · Team Ai