diff --git a/narwhals/_compliant/group_by.py b/narwhals/_compliant/group_by.py index 30d4656a1e..477f0d0904 100644 --- a/narwhals/_compliant/group_by.py +++ b/narwhals/_compliant/group_by.py @@ -17,6 +17,8 @@ from narwhals._compliant.typing import CompliantExprT_contra from narwhals._compliant.typing import CompliantFrameT_co from narwhals._compliant.typing import CompliantLazyFrameT_co +from narwhals._compliant.typing import DepthTrackingExprAny +from narwhals._compliant.typing import DepthTrackingExprT_contra from narwhals._compliant.typing import EagerExprT_contra from narwhals._compliant.typing import LazyExprT_contra from narwhals._compliant.typing import NativeExprT_co @@ -24,7 +26,6 @@ if TYPE_CHECKING: from typing_extensions import TypeAlias - from narwhals._compliant.expr import DepthTrackingExpr if not TYPE_CHECKING: # pragma: no cover if sys.version_info >= (3, 9): @@ -50,10 +51,6 @@ NarwhalsAggregation: TypeAlias = Literal[ "sum", "mean", "median", "max", "min", "std", "var", "len", "n_unique", "count" ] -DepthTrackingExprAny: TypeAlias = "DepthTrackingExpr[Any, Any]" -DepthTrackingExprT_contra = TypeVar( - "DepthTrackingExprT_contra", bound=DepthTrackingExprAny, contravariant=True -) _RE_LEAF_NAME: re.Pattern[str] = re.compile(r"(\w+->)") diff --git a/narwhals/_compliant/namespace.py b/narwhals/_compliant/namespace.py index bc63dd424f..dd44d69370 100644 --- a/narwhals/_compliant/namespace.py +++ b/narwhals/_compliant/namespace.py @@ -7,10 +7,10 @@ from typing import Iterable from typing import Literal from typing import Protocol -from typing import TypeVar from narwhals._compliant.typing import CompliantExprT from narwhals._compliant.typing import CompliantFrameT +from narwhals._compliant.typing import DepthTrackingExprT from narwhals._compliant.typing import EagerDataFrameT from narwhals._compliant.typing import EagerExprT from narwhals._compliant.typing import EagerSeriesT @@ -21,7 +21,6 @@ if TYPE_CHECKING: from typing_extensions import TypeAlias - from narwhals._compliant.expr import DepthTrackingExpr from narwhals._compliant.selectors import CompliantSelectorNamespace from narwhals._compliant.when_then import CompliantWhen from narwhals._compliant.when_then import EagerWhen @@ -33,9 +32,6 @@ __all__ = ["CompliantNamespace", "EagerNamespace"] -DepthTrackingExprAny: TypeAlias = "DepthTrackingExpr[Any, Any]" -DepthTrackingExprT = TypeVar("DepthTrackingExprT", bound=DepthTrackingExprAny) - class CompliantNamespace(Protocol[CompliantFrameT, CompliantExprT]): _implementation: Implementation diff --git a/narwhals/_compliant/typing.py b/narwhals/_compliant/typing.py index 4d7abaa0e5..fb54ed12f2 100644 --- a/narwhals/_compliant/typing.py +++ b/narwhals/_compliant/typing.py @@ -13,6 +13,7 @@ from narwhals._compliant.dataframe import CompliantLazyFrame from narwhals._compliant.dataframe import EagerDataFrame from narwhals._compliant.expr import CompliantExpr + from narwhals._compliant.expr import DepthTrackingExpr from narwhals._compliant.expr import EagerExpr from narwhals._compliant.expr import LazyExpr from narwhals._compliant.expr import NativeExpr @@ -40,6 +41,8 @@ CompliantLazyFrameAny: TypeAlias = "CompliantLazyFrame[Any, Any]" CompliantFrameAny: TypeAlias = "CompliantDataFrameAny | CompliantLazyFrameAny" +DepthTrackingExprAny: TypeAlias = "DepthTrackingExpr[Any, Any]" + EagerDataFrameAny: TypeAlias = "EagerDataFrame[Any, Any, Any]" EagerSeriesAny: TypeAlias = "EagerSeries[Any]" EagerExprAny: TypeAlias = "EagerExpr[Any, Any]" @@ -82,6 +85,11 @@ ) IntoCompliantExpr: TypeAlias = "CompliantExpr[CompliantFrameT, CompliantSeriesOrNativeExprT_co] | CompliantSeriesOrNativeExprT_co" +DepthTrackingExprT = TypeVar("DepthTrackingExprT", bound=DepthTrackingExprAny) +DepthTrackingExprT_contra = TypeVar( + "DepthTrackingExprT_contra", bound=DepthTrackingExprAny, contravariant=True +) + EagerExprT = TypeVar("EagerExprT", bound=EagerExprAny) EagerExprT_contra = TypeVar("EagerExprT_contra", bound=EagerExprAny, contravariant=True) EagerSeriesT = TypeVar("EagerSeriesT", bound=EagerSeriesAny)