Changes
🚀 Performance improvements
- perf: avoid repeating constant iteration (#2079)
- chore(perf): move
combine_evaluate_output_namescheck (#2040) - perf: Avoid double-parsing in concat_str (#2039)
✨ Enhancements
- enh: Deprecate
native_namespacein favour ofbackendinread_csv(#2063)
🐞 Bug fixes
- chore: remove unused kwargs in
_pandas_likeand_arrow(#2069) - fix: disallow non-elementary operations in .over for pandas (#2062)
- fix: Type conversion from Spark Struct to narwhals Struct. (#2037)
- fix: Use metaclass for safe
DTypeattr access (#2025)
📖 Documentation
- docs: remove griffe fork to build docs (#2080)
- chore: remove unused kwargs in
_pandas_likeand_arrow(#2069) - docs: Add standardized test failure patterns to CONTRIBUTING.md (#2052)
🛠️ Other improvements
- chore(typing): Remove unused
pyrightignores (#2076) - chore(typing): Re-enable
mypystrict (#2077) - refactor: Use real class for
ExprMetadata(#2074) - chore: use combine_metadata more (#2073)
- chore: use default_metadata (#2072)
- chore: use more expression metadata functions (#2071)
- chore: use Expr._from_callable (#2070)
- chore: remove unused kwargs in
_pandas_likeand_arrow(#2069) - chore: use
change_metadata_kind(#2067) - chore(typing): add
CompliantSeries.dtype(#2066) - refactor(typing): make
_evaluate_output_namesgeneric (#2053) - refactor(typing): Avoid more
ignore[attr-defined]onDatetime(#2049) - chore: remove more
kwargsfrom dask, dont treatddofas expressifiable arg (#2059) - chore(typing): add
CompliantExpr._version(#2060) - chore: remove
kwargsfromselectorfunction (#2058) - refactor: deduplicate
*.selectors(#2057) - ci(typing): add
pyrightto ci (#2035) - chore: refactor EVERYTHING to do with broadcasting (#2005)
- ci: dont pass filenames to mypy in pre-commit (#2046)
- chore: add colors in CI and run
marimoonly in selected python version (#2043) - chore(perf): move
combine_evaluate_output_namescheck (#2040) - chore: refactor right-hand-side arithmetic to not use lit (#2034)
Thank you to all our contributors for making this release possible!
@EdAbati, @FBruzzesi, @MarcoGorelli, @dangotbanned, @luke396, @osoucy and @raisadz