Unverified Commit b6ed20a2 authored by Tom van Dijk's avatar Tom van Dijk
Browse files

python314Packages.python-etcd: fix build

parent bbfd20b6
Loading
Loading
Loading
Loading
+194 −0
Original line number Diff line number Diff line
From 9a903af867a6f1571ed5716a568afcfbc0010552 Mon Sep 17 00:00:00 2001
From: Tom van Dijk <18gatenmaker6@gmail.com>
Date: Sun, 22 Mar 2026 17:01:13 +0100
Subject: [PATCH] Fix multiprocessing errors for python 3.14

---
 src/etcd/tests/integration/test_simple.py | 98 +++++++++++------------
 1 file changed, 49 insertions(+), 49 deletions(-)

diff --git a/src/etcd/tests/integration/test_simple.py b/src/etcd/tests/integration/test_simple.py
index 54e2a13..a5de541 100644
--- a/src/etcd/tests/integration/test_simple.py
+++ b/src/etcd/tests/integration/test_simple.py
@@ -243,6 +243,14 @@ class TestClusterFunctions(EtcdIntegrationTest):
 
 
 class TestWatch(EtcdIntegrationTest):
+    def watch_change_value(key, newValue):
+        c = etcd.Client(port=6001)
+        c.set(key, newValue)
+
+    def watch_watch_value(key, queue):
+        c = etcd.Client(port=6001)
+        queue.put(c.watch(key).value)
+
     def test_watch(self):
         """INTEGRATION: Receive a watch event from other process"""
 
@@ -250,23 +258,15 @@ class TestWatch(EtcdIntegrationTest):
 
         queue = multiprocessing.Queue()
 
-        def change_value(key, newValue):
-            c = etcd.Client(port=6001)
-            c.set(key, newValue)
-
-        def watch_value(key, queue):
-            c = etcd.Client(port=6001)
-            queue.put(c.watch(key).value)
-
         changer = multiprocessing.Process(
-            target=change_value,
+            target=TestWatch.watch_change_value,
             args=(
                 "/test-key",
                 "new-test-value",
             ),
         )
 
-        watcher = multiprocessing.Process(target=watch_value, args=("/test-key", queue))
+        watcher = multiprocessing.Process(target=TestWatch.watch_watch_value, args=("/test-key", queue))
 
         watcher.start()
         time.sleep(1)
@@ -279,6 +279,16 @@ class TestWatch(EtcdIntegrationTest):
 
         assert value == "new-test-value"
 
+    def watch_indexed_change_value(key, newValue):
+        c = etcd.Client(port=6001)
+        c.set(key, newValue)
+        c.get(key)
+
+    def watch_indexed_watch_value(key, index, queue):
+        c = etcd.Client(port=6001)
+        for i in range(0, 3):
+            queue.put(c.watch(key, index=index + i).value)
+
     def test_watch_indexed(self):
         """INTEGRATION: Receive a watch event from other process, indexed"""
 
@@ -290,18 +300,8 @@ class TestWatch(EtcdIntegrationTest):
 
         queue = multiprocessing.Queue()
 
-        def change_value(key, newValue):
-            c = etcd.Client(port=6001)
-            c.set(key, newValue)
-            c.get(key)
-
-        def watch_value(key, index, queue):
-            c = etcd.Client(port=6001)
-            for i in range(0, 3):
-                queue.put(c.watch(key, index=index + i).value)
-
         proc = multiprocessing.Process(
-            target=change_value,
+            target=TestWatch.watch_indexed_change_value,
             args=(
                 "/test-key",
                 "test-value3",
@@ -309,7 +309,7 @@ class TestWatch(EtcdIntegrationTest):
         )
 
         watcher = multiprocessing.Process(
-            target=watch_value, args=("/test-key", original_index, queue)
+            target=TestWatch.watch_indexed_watch_value, args=("/test-key", original_index, queue)
         )
 
         watcher.start()
@@ -325,6 +325,19 @@ class TestWatch(EtcdIntegrationTest):
         watcher.join(timeout=5)
         proc.join(timeout=5)
 
+    def watch_generator_change_value(key):
+        time.sleep(0.5)
+        c = etcd.Client(port=6001)
+        for i in range(0, 3):
+            c.set(key, "test-value%d" % i)
+            c.get(key)
+
+    def watch_generator_watch_value(key, queue):
+        c = etcd.Client(port=6001)
+        for i in range(0, 3):
+            event = next(c.eternal_watch(key)).value
+            queue.put(event)
+
     def test_watch_generator(self):
         """INTEGRATION: Receive a watch event from other process (gen)"""
 
@@ -332,22 +345,9 @@ class TestWatch(EtcdIntegrationTest):
 
         queue = multiprocessing.Queue()
 
-        def change_value(key):
-            time.sleep(0.5)
-            c = etcd.Client(port=6001)
-            for i in range(0, 3):
-                c.set(key, "test-value%d" % i)
-                c.get(key)
+        changer = multiprocessing.Process(target=TestWatch.watch_generator_change_value, args=("/test-key",))
 
-        def watch_value(key, queue):
-            c = etcd.Client(port=6001)
-            for i in range(0, 3):
-                event = next(c.eternal_watch(key)).value
-                queue.put(event)
-
-        changer = multiprocessing.Process(target=change_value, args=("/test-key",))
-
-        watcher = multiprocessing.Process(target=watch_value, args=("/test-key", queue))
+        watcher = multiprocessing.Process(target=TestWatch.watch_generator_watch_value, args=("/test-key", queue))
 
         watcher.start()
         changer.start()
@@ -361,6 +361,16 @@ class TestWatch(EtcdIntegrationTest):
         watcher.join(timeout=5)
         changer.join(timeout=5)
 
+    def watch_indexed_generator_change_value(key, newValue):
+        c = etcd.Client(port=6001)
+        c.set(key, newValue)
+
+    def watch_indexed_generator_watch_value(key, index, queue):
+        c = etcd.Client(port=6001)
+        iterevents = c.eternal_watch(key, index=index)
+        for i in range(0, 3):
+            queue.put(next(iterevents).value)
+
     def test_watch_indexed_generator(self):
         """INTEGRATION: Receive a watch event from other process, ixd, (2)"""
 
@@ -372,18 +382,8 @@ class TestWatch(EtcdIntegrationTest):
 
         queue = multiprocessing.Queue()
 
-        def change_value(key, newValue):
-            c = etcd.Client(port=6001)
-            c.set(key, newValue)
-
-        def watch_value(key, index, queue):
-            c = etcd.Client(port=6001)
-            iterevents = c.eternal_watch(key, index=index)
-            for i in range(0, 3):
-                queue.put(next(iterevents).value)
-
         proc = multiprocessing.Process(
-            target=change_value,
+            target=TestWatch.watch_indexed_generator_change_value,
             args=(
                 "/test-key",
                 "test-value3",
@@ -391,7 +391,7 @@ class TestWatch(EtcdIntegrationTest):
         )
 
         watcher = multiprocessing.Process(
-            target=watch_value, args=("/test-key", original_index, queue)
+            target=TestWatch.watch_indexed_generator_watch_value, args=("/test-key", original_index, queue)
         )
 
         watcher.start()
-- 
2.53.0
+7 −1
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
  etcd_3_4,
  mock,
  pyopenssl,
  python,
}:

buildPythonPackage {
@@ -25,7 +26,12 @@ buildPythonPackage {
    hash = "sha256-osiSeBdZBT3w9pJUBxD7cI9/2T7eiyj6M6+87T8bTj0=";
  };

  patches = [ ./remove-getheader-usage.patch ];
  patches = [
    ./remove-getheader-usage.patch
  ]
  ++ lib.optionals (python.pythonAtLeast "3.14") [
    ./Fix-multiprocessing-errors-for-python-3.14.patch
  ];

  build-system = [ setuptools ];