Changes
🚀 Performance improvements
- perf: Avoid evaluating expr twice in mean_horizontal (#2028)
- perf: avoid try/except in _hasattr_static (#2014)
- perf: fast path for pandas-like group by with single expression and avoid resetting index if not necessary (#2010)
✨ Enhancements
- feat: support casting to and from spark-like structs (#1991)
- feat: Add support for
series[other_series](#2013)
🐞 Bug fixes
- fix: adjust duckdb population skewness by correction factor to get sample skewness (#2021)
- fix: sqlframe false positives in compliance checks (#2011)
🛠️ Other improvements
- chore(typing): Upgrade
TypeGuard->TypeIs(#2027) - refactor: remove
Arrayshape default (#2026) - refactor: reuse
Schema.to_<backend>()infrom_numpy(#2024) - chore(typing): relax
from_numpyto useMapping,Sequence(#2023) - chore(typing): relax
from_dictto useMapping(#2022) - tests: Allow to run pytest narwhals --doctest-modules without ibis (#2019)
- ci(typing): use
tool.mypy.pretty = true(#2018) - fix: various typos (#2016)
- ci: update pointblank deps to test downstream in ci (#2015)
- chore(typing): resolve time unit/zone
setinvariance (#2012) - test: add test for
sum_horizontalwith column transformation (#2009) - chore: simplify when implementation (#2003)
- ci: remove
pysparkfrom Windows CI (#1998) - chore(typing): add overloads to
isinstance_or_issubclass(#1997) - chore: parse series and ndarrays as expressions (#1994)
- chore(typing): remove unused ignores (#1979)
- fix: use
mypypre-commit in local environment (#1966) - chore: clean up flatten and extract (#1995)
- chore: determine whether to use compliant_frame.aggregate at narwhals level (#1993)
- chore: Refactor filter (#1992)
- chore: alias named expressions at narwhals level (#1990)
- chore: Expr metadata refactor (#1986)
- chore: use toArrow in PySpark 4.0+ (#1987)
- tests: skip cudf hist tests (#1988)
Thank you to all our contributors for making this release possible!
@DeaMariaLeon, @EdAbati, @FBruzzesi, @MarcoGorelli, @anopsy, @camriddell, @dangotbanned and @raisadz