Releases: narwhals-dev/narwhals
Narwhals v2.13.0
Changes
✨ Enhancements
- feat: Enable
ArrowExpr.overwith null's in multiple columns (#3316)
🐞 Bug fixes
- fix: pandas-like & dask join's with null values in keys (#3318)
- fix(typing): Overhaul
@overloads innw.from_native(#3125) - fix: align behaviour for
df[:, boolean_selector](#3330) - fix: return tuple of python objects from
ArrowDataFrame.row(#3334) - fix(typing): Avoid false positives on
nw.__getattr__(#3333)
📖 Documentation
🛠️ Other improvements
- test: skip pandas only if in constructor (#3328)
- ci: Remove extra runs on merge (#3337)
- test: Un-xfail
test_over_cum_reverseforpandas[nullable]v3.0+ (#3326) - chore: Fix
show_versiontypo, add PR top level description section (#3324)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned, @m-richards and @raisadz
Narwhals v2.12.0
Changes
✨ Enhancements
- enh: Make public
narwhals.compliant.py(#3302)
🐞 Bug fixes
- fix: Fix over with partition_by when partition_by contains null values (#3308)
- fix: pandas/pyarrow were returning incorrect results for
when/then… (#3312)
📖 Documentation
- enh: Make public
narwhals.compliant.py(#3302)
Thank you to all our contributors for making this release possible!
@MarcoGorelli
Narwhals v2.11.0
Changes
✨ Enhancements
- feat: Add
Expr.replace_strictsupport for lazy backends ifdefaultis provided (#3282) - enh: Show more informative
not_implementedand "could not translate" errors for plugins (#3297) - feat: Add
defaultin{Expr,Series}.replace_strict(#3276)
🐞 Bug fixes
- fix:
with_row_indexwas returning incorrect results when used withorder_byfor pandas, pyarrow, and polars (#3292) - fix: Make
is_finiteconsistent for Polars < 1.18 (#3288) - feat: Add
defaultin{Expr,Series}.replace_strict(#3276) - fix: Pass/Retrieve empty categories from nw.Enum (#3284)
📖 Documentation
- docs: document Daft support (#3299)
🛠️ Other improvements
- chore: simplify dask implementation for direct translations (#3287)
- chore: document closed interval options (#3291)
- test: xfail polars
cat.get_categories(flaky) (#3283)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @camriddell and @liamholmes31
Narwhals v2.10.2
Changes
- test: un-xfail
is_finiteforsqlframe(#3268)
✨ Enhancements
- enh: rewrite duckdb groupby so it avoids group-by-all (#3267)
🐞 Bug fixes
- fix when/then/otherwise for empty frame (#3280)
- fix:
coalescewas raising with multi-output expression (#3278)
Thank you to all our contributors for making this release possible!
@MarcoGorelli, @dangotbanned, @dependabot[bot] and dependabot[bot]
Narwhals v2.10.1
Changes
✨ Enhancements
- fix: allow for
Nonedtype infrom_dict(#3252) - [Enh] added modifications to make tests accessible to plugins (#3248)
🐞 Bug fixes
- fix: Ibis failing with IntegerColumn and
.is_finite(#3258) - fix: allow for
Nonedtype infrom_dict(#3252) - fix: Address
pandas.Series.to_framefor unnamed series in internal usage (#3251)
🛠️ Other improvements
- chore: Duckdb pre-release compat (#3263)
- chore: Add
DTypeClassto improveDType.__repr__and simplify__slots__(#3213) - ci: Add
typos-cliin pre-commit (#3260) - tests: Allow to run polars without extra deps (#3256)
- fix(test): TPCH
find_spec('dask') and find_spec('dask.dataframe')(#3253) - test: Refactor TPCH testing to run without all dependencies installed (#3244)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @hoxbro and @ym-pett
Narwhals v2.10.0
Changes
🚀 Performance improvements
- perf: Rewrite
with_row_indexso it's faster for pandas/pyarrow and doesn't userank(#3239)
✨ Enhancements
- feat: introduce (experimental) plugin system (#2978)
- feat: Support
overexpressions more freely, make expressions printable, rewrite internals (travelling pr 🌴 ) (#3152)
🐞 Bug fixes
- fix: align
nw.nthexpansion withnw.colduringgroup_by(#3243) - fix: Align
str.to_titlecasewith polars v1.35.0 behavior (#3238)
🛠️ Other improvements
- ci: Add Fairlearn to downstream tests and ecosystem page (#3228)
- chore: fix ci (cuDF fixes, coverage) (#3245)
- feat: Support
overexpressions more freely, make expressions printable, rewrite internals (travelling pr 🌴 ) (#3152) - chore: Simplify spark-like and ibis
concat_str(#3240) - ci: Make it a bit greener (#3241)
- chore: Share std and var implementations for sql backends (#3229)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli and @ym-pett
Narwhals v2.9.0
Changes
✨ Enhancements
🐞 Bug fixes
- fix: Allow pyarrow extension dtypes (mapped to
nw.Unknown) (#3223) - fix(dependencies): update import check for modin.pandas module (#3219)
📖 Documentation
- refactor(typing): Add
_native.py(#3086)
🛠️ Other improvements
- refactor(typing): Add
_native.py(#3086) - ci: test pi-thon (#3218)
- chore: fixup ci (#3217)
- chore: add flake8-typing-imports (#3203)
- ci: Unpin DuckDB version (#3211)
- test: Add serde tests for
DTypes (#3205)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned, @m-richards and @sfc-gh-eferguson
Narwhals v2.8.0
Changes
🚀 Performance improvements
- perf: Add
__slots__to allDTypes (#3194) - perf: avoid full broadcast in horizontal functions (#3199)
- fix: correctly preserve arrow dtypes for pandas-like, improve
concat_strperformance (#3193) - perf: Prefer
Iterator > tuple > list, use nativepyarrow.repeat, simplifynw.concat_strfor DuckDB backend (#3190)
✨ Enhancements
- feat: Add support for
{Expr,Series}.str.to_titlecase(#3116)
🐞 Bug fixes
- fix: correctly preserve arrow dtypes for pandas-like, improve
concat_strperformance (#3193) - fix:
BaseFrame.filterwithlist[bool]in predicates (#3183)
🛠️ Other improvements
- chore: Add script to automatically sort members in api-reference (#3200)
- ci: Unpin (some) dependencies (#3186)
- chore: pandas-nightly and duckdb-nightly fixes (#3158)
- [pre-commit.ci] pre-commit autoupdate (#3181)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned, @pre-commit-ci[bot] and pre-commit-ci[bot]
Narwhals v2.7.0
Changes
✨ Enhancements
- enh: Add
nw.format(#3169) - feat: Adds
{Expr,Series}.{first,last}(#2528) - feat: Support
polars.UInt128(#3138) - feat: Add
prefixargument togenerate_temporary_column_name(#3147) - feat: Add
{nw,DataFrame}.from_dicts(#3148)
🐞 Bug fixes
- fix: raise for rank followed by over with order_by for sql-like backends (#3178)
- chore: Make
Implementation.UNKNOWN._backend_version()safe (#3133)
📖 Documentation
- docs(python) remove now unnecessary returns statements (#3170)
🛠️ Other improvements
- chore: Add
CompliantNamespace.is_native(#3130) - chore: Make
Implementation.UNKNOWN._backend_version()safe (#3133) - chore(typing): Ignore another
EagerDataFrameintermittent [False Negative] (#3142) - ci: fix darts job (#3172)
- fix: add
--upgradeflag touv sync --dev(#3175)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @akmalsoliev, @dangotbanned, @dependabot[bot], @felixgwilliams and dependabot[bot]
Narwhals v2.6.0
Changes
✨ Enhancements
- enh: support
skewwithover(#3161) - fix: Align division by zero behavior across all backends (#2761)
- enh: support
n_uniquewithoveracross all backends (#3159) - enh: support non-elementwise (but length-preserving) keys in group-by (#3157)
🐞 Bug fixes
- fix: preserve nulls in cumulative functions (#3156)
🛠️ Other improvements
- chore(typing): pyright ignore
pl.UInt128(#3144) - ci: ban click 8.3.0 (#3146)
- chore: Support
@requires.backend_versionin namespaces (#3127) - ci: Temporary pin duckdb for ibis (#3136)
- test: fix
version_testfailing on oldvenv(#3134) - test(typing): fix
pickle_testusingSequence(#3135) - refactor: Simplify
maybe_convert_dtypes(#3141) - chore: Add
CompliantFrame._with_native(#3140) - refactor(typing): Remove now-unused
isinstance_or_issubclassoverloads (#3139) - chore: Upgrade ruff to
v0.13.0and fix related issues intests/(#3126) - tests: more
modern polarstests (#3087)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned and @skritsotalakis