From 6714bf88d460e707a49f3384d277c074ed1d7234 Mon Sep 17 00:00:00 2001 From: Marco Gorelli <33491632+MarcoGorelli@users.noreply.github.com> Date: Wed, 16 Apr 2025 19:29:17 +0100 Subject: [PATCH] fix: Never import from typing_extensions at runtime --- narwhals/_translate.py | 17 ----------------- tests/no_imports_test.py | 2 ++ 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/narwhals/_translate.py b/narwhals/_translate.py index 34af7b5162..909358a765 100644 --- a/narwhals/_translate.py +++ b/narwhals/_translate.py @@ -6,21 +6,6 @@ from typing import Mapping from typing import Protocol -_MIN_TYPING_EXTENSIONS = 4, 4, 0 -_TYPING_EXTENSIONS = "typing_extensions" - - -def _typing_extensions_has_pep_696() -> bool: # pragma: no cover - from importlib.metadata import version - from importlib.util import find_spec - - from narwhals.utils import parse_version - - if find_spec(_TYPING_EXTENSIONS): - return parse_version(version(_TYPING_EXTENSIONS)) >= _MIN_TYPING_EXTENSIONS - return False - - if TYPE_CHECKING: import pyarrow as pa from typing_extensions import Self @@ -34,8 +19,6 @@ def _typing_extensions_has_pep_696() -> bool: # pragma: no cover if sys.version_info >= (3, 13): from typing import TypeVar - elif _typing_extensions_has_pep_696(): - from typing_extensions import TypeVar else: from typing import TypeVar as _TypeVar diff --git a/tests/no_imports_test.py b/tests/no_imports_test.py index 07a1b0737b..fdb24ec532 100644 --- a/tests/no_imports_test.py +++ b/tests/no_imports_test.py @@ -15,6 +15,7 @@ def test_polars(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.delitem(sys.modules, "pandas") monkeypatch.delitem(sys.modules, "numpy") monkeypatch.delitem(sys.modules, "pyarrow", raising=False) + monkeypatch.delitem(sys.modules, "typing_extensions", raising=False) monkeypatch.delitem(sys.modules, "duckdb", raising=False) monkeypatch.delitem(sys.modules, "dask", raising=False) monkeypatch.delitem(sys.modules, "ibis", raising=False) @@ -31,6 +32,7 @@ def test_polars(monkeypatch: pytest.MonkeyPatch) -> None: assert "ibis" not in sys.modules assert "pyspark" not in sys.modules assert "duckdb" not in sys.modules + assert "typing_extensions" not in sys.modules def test_pandas(monkeypatch: pytest.MonkeyPatch) -> None: