flwr-nightly 1.13.0.dev20241025__py3-none-any.whl → 1.13.0.dev20241029__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.
Files changed (30) hide show
  1. flwr/common/date.py +3 -3
  2. flwr/common/logger.py +31 -0
  3. flwr/common/serde.py +22 -0
  4. flwr/proto/driver_pb2.py +24 -23
  5. flwr/proto/driver_pb2_grpc.py +69 -0
  6. flwr/proto/driver_pb2_grpc.pyi +27 -0
  7. flwr/proto/log_pb2.py +29 -0
  8. flwr/proto/log_pb2.pyi +39 -0
  9. flwr/proto/log_pb2_grpc.py +4 -0
  10. flwr/proto/log_pb2_grpc.pyi +4 -0
  11. flwr/server/app.py +10 -8
  12. flwr/server/driver/driver.py +14 -0
  13. flwr/server/driver/grpc_driver.py +8 -15
  14. flwr/server/driver/inmemory_driver.py +3 -11
  15. flwr/server/run_serverapp.py +3 -4
  16. flwr/server/serverapp/app.py +193 -18
  17. flwr/server/superlink/driver/driver_servicer.py +34 -1
  18. flwr/server/superlink/linkstate/in_memory_linkstate.py +28 -2
  19. flwr/server/superlink/linkstate/linkstate.py +35 -0
  20. flwr/server/superlink/linkstate/sqlite_linkstate.py +50 -0
  21. flwr/simulation/run_simulation.py +2 -1
  22. flwr/superexec/deployment.py +3 -37
  23. flwr/superexec/exec_servicer.py +5 -72
  24. flwr/superexec/executor.py +3 -4
  25. flwr/superexec/simulation.py +4 -7
  26. {flwr_nightly-1.13.0.dev20241025.dist-info → flwr_nightly-1.13.0.dev20241029.dist-info}/METADATA +1 -1
  27. {flwr_nightly-1.13.0.dev20241025.dist-info → flwr_nightly-1.13.0.dev20241029.dist-info}/RECORD +30 -26
  28. {flwr_nightly-1.13.0.dev20241025.dist-info → flwr_nightly-1.13.0.dev20241029.dist-info}/LICENSE +0 -0
  29. {flwr_nightly-1.13.0.dev20241025.dist-info → flwr_nightly-1.13.0.dev20241029.dist-info}/WHEEL +0 -0
  30. {flwr_nightly-1.13.0.dev20241025.dist-info → flwr_nightly-1.13.0.dev20241029.dist-info}/entry_points.txt +0 -0
@@ -15,10 +15,6 @@
15
15
  """SuperExec API servicer."""
16
16
 
17
17
 
18
- import select
19
- import sys
20
- import threading
21
- import time
22
18
  from collections.abc import Generator
23
19
  from logging import ERROR, INFO
24
20
  from typing import Any
@@ -37,7 +33,7 @@ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
37
33
  from flwr.server.superlink.ffs.ffs_factory import FfsFactory
38
34
  from flwr.server.superlink.linkstate import LinkStateFactory
39
35
 
40
- from .executor import Executor, RunTracker
36
+ from .executor import Executor
41
37
 
42
38
  SELECT_TIMEOUT = 1 # Timeout for selecting ready-to-read file descriptors (in seconds)
43
39
 
@@ -55,7 +51,6 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
55
51
  self.ffs_factory = ffs_factory
56
52
  self.executor = executor
57
53
  self.executor.initialize(linkstate_factory, ffs_factory)
58
- self.runs: dict[int, RunTracker] = {}
59
54
 
60
55
  def StartRun(
61
56
  self, request: StartRunRequest, context: grpc.ServicerContext
@@ -63,25 +58,17 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
63
58
  """Create run ID."""
64
59
  log(INFO, "ExecServicer.StartRun")
65
60
 
66
- run = self.executor.start_run(
61
+ run_id = self.executor.start_run(
67
62
  request.fab.content,
68
63
  user_config_from_proto(request.override_config),
69
64
  user_config_from_proto(request.federation_config),
70
65
  )
71
66
 
72
- if run is None:
67
+ if run_id is None:
73
68
  log(ERROR, "Executor failed to start run")
74
69
  return StartRunResponse()
75
70
 
76
- self.runs[run.run_id] = run
77
-
78
- # Start a background thread to capture the log output
79
- capture_thread = threading.Thread(
80
- target=_capture_logs, args=(run,), daemon=True
81
- )
82
- capture_thread.start()
83
-
84
- return StartRunResponse(run_id=run.run_id)
71
+ return StartRunResponse(run_id=run_id)
85
72
 
86
73
  def StreamLogs( # pylint: disable=C0103
87
74
  self, request: StreamLogsRequest, context: grpc.ServicerContext
@@ -89,58 +76,4 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
89
76
  """Get logs."""
90
77
  log(INFO, "ExecServicer.StreamLogs")
91
78
 
92
- # Exit if `run_id` not found
93
- if request.run_id not in self.runs:
94
- context.abort(grpc.StatusCode.NOT_FOUND, "Run ID not found")
95
-
96
- last_sent_index = 0
97
- while context.is_active():
98
- # Yield n'th row of logs, if n'th row < len(logs)
99
- logs = self.runs[request.run_id].logs
100
- for i in range(last_sent_index, len(logs)):
101
- yield StreamLogsResponse(log_output=logs[i])
102
- last_sent_index = len(logs)
103
-
104
- # Wait for and continue to yield more log responses only if the
105
- # run isn't completed yet. If the run is finished, the entire log
106
- # is returned at this point and the server ends the stream.
107
- if self.runs[request.run_id].proc.poll() is not None:
108
- log(INFO, "All logs for run ID `%s` returned", request.run_id)
109
- context.set_code(grpc.StatusCode.OK)
110
- context.cancel()
111
-
112
- time.sleep(1.0) # Sleep briefly to avoid busy waiting
113
-
114
-
115
- def _capture_logs(
116
- run: RunTracker,
117
- ) -> None:
118
- while True:
119
- # Explicitly check if Popen.poll() is None. Required for `pytest`.
120
- if run.proc.poll() is None:
121
- # Select streams only when ready to read
122
- ready_to_read, _, _ = select.select(
123
- [run.proc.stdout, run.proc.stderr],
124
- [],
125
- [],
126
- SELECT_TIMEOUT,
127
- )
128
- # Read from std* and append to RunTracker.logs
129
- for stream in ready_to_read:
130
- # Flush stdout to view output in real time
131
- readline = stream.readline()
132
- sys.stdout.write(readline)
133
- sys.stdout.flush()
134
- # Append to logs
135
- line = readline.rstrip()
136
- if line:
137
- run.logs.append(f"{line}")
138
-
139
- # Close std* to prevent blocking
140
- elif run.proc.poll() is not None:
141
- log(INFO, "Subprocess finished, exiting log capture")
142
- if run.proc.stdout:
143
- run.proc.stdout.close()
144
- if run.proc.stderr:
145
- run.proc.stderr.close()
146
- break
79
+ yield StreamLogsResponse()
@@ -72,7 +72,7 @@ class Executor(ABC):
72
72
  fab_file: bytes,
73
73
  override_config: UserConfig,
74
74
  federation_config: UserConfig,
75
- ) -> Optional[RunTracker]:
75
+ ) -> Optional[int]:
76
76
  """Start a run using the given Flower FAB ID and version.
77
77
 
78
78
  This method creates a new run on the SuperLink, returns its run_id
@@ -89,7 +89,6 @@ class Executor(ABC):
89
89
 
90
90
  Returns
91
91
  -------
92
- run_id : Optional[RunTracker]
93
- The run_id and the associated process of the run created by the SuperLink,
94
- or `None` if it fails.
92
+ run_id : Optional[int]
93
+ The run_id of the run created by the SuperLink, or `None` if it fails.
95
94
  """
@@ -33,7 +33,7 @@ from flwr.server.superlink.ffs.ffs_factory import FfsFactory
33
33
  from flwr.server.superlink.linkstate import LinkStateFactory
34
34
  from flwr.server.superlink.linkstate.utils import generate_rand_int_from_bytes
35
35
 
36
- from .executor import Executor, RunTracker
36
+ from .executor import Executor
37
37
 
38
38
 
39
39
  def _user_config_to_str(user_config: UserConfig) -> str:
@@ -125,7 +125,7 @@ class SimulationEngine(Executor):
125
125
  fab_file: bytes,
126
126
  override_config: UserConfig,
127
127
  federation_config: UserConfig,
128
- ) -> Optional[RunTracker]:
128
+ ) -> Optional[int]:
129
129
  """Start run using the Flower Simulation Engine."""
130
130
  if self.num_supernodes is None:
131
131
  raise ValueError(
@@ -199,17 +199,14 @@ class SimulationEngine(Executor):
199
199
  command.extend(["--run-config", f"{override_config_str}"])
200
200
 
201
201
  # Start Simulation
202
- proc = subprocess.Popen( # pylint: disable=consider-using-with
202
+ _ = subprocess.Popen( # pylint: disable=consider-using-with
203
203
  command,
204
204
  text=True,
205
205
  )
206
206
 
207
207
  log(INFO, "Started run %s", str(run_id))
208
208
 
209
- return RunTracker(
210
- run_id=run_id,
211
- proc=proc,
212
- )
209
+ return run_id
213
210
 
214
211
  # pylint: disable-next=broad-except
215
212
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241025
3
+ Version: 1.13.0.dev20241029
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -104,13 +104,13 @@ flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
104
104
  flwr/common/config.py,sha256=nYA1vjiiqSWx5JjSdlQd1i_0N_Dh9kEGUse1Qze3JMs,7803
105
105
  flwr/common/constant.py,sha256=iv2O8vQdrIqsGy-RFluRDd0R0oaqWO046KPm14yPzw0,4376
106
106
  flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
107
- flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
107
+ flwr/common/date.py,sha256=uTvLmCkd3uVQuD4MviPHnIXMGyheL16mEI_UlOsv_R8,894
108
108
  flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
109
109
  flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf6d3qk6K7KBZGlV4Q,1074
110
110
  flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
111
111
  flwr/common/exit_handlers.py,sha256=MracJaBeoCOC7TaXK9zCJQxhrMSx9ZtczK237qvhBpU,2806
112
112
  flwr/common/grpc.py,sha256=6Yi28JjAll19nxYJlOT9B03RN8dvJZP9zUoR3RSmxoY,2487
113
- flwr/common/logger.py,sha256=PnO5x79HDZBwpzo2z70DBF3BrPuQasWfcmvbwCFunsI,8123
113
+ flwr/common/logger.py,sha256=0Whe3ce3anXNVQkJpRjM--nRnGum_UfYBsl4fACVuts,8959
114
114
  flwr/common/message.py,sha256=4O1m0OWXBAYZz05gKgEtnoJ94J1gjo7hCNHyUXThxRo,13831
115
115
  flwr/common/object_ref.py,sha256=5lgWqYaJR28UdFc-iirWw9YqFXMfgkOOAdfJc1AVibE,8711
116
116
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
@@ -132,7 +132,7 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=zvVAIrIyI6OSzGhpCi8
132
132
  flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCMOS7VD93zHCzuv3MHU,2304
133
133
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
134
134
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=o7IhHH6J9xqinhQy3TdPgQpoj1XyEpyv3OQFyx81RVQ,3193
135
- flwr/common/serde.py,sha256=74nN5uqASdqfykSWPOhaTJARA07Iznyg3Nyr-dh-uy4,29918
135
+ flwr/common/serde.py,sha256=ZNPGTjxmIyRMPskpIy3VVYgjckeix0jzDEc1PtVSgLo,30562
136
136
  flwr/common/telemetry.py,sha256=PvdlipCPYciqEgmXRwQ1HklP1uyECcNqt9HTBzthmAg,8904
137
137
  flwr/common/typing.py,sha256=fS_KmVdg0c1B87yMnccIPfjBzQ3CTRwYJcaWfmvZzEA,5103
138
138
  flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
@@ -149,10 +149,10 @@ flwr/proto/control_pb2.py,sha256=yaUkwY2J9uo-fdUIB5aHwVSDOuGunxaUr4ZlggifA_M,143
149
149
  flwr/proto/control_pb2.pyi,sha256=XbFvpZvvrS7QcH5AFXfpRGl4hQvhd3QdKO6x0oTlCCU,165
150
150
  flwr/proto/control_pb2_grpc.py,sha256=FFE21nZvEILWpe1WCR5vAwgYEtpzrdG78-_SsU0gZ7w,5783
151
151
  flwr/proto/control_pb2_grpc.pyi,sha256=9DU4sgkzJ497a4Nq6kitZWEG4g_5MO8MevichnO0oAg,1672
152
- flwr/proto/driver_pb2.py,sha256=8WmaJ3F5iPuHeiFkfkf_9Pa86qgoUYLPaIL-9igdcIk,4528
152
+ flwr/proto/driver_pb2.py,sha256=B07TlCJaBFtfoekcyla2vpQ0b3JE0VoXgNSIkaRaBmw,4830
153
153
  flwr/proto/driver_pb2.pyi,sha256=Mq4xZ5Hn55CrUVLu4kvNZylKtF9AQ9NomOv1qJ3Py4Q,6636
154
- flwr/proto/driver_pb2_grpc.py,sha256=KgJNfvIkTX4z3u9jU05z3GvyCx39cQ1r_OgiD3zoinw,13886
155
- flwr/proto/driver_pb2_grpc.pyi,sha256=_aiUW3TsX1jPL7WqdUhiAPK_6bK8Cv5Flo_SntmlL44,3766
154
+ flwr/proto/driver_pb2_grpc.py,sha256=UgZ2PrrBmff-mwH1FG3Zf1YPYLoZVMldEBMUesjC-IQ,17154
155
+ flwr/proto/driver_pb2_grpc.pyi,sha256=1yVGhlZFwR-o1hrGFJptMBrEpdjc_MYpD14oEWDqib8,4654
156
156
  flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
157
157
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
158
158
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -173,6 +173,10 @@ flwr/proto/grpcadapter_pb2.py,sha256=bb8mW09XzNCpMdr1KuYQkefPFWR8lc8y1uL6Uk0TtsM
173
173
  flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
174
174
  flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
175
175
  flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=AgA9Qo_lnANb9SNuPzbZGAxupau-xcqYawZz6vqf-24,735
176
+ flwr/proto/log_pb2.py,sha256=0McrbU6ZlGLMEUAOhxmJvcVdEnptE2t4HsuzI_j77Sg,1393
177
+ flwr/proto/log_pb2.pyi,sha256=ipuhgo40sAHTcRzCsGI1HwIstr5q0THPNk_cf62YyME,1448
178
+ flwr/proto/log_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
179
+ flwr/proto/log_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
176
180
  flwr/proto/message_pb2.py,sha256=GW0ID-d2pvtgylsKxtINQx_oORgNGel3WJ3ybZcXxtI,3151
177
181
  flwr/proto/message_pb2.pyi,sha256=_J9NjZa7Pr-kSO7-GGOL5EvIXQx5mQD04iVIvnVHBMU,5617
178
182
  flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -199,7 +203,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
199
203
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
200
204
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
205
  flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
202
- flwr/server/app.py,sha256=p3uTuj4tIRK67d6FCyNIwEVKkfhZBIuuhZt86gDqmv8,28315
206
+ flwr/server/app.py,sha256=7mV0p6Ej7GHyAnSyTOaaPJC2UuXpXfgNLuoDvLemsRM,28353
203
207
  flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
204
208
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
205
209
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
@@ -209,16 +213,16 @@ flwr/server/compat/driver_client_proxy.py,sha256=Af0bRUEVZNcCYRxt3DjpLPdvVYpTgz6
209
213
  flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
210
214
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
211
215
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
212
- flwr/server/driver/driver.py,sha256=KpLrWeF0zP9HBdo_mucPlNVj5eS0K8DDHRRY_58E1BM,5244
213
- flwr/server/driver/grpc_driver.py,sha256=AhkqfXBSv8TnqBGxqj1nhkOxp6HVU0WaJq4YlqIz8Hw,9687
214
- flwr/server/driver/inmemory_driver.py,sha256=7gw1zRgNvmy2FWCEOMs8udpc2HQsxURrIwbpKv5VyoE,6656
216
+ flwr/server/driver/driver.py,sha256=m8u4ZjtRmy1Cqg7SAld1trg9cd7E7O2IAnfsrJ97sXE,5697
217
+ flwr/server/driver/grpc_driver.py,sha256=cB9uL3JnMOBaObtwo0c60JH2slnoG2-Hsv9tZXpaeCI,9539
218
+ flwr/server/driver/inmemory_driver.py,sha256=kMNYmWWy2VOTDC_PnU-jKfVGrCqdeqp3-kwWiYkJGjo,6453
215
219
  flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
216
- flwr/server/run_serverapp.py,sha256=_i0kBRrSzeR4-DDswysoWYertdAq7-LfrSAJ2n-GB8Q,10530
220
+ flwr/server/run_serverapp.py,sha256=QAeNzOpZPgHQqhCu2glwMSAE-TSu5Z0IQvldNETKA3w,10497
217
221
  flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
218
222
  flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
219
223
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
220
224
  flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
221
- flwr/server/serverapp/app.py,sha256=qrkJVCORJbDQN0I5JR_7t26GGwLLlApELQBWdbgButo,2353
225
+ flwr/server/serverapp/app.py,sha256=0cL0rL7AFr2SJwahKMs2xc8Eh6fa9IkrtJsJm4a6HN8,8464
222
226
  flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
223
227
  flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
224
228
  flwr/server/strategy/aggregate.py,sha256=iFZ8lp7PV_a2m9kywV-FK0iM33ofxavOs5TIaEQY8nU,13961
@@ -247,7 +251,7 @@ flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbC
247
251
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
248
252
  flwr/server/superlink/driver/__init__.py,sha256=_JaRW-FdyikHc7souUrnk3mwTGViraEJCeUBY_M_ocs,712
249
253
  flwr/server/superlink/driver/driver_grpc.py,sha256=melAgaV37Y0B9bZe5bRWQOobItZZ9DIzlcbVE8B01wo,2060
250
- flwr/server/superlink/driver/driver_servicer.py,sha256=u0dphm1MtmhovRLAjs_z-TVtrBA52OcidUFzV7_smG8,9390
254
+ flwr/server/superlink/driver/driver_servicer.py,sha256=o-Ln3Ji2w7dXxP302PyZX-goEwiG71f1nJmHFuqjsqY,10563
251
255
  flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
252
256
  flwr/server/superlink/ffs/disk_ffs.py,sha256=yCN6CCzegnJIOaHr5nIu49wZQa4g5BByiSKshz50RKU,3296
253
257
  flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
@@ -273,10 +277,10 @@ flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0Q
273
277
  flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DPSioTSKD3YGtS3uJsPD7Hn2Fw,7155
274
278
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=VL6e_Jwf4uxA-X1EelxJZMv6Eji-_p2J9D0MdHG10a4,13029
275
279
  flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
276
- flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=guqspi2WYyAXZKIxXCApuJZsuraNEVvb7aredtlXzRw,19327
277
- flwr/server/superlink/linkstate/linkstate.py,sha256=A0LCOH0xpq9_mTPrO1LB0MDWKhfUcOSnkKeC3-AeFHU,10256
280
+ flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=zsolNnK3LPkk_b00hnA9kSmnQ71hS_BPpc7s7uG_tps,20599
281
+ flwr/server/superlink/linkstate/linkstate.py,sha256=fBaIBlQAc0oBu_AWSXlMmHAUHJ2YF1I79MS9wq7HvCs,11428
278
282
  flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
279
- flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=JhP6DtM0xBYtT0B0b1lwy96fY6i_C_Zm6Iq_t3VVQ5o,41245
283
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=Yda1uPiRkEmH7HDNwVtQnpzVjDAkGCJePutkjeyYyT4,43188
280
284
  flwr/server/superlink/linkstate/utils.py,sha256=ukrMlSv0mNFd0YSpyPDpq_ND90SBkwuKgw3FFux3lqs,6914
281
285
  flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
282
286
  flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
@@ -294,16 +298,16 @@ flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQD
294
298
  flwr/simulation/ray_transport/ray_actor.py,sha256=9-XBguAm5IFqm2ddPFsQtnuuFN6lzqdb00SnCxGUGBo,18996
295
299
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2vjOKoom3B74C6XU-jC3N6DwYmsLdB-lmkHZ_Xrv96o,7367
296
300
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
297
- flwr/simulation/run_simulation.py,sha256=nVLoP5rzH3bmZQ-pW9Nka2m0M1pFIEFODtIY7nHY0jQ,23412
301
+ flwr/simulation/run_simulation.py,sha256=3n1nSik8tTC6LCYVZesNkHuXDQ1Ea4unTnNEOC5rdAc,23436
298
302
  flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
299
303
  flwr/superexec/app.py,sha256=Tt3GonnTwHrMmicwx9XaP-crP78-bf4DUWl-N5cG6zY,1841
300
- flwr/superexec/deployment.py,sha256=3uAauE8mI4bHwVF4_Rp26mXy18QnnIRlQD_yDo_Xs00,6780
304
+ flwr/superexec/deployment.py,sha256=fCAX2heyrraN-matKhHqFSaGKRVPEANAyTt43u8fddM,5678
301
305
  flwr/superexec/exec_grpc.py,sha256=OuhBAk7hiky9rjGceinLGIXqchtzGPQThZnwyYv6Ei0,2241
302
- flwr/superexec/exec_servicer.py,sha256=9MdFODQkLK_942XwaqwwIi1OP0Tiv3Mh7smj4mbreBE,5124
303
- flwr/superexec/executor.py,sha256=125FvdpjT_awBCREm_YkLMg0YgToarVg7Y3wPt5tXQA,3126
304
- flwr/superexec/simulation.py,sha256=PGADPXcfFVOss4uwPvFq_6vrIlkxezHppnBPAYWUBuU,7739
305
- flwr_nightly-1.13.0.dev20241025.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
306
- flwr_nightly-1.13.0.dev20241025.dist-info/METADATA,sha256=Hn_YtwhziCOgtOHvRAZcksYd8Irj4Te0D9fVAcNf_Ic,15618
307
- flwr_nightly-1.13.0.dev20241025.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
308
- flwr_nightly-1.13.0.dev20241025.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
309
- flwr_nightly-1.13.0.dev20241025.dist-info/RECORD,,
306
+ flwr/superexec/exec_servicer.py,sha256=OcwB5XDMmjVHThY4Ucw1oKDaCw8t1dWlNlnUjkmdiWU,2633
307
+ flwr/superexec/executor.py,sha256=QA2_hQJxmN3zc75oEkDs-zkWAHesz59jE0P5lem-5VU,3073
308
+ flwr/superexec/simulation.py,sha256=Ny3MJnNlgzW4K3NbgsgDM0LKKcoCd_q3LqNqb0GhWLI,7640
309
+ flwr_nightly-1.13.0.dev20241029.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
310
+ flwr_nightly-1.13.0.dev20241029.dist-info/METADATA,sha256=Nq2hEJsE6LmIwcbUMIOJqRWWSbaDl66NmtBE9YxR12o,15618
311
+ flwr_nightly-1.13.0.dev20241029.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
312
+ flwr_nightly-1.13.0.dev20241029.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
313
+ flwr_nightly-1.13.0.dev20241029.dist-info/RECORD,,