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",

Reply via email to