Releases: narwhals-dev/narwhals
Narwhals v1.29.1
Changes
✨ Enhancements
- feat: support reversed cumulative expressions in
over
for pandas-like (#2141) - feat: support anonymous expressions in
over
context for pandas-like, supportover
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
📦 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 forCompliantNamespace.<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
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
tov1
(#2110) - feat: align
over
signature with Polars (#2096) - chore: Finalize support for SQLFrame (#2038)
🐞 Bug fixes
- fix(typing): Include
Expr
infill_null
signature (#2129) - fix: Allow exprs in
.filter
constraints (#2114) - fix:
pyspark
unpivot with indexNone
(#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
toExprMetadata
instead ofis_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
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 ofbackend
inread_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]
onDatetime
(#2049) - chore: remove more
kwargs
from dask, dont treatddof
as expressifiable arg (#2059) - chore(typing): add
CompliantExpr._version
(#2060) - chore: remove
kwargs
fromselector
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
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
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>()
infrom_numpy
(#2024) - chore(typing): relax
from_numpy
to useMapping
,Sequence
(#2023) - chore(typing): relax
from_dict
to useMapping
(#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
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