Narwhals

Latest version: v1.30.0

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

Scan your dependencies

Page 2 of 26

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

1.24.2

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

1.24.1

Changes

- chore: fix pyspark/sqlframe typo (1884)

✨ Enhancements

- feat: start (silently) adding support for SQLFrame (1883)
- feat: move robust literal handling for PySpark (1880)
- feat: add `selectors.matches` (1882)
- feat: support more scalar operations for duckdb, Increase width for ipython (1877)

🛠️ Other improvements

- chore: add "typing :: typed" classifier to pyproject.toml (1881)
- chore: use positional-only arg in evaluate_into_exprs (1879)
- chore: remove unused `_depth` from `DuckDBExpr` and `SparkLikeExpr` (1878)
- chore: refactor `name` namespaces to lower code duplication (1876)

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

Page 2 of 26

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.