Narwhals

Latest version: v1.27.1

Safety actively analyzes 707009 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 25

1.27.1

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

1.27.0

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

1.26.0

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

1.25.2

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

1.25.1

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

1.25.0

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

Page 1 of 25

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.