Skip to content
2 changes: 1 addition & 1 deletion narwhals/_arrow/namespace.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ def concat(

@property
def selectors(self: Self) -> ArrowSelectorNamespace:
return ArrowSelectorNamespace(self)
return ArrowSelectorNamespace.from_namespace(self)

def when(self: Self, predicate: ArrowExpr) -> ArrowWhen:
return ArrowWhen.from_expr(predicate, context=self)
Expand Down
34 changes: 6 additions & 28 deletions narwhals/_arrow/selectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,18 @@
from narwhals._compliant import EagerSelectorNamespace

if TYPE_CHECKING:
from typing_extensions import Self

from narwhals._arrow.dataframe import ArrowDataFrame
from narwhals._arrow.series import ArrowSeries
from narwhals._compliant import EvalNames
from narwhals._compliant import EvalSeries
from narwhals.utils import _FullContext
from narwhals._arrow.dataframe import ArrowDataFrame # noqa: F401
from narwhals._arrow.series import ArrowSeries # noqa: F401


class ArrowSelectorNamespace(EagerSelectorNamespace["ArrowDataFrame", "ArrowSeries"]):
def _selector(
self,
call: EvalSeries[ArrowDataFrame, ArrowSeries],
evaluate_output_names: EvalNames[ArrowDataFrame],
/,
) -> ArrowSelector:
return ArrowSelector(
call,
depth=0,
function_name="selector",
evaluate_output_names=evaluate_output_names,
alias_output_names=None,
backend_version=self._backend_version,
version=self._version,
)

def __init__(self: Self, context: _FullContext, /) -> None:
self._implementation = context._implementation
self._backend_version = context._backend_version
self._version = context._version
@property
def _selector(self) -> type[ArrowSelector]:
return ArrowSelector


class ArrowSelector(CompliantSelector["ArrowDataFrame", "ArrowSeries"], ArrowExpr): # type: ignore[misc]
def _to_expr(self: Self) -> ArrowExpr:
def _to_expr(self) -> ArrowExpr:
return ArrowExpr(
self._call,
depth=self._depth,
Expand Down
4 changes: 2 additions & 2 deletions narwhals/_compliant/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
from narwhals._compliant.selectors import CompliantSelector
from narwhals._compliant.selectors import CompliantSelectorNamespace
from narwhals._compliant.selectors import EagerSelectorNamespace
from narwhals._compliant.selectors import EvalNames
from narwhals._compliant.selectors import EvalSeries
from narwhals._compliant.selectors import LazySelectorNamespace
from narwhals._compliant.series import CompliantSeries
from narwhals._compliant.series import EagerSeries
Expand All @@ -26,6 +24,8 @@
from narwhals._compliant.typing import CompliantSeriesT
from narwhals._compliant.typing import EagerDataFrameT
from narwhals._compliant.typing import EagerSeriesT
from narwhals._compliant.typing import EvalNames
from narwhals._compliant.typing import EvalSeries
from narwhals._compliant.typing import IntoCompliantExpr
from narwhals._compliant.typing import NativeFrameT_co
from narwhals._compliant.typing import NativeSeriesT_co
Expand Down
Loading
Loading