Skip to content

Releases: narwhals-dev/narwhals

Narwhals v1.29.1

06 Mar 13:44
Compare
Choose a tag to compare

Changes

  • feat: Spec'd-out CompliantExpr (#2119)
  • [pre-commit.ci] pre-commit autoupdate (#2139)

✨ Enhancements

  • feat: support reversed cumulative expressions in over for pandas-like (#2141)
  • feat: support anonymous expressions in over context for pandas-like, support over for multi-partitioned dask (#2138)

🐞 Bug fixes

  • fix: pyarrow scatter was returning incorrect results when indices were not sorted (#2156)
  • ci: fix doc build for win32 (#2147)
  • fix: pass ddof down in std().over() for pandas-like (#2143)

📖 Documentation

  • docs: Add info in nw.when regarding chained statements (#2151)
  • ci: fix doc build for win32 (#2147)

📦 Build system

  • ci: fix doc build for win32 (#2147)

🛠️ Other improvements

  • docs: remove non-existent "args" (#2153)
  • ci: get cuDF test suite green again (#2145)
  • refactor: Use chain.from_iterable more (#2140)
  • refactor: allow callable in CompliantExpr.from_column_names to reuse for CompliantNamespace.<all|col|exclude> (#2134)

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

Narwhals v1.29.0

03 Mar 09:32
Compare
Choose a tag to compare

Changes

  • test: enhance xfail markers with specific reasons in timestamp_test.py (#2065)
  • refactor: Generic CompliantSelector (#2064)
  • docs: more concise docstrings(#2068) (#2117)
  • chore: deprecate LazyFrame.gather_every in main namespace (but maintain it in stable.v1) (#2103)
  • test(typing): fix DataFrame.sort_values overload match (#2109)

🚀 Performance improvements

  • perf: Avoid redefining lambda in *Namespace.all (#2102)
  • perf: avoid full broadcast for otherwise_value in when/then/otherwise (#2098)
  • perf: use cached property for schema/columns lazy frames (#2093)
  • perf: only validate duplicate column names when collecting for duckdb/pyspark/dask (#2092)

✨ Enhancements

  • feat: Adds nw.exclude (#2122)
  • feat: Add support for pandas-like .diff().over(group) (#2128)
  • fill_null with expression (#2106)
  • feat: Adds DataFrame.iter_columns (#2104)
  • feat: str.split (#1932) (#2054)
  • feat(typing): Backport generic Series to v1 (#2110)
  • feat: align over signature with Polars (#2096)
  • chore: Finalize support for SQLFrame (#2038)

🐞 Bug fixes

  • fix(typing): Include Expr in fill_null signature (#2129)
  • fix: Allow exprs in .filter constraints (#2114)
  • fix: pyspark unpivot with index None (#2090)

📖 Documentation

  • docs: Add API example docs for Field dtype (#2131)
  • docs: add Implementation page (#2107)
  • docs: concise_docstrings (#2068) (#2086)

🛠️ Other improvements

  • refactor: Simplify ArrowGroupBy.__iter__ (#2133)
  • chore: simplify pandas-like over (#2127)
  • chore(typing): Generic CompliantDataFrame (#2115)
  • chore(typing): enable typing checks for pyspark (#2051)
  • chore(typing): remove unused, ignored TypeVar (#2108)
  • chore(typing): fix group_by (#2105)
  • perf: Avoid redefining lambda in *Namespace.all (#2102)
  • chore: rename changes_length to filtration (#2094)
  • chore: add has_open_windows to ExprMetadata instead of is_order_dependent (#2078)
  • chore(typing): Resolve _dask errors (#2087)
  • refactor(typing): Use a forward ref for IntoCompliantExpr (#2088)
  • chore(typing): Fix (Pandas|Arrow)(When|Then) (#2089)
  • refactor(ruff): enable some preview rules (#2042)

Thank you to all our contributors for making this release possible!
@EdAbati, @FBruzzesi, @MarcoGorelli, @dangotbanned, @janpipek, @luke396, @skritsotalakis and @thomasjpfan

Narwhals v1.28.0

24 Feb 09:05
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: avoid repeating constant iteration (#2079)
  • chore(perf): move combine_evaluate_output_names check (#2040)
  • perf: Avoid double-parsing in concat_str (#2039)

✨ Enhancements

  • enh: Deprecate native_namespace in favour of backend in read_csv (#2063)

🐞 Bug fixes

  • chore: remove unused kwargs in _pandas_like and _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 DType attr access (#2025)

📖 Documentation

  • docs: remove griffe fork to build docs (#2080)
  • chore: remove unused kwargs in _pandas_like and _arrow (#2069)
  • docs: Add standardized test failure patterns to CONTRIBUTING.md (#2052)

🛠️ Other improvements

  • chore(typing): Remove unused pyright ignores (#2076)
  • chore(typing): Re-enable mypy strict (#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_like and _arrow (#2069)
  • chore: use change_metadata_kind (#2067)
  • chore(typing): add CompliantSeries.dtype (#2066)
  • refactor(typing): make _evaluate_output_names generic (#2053)
  • refactor(typing): Avoid more ignore[attr-defined] on Datetime (#2049)
  • chore: remove more kwargs from dask, dont treat ddof as expressifiable arg (#2059)
  • chore(typing): add CompliantExpr._version (#2060)
  • chore: remove kwargs from selector function (#2058)
  • refactor: deduplicate *.selectors (#2057)
  • ci(typing): add pyright to 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 marimo only in selected python version (#2043)
  • chore(perf): move combine_evaluate_output_names check (#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

Narwhals v1.27.1

17 Feb 15:41
Compare
Choose a tag to compare

Changes

🐞 Bug fixes

  • fix: PySpark was raising during collect when it contained no rows and a void dtype column (#2032)
  • fix: is_in was raising when used with empty list (#2031)

🛠️ Other improvements

  • chore: fix pandas-stubs issues (#2008)
  • fix(typing): Resolve all mypy & pyright errors for _arrow (#2007)

Thank you to all our contributors for making this release possible!
@EdAbati, @MarcoGorelli and @dangotbanned

Narwhals v1.27.0

17 Feb 11:31
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: Avoid evaluating expr twice in mean_horizontal (#2028)
  • perf: avoid try/except in _hasattr_static (#2014)
  • perf: fast path for pandas-like group by with single expression and avoid resetting index if not necessary (#2010)

✨ Enhancements

  • feat: support casting to and from spark-like structs (#1991)
  • feat: Add support for series[other_series] (#2013)

🐞 Bug fixes

  • fix: adjust duckdb population skewness by correction factor to get sample skewness (#2021)
  • fix: sqlframe false positives in compliance checks (#2011)

🛠️ Other improvements

  • chore(typing): Upgrade TypeGuard -> TypeIs (#2027)
  • refactor: remove Array shape default (#2026)
  • refactor: reuse Schema.to_<backend>() in from_numpy (#2024)
  • chore(typing): relax from_numpy to use Mapping, Sequence (#2023)
  • chore(typing): relax from_dict to use Mapping (#2022)
  • tests: Allow to run pytest narwhals --doctest-modules without ibis (#2019)
  • ci(typing): use tool.mypy.pretty = true (#2018)
  • fix: various typos (#2016)
  • ci: update pointblank deps to test downstream in ci (#2015)
  • chore(typing): resolve time unit/zone set invariance (#2012)
  • test: add test for sum_horizontal with column transformation (#2009)
  • chore: simplify when implementation (#2003)
  • ci: remove pyspark from Windows CI (#1998)
  • chore(typing): add overloads to isinstance_or_issubclass (#1997)
  • chore: parse series and ndarrays as expressions (#1994)
  • chore(typing): remove unused ignores (#1979)
  • fix: use mypy pre-commit in local environment (#1966)
  • chore: clean up flatten and extract (#1995)
  • chore: determine whether to use compliant_frame.aggregate at narwhals level (#1993)
  • chore: Refactor filter (#1992)
  • chore: alias named expressions at narwhals level (#1990)
  • chore: Expr metadata refactor (#1986)
  • chore: use toArrow in PySpark 4.0+ (#1987)
  • tests: skip cudf hist tests (#1988)

Thank you to all our contributors for making this release possible!
@DeaMariaLeon, @EdAbati, @FBruzzesi, @MarcoGorelli, @anopsy, @camriddell, @dangotbanned and @raisadz

Narwhals v1.26.0

10 Feb 12:15
Compare
Choose a tag to compare

Changes

  • ci: validate tpch query results (#1971)
  • ci: add pointblank in downstream test (#1956)
  • ci: add Validoopsie to downstream tests (#1973)
  • chore(typing): fix _from_compliant_dataframe type ignore (#1969)
  • fix(typing): resolve remaining utils.py warnings (#1968)
  • test: Add new_streaming (#1898)
  • fix(typing): add missing Series._level annotation (#1967)
  • ci: fix plotly tests location (#1965)

✨ Enhancements

  • feat: Series.hist (#1859)
  • feat: catch Polars exceptions, unify exception raising more (#1918)
  • feat: improving array casting (#1865)
  • feat: add datetime selector (#1822)
  • feat: add Schema.to_(arrow|pandas|polars) (#1924)

🐞 Bug fixes

  • fix: implement casting to Int128 (#1984)
  • fix: fix type __get_item__ (#1958)
  • fix(typing): Backport from_native overload fixes to v1 (#1953)
  • fix(typing): Backport use IntoDataFrameT in to_native to v1 (#1954)

📖 Documentation

  • docs: add Schema.to_(arrow|pandas|polars) (#1980)
  • RFC, chore: shrink series module docstrings (#1976)
  • chore: shrink functions module docstrings (#1974)
  • docs: add docstring guidelines to CONTRIBUTING.md (#1957)

🛠️ Other improvements

  • chore: minor series.py fixes, dedupe a little (#1982)
  • chore(typing): resolve _arrow.dataframe warnings (#1983)
  • chore(typing): add np.ndarray aliases (#1977)
  • chore: widen parse_version to accept packages (#1975)
  • RFC, chore: shrink series module docstrings (#1976)
  • chore: shrink functions module docstrings (#1974)
  • chore(typing): fix remaining functions, series warnings (#1970)
  • fix: missing __getitem__ type fixes (#1963)
  • chore(typing): add guards is_compliant_* (+ friends) (#1955)
  • chore: reduce duplication, implement more methods at the Narwhals level rather than at the compliant level, fix CI from Ibis release (#1960)

Thank you to all our contributors for making this release possible!
@EdAbati, @FBruzzesi, @IsaiasGutierrezCruz, @MarcoGorelli, @akmalsoliev, @camriddell, @dangotbanned and @luke396

Narwhals v1.25.2

06 Feb 10:55
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: restore support of is_duplicated for pyarrow (#1951)

🐞 Bug fixes

  • fix: cuDF to_numpy tests were failing (#1949)
  • fix: raise NotImplementedError for DataFramte.is_duplicated for PyArrow when there is more than one column (#1948)
  • fix: wrong argument name suggested in from_dict deprecation (#1946)

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

Narwhals v1.25.1

05 Feb 09:29
Compare
Choose a tag to compare

Changes

🚀 Performance improvements

  • perf: use fastpath in DataFrame.to_numpy for pandas, improve performance for DataFrame.schema for pandas, use fewer values to sniff dtype for pandas objects (#1929)

✨ Enhancements

  • enh: Deprecate native_namespace in favour of backend in from_dict (#1931)
  • feat: validate duplicate column names in pyarrow and duckdb (#1815)

🐞 Bug fixes

  • fix: Always collect Iterator[IntoExpr] in utils.flatten (#1934)

📖 Documentation

  • docs: Make DataFrame and LazyFrame docstrings shorter and more concise (#1939)
  • chore: fix a couple of typos 🙃 (#1921)

🛠️ Other improvements

  • ci: fix plotly downstream test (#1938)
  • fix(typing): Use IntoDataFrameT in to_native (#1936)
  • fix(typing): Use correct TypeVar/Union pairs in from_native (#1935)
  • fix(typing): Ensure LazyFrame has a unique TypeVar (#1930)
  • refactor: refactoring following refurb and perflint suggestions (#1925)

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

Narwhals v1.25.0

03 Feb 11:08
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: add LazyFrame.explode for duckdb (#1891)
  • feat: add duckdb .str.to_datetime (#1916)
  • feat: enable ModuleType and str for backend in .lazy() method (#1914)
  • feat: add LazyFrame.unpivot for spark and duckdb (#1890)
  • feat: LazyFrame.collect with backend and **kwargs (#1734)
  • feat: spark date and datetimedata types, allow for dtype in nw.lit for pyspark (#1913)

📖 Documentation

  • docs: Minor rendering fixups, inherit all exceptions from NarwhalsError (#1919)
  • docs: shorten docstring examples in narwhals/expr.py (#1915)

🛠️ Other improvements

  • chore: simplify duckdb group-by (#1911)

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

Narwhals v1.24.2

01 Feb 13:57
Compare
Choose a tag to compare

Changes

✨ Enhancements

  • feat: Add backend argument to lazy (#1895)
  • feat: add dtype.is_<x> methods (#1906)
  • feat: spark like .list namespace and lazyframe .explode (#1887)

🐞 Bug fixes

  • fix: pandas was raising when index name and column names overlapped in groupby (#1908)
  • docs: update selectors docstrings (#1905)

📖 Documentation

  • docs: improve search in docs (#1909)
  • docs: update selectors docstrings (#1905)
  • docs(ecosystem.md): add pointblank to Used By section (#1904)
  • docs(README.md): add mention of pointblank project (#1903)

Thank you to all our contributors for making this release possible!
@DeaMariaLeon, @FBruzzesi, @MarcoGorelli, @raisadz and @rich-iannone