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