Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pandas for openSUSE:Factory checked in at 2025-12-18 18:29:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pandas (Old) and /work/SRC/openSUSE:Factory/.python-pandas.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pandas" Thu Dec 18 18:29:27 2025 rev:79 rq:1323507 version:2.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pandas/python-pandas.changes 2025-09-15 19:54:42.883660324 +0200 +++ /work/SRC/openSUSE:Factory/.python-pandas.new.1928/python-pandas.changes 2025-12-18 18:29:45.321338042 +0100 @@ -1,0 +2,12 @@ +Thu Dec 18 10:25:25 UTC 2025 - Markéta Machová <[email protected]> + +- update to 2.3.3 + * compatibility with Python 3.14 + * Improvements and fixes for the StringDtype + * Fix bug in Series.str methods + * Fix bug in groupby() with sum() and unobserved categories + resulting in 0 instead of the empty string +- Add upstream pandas-pr62553-numexpr.patch to fix compatibility + with numexpr 2.13 + +------------------------------------------------------------------- Old: ---- pandas-2.3.2.tar.gz New: ---- pandas-2.3.3.tar.gz pandas-pr62553-numexpr.patch ----------(New B)---------- New: resulting in 0 instead of the empty string - Add upstream pandas-pr62553-numexpr.patch to fix compatibility with numexpr 2.13 ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pandas.spec ++++++ --- /var/tmp/diff_new_pack.icJHZ1/_old 2025-12-18 18:29:52.649645815 +0100 +++ /var/tmp/diff_new_pack.icJHZ1/_new 2025-12-18 18:29:52.649645815 +0100 @@ -67,7 +67,7 @@ %endif Name: python-pandas%{psuffix} # Set version through _service -Version: 2.3.2 +Version: 2.3.3 Release: 0 Summary: Python data structures for data analysis, time series, and statistics License: BSD-3-Clause @@ -77,6 +77,8 @@ Source0: pandas-%{version}.tar.gz # PATCH-FIX-UPSTREAM pandas-pr61132-dropna.patch gh#pandas-dev/pandas#61132 BUG: .mode(dropna=False) doesn't work with nullable integers Patch1: pandas-pr61132-dropna.patch +# PATCH-FIX-UPSTREAM pandas-pr62553-numexpr.patch gh#pandas-dev/pandas#62553 TST: remove expected warnings for new numexpr version +Patch2: pandas-pr62553-numexpr.patch %if !%{with test} BuildRequires: %{python_module Cython >= 3.0.5} BuildRequires: %{python_module devel >= 3.9} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.icJHZ1/_old 2025-12-18 18:29:52.765650687 +0100 +++ /var/tmp/diff_new_pack.icJHZ1/_new 2025-12-18 18:29:52.769650856 +0100 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="manual"> <param name="url">https://github.com/pandas-dev/pandas.git</param> <param name="scm">git</param> - <param name="revision">v2.3.2</param> + <param name="revision">v2.3.3</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="filename">pandas</param> ++++++ pandas-2.3.2.tar.gz -> pandas-2.3.3.tar.gz ++++++ /work/SRC/openSUSE:Factory/python-pandas/pandas-2.3.2.tar.gz /work/SRC/openSUSE:Factory/.python-pandas.new.1928/pandas-2.3.3.tar.gz differ: char 12, line 1 ++++++ pandas-pr62553-numexpr.patch ++++++ >From 5fc3df37d772befbdba7cc2bd3e9ce572fe607c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Kothe?= <[email protected]> Date: Fri, 3 Oct 2025 14:11:53 -0300 Subject: [PATCH] [backport 2.3.x] TST: remove expected warnings for new `numexpr` version (#62553) (#62557) --- pandas/tests/frame/test_arithmetic.py | 10 +++- pandas/tests/series/test_arithmetic.py | 8 ++- pandas/tests/test_expressions.py | 76 +++++++++++++++----------- 3 files changed, 60 insertions(+), 34 deletions(-) diff --git a/pandas/tests/frame/test_arithmetic.py b/pandas/tests/frame/test_arithmetic.py index 195126f1c5382..567183e45189e 100644 --- a/pandas/tests/frame/test_arithmetic.py +++ b/pandas/tests/frame/test_arithmetic.py @@ -12,6 +12,7 @@ import pytest from pandas.compat import HAS_PYARROW +from pandas.compat._optional import import_optional_dependency import pandas.util._test_decorators as td import pandas as pd @@ -27,6 +28,7 @@ _check_mixed_float, _check_mixed_int, ) +from pandas.util.version import Version @pytest.fixture @@ -1092,6 +1094,8 @@ def test_binop_other(self, op, value, dtype, switch_numexpr_min_elements): (operator.mod, "complex128"), } + ne = import_optional_dependency("numexpr", errors="ignore") + ne_warns_on_op = ne is not None and Version(ne.__version__) < Version("2.13.1") if (op, dtype) in invalid: warn = None if (dtype == "<M8[ns]" and op == operator.add) or ( @@ -1120,7 +1124,11 @@ def test_binop_other(self, op, value, dtype, switch_numexpr_min_elements): elif (op, dtype) in skip: if op in [operator.add, operator.mul]: - if expr.USE_NUMEXPR and switch_numexpr_min_elements == 0: + if ( + expr.USE_NUMEXPR + and switch_numexpr_min_elements == 0 + and ne_warns_on_op + ): # "evaluating in Python space because ..." warn = UserWarning else: diff --git a/pandas/tests/series/test_arithmetic.py b/pandas/tests/series/test_arithmetic.py index a65d7687cfb06..28f12476c9ef9 100644 --- a/pandas/tests/series/test_arithmetic.py +++ b/pandas/tests/series/test_arithmetic.py @@ -11,6 +11,7 @@ from pandas._libs import lib from pandas._libs.tslibs import IncompatibleFrequency +from pandas.compat._optional import import_optional_dependency import pandas as pd from pandas import ( @@ -26,7 +27,7 @@ import pandas._testing as tm from pandas.core import ops from pandas.core.computation import expressions as expr -from pandas.core.computation.check import NUMEXPR_INSTALLED +from pandas.util.version import Version @pytest.fixture(autouse=True, params=[0, 1000000], ids=["numexpr", "python"]) @@ -353,9 +354,12 @@ def test_add_list_to_masked_array(self, val, dtype): def test_add_list_to_masked_array_boolean(self, request): # GH#22962 + ne = import_optional_dependency("numexpr", errors="ignore") warning = ( UserWarning - if request.node.callspec.id == "numexpr" and NUMEXPR_INSTALLED + if request.node.callspec.id == "numexpr" + and ne + and Version(ne.__version__) < Version("2.13.1") else None ) ser = Series([True, None, False], dtype="boolean") diff --git a/pandas/tests/test_expressions.py b/pandas/tests/test_expressions.py index dfec99f0786eb..1ea16f96b73e7 100644 --- a/pandas/tests/test_expressions.py +++ b/pandas/tests/test_expressions.py @@ -4,6 +4,8 @@ import numpy as np import pytest +from pandas.compat._optional import import_optional_dependency + from pandas import option_context import pandas._testing as tm from pandas.core.api import ( @@ -12,6 +14,7 @@ Series, ) from pandas.core.computation import expressions as expr +from pandas.util.version import Version @pytest.fixture @@ -324,7 +327,7 @@ def test_bool_ops_raise_on_arithmetic(self, op_str, opname): @pytest.mark.parametrize( "op_str,opname", [("+", "add"), ("*", "mul"), ("-", "sub")] ) - def test_bool_ops_warn_on_arithmetic(self, op_str, opname): + def test_bool_ops_warn_on_arithmetic(self, op_str, opname, monkeypatch): n = 10 df = DataFrame( { @@ -343,36 +346,47 @@ def test_bool_ops_warn_on_arithmetic(self, op_str, opname): # raises TypeError return - with tm.use_numexpr(True, min_elements=5): - with tm.assert_produces_warning(): - r = f(df, df) - e = fe(df, df) - tm.assert_frame_equal(r, e) - - with tm.assert_produces_warning(): - r = f(df.a, df.b) - e = fe(df.a, df.b) - tm.assert_series_equal(r, e) - - with tm.assert_produces_warning(): - r = f(df.a, True) - e = fe(df.a, True) - tm.assert_series_equal(r, e) - - with tm.assert_produces_warning(): - r = f(False, df.a) - e = fe(False, df.a) - tm.assert_series_equal(r, e) - - with tm.assert_produces_warning(): - r = f(False, df) - e = fe(False, df) - tm.assert_frame_equal(r, e) - - with tm.assert_produces_warning(): - r = f(df, True) - e = fe(df, True) - tm.assert_frame_equal(r, e) + msg = "operator is not supported by numexpr" + ne = import_optional_dependency("numexpr", errors="ignore") + warning = ( + UserWarning + if ne + and op_str in {"+", "*"} + and Version(ne.__version__) < Version("2.13.1") + else None + ) + with monkeypatch.context() as m: + m.setattr(expr, "_MIN_ELEMENTS", 5) + with option_context("compute.use_numexpr", True): + with tm.assert_produces_warning(warning, match=msg): + r = f(df, df) + e = fe(df, df) + tm.assert_frame_equal(r, e) + + with tm.assert_produces_warning(warning, match=msg): + r = f(df.a, df.b) + e = fe(df.a, df.b) + tm.assert_series_equal(r, e) + + with tm.assert_produces_warning(warning, match=msg): + r = f(df.a, True) + e = fe(df.a, True) + tm.assert_series_equal(r, e) + + with tm.assert_produces_warning(warning, match=msg): + r = f(False, df.a) + e = fe(False, df.a) + tm.assert_series_equal(r, e) + + with tm.assert_produces_warning(warning, match=msg): + r = f(False, df) + e = fe(False, df) + tm.assert_frame_equal(r, e) + + with tm.assert_produces_warning(warning, match=msg): + r = f(df, True) + e = fe(df, True) + tm.assert_frame_equal(r, e) @pytest.mark.parametrize( "test_input,expected",
