~ruther/guix-local

155ec6bc4fc2fb85d93ec41c0abba567f5bbdacd — Zheng Junjie 11 months ago 3675558
gnu: python-pandas-2: Fix test with new tzdata.

Fixes: guix/guix#1025

* gnu/packages/patches/python-pandas-2-no-pytz_datetime.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/python-science.scm (python-pandas-2): Use it.

Change-Id: I0e3689c28f11a5f69362caf0e31890a5efe6febe
Signed-off-by: Andreas Enge <andreas@enge.fr>
M gnu/local.mk => gnu/local.mk +1 -0
@@ 2173,6 2173,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/python-memcached-syntax-warnings.patch	\
  %D%/packages/patches/python-mox3-python3.6-compat.patch	\
  %D%/packages/patches/python-packaging-test-arch.patch		\
  %D%/packages/patches/python-pandas-2-no-pytz_datetime.patch		\
  %D%/packages/patches/python-property-cached-asyncio-3_11.patch	\
  %D%/packages/patches/python-pyan3-fix-absolute-path-bug.patch \
  %D%/packages/patches/python-pyan3-fix-positional-arguments.patch \

A gnu/packages/patches/python-pandas-2-no-pytz_datetime.patch => gnu/packages/patches/python-pandas-2-no-pytz_datetime.patch +47 -0
@@ 0,0 1,47 @@
from https://salsa.debian.org/science-team/pandas/-/raw/main/debian/patches/no_pytz_datetime.patch

Description: datetime does not work with non-constant pytz.timezone

This has always been the case (and is explicitly warned about
in the pytz documentation), but became a test fail when
tzdata 2024b changed 'CET' and similar to aliases.

Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
Forwarded: no

--- a/pandas/tests/arrays/test_array.py
+++ b/pandas/tests/arrays/test_array.py
@@ -272,7 +272,8 @@ def test_array_copy():
     assert tm.shares_memory(a, b)

 
-cet = pytz.timezone("CET")
+cetfixed = pytz.timezone("Etc/GMT-1") # the wrong-looking sign is because Etc/* use posix convention, as described in the tzdata source
+cetwithdst = pytz.timezone("Europe/Brussels")

 
 @pytest.mark.parametrize(
@@ -313,11 +314,20 @@ cet = pytz.timezone("CET")
         ),
         (
             [
-                datetime.datetime(2000, 1, 1, tzinfo=cet),
-                datetime.datetime(2001, 1, 1, tzinfo=cet),
+                datetime.datetime(2000, 1, 1, tzinfo=cetfixed),
+                datetime.datetime(2001, 1, 1, tzinfo=cetfixed),
             ],
             DatetimeArray._from_sequence(
-                ["2000", "2001"], dtype=pd.DatetimeTZDtype(tz=cet, unit="ns")
+                ["2000", "2001"], dtype=pd.DatetimeTZDtype(tz=cetfixed, unit="ns")
+            ),
+        ),
+        (
+            [
+                cetwithdst.localize(datetime.datetime(2000, 1, 1)),
+                cetwithdst.localize(datetime.datetime(2001, 1, 1)),
+            ],
+            DatetimeArray._from_sequence(
+                ["2000", "2001"], dtype=pd.DatetimeTZDtype(tz=cetwithdst, unit="ns")
             ),
         ),
         # timedelta

M gnu/packages/python-science.scm => gnu/packages/python-science.scm +2 -1
@@ 3167,7 3167,8 @@ doing practical, real world data analysis in Python.")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "00f6jnplwg7iffnxdm4hpfls0ncbarc23933xq1rm5nk5g8dcldx"))))
        (base32 "00f6jnplwg7iffnxdm4hpfls0ncbarc23933xq1rm5nk5g8dcldx"))
       (patches (search-patches "python-pandas-2-no-pytz_datetime.patch"))))
    (build-system pyproject-build-system)
    (arguments
     (list