From e09b119744f9b6260ae71035069ab1140c7dbca8 Mon Sep 17 00:00:00 2001 From: Zhengbo Wang Date: Mon, 19 Aug 2024 13:25:25 +0800 Subject: [PATCH] add , , , , --- narwhals/_dask/expr.py | 35 +++++++++++++++++++ .../dt/datetime_duration_test.py | 4 +-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/narwhals/_dask/expr.py b/narwhals/_dask/expr.py index 40fef92a4..2b5d16897 100644 --- a/narwhals/_dask/expr.py +++ b/narwhals/_dask/expr.py @@ -798,6 +798,41 @@ def ordinal_day(self) -> DaskExpr: returns_scalar=False, ) + def total_minutes(self) -> DaskExpr: + return self._expr._from_call( + lambda _input: _input.dt.total_seconds() // 60, + "total_minutes", + returns_scalar=False, + ) + + def total_seconds(self) -> DaskExpr: + return self._expr._from_call( + lambda _input: _input.dt.total_seconds() // 1, + "total_seconds", + returns_scalar=False, + ) + + def total_milliseconds(self) -> DaskExpr: + return self._expr._from_call( + lambda _input: _input.dt.total_seconds() * 1000 // 1, + "total_milliseconds", + returns_scalar=False, + ) + + def total_microseconds(self) -> DaskExpr: + return self._expr._from_call( + lambda _input: _input.dt.total_seconds() * 1_000_000 // 1, + "total_microseconds", + returns_scalar=False, + ) + + def total_nanoseconds(self) -> DaskExpr: + return self._expr._from_call( + lambda _input: _input.dt.total_seconds() * 1_000_000_000 // 1, + "total_nanoseconds", + returns_scalar=False, + ) + class DaskExprNameNamespace: def __init__(self: Self, expr: DaskExpr) -> None: diff --git a/tests/expr_and_series/dt/datetime_duration_test.py b/tests/expr_and_series/dt/datetime_duration_test.py index 8e96f59a5..50d254ba3 100644 --- a/tests/expr_and_series/dt/datetime_duration_test.py +++ b/tests/expr_and_series/dt/datetime_duration_test.py @@ -44,9 +44,7 @@ def test_duration_attributes( expected_b: list[int], expected_c: list[int], ) -> None: - if "dask_lazy" in str(constructor) or ( - parse_version(pd.__version__) < (2, 2) and "pandas_pyarrow" in str(constructor) - ): + if parse_version(pd.__version__) < (2, 2) and "pandas_pyarrow" in str(constructor): request.applymarker(pytest.mark.xfail) df = nw.from_native(constructor(data))