From 8ce2cc5e0e1e0ca50c50b81c8a2028dbe199af24 Mon Sep 17 00:00:00 2001 From: Ahmed TAHRI Date: Sun, 21 Apr 2024 20:02:56 +0200 Subject: [PATCH] :bug: Improve handling broken environment with a graceful error --- HISTORY.md | 6 ++++++ src/niquests/__version__.py | 4 ++-- src/niquests/_compat.py | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 970c924b0b..560129fc5a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,12 @@ Release History =============== +3.6.1 (2024-04-21) +------------------ + +**Fixed** +- Handling broken environments with a graceful exception with a detailed error message. + 3.6.0 (2024-04-20) ------------------ diff --git a/src/niquests/__version__.py b/src/niquests/__version__.py index 2fc7a19b17..28470e122d 100644 --- a/src/niquests/__version__.py +++ b/src/niquests/__version__.py @@ -9,9 +9,9 @@ __url__: str = "https://niquests.readthedocs.io" __version__: str -__version__ = "3.6.0" +__version__ = "3.6.1" -__build__: int = 0x030600 +__build__: int = 0x030601 __author__: str = "Kenneth Reitz" __author_email__: str = "me@kennethreitz.org" __license__: str = "Apache-2.0" diff --git a/src/niquests/_compat.py b/src/niquests/_compat.py index cf24df9900..a8ada66037 100644 --- a/src/niquests/_compat.py +++ b/src/niquests/_compat.py @@ -22,7 +22,21 @@ except ImportError: urllib3 = None # type: ignore[assignment] -T = typing.TypeVar("T", urllib3.Timeout, urllib3.Retry) + +if (urllib3 is None and urllib3_future is None) or ( + HAS_LEGACY_URLLIB3 and urllib3_future is None +): + raise RuntimeError( + "This is awkward but your environment is missing urllib3-future. " + "Your environment seems broken. " + "You may fix this issue by running `python -m pip install niquests -U` " + "to force reinstall its dependencies." + ) + +if urllib3 is not None: + T = typing.TypeVar("T", urllib3.Timeout, urllib3.Retry) +else: + T = typing.TypeVar("T", urllib3_future.Timeout, urllib3_future.Retry) # type: ignore def urllib3_ensure_type(o: T) -> T: