Narwhals

Latest version: v1.20.1

Safety actively analyzes 693883 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 23

1.20.1

Changes

🐞 Bug fixes

- fix: `is_duplicated` was returning wrong-length result for PyArrow and Dask (1679)

Thank you to all our contributors for making this release possible!
DeaMariaLeon and MarcoGorelli

1.20.0

Changes

🚀 Performance improvements

- chore, perf: arrow cat namespace (1663)

✨ Enhancements

- feat: raise informative error message when grouping by expressions (1677)
- feat: expressify `lower_bound` and `upper_bound` in `is_between` (1672)
- feat: Relax cuDF minimum version to 24.10.0 (1649)
- Feat/add collect schema to interchange dfs (1646)
- feat: Add support for `.shift(n).over('col')` for pandas-like DataFrames (1627)


🐞 Bug fixes

- fix: pyspark group by with kwargs (1665)

📖 Documentation

- docs: use `IntoDataFrameT`/`IntoFrameT` in docs (1664)
- docs: Add return type description for more series namespace (1675)
- docs: Add more return type descriptions for Series (1674)
- docs: add return type descriptions for `cum_count`, `cum_max`, `cum_min`, `cum_prod`, `cum_sum` in Series (1673)
- docs: add return type descriptions to Series `arg_true`, `cast`, `clip`, `count` (1667)
- docs: Add return descriptions to Series's `abs`, `alias`, `all`, `any` methods for clarity (1653)

🛠️ Other improvements

- chore: pyarrow do not combine chunks (1662)
- chore: flatten `subset` in `unique` one level up (1671)
- test: add test for `nw.Expr|Series.str.contains` with `literal=True` (1670)
- test: check keys are in the same order in assert_equal_data (1668)
- ci: improve publish ci to use env vars (1652)
- chore: use `__narwhals_namespace__` more (1658)
- ci: split `dev` from `extra` (1655)

Thank you to all our contributors for making this release possible!
AlessandroMiola, ClaudioSalvatoreArcidiacono, Dhanunjaya-Elluri, FBruzzesi, MarcoGorelli and luke396

1.19.1

Changes

🚀 Performance improvements

- perf: avoid merge in pandas groupby (1638)

✨ Enhancements

- feat: add collect schema to interchange dfs (1646)
- feat: support std and var with ddof !=1 in pandas-like group by (1645)
- feat: add `DataFrame` and `LazyFrame` `explode` method (1542)

🐞 Bug fixes

- fix: Make compatible with latest cuDF release (1640)

📖 Documentation

- docs: Note that `maintains_order` has no effect (but keep around for backwards-compatibility) (1643)
- docs: fix typing example (1637)
- docs: Use relative paths (1636)
- docs: Remove warnings when building docs (1631)
- docs: returns and arguments documentation for lazyframe class (1630)
- docs: null handling (1624)

🛠️ Other improvements

- chore: Update pyproject.toml (1642)
- chore: register kwargs for `CompliantExpr` (1614)
- fix: exclude protocols in api completeness script (1635)
- test: not-so-old-versions, pretty-old-versions, nightlies (1626)

Thank you to all our contributors for making this release possible!
AlessandroMiola, DeaMariaLeon, Dhanunjaya-Elluri, FBruzzesi, MarcoGorelli, marenwestermann and marvinl803

1.19.0

Changes

🚀 Performance improvements

- perf: streamline pyarrow and pandas group by agg (1621)

✨ Enhancements

- feat: add `Series|Expr.rolling_var` and `Series|Expr.rolling_std` (1451)
- fix: Add support for pandas cumulative operations with over (1565)
- feat: add `var` to `Expr` and `Series` (1603)

🐞 Bug fixes

- fix: `nw.col('a').is_in(df['b'])` was raising (1616)
- fix: pandas and pyarrow were raising for repeated aggregations involving the same root name and the same aggregation function (1613)

📖 Documentation

- docs: more args and returns documentation in DataFrame class (1600)
- docs: make docstring examples function names more descriptive in functions.py (1602)
- docs: improve `DataFrame`, `LazyFrame` and `Series` docstrings (1622)

🛠️ Other improvements

- ci: unpin scikit-learn in scikit-lego test (1611)
- ci: Speed up tests in local development (1608)
- test: downstream test for tea-tasting (1605)
- test: minimum versions (1617)

Thank you to all our contributors for making this release possible!
ClaudioSalvatoreArcidiacono, DeaMariaLeon, Dhanunjaya-Elluri, FBruzzesi, Machele-codez, MarcoGorelli, e10v, marenwestermann and skritsotalakis

1.18.4

Changes

✨ Enhancements

- feat: add `Series` and `Expr` `arg_min` & `arg_max` (1529)

🐞 Bug fixes

- fix: allow np.scalar to be used in Series.__getitem__ (1515)
- fix: fix pyarrow `len` aggregation behaviour for depth-1 exprs (1589)

📖 Documentation

- docs: document arguments and returns in DataFrame class (1594)
- docs: add tea-tasting to ecosystem (1593)
- docs: Correct small error in IntoDataFrameT and IntoSeriesT (1591)
- docs: add docstring example for Array in narwhals.dtypes (1576)

🛠️ Other improvements

- test: xfail cudf argmin / argmax (1599)
- chore: use set_axis in maybe_set_index (1598)
- test: fixup more cuDF xfails (1596)
- test: xfail test_group_by_shift_raises for cudf (1595)
- chore: Add some Compliant Protocols (1522)

Thank you to all our contributors for making this release possible!
AlessandroMiola, DeaMariaLeon, Dhanunjaya-Elluri, MarcoGorelli, Nathan-Bransby-NMT, e10v, marenwestermann and thevro

1.18.3

Changes

- release: Bump version to 1.18.2 (1582)

✨ Enhancements

- feat/fix: Improve error message when trying to do unsupported group-by aggregation, and raise instead of giving inconsistent results (1584)

🛠️ Other improvements

- refactor: PandasLikeExpr __repr__ and __init__ (1585)

Thank you to all our contributors for making this release possible!
MarcoGorelli, anopsy and camriddell

Page 1 of 23

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.