flwr-nightly 1.21.0.dev20250813__py3-none-any.whl → 1.21.0.dev20250815__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -161,6 +161,7 @@ class RayBackend(Backend):
161
161
  "Call the backend's `build()` method before processing messages."
162
162
  )
163
163
 
164
+ future = None
164
165
  try:
165
166
  # Submit a task to the pool
166
167
  future = self.pool.submit(
@@ -183,7 +184,8 @@ class RayBackend(Backend):
183
184
  self.__class__.__name__,
184
185
  )
185
186
  # add actor back into pool
186
- self.pool.add_actor_back_to_pool(future)
187
+ if future is not None:
188
+ self.pool.add_actor_back_to_pool(future)
187
189
  raise ex
188
190
 
189
191
  def terminate(self) -> None:
@@ -23,7 +23,6 @@ from concurrent.futures import ThreadPoolExecutor
23
23
  from logging import DEBUG, ERROR, INFO, WARN
24
24
  from pathlib import Path
25
25
  from queue import Empty, Queue
26
- from time import sleep
27
26
  from typing import Callable, Optional
28
27
  from uuid import uuid4
29
28
 
@@ -153,7 +152,7 @@ def add_messages_to_queue(
153
152
  message_ins_list = state.get_message_ins(node_id=node_id, limit=1)
154
153
  for msg in message_ins_list:
155
154
  queue.put(msg)
156
- sleep(0.1)
155
+ f_stop.wait(0.1)
157
156
 
158
157
 
159
158
  def put_message_into_state(
@@ -182,6 +181,7 @@ def run_api(
182
181
  messageins_queue: Queue[Message] = Queue()
183
182
  messageres_queue: Queue[Message] = Queue()
184
183
 
184
+ backend = None
185
185
  try:
186
186
 
187
187
  # Instantiate backend
@@ -236,16 +236,16 @@ def run_api(
236
236
  log(ERROR, traceback.format_exc())
237
237
  log(WARN, "Stopping Simulation Engine.")
238
238
 
239
- # Manually trigger stopping event
240
- f_stop.set()
241
-
242
239
  # Raise exception
243
240
  raise RuntimeError("Simulation Engine crashed.") from ex
244
241
 
245
242
  finally:
243
+ # Manually trigger stopping event
244
+ f_stop.set()
246
245
 
247
246
  # Terminate backend
248
- backend.terminate()
247
+ if backend is not None:
248
+ backend.terminate()
249
249
 
250
250
 
251
251
  # pylint: disable=too-many-arguments,unused-argument,too-many-locals,too-many-branches
flwr/simulation/app.py CHANGED
@@ -131,6 +131,7 @@ def run_simulation_process( # pylint: disable=R0913, R0914, R0915, R0917, W0212
131
131
  flwr_dir = get_flwr_dir(flwr_dir_)
132
132
  log_uploader = None
133
133
  heartbeat_sender = None
134
+ run_status = None
134
135
 
135
136
  while True:
136
137
 
@@ -279,6 +280,7 @@ def run_simulation_process( # pylint: disable=R0913, R0914, R0915, R0917, W0212
279
280
  run_id=run.run_id, run_status=run_status_proto
280
281
  )
281
282
  )
283
+ run_status = None
282
284
 
283
285
  # Clean up the Context if it exists
284
286
  try:
@@ -64,9 +64,7 @@ def start_parent_process_monitor(
64
64
  while True:
65
65
  time.sleep(0.2)
66
66
  if not _pid_exists(parent_pid):
67
- # This works on Unix-like systems and Windows
68
- # Avoid `os.kill` on Windows
69
- signal.raise_signal(signal.SIGTERM)
67
+ os.kill(os.getpid(), signal.SIGKILL)
70
68
 
71
69
  threading.Thread(target=monitor, daemon=True).start()
72
70
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250813
3
+ Version: 1.21.0.dev20250815
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -295,8 +295,8 @@ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=mxWKwGpgHPqd7cGFqd2ASnR
295
295
  flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
296
296
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
297
297
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
298
- flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=Hx9hxL7lju1_VJoAwkhBOGerZ3628u0P1zgkPhGWRPY,7154
299
- flwr/server/superlink/fleet/vce/vce_api.py,sha256=xSjQbBYHmUTinw7Q_-UxqR7qt07kqj9FCSpPYRsUKf8,12909
298
+ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=K0QRDshgKHv7BSMpalLB4FDyLmNFis8Xqo7GSAziOXY,7215
299
+ flwr/server/superlink/fleet/vce/vce_api.py,sha256=DYaXOfVUHxjKraxlfBlB7vxMmQZ_Swx2MVvBGnwu0I0,12946
300
300
  flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
301
301
  flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=eNjjQp6dJ_Qz54fYeOZ9XFebbB_k9syhBB6N2rXRTsA,27891
302
302
  flwr/server/superlink/linkstate/linkstate.py,sha256=TCLM9wZa2XGHs55B3LP9j5-WtUPhBjOUdMKQJELG2oY,13287
@@ -322,7 +322,7 @@ flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=b_pKk7gmbahwyj
322
322
  flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=DkayCsnlAya6Y2PZsueLgoUCMRtV-GbnW08RfWx_SXM,29460
323
323
  flwr/serverapp/__init__.py,sha256=HPvC_ZvMS7GCM7ALVrG_Wwm4bSDr4DZETeC561v3T9w,719
324
324
  flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1556
325
- flwr/simulation/app.py,sha256=et3bEZT4dstgZY9N4xKpftoDaKTbc39JjN3AKvaLn-s,11107
325
+ flwr/simulation/app.py,sha256=ZDDHNiObHVJ1tNatQHwX-c3icCl_-Bvn7q1kn37l0Pg,11163
326
326
  flwr/simulation/legacy_app.py,sha256=nMISQqW0otJL1-2Kfd94O6BLlGS2IEmEPKTM2WGKrIs,15861
327
327
  flwr/simulation/ray_transport/__init__.py,sha256=ogd-0AMv2U-wBZ1r3sHWaDIOIrVqr88Xi6C8o4Dviy0,734
328
328
  flwr/simulation/ray_transport/ray_actor.py,sha256=JN3xTqFIr5Z750k92CcA_uavzOHhSWDwE2WCaecvpks,19147
@@ -331,7 +331,7 @@ flwr/simulation/ray_transport/utils.py,sha256=KrexpWYCF-dAF3UHc9yDbPQWO-ahMT-BbD
331
331
  flwr/simulation/run_simulation.py,sha256=-sp3dNZcp7MCAH0BlmZpVcFAGvozRdYXRdDYcH_2Zxk,20838
332
332
  flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
333
333
  flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
334
- flwr/supercore/app_utils.py,sha256=ogT14HdSIxToJoOgVngdKJ3nf7eY4b2wSjzkPT--kX0,2857
334
+ flwr/supercore/app_utils.py,sha256=MCsfhIvEqa6mlJugqA3fIvVbq0PygV6ZLkVStVFN1Ps,2751
335
335
  flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
336
336
  flwr/supercore/cli/flower_superexec.py,sha256=J_rf7SCVW9L9wsBScOYa-oJOpyb_e1WOtwTGSyUFu1k,3882
337
337
  flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
@@ -388,7 +388,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
388
388
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
389
389
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
390
390
  flwr/supernode/start_client_internal.py,sha256=z2o92MQKzTRB-AZTELROueZ2ZQYouu947hiU-WJ_oq4,20257
391
- flwr_nightly-1.21.0.dev20250813.dist-info/METADATA,sha256=0aRgIClEyMHvfwiaW40CrEwvVvE7hnUcjZ0XZ5zet7k,15967
392
- flwr_nightly-1.21.0.dev20250813.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
393
- flwr_nightly-1.21.0.dev20250813.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
394
- flwr_nightly-1.21.0.dev20250813.dist-info/RECORD,,
391
+ flwr_nightly-1.21.0.dev20250815.dist-info/METADATA,sha256=LrphoswERq1SbrU8AiwmUEbA255u_FWa2cg-lBGsLX4,15967
392
+ flwr_nightly-1.21.0.dev20250815.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
393
+ flwr_nightly-1.21.0.dev20250815.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
394
+ flwr_nightly-1.21.0.dev20250815.dist-info/RECORD,,