flwr-nightly 1.13.0.dev20241024__py3-none-any.whl → 1.13.0.dev20241025__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.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

@@ -10,7 +10,7 @@ license = "Apache-2.0"
10
10
  dependencies = [
11
11
  "flwr[simulation]>=1.12.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
- "tensorflow>=2.11.1",
13
+ "tensorflow>=2.11.1,<2.18.0",
14
14
  ]
15
15
 
16
16
  [tool.hatch.build.targets.wheel]
@@ -15,21 +15,25 @@
15
15
  """Driver API servicer."""
16
16
 
17
17
 
18
+ import threading
18
19
  import time
19
- from logging import DEBUG
20
+ from logging import DEBUG, INFO
20
21
  from typing import Optional
21
22
  from uuid import UUID
22
23
 
23
24
  import grpc
24
25
 
26
+ from flwr.common.constant import Status
25
27
  from flwr.common.logger import log
26
28
  from flwr.common.serde import (
29
+ context_from_proto,
30
+ context_to_proto,
27
31
  fab_from_proto,
28
32
  fab_to_proto,
33
+ run_to_proto,
29
34
  user_config_from_proto,
30
- user_config_to_proto,
31
35
  )
32
- from flwr.common.typing import Fab
36
+ from flwr.common.typing import Fab, RunStatus
33
37
  from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
34
38
  from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
35
39
  GetNodesRequest,
@@ -50,7 +54,6 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
50
54
  CreateRunResponse,
51
55
  GetRunRequest,
52
56
  GetRunResponse,
53
- Run,
54
57
  )
55
58
  from flwr.proto.task_pb2 import TaskRes # pylint: disable=E0611
56
59
  from flwr.server.superlink.ffs.ffs import Ffs
@@ -67,6 +70,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
67
70
  ) -> None:
68
71
  self.state_factory = state_factory
69
72
  self.ffs_factory = ffs_factory
73
+ self.lock = threading.RLock()
70
74
 
71
75
  def GetNodes(
72
76
  self, request: GetNodesRequest, context: grpc.ServicerContext
@@ -181,15 +185,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
181
185
  if run is None:
182
186
  return GetRunResponse()
183
187
 
184
- return GetRunResponse(
185
- run=Run(
186
- run_id=run.run_id,
187
- fab_id=run.fab_id,
188
- fab_version=run.fab_version,
189
- override_config=user_config_to_proto(run.override_config),
190
- fab_hash=run.fab_hash,
191
- )
192
- )
188
+ return GetRunResponse(run=run_to_proto(run))
193
189
 
194
190
  def GetFab(
195
191
  self, request: GetFabRequest, context: grpc.ServicerContext
@@ -208,13 +204,53 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
208
204
  self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
209
205
  ) -> PullServerAppInputsResponse:
210
206
  """Pull ServerApp process inputs."""
211
- raise NotImplementedError()
207
+ log(DEBUG, "DriverServicer.PullServerAppInputs")
208
+ # Init access to LinkState and Ffs
209
+ state = self.state_factory.state()
210
+ ffs = self.ffs_factory.ffs()
211
+
212
+ # Lock access to LinkState, preventing obtaining the same pending run_id
213
+ with self.lock:
214
+ # If run_id is provided, use it, otherwise use the pending run_id
215
+ if request.HasField("run_id"):
216
+ run_id: Optional[int] = request.run_id
217
+ else:
218
+ run_id = state.get_pending_run_id()
219
+ # If there's no pending run, return an empty response
220
+ if run_id is None:
221
+ return PullServerAppInputsResponse()
222
+
223
+ # Retrieve Context, Run and Fab for the run_id
224
+ serverapp_ctxt = state.get_serverapp_context(run_id)
225
+ run = state.get_run(run_id)
226
+ fab = None
227
+ if run and run.fab_hash:
228
+ if result := ffs.get(run.fab_hash):
229
+ fab = Fab(run.fab_hash, result[0])
230
+ if run and fab:
231
+ # Update run status to STARTING
232
+ if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
233
+ log(INFO, "Starting run %d", run_id)
234
+ return PullServerAppInputsResponse(
235
+ context=(
236
+ context_to_proto(serverapp_ctxt) if serverapp_ctxt else None
237
+ ),
238
+ run=run_to_proto(run),
239
+ fab=fab_to_proto(fab),
240
+ )
241
+
242
+ # Raise an exception if the Run or Fab is not found,
243
+ # or if the status cannot be updated to STARTING
244
+ raise RuntimeError(f"Failed to start run {run_id}")
212
245
 
213
246
  def PushServerAppOutputs(
214
247
  self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
215
248
  ) -> PushServerAppOutputsResponse:
216
249
  """Push ServerApp process outputs."""
217
- raise NotImplementedError()
250
+ log(DEBUG, "DriverServicer.PushServerAppOutputs")
251
+ state = self.state_factory.state()
252
+ state.set_serverapp_context(request.run_id, context_from_proto(request.context))
253
+ return PushServerAppOutputsResponse()
218
254
 
219
255
 
220
256
  def _raise_if(validation_error: bool, detail: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241024
3
+ Version: 1.13.0.dev20241025
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -59,7 +59,7 @@ flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=GiRhllAQnMfH3mP4Cr9qpa1
59
59
  flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=89B4qMlOI4MrRyzKRzB2ORHJIkyvGx7IeoFnY_TAfVc,612
60
60
  flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=LUsQsEVhCgGzKEBB5IewKjZOKtcsq9fUQW-7_NJpgwk,710
61
61
  flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=BiZPOKEoGiZOuxSHQY_nQHj3KH7wH7QAiVmpxGutOgk,686
62
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=Nl8CiFr_38lG5-XIXjs7tntfZlujTB4WMMIwm8clOmI,702
62
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=6R_bIGyPvXlCtLABF8fHLmGBNlIptG8QrYM69_Fy_nk,710
63
63
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
64
64
  flwr/cli/run/run.py,sha256=NMCeDfImxta1VEeBqqkP05xsuBK6YWFTd7Qj_bIEA2Y,8394
65
65
  flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
@@ -247,7 +247,7 @@ flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbC
247
247
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
248
248
  flwr/server/superlink/driver/__init__.py,sha256=_JaRW-FdyikHc7souUrnk3mwTGViraEJCeUBY_M_ocs,712
249
249
  flwr/server/superlink/driver/driver_grpc.py,sha256=melAgaV37Y0B9bZe5bRWQOobItZZ9DIzlcbVE8B01wo,2060
250
- flwr/server/superlink/driver/driver_servicer.py,sha256=hA997-qPu9RxLFsiK-Jn4tDv7VZFHz1ayv5a4cOZGsA,7601
250
+ flwr/server/superlink/driver/driver_servicer.py,sha256=u0dphm1MtmhovRLAjs_z-TVtrBA52OcidUFzV7_smG8,9390
251
251
  flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
252
252
  flwr/server/superlink/ffs/disk_ffs.py,sha256=yCN6CCzegnJIOaHr5nIu49wZQa4g5BByiSKshz50RKU,3296
253
253
  flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
@@ -302,8 +302,8 @@ flwr/superexec/exec_grpc.py,sha256=OuhBAk7hiky9rjGceinLGIXqchtzGPQThZnwyYv6Ei0,2
302
302
  flwr/superexec/exec_servicer.py,sha256=9MdFODQkLK_942XwaqwwIi1OP0Tiv3Mh7smj4mbreBE,5124
303
303
  flwr/superexec/executor.py,sha256=125FvdpjT_awBCREm_YkLMg0YgToarVg7Y3wPt5tXQA,3126
304
304
  flwr/superexec/simulation.py,sha256=PGADPXcfFVOss4uwPvFq_6vrIlkxezHppnBPAYWUBuU,7739
305
- flwr_nightly-1.13.0.dev20241024.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
306
- flwr_nightly-1.13.0.dev20241024.dist-info/METADATA,sha256=qKxbod-8iSCiu3FrCRwd9YDAZTsOl6yfqP7Ty4HVf7A,15618
307
- flwr_nightly-1.13.0.dev20241024.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
308
- flwr_nightly-1.13.0.dev20241024.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
309
- flwr_nightly-1.13.0.dev20241024.dist-info/RECORD,,
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,,