Skip to content

Commit 4962db4

Browse files
committed
style: Somewhat alphabetical member order
1 parent 1bb48fd commit 4962db4

File tree

7 files changed

+209
-209
lines changed

7 files changed

+209
-209
lines changed

narwhals/_plan/compliant/column.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@
2525
class SupportsBroadcast(Protocol[SeriesT, LengthT]):
2626
"""Minimal broadcasting for `Expr` results."""
2727

28-
@classmethod
29-
def from_series(cls, series: SeriesT, /) -> Self: ...
30-
def to_series(self) -> SeriesT: ...
31-
def broadcast(self, length: LengthT, /) -> SeriesT: ...
3228
def _length(self) -> LengthT:
3329
"""Return the length of the current expression."""
3430
...
3531

32+
@classmethod
33+
def _length_all(
34+
cls, exprs: Sequence[SupportsBroadcast[SeriesT, LengthT]], /
35+
) -> Sequence[LengthT]:
36+
return [e._length() for e in exprs]
37+
3638
@classmethod
3739
def _length_max(cls, lengths: Sequence[LengthT], /) -> LengthT:
3840
"""Return the maximum length among `exprs`."""
@@ -44,12 +46,6 @@ def _length_required(
4446
) -> LengthT | None:
4547
"""Return the broadcast length, if all lengths do not equal the maximum."""
4648

47-
@classmethod
48-
def _length_all(
49-
cls, exprs: Sequence[SupportsBroadcast[SeriesT, LengthT]], /
50-
) -> Sequence[LengthT]:
51-
return [e._length() for e in exprs]
52-
5349
@classmethod
5450
def align(
5551
cls, *exprs: OneOrIterable[SupportsBroadcast[SeriesT, LengthT]]
@@ -63,6 +59,11 @@ def align(
6359
for e in exprs:
6460
yield e.broadcast(length)
6561

62+
def broadcast(self, length: LengthT, /) -> SeriesT: ...
63+
@classmethod
64+
def from_series(cls, series: SeriesT, /) -> Self: ...
65+
def to_series(self) -> SeriesT: ...
66+
6667

6768
class EagerBroadcast(Sized, SupportsBroadcast[SeriesT, int], Protocol[SeriesT]):
6869
"""Determines expression length via the size of the container."""
@@ -85,6 +86,8 @@ def _length_required(
8586

8687

8788
class ExprDispatch(StoresVersion, Protocol[FrameT_contra, R_co, NamespaceT_co]):
89+
# NOTE: Needs to stay `covariant` and never be used as a parameter
90+
def __narwhals_namespace__(self) -> NamespaceT_co: ...
8891
@classmethod
8992
def from_ir(cls, node: ir.ExprIR, frame: FrameT_contra, name: str) -> R_co:
9093
obj = cls.__new__(cls)
@@ -94,6 +97,3 @@ def from_ir(cls, node: ir.ExprIR, frame: FrameT_contra, name: str) -> R_co:
9497
@classmethod
9598
def from_named_ir(cls, named_ir: ir.NamedIR[ir.ExprIR], frame: FrameT_contra) -> R_co:
9699
return cls.from_ir(named_ir.expr, frame, named_ir.name)
97-
98-
# NOTE: Needs to stay `covariant` and never be used as a parameter
99-
def __narwhals_namespace__(self) -> NamespaceT_co: ...

narwhals/_plan/compliant/dataframe.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,42 +38,43 @@ class CompliantFrame(StoresVersion, Protocol[ColumnT_co, NativeFrameT]):
3838
_native: NativeFrameT
3939

4040
def __narwhals_namespace__(self) -> Any: ...
41+
def _evaluate_irs(
42+
self, nodes: Iterable[NamedIR[ir.ExprIR]], /
43+
) -> Iterator[ColumnT_co]: ...
4144
@property
4245
def _group_by(self) -> type[CompliantGroupBy[Self]]: ...
43-
@property
44-
def native(self) -> NativeFrameT:
45-
return self._native
46+
def _with_native(self, native: NativeFrameT) -> Self:
47+
return self.from_native(native, self.version)
4648

47-
@property
48-
def columns(self) -> list[str]: ...
49-
def to_narwhals(self) -> BaseFrame[NativeFrameT]: ...
5049
@classmethod
5150
def from_native(cls, native: NativeFrameT, /, version: Version) -> Self:
5251
obj = cls.__new__(cls)
5352
obj._native = native
5453
obj._version = version
5554
return obj
5655

57-
def _with_native(self, native: NativeFrameT) -> Self:
58-
return self.from_native(native, self.version)
56+
@property
57+
def native(self) -> NativeFrameT:
58+
return self._native
5959

60+
def to_narwhals(self) -> BaseFrame[NativeFrameT]: ...
61+
@property
62+
def columns(self) -> list[str]: ...
63+
def drop(self, columns: Sequence[str], *, strict: bool = True) -> Self: ...
64+
def drop_nulls(self, subset: Sequence[str] | None) -> Self: ...
6065
@property
6166
def schema(self) -> Mapping[str, DType]: ...
62-
def _evaluate_irs(
63-
self, nodes: Iterable[NamedIR[ir.ExprIR]], /
64-
) -> Iterator[ColumnT_co]: ...
6567
def select(self, irs: Seq[NamedIR]) -> Self: ...
6668
def select_names(self, *column_names: str) -> Self: ...
67-
def with_columns(self, irs: Seq[NamedIR]) -> Self: ...
6869
def sort(self, by: Seq[NamedIR], options: SortMultipleOptions) -> Self: ...
69-
def drop(self, columns: Sequence[str], *, strict: bool = True) -> Self: ...
70-
def drop_nulls(self, subset: Sequence[str] | None) -> Self: ...
70+
def with_columns(self, irs: Seq[NamedIR]) -> Self: ...
7171

7272

7373
class CompliantDataFrame(
7474
CompliantFrame[SeriesT, NativeDataFrameT],
7575
Protocol[SeriesT, NativeDataFrameT, NativeSeriesT],
7676
):
77+
def __len__(self) -> int: ...
7778
@property
7879
def _group_by(self) -> type[DataFrameGroupBy[Self]]: ...
7980
@property
@@ -101,7 +102,7 @@ def group_by_resolver(self, resolver: GroupByResolver, /) -> DataFrameGroupBy[Se
101102
"""
102103
return self._group_by.from_resolver(self, resolver)
103104

104-
def to_narwhals(self) -> DataFrame[NativeDataFrameT, NativeSeriesT]: ...
105+
def row(self, index: int) -> tuple[Any, ...]: ...
105106
@overload
106107
def to_dict(self, *, as_series: Literal[True]) -> dict[str, SeriesT]: ...
107108
@overload
@@ -113,18 +114,17 @@ def to_dict(
113114
def to_dict(
114115
self, *, as_series: bool
115116
) -> dict[str, SeriesT] | dict[str, list[Any]]: ...
116-
def __len__(self) -> int: ...
117+
def to_narwhals(self) -> DataFrame[NativeDataFrameT, NativeSeriesT]: ...
117118
def with_row_index(self, name: str) -> Self: ...
118-
def row(self, index: int) -> tuple[Any, ...]: ...
119119

120120

121121
class EagerDataFrame(
122122
CompliantDataFrame[SeriesT, NativeDataFrameT, NativeSeriesT],
123123
Protocol[SeriesT, NativeDataFrameT, NativeSeriesT],
124124
):
125+
def __narwhals_namespace__(self) -> EagerNamespace[Self, SeriesT, Any, Any]: ...
125126
@property
126127
def _group_by(self) -> type[EagerDataFrameGroupBy[Self]]: ...
127-
def __narwhals_namespace__(self) -> EagerNamespace[Self, SeriesT, Any, Any]: ...
128128
def select(self, irs: Seq[NamedIR]) -> Self:
129129
return self.__narwhals_namespace__()._concat_horizontal(self._evaluate_irs(irs))
130130

narwhals/_plan/compliant/expr.py

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,19 @@ class CompliantExpr(StoresVersion, Protocol[FrameT_contra, SeriesT_co]):
3333
_evaluated: Any
3434
"""Compliant or native value."""
3535

36-
@property
37-
def name(self) -> str: ...
36+
def _with_native(self, native: Any, name: str, /) -> Self:
37+
return self.from_native(native, name or self.name, self.version)
38+
3839
@classmethod
3940
def from_native(
4041
cls, native: Any, name: str = "", /, version: Version = Version.MAIN
4142
) -> Self: ...
42-
def _with_native(self, native: Any, name: str, /) -> Self:
43-
return self.from_native(native, name or self.name, self.version)
44-
43+
@property
44+
def name(self) -> str: ...
4545
# series & scalar
4646
def abs(self, node: FunctionExpr[F.Abs], frame: FrameT_contra, name: str) -> Self: ...
47+
def binary_expr(self, node: BinaryExpr, frame: FrameT_contra, name: str) -> Self: ...
4748
def cast(self, node: ir.Cast, frame: FrameT_contra, name: str) -> Self: ...
48-
def pow(self, node: FunctionExpr[F.Pow], frame: FrameT_contra, name: str) -> Self: ...
49-
def not_(self, node: FunctionExpr[Not], frame: FrameT_contra, name: str) -> Self: ...
5049
def fill_null(
5150
self, node: FunctionExpr[F.FillNull], frame: FrameT_contra, name: str
5251
) -> Self: ...
@@ -62,57 +61,49 @@ def is_nan(
6261
def is_null(
6362
self, node: FunctionExpr[IsNull], frame: FrameT_contra, name: str
6463
) -> Self: ...
65-
def binary_expr(self, node: BinaryExpr, frame: FrameT_contra, name: str) -> Self: ...
66-
def ternary_expr(
67-
self, node: ir.TernaryExpr, frame: FrameT_contra, name: str
64+
def map_batches(
65+
self, node: ir.AnonymousExpr, frame: FrameT_contra, name: str
6866
) -> Self: ...
67+
def not_(self, node: FunctionExpr[Not], frame: FrameT_contra, name: str) -> Self: ...
6968
def over(self, node: ir.WindowExpr, frame: FrameT_contra, name: str) -> Self: ...
7069
# NOTE: `Scalar` is returned **only** for un-partitioned `OrderableAggExpr`
7170
# e.g. `nw.col("a").first().over(order_by="b")`
7271
def over_ordered(
7372
self, node: ir.OrderedWindowExpr, frame: FrameT_contra, name: str
7473
) -> Self | CompliantScalar[FrameT_contra, SeriesT_co]: ...
75-
def map_batches(
76-
self, node: ir.AnonymousExpr, frame: FrameT_contra, name: str
77-
) -> Self: ...
74+
def pow(self, node: FunctionExpr[F.Pow], frame: FrameT_contra, name: str) -> Self: ...
7875
def rolling_expr(
7976
self, node: ir.RollingExpr, frame: FrameT_contra, name: str
8077
) -> Self: ...
81-
# series only (section 3)
78+
def ternary_expr(
79+
self, node: ir.TernaryExpr, frame: FrameT_contra, name: str
80+
) -> Self: ...
81+
# series only
82+
def filter(self, node: ir.Filter, frame: FrameT_contra, name: str) -> Self: ...
8283
def sort(self, node: ir.Sort, frame: FrameT_contra, name: str) -> Self: ...
8384
def sort_by(self, node: ir.SortBy, frame: FrameT_contra, name: str) -> Self: ...
84-
def filter(self, node: ir.Filter, frame: FrameT_contra, name: str) -> Self: ...
8585
# series -> scalar
86-
def first(
87-
self, node: agg.First, frame: FrameT_contra, name: str
88-
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
89-
def last(
90-
self, node: agg.Last, frame: FrameT_contra, name: str
86+
def all(
87+
self, node: FunctionExpr[boolean.All], frame: FrameT_contra, name: str
9188
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
92-
def arg_min(
93-
self, node: agg.ArgMin, frame: FrameT_contra, name: str
89+
def any(
90+
self, node: FunctionExpr[boolean.Any], frame: FrameT_contra, name: str
9491
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
9592
def arg_max(
9693
self, node: agg.ArgMax, frame: FrameT_contra, name: str
9794
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
98-
def sum(
99-
self, node: agg.Sum, frame: FrameT_contra, name: str
100-
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
101-
def n_unique(
102-
self, node: agg.NUnique, frame: FrameT_contra, name: str
103-
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
104-
def std(
105-
self, node: agg.Std, frame: FrameT_contra, name: str
106-
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
107-
def var(
108-
self, node: agg.Var, frame: FrameT_contra, name: str
109-
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
110-
def quantile(
111-
self, node: agg.Quantile, frame: FrameT_contra, name: str
95+
def arg_min(
96+
self, node: agg.ArgMin, frame: FrameT_contra, name: str
11297
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
11398
def count(
11499
self, node: agg.Count, frame: FrameT_contra, name: str
115100
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
101+
def first(
102+
self, node: agg.First, frame: FrameT_contra, name: str
103+
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
104+
def last(
105+
self, node: agg.Last, frame: FrameT_contra, name: str
106+
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
116107
def len(
117108
self, node: agg.Len, frame: FrameT_contra, name: str
118109
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
@@ -128,11 +119,20 @@ def median(
128119
def min(
129120
self, node: agg.Min, frame: FrameT_contra, name: str
130121
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
131-
def all(
132-
self, node: FunctionExpr[boolean.All], frame: FrameT_contra, name: str
122+
def n_unique(
123+
self, node: agg.NUnique, frame: FrameT_contra, name: str
133124
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
134-
def any(
135-
self, node: FunctionExpr[boolean.Any], frame: FrameT_contra, name: str
125+
def quantile(
126+
self, node: agg.Quantile, frame: FrameT_contra, name: str
127+
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
128+
def sum(
129+
self, node: agg.Sum, frame: FrameT_contra, name: str
130+
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
131+
def std(
132+
self, node: agg.Std, frame: FrameT_contra, name: str
133+
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
134+
def var(
135+
self, node: agg.Var, frame: FrameT_contra, name: str
136136
) -> CompliantScalar[FrameT_contra, SeriesT_co]: ...
137137

138138

0 commit comments

Comments
 (0)