public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/python-vascpy] rawhide: Patch for Pandas version 3 (fixes RHBZ#2485977)
@ 2026-07-12 6:37 Benjamin A. Beasley
0 siblings, 0 replies; only message in thread
From: Benjamin A. Beasley @ 2026-07-12 6:37 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/python-vascpy
Branch : rawhide
Commit : 8eff5f2fcf5aa4bd551f299391202ea6afb523a4
Author : Benjamin A. Beasley <code@musicinmybrain.net>
Date : 2026-07-12T07:31:58+01:00
Stats : +122/-0 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/python-vascpy/c/8eff5f2fcf5aa4bd551f299391202ea6afb523a4?branch=rawhide
Log:
Patch for Pandas version 3 (fixes RHBZ#2485977)
---
diff --git a/2.patch b/2.patch
new file mode 100644
index 0000000..7541584
--- /dev/null
+++ b/2.patch
@@ -0,0 +1,118 @@
+From 58a2df9198342d73c3eabd06f7bc483a44b36913 Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code@musicinmybrain.net>
+Date: Sun, 12 Jul 2026 06:37:48 +0100
+Subject: [PATCH 1/3] Adapt `PointGraph.remove()` for Pandas 3
+
+With Copy-on-Write (PDEP-7) behavior in Pandas 3, the edges property
+getter returns a read-only ndarray, so we cannot use the `-=` operator
+on it.
+---
+ vascpy/point_vasculature.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/vascpy/point_vasculature.py b/vascpy/point_vasculature.py
+index 74ce233..1b02663 100644
+--- a/vascpy/point_vasculature.py
++++ b/vascpy/point_vasculature.py
+@@ -167,7 +167,8 @@ def remove(
+ # Cumulative sum : 0 1 2 2 2 2 3 4 5 5
+ # After Reindexing : - - 0 1 2 - - - 3 4
+ # Subtracting the cumulative sum from the remaining edges will correcty reindex them
+- self.edges -= np.cumsum(~mask_nodes_to_keep)[self.edges]
++ edges = self.edges # With Pandas 3, read-only ndarray based on CoW dataframe
++ self.edges = edges - np.cumsum(~mask_nodes_to_keep)[edges]
+
+
+ class PointVasculature(PointGraph):
+
+From bed21dc1569a74e83ed97727c5cc47d606aa77c4 Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code@musicinmybrain.net>
+Date: Sun, 12 Jul 2026 07:05:29 +0100
+Subject: [PATCH 2/3] In `test_set_properties`, avoid `LossySetitemError`
+
+Since Pandas 3 checks for narrowing (potentially lossy) type
+conversions, be more explicit about data types of random test data
+ndarrays and/or do narrowing conversions on them explicitly in the test
+before checking that their values round-trip.
+---
+ tests/test_point_vasculature.py | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/tests/test_point_vasculature.py b/tests/test_point_vasculature.py
+index 02e4f73..8f80af3 100644
+--- a/tests/test_point_vasculature.py
++++ b/tests/test_point_vasculature.py
+@@ -157,7 +157,7 @@ def test_get_properties(point_vasculature, points, edges, edge_types, diameters)
+
+ def test_set_properties(point_vasculature):
+
+- new_points = np.random.random((10, 3))
++ new_points = np.random.random((10, 3)).astype(np.float32)
+ point_vasculature.points = new_points
+ npt.assert_allclose(point_vasculature.points, new_points)
+
+@@ -165,11 +165,11 @@ def test_set_properties(point_vasculature):
+ point_vasculature.edges = new_edges
+ npt.assert_array_equal(point_vasculature.edges, new_edges)
+
+- new_edge_types = np.random.randint(0, 100, 9)
++ new_edge_types = np.random.randint(0, 100, 9, dtype=np.int32)
+ point_vasculature.edge_types = new_edge_types
+ npt.assert_array_equal(point_vasculature.edge_types, new_edge_types)
+
+- new_diameters = np.random.random(10)
++ new_diameters = np.random.random(10).astype(np.float32)
+ point_vasculature.diameters = new_diameters
+ npt.assert_allclose(point_vasculature.diameters, new_diameters)
+
+@@ -181,7 +181,7 @@ def test_set_properties(point_vasculature):
+ old_points[(1, 3, 5), 2] = new_values[:, 1]
+ npt.assert_allclose(point_vasculature.points, old_points)
+
+- new_values = np.random.random(10)
++ new_values = np.random.randint(-128, 128, 10, dtype=np.int8)
+ point_vasculature.node_properties.loc[:, "property1"] = new_values
+ npt.assert_allclose(point_vasculature.node_properties.loc[:, "property1"], new_values)
+
+@@ -195,7 +195,7 @@ def test_set_properties(point_vasculature):
+
+ npt.assert_allclose(point_vasculature.edges, old_edges)
+
+- new_values = np.random.random(9)
++ new_values = np.random.randint(-128, 128, 9, dtype=np.int8)
+ point_vasculature.edge_properties.loc[:, "property1"] = new_values
+ npt.assert_allclose(point_vasculature.edge_properties.loc[:, "property1"], new_values)
+
+
+From 6c1506c43d1c74f4d77500b670df5a44a6ee5a7c Mon Sep 17 00:00:00 2001
+From: "Benjamin A. Beasley" <code@musicinmybrain.net>
+Date: Sun, 12 Jul 2026 07:09:10 +0100
+Subject: [PATCH 3/3] Adapt `test_set_properties` for CoW in Pandas 3
+
+Copy read-only ndarrays before attempting to mutate them.
+---
+ tests/test_point_vasculature.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/test_point_vasculature.py b/tests/test_point_vasculature.py
+index 8f80af3..7ff5e80 100644
+--- a/tests/test_point_vasculature.py
++++ b/tests/test_point_vasculature.py
+@@ -173,7 +173,7 @@ def test_set_properties(point_vasculature):
+ point_vasculature.diameters = new_diameters
+ npt.assert_allclose(point_vasculature.diameters, new_diameters)
+
+- old_points = point_vasculature.points
++ old_points = point_vasculature.points.copy()
+ new_values = np.array([[9, 10], [10, 11], [11, 12]])
+ point_vasculature.node_properties.loc[[1, 3, 5], ["x", "z"]] = new_values
+
+@@ -185,7 +185,7 @@ def test_set_properties(point_vasculature):
+ point_vasculature.node_properties.loc[:, "property1"] = new_values
+ npt.assert_allclose(point_vasculature.node_properties.loc[:, "property1"], new_values)
+
+- old_edges = point_vasculature.edges
++ old_edges = point_vasculature.edges.copy()
+ new_values = np.array([[1, 3], [4, 1]])
+
+ point_vasculature.edge_properties.loc[[0, 7], ["start_node", "end_node"]] = new_values
diff --git a/python-vascpy.spec b/python-vascpy.spec
index e9516dc..9d22524 100644
--- a/python-vascpy.spec
+++ b/python-vascpy.spec
@@ -13,6 +13,10 @@ License: Apache-2.0
URL: %forgeurl
Source: %forgesource
+# Support Pandas version 3
+# https://github.com/openbraininstitute/vascpy/pull/2
+Patch: %{url}/pull/2.patch
+
BuildArch: noarch
BuildRequires: python3-devel
BuildRequires: python3dist(pytest)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-12 6:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-12 6:37 [rpms/python-vascpy] rawhide: Patch for Pandas version 3 (fixes RHBZ#2485977) Benjamin A. Beasley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox