From: Florimond Manca Date: Fri, 3 Jul 2020 13:18:24 +0000 (+0200) Subject: Add exceptions missing from top-level package (#1045) X-Git-Tag: 0.14.0~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fab427972b7a5cb64d8dfb43467b84cdf430ff24;p=thirdparty%2Fhttpx.git Add exceptions missing from top-level package (#1045) * Expose missing exceptions: CloseError, ConnectError, ReadError, WriteError * Lint --- diff --git a/httpx/__init__.py b/httpx/__init__.py index 35d5975d..7a2b8a96 100644 --- a/httpx/__init__.py +++ b/httpx/__init__.py @@ -4,6 +4,8 @@ from ._auth import Auth, BasicAuth, DigestAuth from ._client import AsyncClient, Client from ._config import PoolLimits, Proxy, Timeout from ._exceptions import ( + CloseError, + ConnectError, ConnectTimeout, CookieConflict, DecodingError, @@ -14,13 +16,17 @@ from ._exceptions import ( PoolTimeout, ProtocolError, ProxyError, + ReadError, ReadTimeout, + RedirectError, RequestBodyUnavailable, RequestNotRead, ResponseClosed, ResponseNotRead, StreamConsumed, + StreamError, TooManyRedirects, + WriteError, WriteTimeout, ) from ._models import URL, Cookies, Headers, QueryParams, Request, Response @@ -54,6 +60,8 @@ __all__ = [ "PoolLimits", "Proxy", "Timeout", + "CloseError", + "ConnectError", "ConnectTimeout", "CookieConflict", "DecodingError", @@ -63,14 +71,18 @@ __all__ = [ "NotRedirectResponse", "PoolTimeout", "ProtocolError", + "ReadError", "ReadTimeout", + "RedirectError", "RequestBodyUnavailable", "ResponseClosed", "ResponseNotRead", "RequestNotRead", "StreamConsumed", + "StreamError", "ProxyError", "TooManyRedirects", + "WriteError", "WriteTimeout", "URL", "URLLib3Transport", diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py new file mode 100644 index 00000000..1ce71e84 --- /dev/null +++ b/tests/test_exceptions.py @@ -0,0 +1,21 @@ +import pytest + +import httpx + + +def test_httpx_exceptions_exposed() -> None: + """ + All exception classes defined in `httpx._exceptions` + are exposed as public API. + """ + + not_exposed = [ + value + for name, value in vars(httpx._exceptions).items() + if isinstance(value, type) + and issubclass(value, Exception) + and not hasattr(httpx, name) + ] + + if not_exposed: + pytest.fail(f"Unexposed HTTPX exceptions: {not_exposed}")