Skip to content

Releases: narwhals-dev/narwhals

Narwhals v1.9.4

17 Oct 11:22
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: add from_arrow (which uses the PyCapsule Interface) (#1181)
  • feat: Add 'IntoSeries' (#991)
  • feat: add ConstructorEager type (#1091)
  • feat: Adding allow inspecting inner fields of nw.Struct (#1192)
  • feat: add The Zen of Narwhals (#1168)
  • feat: add <min|max>_horizontal (#1148)

🐞 Bug fixes

  • fix: add __native_namespace__ for interchange support dataframes (#1172)

📖 Documentation

  • docs: Update CONTRIBUTING.md with Python 3.12 (#1197)

🛠️ Other improvements

  • test: update cuDF tests (#1196)
  • ci: only check doctests on Python3.12 (#1189)
  • ci: add downstream tests for marimo (#1166)
  • chore: Delete tpch/notebooks directory (#1180)
  • test: unxfail test_unary for dask (#1174)
  • ci: try fixup bump-version.yml (#1171)
  • ci: bump version workflow (#1063)
  • chore: Use shiny's Makefile to allow for test commands to change over time (#1161)

Thank you to all our contributors for making this release possible!
@AlessandroMiola, @ChinoUkaegbu, @DeaMariaLeon, @FBruzzesi, @LiamConnors, @MarcoGorelli, @dependabot, @dependabot[bot], @lucianosrp, @luke396, @raisadz and @schloerke

Narwhals v1.9.3

11 Oct 12:24
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • enh: Add .rows(named=False) support for pyarrow (#1155)

🐞 Bug fixes

  • fix: make Series.scatter always return new series (#1159)

📖 Documentation

  • docs: Used by marimo (#1162)
  • docs: separate out DataFrame and LazyFrame in api-completeness (#1157)

Thank you to all our contributors for making this release possible!
@AlessandroMiola, @Cheukting, @MarcoGorelli, @akshayka and @schloerke

Narwhals v1.9.2

09 Oct 07:30
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: Impove pandas-backend indexing (#993)

✨ Enhancements

  • feat: add dt.replace_time_zone (#1142)
  • feat: allow format=None in str.to_datetime (#1145)
  • feat: concat_str (#1128)
  • feat: allow inspecting the inner type / length of nw.Array (#1136)

🐞 Bug fixes

  • fix: when-then-otherwise lit string for arrow backend (#1137)
  • fix: pyarrow unpivot upcast numeric (#1140)
  • fix: update no_agg to work with cuDF (#1138)
  • fix: fixing unnesscary raise of mean_horizontal (#1082)

📖 Documentation

  • docs: apply further changes to api reference (#1150)
  • docs: add missing methods in api reference (#1144)
  • docs: add missing Series str methods in api reference (#1143)
  • docs: fix small docs typo (#1141)

🛠️ Other improvements

  • test: xfail test_unpivot_mixed_types for cuDF (#1153)

Thank you to all our contributors for making this release possible!
@AlessandroMiola, @Cheukting, @DeaMariaLeon, @FBruzzesi, @LiamConnors, @MarcoGorelli, @aivanoved, @pre-commit-ci and @pre-commit-ci[bot]

Narwhals v1.9.1

04 Oct 14:54
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: Series.str.to_datetime (#1131)
  • feat: make typing available under narwhals.stable.v1 (#1130)
  • feat: add nulls_last kw in dataframe sort (#1124)

🐞 Bug fixes

  • fix: Fix DataFrame.__getitem__ when slicing with tuple and null slice (#1123)

📖 Documentation

  • docs: add Ibis to "related projects" (#1126)
  • docs: correct python bytes description (#1115)
  • docs: fix some docs issues (#1114)
  • docs: assorted docs updates (#1109)

🛠️ Other improvements

  • ci: add py-shiny to downstream tests (#1132)
  • test: xfail test_actual_object for cuDF (#1129)
  • test: xfail tz_aware test for cuDF (#1118)
  • test: xfail empty string test in test_unpivot (#1113)

Thank you to all our contributors for making this release possible!
@FBruzzesi, @LiamConnors, @MarcoGorelli and @raisadz

Narwhals v1.9.0

01 Oct 08:39
Compare
Choose a tag to compare

Changes

  • ci: add name-tests-test to pre-commit (#1093)

✨ Enhancements

  • feat: allow inspecting the inner type of List (#1104)
  • feat: add maybe_reset_index for pandas-like dataframe or series (#1095)
  • feat: Datetime(time_unit, time_zone) and Duration(time_unit) types (#960)
  • feat: add dtypes to stable api (#1087)

🐞 Bug fixes

  • fix: Specialize typing in dataframe between Frame and DataFrame (#1030)
  • fix: PandasLikeSeries.zip_with scalar value and DaskNamespace.when (#1099)
  • fix: drop_nulls with subset of length>1 (#1090)
  • fix: make narwhalify part of stable api (#1086)

📖 Documentation

  • doc: add pyarrow to DataFrame docstring (#1097)
  • docs: Added new logo (#1085)
  • docs: add pyarrow to dataframe lazy docstring (#1055)

🛠️ Other improvements

  • chore: Refactor validate_column_comparand (#1102)
  • test: xfail __iter___test for cuDF (#1106)
  • test: update check for cuDF series (#1105)
  • test: allow cuDF series in compare_dicts (#1100)
  • test: xfail test using None on to_numpy for cuDF (#1092)
  • chore: rename translate_dtype to native_to_narwhals_dtype (#1089)

Thank you to all our contributors for making this release possible!
@DeaMariaLeon, @FBruzzesi, @LiamConnors, @MarcoGorelli, @V-Alizade, @luke396 and @raisadz

Narwhals v1.8.4

27 Sep 15:42
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: Initial support for nested dtypes (List, Array, Struct) (#1083)
  • feat: add DataFrame|LazyFrame.unpivot method (#1043)
  • feat: add to_pandas and to_arrow for interchange level of support (#1066)
  • feat: add series.rename (#1073)
  • feat: Adding nth() for selecting columns (#1044)

🐞 Bug fixes

  • fix: fixing nw.all() doesn't work in sum_horizontal (#1075)
  • fix: pandas and dask group by observed=True (#1079)
  • fix: add cuDF specific implementation for join how="anti" (#1056)

🛠️ Other improvements

  • chore: get_<dependency> cleanup (#1074)
  • ci: Added PR labels so the Release Drafter ignores evil bots (#1069)
  • ci: delete all local tags before making release (#1062)

Thank you to all our contributors for making this release possible!
@Cheukting, @DeaMariaLeon, @FBruzzesi, @LiamConnors, @MarcoGorelli and @raisadz

Narwhals v1.8.3

24 Sep 08:33
Compare
Choose a tag to compare

Changes

  • [pre-commit.ci] pre-commit autoupdate (#1052)
  • Implementing to_native in lazyframe (#1025)
  • Add pyarrow to_csv docstring (#1027)
  • Extensions page improvement (#1024)
  • Only run tests located in the tests directory (#1015)
  • add PyArrow usage example in docstrings DataFrame.columns (#1010)

🚀 Performance improvements

  • test: use pytest-randomly, recommend pytest-xdist in docs (#1019)
  • perf: low-hanging overhead (#1034)

✨ Enhancements

  • feat: add Series.__iter__ (#1057)
  • feat: add Series.dtype return annotation (#1049)
  • feat: improve Series repr (#1038)
  • feat: add str.len_chars (#1036)
  • feat: adding to_native to dataframe (#1014)
  • feat: adding to_native to Series (#1020)

🐞 Bug fixes

  • fix: move __len__ to DataFrame only (#1053)
  • fix: add cuDF specific implementation for join how="anti" (#1041)
  • fix: tuple supported for getitem for Pandas dataframes (#1026)
  • fix: generate backend table (#1035)
  • fix: polars getitem on polars==0.20.30 (#1032)
  • fix: package dependency added pyarrow in docs (#1029)

📖 Documentation

  • docs: add pyarrow example for dataframe getitem and to_dict (#1033)
  • docs: add dtypes check in utils/check_api_reference.py (#983)
  • docs: Add DataFrame.pipe to API completeness table (#1021)
  • docs: Update contributing guidelines (#1031)
  • docs: Include PyArrow in Tutorial/Series (#1022)
  • docs: include PyArrow in Tutorial/DataFrame (#1016)
  • docstrings pyarrow support for dataframe.to_pandas() (#1018)
  • docs: Add pyarrow example to Installation guide (#1023)
  • docs: add pycapsule interface to related projects #1011 (#1017)

🛠️ Other improvements

  • fix: add cuDF specific implementation for join how="anti" (#1041)
  • test: xfail test_group_by_n_unique_w_missing for cuDF (#1039)
  • test: use pytest-randomly, recommend pytest-xdist in docs (#1019)
  • test: add specific check for cuDF for test_to_datetime (#995)
  • chore: removing docs/generate_members.py (#1012)

Thank you to all our contributors for making this release possible!
@Cheukting, @Dosenpfand, @FBruzzesi, @HeitCunha, @Jupetus, @LiamConnors, @MarcoGorelli, @MathiasHolmstrom, @Morena1996, @TNieuwdorp, @V-Alizade, @anopsy, @gauthierpiarrette, @jeroenjanssens, @juanchodpg2, @lucianosrp, @mattcristal, @mikeweltevrede, @pre-commit-ci, @pre-commit-ci[bot], @sTomerG, @summerscope and @thomend

Narwhals v1.8.2

20 Sep 09:17
Compare
Choose a tag to compare

Changes

  • Bug: __getitem__ check for edge cases such as subsetting 0 rows or 0 columns (#994)
  • skip changelog(deps): bump astral-sh/setup-uv from 2 to 3 (#985)
  • [pre-commit.ci] pre-commit autoupdate (#984)
  • [pre-commit.ci] pre-commit autoupdate (#936)
  • Replace assert with raise (#980)

📖 Documentation

  • docs: Restructure docs a bit (#1007)
  • docs: Fix link to how Narwhals works (#996)

🛠️ Other improvements

  • test: convert cuDF numpy types to python types in tests (#987)
  • test: add tests to check case sensitive regex for str.contains (#986)
  • test: xfail case insensitive regex tests for cuDF (#982)

Thank you to all our contributors for making this release possible!
@LiamConnors, @MarcoGorelli, @atulchhotray, and @raisadz

Narwhals v1.8.1

15 Sep 13:49
Compare
Choose a tag to compare

Changes

  • Bug: add conversion from slice to array for selecting rows in pyarrow __getitem__ (#978)
  • Debug nightly (#964)

✨ Enhancements

  • feat: add DataFrame.sample method (#975)
  • feat: add seed to Expr|Series.sample (#974)

📖 Documentation

  • doc: Remove unnecessary paragraph in complete_example.md (#969)

🛠️ Other improvements

  • test: remove xfail for cudf_constructor on str_to_uppercase test (#976)
  • chore: some TODO's cleanup (#970)
  • test: xfail cuDF tests that use iteration (#967)
  • ci: fixup nightlies (#966)
  • ci: only run nightlies on pushes to main (#965)
  • ci: enable uv cache, use astral-sh official action (#956)

Thank you to all our contributors for making this release possible!
@FBruzzesi, @LiamConnors, @MarcoGorelli, @aidoskanapyanov, @luke396 and @raisadz

Narwhals v1.8.0

13 Sep 10:55
Compare
Choose a tag to compare

Changes

  • clean: Assorted cleanups (#958)
  • Bug: fix an issue with string keys in left and semi joins in Dask, add Dask to tpch benchmarks (#957)
  • bug: add support for PyArrow: multi-element __getitem__ (#949)

✨ Enhancements

  • feat: Dask multiple partitions (#940)

📖 Documentation

  • docs: update docstring to fix rendering in generated docs (#952)

🛠️ Other improvements

  • test: replace type Any for constructor in all tests (#962)
  • test: replace Any type with pytest.FixtureRequest for request inputs in all tests (#961)
  • test: xfail cuDF tests for join_asof (#959)
  • ci: unxfail some modin tests (#954)
  • test: xfail polars>1.7.0 Expr.mode with broadcast (#953)
  • test: xfail cuDF tests that use total_seconds (#951)

Thank you to all our contributors for making this release possible!
@FBruzzesi, @LiamConnors, @MarcoGorelli and @raisadz