Releases: narwhals-dev/narwhals
Narwhals v1.43.1
Changes
🚀 Performance improvements
- perf: Avoid Python range whenever possible (#2692)
🐞 Bug fixes
- fix:
narwhals.stable.v1.dependencies
was importingnarwhals.dependencies
(#2696) - ci: Fix TPCH queries (#2688)
🛠️ Other improvements
- refactor: Introduce
PolarsBaseFrame
parent class (#2689)
Thank you to all our contributors for making this release possible!
@FBruzzesi and @MarcoGorelli
Narwhals v1.43.0
Changes
- ci: xfail polars_lazy[gpu] to make CI green (#2685)
- docs,tests: Test and document kleene logic for boolean columns (#2682)
- test: Suppress
too_slow
ontest_rolling_var_hypothesis_polars
(#2674)
⚠️ Deprecations
- depr: Deprecate
nw.get_level
from main namespace (#2681)
✨ Enhancements
- feat: raise informative error or warning when passing narwhals object to
nw.dependencies.is_*_dataframe
andnw.dependencies.is_*_series
(#1444) - feat: add
Expr.kurtosis
andSeries.kurtosis
(#2676) - feat: add
Expr.sqrt
andSeries.sqrt
(#2668)
🛠️ Other improvements
- chore: Remove unused utility functions (#2677)
- refactor: Simplify
Implementation.to_native_namespace
(#2620)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned and @raisadz
Narwhals v1.42.1
Changes
✨ Enhancements
- feat: when-then broadcasting (#2663)
- feat(typing): Add
IntoDType
alias (#2654) - feat: add
Expr.exp
andSeries.exp
(#2667) - enh: push down over for _horizontal expressions (#2665)
🐞 Bug fixes
📖 Documentation
- docs: fix
replace_all
typo inreplace_strict
docstring (#2661)
🛠️ Other improvements
- chore: refactor
EagerWhen._if_then_else
(#2662)
Thank you to all our contributors for making this release possible!
@MarcoGorelli, @camriddell, @dangotbanned and @raisadz
Narwhals v1.42.0
Changes
✨ Enhancements
- enh: pushdown over in elementwise operations for spark-like and duckdb (#2656)
- enh: allow for is_unique to be followed by over for sqlframe / pyspark / duckdb (#2657)
- enh: standardise on making empty sum/any/all return 0/False/True (#2653)
🛠️ Other improvements
- test: raise on nightlies
pandas.error.MergeError
(#2655) - chore: Refactor window functions for lazy backends (#2649)
- chore: remove unneeded type: ignores for SQLExpression, expand backend-specific contributing guide (#2650)
- ci: get cudf green again (#2658)
- chore: rename narwhals.utils to narwhals._utils (#2643)
Thank you to all our contributors for making this release possible!
@MarcoGorelli and @dangotbanned
Narwhals v1.41.1
Changes
💥 Breaking changes
- api: remove support for dataframe interchange protocol from main namespace (but keep supported in
narwhals.stable.v1
(#2637)
✨ Enhancements
- feat: improve error messages for IO functions (#2641)
🐞 Bug fixes
- fix: Ibis backend was not respecting
over
params forshift
anddiff
(#2646)
📖 Documentation
- docs: update example of
Series
constructor (#2628)
🛠️ Other improvements
- ci: Unpin modin (#2625)
- chore: remove some unnecessary
_impl
top-level functions (#2640) - refactor: Move
_duckdb
runtime type checks to narwhals-level (#2632) - chore: remove unnecessary _stableify in
stable.v1.from_native
(#2629) - chore: remove unnecessary
concat
in stable.v1 (#2630) - chore: Simplify
is_ordered_categorical
(#2618) - [pre-commit.ci] pre-commit autoupdate, pin mypy in altair CI job (#2631)
- chore(typing): Add
Namespace.from_backend
fallback overload (#2622) - test: add extra
to_dict
test for v1 (#2616) - ci: ensure pyspark-specific tests only run for pytest (#2621)
- chore: Remove outdated
_has_default_index
comment (#2615)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @camriddell, @dangotbanned, @pre-commit-ci[bot] and pre-commit-ci[bot]
Narwhals v1.41.0
Changes
✨ Enhancements
- enh: reflect connection time zone in Datetime for pyspark, support convert_time_zone and replace_time_zone (#2592)
- feat: add
to_string
method toSparkLikeExprDateTimeNamespace
(#1842) - enh: reflect connection time zone in
Datetime
for DuckDB, supportconvert_time_zone
andreplace_time_zone
(#2590) - feat: Kinder order dependence errmsg (#2588)
- enh: support replace_time_zone(None) (#2576)
🐞 Bug fixes
- fix: spark-like
pass_through=True, eager_only=True
interaction (#2606) - fix: Include all backends in
get_native_namespace
(#2608) - fix
truncate
for timezone-aware timestamps for DuckDB (#2577)
📖 Documentation
- docs: Add page on empty aggregations (#2609)
🛠️ Other improvements
- ci: Fix cudf tests again (#2614)
- chore: always use
check_columns_exist
where possible (#2495) - ci: remove outdated cudf xfail (#2612)
- chore: share more
WindowInputs
code (#2600) - ci: fix native namespace test (#2611)
- chore(ruff): Add
tool.ruff.lint.typing-modules
(#2610) - ci: pin modin for now (#2604)
- fix: Fix CI for PySpark 4.0 (#2601)
- chore: simplify
broadcast
for spark-like and ibis (#2595) - ci: fix typing for pyspark 4.0 (#2594)
- chore: Use shorter imports (#2585)
- chore: Use DuckDB 1.3 for typing, remove make typing from
pre-commit
, updateCONTRIBUTING
(#2587) - ci: Use Pyright-cov to enforce 100% type coverage (#2586)
- chore: Add
_typing_compat
module (#2578) - chore: use
skip-magic-trailing-comma
forruff format
(#2582) - chore: rename
_input
toexpr
in_spark_like
,_ibis
, and_dask
(#2581) - chore: rename
_input
toexpr
in_duckdb
(#2580) - chore: use
Expression
instead ofduckdb.Expression
for typing (#2579)
Thank you to all our contributors for making this release possible!
@Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli and @dangotbanned
Narwhals v1.40.0
Changes
🚀 Performance improvements
- perf: Set pandas attributes inplace when it is safe to do so (#2559)
✨ Enhancements
- feat: modify
rank
so that it works withover()
for lazy backends (#2533) - chore: Remap '1q' to '3mo' in
IbisExpr.dt.truncate
(#2567) - feat: Add support for
Series|Expr.log
method (#2549)
🐞 Bug fixes
📖 Documentation
- docs: Add docs on how to use Narwhals to generate SQL (#2570)
- docs: Update code of conduct to use organisational email (#2569)
- docs: Rewrite overhead section (#2566)
- docs: Minor rewording around Ibis commparison (#2558)
- docs: Update docs to reflect Ibis support (#2553)
🛠️ Other improvements
- tests: fix
collect_with_kwargs
for polars nightly (#2527) - chore: Rename
call_kwargs
toscalar_kwargs
(#2555) - chore: Move
_is_naive_format
helper function into utils.py (#2568) - chore: Redo
CompliantExpr.from_column_indices
(#2561) - TYP: Enforce 100% type completeness score (PyRight) (#2564)
- test: fixup log for cuDF (#2565)
- chore: Cache ibis columns property (#2563)
- chore: remove redundant storing of
scalar_kwargs
inEagerExpr
(#2560) - test: add Expr.skew test (#2557)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned and @raisadz
Narwhals v1.39.1
Changes
- fix:
collect_schema
was failing for DuckDB innarwhals.stable.v1
with Enum type (#2551) - TYP: Make
FrameT
more precise (#2542)
✨ Enhancements
- feat:
IbisLazyFrame
support (#2000)
🛠️ Other improvements
- chore: type
left_on
/right_on
tighter at compliant level (#2548) - chore: Reuse SeriesT alias more, make more types TYPE_CHECKING-only (#2545)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli and @rwhitten577
Narwhals v1.39.0
Changes
- chore: Bump version manually only in pyproject.toml (#2514)
✨ Enhancements
- feat: Generate nicer-looking SQL when grouping by expressions (#2536)
🐞 Bug fixes
- fix: Add
new_version.strip()
inbump_version.py
, otherwise the tag will be invalid (#2535)
📖 Documentation
- docs: Assorted documentation improvements (#2538)
- docs: Improve API reference search so it doesnt lead to api-completeness, remove outdated parts of Extending page (#2524)
📦 Build system
- build: Include tests in source distributions (#2285)
- fix: Add
new_version.strip()
inbump_version.py
, otherwise the tag will be invalid (#2535)
🛠️ Other improvements
- chore: Use
not_implemented
some more (#2539) - chore: Simplify PySpark std and var (#2530)
- ci: SQLFrame compat (#2531)
- chore: Refactor expression parsing again (yes, again) (#2483)
- chore: Simplify
SparkLike
window (#2505)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned and @mgorny
Narwhals v1.38.2
Changes
- fix: Catch
ImportError
when checking for PySparkConnect (#2518)
📖 Documentation
- docs: adding Validoopsie to used by (#2519)
Thank you to all our contributors for making this release possible!
@MarcoGorelli and @akmalsoliev