Skip to content

Releases: narwhals-dev/narwhals

Narwhals v1.43.1

19 Jun 09:38
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: Avoid Python range whenever possible (#2692)

🐞 Bug fixes

  • fix: narwhals.stable.v1.dependencies was importing narwhals.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

16 Jun 15:40
Compare
Choose a tag to compare

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 on test_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 and nw.dependencies.is_*_series (#1444)
  • feat: add Expr.kurtosis and Series.kurtosis (#2676)
  • feat: add Expr.sqrt and Series.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

12 Jun 15:18
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: when-then broadcasting (#2663)
  • feat(typing): Add IntoDType alias (#2654)
  • feat: add Expr.exp and Series.exp (#2667)
  • enh: push down over for _horizontal expressions (#2665)

🐞 Bug fixes

  • fix: fix pyarrow nightly compat (#2670)
  • fix: align null ordering position for ibis (#2672)

📖 Documentation

  • docs: fix replace_all typo in replace_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

09 Jun 09:21
Compare
Choose a tag to compare

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

06 Jun 07:30
Compare
Choose a tag to compare

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 for shift and diff (#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

26 May 12:47
Compare
Choose a tag to compare

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 to SparkLikeExprDateTimeNamespace (#1842)
  • enh: reflect connection time zone in Datetime for DuckDB, support convert_time_zone and replace_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, update CONTRIBUTING (#2587)
  • ci: Use Pyright-cov to enforce 100% type coverage (#2586)
  • chore: Add _typing_compat module (#2578)
  • chore: use skip-magic-trailing-comma for ruff format (#2582)
  • chore: rename _input to expr in _spark_like, _ibis, and _dask (#2581)
  • chore: rename _input to expr in _duckdb (#2580)
  • chore: use Expression instead of duckdb.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

19 May 07:44
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: Set pandas attributes inplace when it is safe to do so (#2559)

✨ Enhancements

  • feat: modify rank so that it works with over() 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

  • fix: PySpark like tests (#2562)
  • fix: Preserve pandas column name attribute (#2363)

📖 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 to scalar_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 in EagerExpr (#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

15 May 17:45
Compare
Choose a tag to compare

Changes

  • fix: collect_schema was failing for DuckDB in narwhals.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

12 May 10:02
Compare
Choose a tag to compare

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() in bump_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() in bump_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

08 May 17:04
Compare
Choose a tag to compare

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