Skip to content

Commit 819bf3b

Browse files
authored
Merge branch 'main' into more-dedup-1
2 parents 1abc05a + 77a0150 commit 819bf3b

37 files changed

+675
-355
lines changed

.github/workflows/typing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
# TODO: add more dependencies/backends incrementally
3333
run: |
3434
source .venv/bin/activate
35-
uv pip install -e ".[tests, typing, core]"
35+
uv pip install -e ".[tests, typing, core, pyspark, sqlframe]"
3636
- name: show-deps
3737
run: |
3838
source .venv/bin/activate

docs/api-reference/dataframe.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
- is_empty
2424
- is_unique
2525
- item
26+
- iter_columns
2627
- iter_rows
2728
- join
2829
- join_asof

docs/api-reference/expr_str.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- replace
1212
- replace_all
1313
- slice
14+
- split
1415
- starts_with
1516
- strip_chars
1617
- tail
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# `narwhals.Implementation`
2+
3+
::: narwhals.Implementation
4+
handler: python
5+
options:
6+
show_source: false

docs/api-reference/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- [narwhals.Series.list](series_list.md)
1919
- [narwhals.Series.str](series_str.md)
2020
- [narwhals.dependencies](dependencies.md)
21+
- [narwhals.Implementation](implementation.md)
2122
- [narwhals.dtypes](dtypes.md)
2223
- [narwhals.exceptions](exceptions.md)
2324
- [narwhals.selectors](selectors.md)

docs/api-reference/series_str.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- replace
1212
- replace_all
1313
- slice
14+
- split
1415
- starts_with
1516
- strip_chars
1617
- tail

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ nav:
5959
- api-reference/series_list.md
6060
- api-reference/series_str.md
6161
- api-reference/dependencies.md
62+
- api-reference/implementation.md
6263
- api-reference/dtypes.md
6364
- api-reference/exceptions.md
6465
- api-reference/selectors.md

narwhals/_arrow/dataframe.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,17 @@ def rows(self: Self, *, named: bool) -> list[tuple[Any, ...]] | list[dict[str, A
153153
return list(self.iter_rows(named=False, buffer_size=512)) # type: ignore[return-value]
154154
return self._native_frame.to_pylist()
155155

156+
def iter_columns(self) -> Iterator[ArrowSeries]:
157+
from narwhals._arrow.series import ArrowSeries
158+
159+
for name, series in zip(self.columns, self._native_frame.itercolumns()):
160+
yield ArrowSeries(
161+
series,
162+
name=name,
163+
backend_version=self._backend_version,
164+
version=self._version,
165+
)
166+
156167
def iter_rows(
157168
self: Self, *, named: bool, buffer_size: int
158169
) -> Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]]:

narwhals/_arrow/expr_str.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ def slice(self: Self, offset: int, length: int | None) -> ArrowExpr:
6767
self._compliant_expr, "str", "slice", offset=offset, length=length
6868
)
6969

70+
def split(self: Self, by: str) -> ArrowExpr:
71+
return reuse_series_namespace_implementation(
72+
self._compliant_expr, "str", "split", by=by
73+
)
74+
7075
def to_datetime(self: Self, format: str | None) -> ArrowExpr: # noqa: A002
7176
return reuse_series_namespace_implementation(
7277
self._compliant_expr, "str", "to_datetime", format=format

narwhals/_arrow/series_str.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ def slice(self: Self, offset: int, length: int | None) -> ArrowSeries:
7272
)
7373
)
7474

75+
def split(self: Self, by: str) -> ArrowSeries:
76+
split_series = pc.split_pattern(self._compliant_series._native_series, by) # type: ignore[call-overload]
77+
return self._compliant_series._from_native_series(split_series)
78+
7579
def to_datetime(self: Self, format: str | None) -> ArrowSeries: # noqa: A002
7680
native = self._compliant_series._native_series
7781
format = parse_datetime_format(native) if format is None else format

0 commit comments

Comments
 (0)