Releases: narwhals-dev/narwhals
Narwhals v1.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 tov1
(#1953) - fix(typing): Backport use
IntoDataFrameT
into_native
tov1
(#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
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
Changes
🚀 Performance improvements
- perf: use fastpath in
DataFrame.to_numpy
for pandas, improve performance forDataFrame.schema
for pandas, use fewer values to sniff dtype for pandas objects (#1929)
✨ Enhancements
- enh: Deprecate
native_namespace
in favour ofbackend
infrom_dict
(#1931) - feat: validate duplicate column names in pyarrow and duckdb (#1815)
🐞 Bug fixes
- fix: Always collect
Iterator[IntoExpr]
inutils.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
into_native
(#1936) - fix(typing): Use correct
TypeVar
/Union
pairs infrom_native
(#1935) - fix(typing): Ensure
LazyFrame
has a uniqueTypeVar
(#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
Changes
✨ Enhancements
- feat: add
LazyFrame.explode
for duckdb (#1891) - feat: add duckdb
.str.to_datetime
(#1916) - feat: enable
ModuleType
andstr
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
innw.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
Changes
✨ Enhancements
- feat: Add
backend
argument tolazy
(#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
Narwhals v1.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
fromDuckDBExpr
andSparkLikeExpr
(#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
Narwhals v1.24.0
Changes
- docs: fix api completness generation in CI (#1863)
✨ Enhancements
- feat: pyspark and duckdb selectors (#1853)
- feat: completely refactor alias tracking and support
nw.all
,nw.nth
, and selectors across the API (#1866) - feat: raise if expression changes length in
.over()
(#1867) - feat: add DuckDB
join_asof
(#1860) - feat: allow any ddof value for duckdb
var
andstd
(#1858) - feat: add DuckDB
Struct
dtype (#1851) - feat: add DuckDB
list.len
method (#1850) - feat: enforce that group-by aggregations actually aggregate (#1844)
- feat: add
mean_horizontal
for DuckDB (#1846)
🐞 Bug fixes
- fix: support various reductions in pyspark (#1870)
- fix: address
&
/|
operator errors for PySpark / chore: use F.lit in maybe_evaluate for pyspark, like we do for duckdb (#1872) - fix: allow any name in expression parsing (#1871)
- fix:
nw.selectors.by_dtype(nw.Datetime)
was excluding tz-aware for Polars (#1869) - patch: fix duckdb
narwhals_to_native_dtype
forInt32
andUInt32
(#1857) - fix: raise on selectors addition (#1854)
- fix: rename ewm and rolling
min_periods
tomin_samples
for polars 1.21 compatibility (#1864) - fix: address
&
/|
operator errors for PySpark / chore: use F.lit in maybe_evaluate for pyspark, like we do for duckdb (#1872)
🛠️ Other improvements
- test: skip Ibis tests if deps aren't installed, set defaults in
PandasLikeSeries.__array__
to fix cuDF is_in (#1862) - chore: parse strings as columns names at narwhals-level (#1856)
- chore: some typing and default removal (#1852)
- chore: validate expressions shape at narwhals/expr.py level (#1845)
- chore: simplify internal renaming in _pandas_like/series.py (#1847)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli and @raisadz
Narwhals v1.23.0
Changes
- ci: downstream test for formulaic (#1817)
- docs: Removed class, added polars to the table, str.head and str.tail are a… (#1801)
✨ Enhancements
- feat: deprecate
maintain_order
inExpr.unique
andLazyFrame.tail
(but keep around instable.v1
) (#1839) - feat: track whether expressions change length but don't aggregate, and only allow length-changing expressions if they're followed by aggregations in the lazy API (#1828)
- feat: add DuckDB: nw.nth, nw.sum_horizontal, nw.concat_str, group_by with drop_null_keys (#1832)
- feat: remove
eager_or_interchange
fromfrom_native
in main namespace, switch Ibis' support from interchange to lazy in main namespace (but preserve status-quo in stable.v1) (#1829) - feat: add
is_nan
andis_finite
for duckdb,is_nan
for pyspark (#1825) - chore: rename time zone tests (#1830)
- feat: Deprecate Expr.arg_true (but keep Series.arg_true, and keep both available in stable.v1) (#1827)
- feat: add
Expr.dt
methods toPySpark
(#1835) - feat: add pyspark str namespace
to_datetime
(#1826) - feat: add total duration methods for DuckDB (#1831)
- feat: add
.over
method forSparkLikeExpr
(#1808) - feat: pyspark group by
n_unique
and no aggregation (#1819) - feat: Disallow order-dependent expressions from being passed to nw.LazyFrame (#1806)
- feat: add
SparkExpr.cast
for basic types (#1812) - feat: pyspark and duckdb
Expr.name
namespace (#1809) - feat: add
AnonymousExprError
(#1816) - feat: deprecate Expr.head, Expr.tail, Expr.sort, Expr.gather_every, Expr.sample (but keep them in stable.v1) (#1791)
- feat: add duckdb dataframe
drop_nulls
(#1811) - feat: add
DataFrame
andSeries
to_polars
(#1803) - feat: add support for
SparkLikeNamespace.when
(#1805)
🐞 Bug fixes
- fix: when/then/otherwise output name was not consistent across backends (#1833)
- fix: raise on shape mismatch in filter (#1814)
- patch: fix when-then double lit case (#1810)
🛠️ Other improvements
- chore: simplify imports (#1838)
- test: fixup test suite for cudf.pandas (#1837)
- test: decouple pyspark constructor from pandas (#1834)
- chore: refactor pandas-like
narwhals_to_native_dtype
(#1824) - chore: refactor
isinstance_or_issubclass
to allow tuples (#1820)
Thank you to all our contributors for making this release possible!
@Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli, @luke396, @marvinl803 and @raisadz
Narwhals v1.22.0
Changes
✨ Enhancements
- feat: improve error message on check_columns_exist (#1799)
- feat: DuckDB
date
(#1798) - feat: DuckDB
dt.to_string
(#1794) - feat: DuckDB
dt.ordinal_day
(#1796) - feat: DuckDB
dt.weekday
(#1795) - feat: add extra overload for concat for when it is not known statically whether inputs are eager or lazy (#1783)
- feat: duckdb replace_all with regex (#1784)
- feat: implement anti-join, str.len_chars, and null_count for DuckDB (#1777)
- feat:
SparkLikeNamespace
methods (#1779) - feat: add
SparkLikeStrNamespace
methods (#1781) - feat: add
all
,any
andnull_count
Spark Expressions (#1724) - feat: add missing dunder methods in
SparkLikeExpr
andSparkLikeNamespace.lit
(#1708) - feat: implement cross-join for duckdb (#1773)
- feat: semi-join for duckdb (#1767)
- feat: implement
n_unique
for DuckDB (#1762) - feat: implement when/then/otherwise for DuckDB (#1759)
- feat: add few missing
SparkLikeExpr
methods (#1721)
🐞 Bug fixes
- fix: to_py_scalar was raising for decimals (#1800)
- fix: fix skew for duckdb with fewer than 3 elements (#1785)
- fix: duckdb join was failing if column names contained spaces (#1775)
- fix: parse_version was not parsing duckdb pre-preleases correctly (#1763)
- fix: update Spark min version in
utils.py
(#1760)
📖 Documentation
- docs: remove docstring examples from narwhals/stable/v1 (#1797)
- docs: Restore API complentess page (#1788)
- docs: Increased width for content (#1769)
- docs: fix
is_between
type hint in signature (#1766)
🛠️ Other improvements
- chore: factor out check_columns_exist (#1792)
- chore: split namespaces out from expr and series (#1782)
- chore: move pyspark tests into main test suite (#1761)
- chore: dask nightly (#1768)
- chore: Remove some unnecessary trailing commas (#1757)
- chore: validate predicates in
nw.when
one level higher (#1756) - chore: remove some expr._kwargs defaults (#1747)
- chore: Filter left join warning (#1753)
Thank you to all our contributors for making this release possible!
@DeaMariaLeon, @Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli, @camriddell, @lucas-nelson-uiuc, @marvinl803 and @raisadz
Narwhals v1.21.1
Changes
✨ Enhancements
- feat: add
Series|Expr.rank
(#1342)
🐞 Bug fixes
- fix: fix license classifier (#1751)
📖 Documentation
- docs: update api-completeness with
duckdb
(#1740)
🛠️ Other improvements
- test: remove
cudf
fromtests/expr_and_series/replace_time_zone_test.py::test_replace_time_zone_none[cudf]
(#1748) - chore: filter old pyarrow/pandas warnings we cant do anything about (#1746)
- [pre-commit.ci] pre-commit autoupdate (#1741)
Thank you to all our contributors for making this release possible!
@AlessandroMiola, @Dhanunjaya-Elluri, @EdAbati, @FBruzzesi, @MarcoGorelli, @anopsy