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

Files changed (31) hide show
  1. flwr/cli/config_utils.py +98 -0
  2. flwr/cli/log.py +19 -82
  3. flwr/cli/run/run.py +18 -83
  4. flwr/client/clientapp/app.py +1 -2
  5. flwr/common/constant.py +1 -1
  6. flwr/common/logger.py +3 -3
  7. flwr/common/telemetry.py +0 -6
  8. flwr/proto/serverappio_pb2.py +52 -0
  9. flwr/proto/{driver_pb2_grpc.py → serverappio_pb2_grpc.py} +56 -56
  10. flwr/proto/{driver_pb2_grpc.pyi → serverappio_pb2_grpc.pyi} +24 -24
  11. flwr/server/app.py +20 -20
  12. flwr/server/driver/driver.py +1 -1
  13. flwr/server/driver/grpc_driver.py +18 -18
  14. flwr/server/driver/inmemory_driver.py +1 -1
  15. flwr/server/run_serverapp.py +11 -11
  16. flwr/server/serverapp/app.py +4 -5
  17. flwr/server/strategy/fedadam.py +11 -1
  18. flwr/server/superlink/driver/__init__.py +1 -1
  19. flwr/server/superlink/driver/{driver_grpc.py → serverappio_grpc.py} +17 -14
  20. flwr/server/superlink/driver/{driver_servicer.py → serverappio_servicer.py} +29 -32
  21. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
  22. flwr/server/superlink/linkstate/linkstate.py +3 -3
  23. flwr/server/superlink/linkstate/sqlite_linkstate.py +3 -3
  24. flwr/superexec/deployment.py +3 -3
  25. {flwr_nightly-1.13.0.dev20241031.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/METADATA +1 -1
  26. {flwr_nightly-1.13.0.dev20241031.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/RECORD +30 -30
  27. flwr/proto/driver_pb2.py +0 -52
  28. /flwr/proto/{driver_pb2.pyi → serverappio_pb2.pyi} +0 -0
  29. {flwr_nightly-1.13.0.dev20241031.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/LICENSE +0 -0
  30. {flwr_nightly-1.13.0.dev20241031.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/WHEEL +0 -0
  31. {flwr_nightly-1.13.0.dev20241031.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/entry_points.txt +0 -0
@@ -31,7 +31,7 @@ from flwr.common.config import (
31
31
  get_project_config,
32
32
  get_project_dir,
33
33
  )
34
- from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS
34
+ from flwr.common.constant import SERVERAPPIO_API_DEFAULT_ADDRESS
35
35
  from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
36
36
  from flwr.common.object_ref import load_app
37
37
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
@@ -45,7 +45,6 @@ from .driver.grpc_driver import GrpcDriver
45
45
  from .server_app import LoadServerAppError, ServerApp
46
46
 
47
47
 
48
- # pylint: disable-next=too-many-arguments,too-many-positional-arguments
49
48
  def run(
50
49
  driver: Driver,
51
50
  context: Context,
@@ -107,18 +106,18 @@ def run_server_app() -> None:
107
106
  "app by executing `flwr new` and following the prompt."
108
107
  )
109
108
 
110
- if args.server != DRIVER_API_DEFAULT_ADDRESS:
109
+ if args.server != SERVERAPPIO_API_DEFAULT_ADDRESS:
111
110
  warn = "Passing flag --server is deprecated. Use --superlink instead."
112
111
  warn_deprecated_feature(warn)
113
112
 
114
- if args.superlink != DRIVER_API_DEFAULT_ADDRESS:
113
+ if args.superlink != SERVERAPPIO_API_DEFAULT_ADDRESS:
115
114
  # if `--superlink` also passed, then
116
115
  # warn user that this argument overrides what was passed with `--server`
117
116
  log(
118
117
  WARN,
119
118
  "Both `--server` and `--superlink` were passed. "
120
- "`--server` will be ignored. Connecting to the Superlink Driver API "
121
- "at %s.",
119
+ "`--server` will be ignored. Connecting to the "
120
+ "SuperLink ServerAppIo API at %s.",
122
121
  args.superlink,
123
122
  )
124
123
  else:
@@ -171,7 +170,7 @@ def run_server_app() -> None:
171
170
  if app_path is None:
172
171
  # User provided `--run-id`, but not `app_dir`
173
172
  driver = GrpcDriver(
174
- driver_service_address=args.superlink,
173
+ serverappio_service_address=args.superlink,
175
174
  root_certificates=root_certificates,
176
175
  )
177
176
  flwr_dir = get_flwr_dir(args.flwr_dir)
@@ -193,7 +192,7 @@ def run_server_app() -> None:
193
192
  # User provided `app_dir`, but not `--run-id`
194
193
  # Create run if run_id is not provided
195
194
  driver = GrpcDriver(
196
- driver_service_address=args.superlink,
195
+ serverappio_service_address=args.superlink,
197
196
  root_certificates=root_certificates,
198
197
  )
199
198
  # Load config from the project directory
@@ -275,13 +274,14 @@ def _parse_args_run_server_app() -> argparse.ArgumentParser:
275
274
  )
276
275
  parser.add_argument(
277
276
  "--server",
278
- default=DRIVER_API_DEFAULT_ADDRESS,
277
+ default=SERVERAPPIO_API_DEFAULT_ADDRESS,
279
278
  help="Server address",
280
279
  )
281
280
  parser.add_argument(
282
281
  "--superlink",
283
- default=DRIVER_API_DEFAULT_ADDRESS,
284
- help="SuperLink Driver API (gRPC-rere) address (IPv4, IPv6, or a domain name)",
282
+ default=SERVERAPPIO_API_DEFAULT_ADDRESS,
283
+ help="SuperLink ServerAppIo API (gRPC-rere) address "
284
+ "(IPv4, IPv6, or a domain name)",
285
285
  )
286
286
  parser.add_argument(
287
287
  "--run-id",
@@ -47,12 +47,12 @@ from flwr.common.serde import (
47
47
  run_status_to_proto,
48
48
  )
49
49
  from flwr.common.typing import RunStatus
50
- from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
50
+ from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
51
+ from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
51
52
  PullServerAppInputsRequest,
52
53
  PullServerAppInputsResponse,
53
54
  PushServerAppOutputsRequest,
54
55
  )
55
- from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
56
56
  from flwr.server.driver.grpc_driver import GrpcDriver
57
57
  from flwr.server.run_serverapp import run as run_
58
58
 
@@ -63,8 +63,6 @@ def flwr_serverapp() -> None:
63
63
  log_queue: Queue[Optional[str]] = Queue()
64
64
  mirror_output_to_queue(log_queue)
65
65
 
66
- log(INFO, "Starting Flower ServerApp")
67
-
68
66
  parser = argparse.ArgumentParser(
69
67
  description="Run a Flower ServerApp",
70
68
  )
@@ -106,6 +104,7 @@ def flwr_serverapp() -> None:
106
104
  )
107
105
  args = parser.parse_args()
108
106
 
107
+ log(INFO, "Starting Flower ServerApp")
109
108
  certificates = _try_obtain_certificates(args)
110
109
 
111
110
  log(
@@ -167,7 +166,7 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212
167
166
  ) -> None:
168
167
  """Run Flower ServerApp process."""
169
168
  driver = GrpcDriver(
170
- driver_service_address=superlink,
169
+ serverappio_service_address=superlink,
171
170
  root_certificates=certificates,
172
171
  )
173
172
 
@@ -170,8 +170,18 @@ class FedAdam(FedOpt):
170
170
  for x, y in zip(self.v_t, delta_t)
171
171
  ]
172
172
 
173
+ # Compute the bias-corrected learning rate, `eta_norm` for improving convergence
174
+ # in the early rounds of FL training. This `eta_norm` is `\alpha_t` in Kingma &
175
+ # Ba, 2014 (http://arxiv.org/abs/1412.6980) "Adam: A Method for Stochastic
176
+ # Optimization" in the formula line right before Section 2.1.
177
+ eta_norm = (
178
+ self.eta
179
+ * np.sqrt(1 - np.power(self.beta_2, server_round + 1.0))
180
+ / (1 - np.power(self.beta_1, server_round + 1.0))
181
+ )
182
+
173
183
  new_weights = [
174
- x + self.eta * y / (np.sqrt(z) + self.tau)
184
+ x + eta_norm * y / (np.sqrt(z) + self.tau)
175
185
  for x, y, z in zip(self.current_weights, self.m_t, self.v_t)
176
186
  ]
177
187
 
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Flower driver service."""
15
+ """Flower ServerAppIo service."""
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Driver gRPC API."""
15
+ """ServerAppIo gRPC API."""
16
16
 
17
17
  from logging import INFO
18
18
  from typing import Optional
@@ -21,37 +21,40 @@ import grpc
21
21
 
22
22
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH
23
23
  from flwr.common.logger import log
24
- from flwr.proto.driver_pb2_grpc import ( # pylint: disable=E0611
25
- add_DriverServicer_to_server,
24
+ from flwr.proto.serverappio_pb2_grpc import ( # pylint: disable=E0611
25
+ add_ServerAppIoServicer_to_server,
26
26
  )
27
27
  from flwr.server.superlink.ffs.ffs_factory import FfsFactory
28
28
  from flwr.server.superlink.linkstate import LinkStateFactory
29
29
 
30
30
  from ..fleet.grpc_bidi.grpc_server import generic_create_grpc_server
31
- from .driver_servicer import DriverServicer
31
+ from .serverappio_servicer import ServerAppIoServicer
32
32
 
33
33
 
34
- def run_driver_api_grpc(
34
+ def run_serverappio_api_grpc(
35
35
  address: str,
36
36
  state_factory: LinkStateFactory,
37
37
  ffs_factory: FfsFactory,
38
38
  certificates: Optional[tuple[bytes, bytes, bytes]],
39
39
  ) -> grpc.Server:
40
- """Run Driver API (gRPC, request-response)."""
41
- # Create Driver API gRPC server
42
- driver_servicer: grpc.Server = DriverServicer(
40
+ """Run ServerAppIo API (gRPC, request-response)."""
41
+ # Create ServerAppIo API gRPC server
42
+ serverappio_servicer: grpc.Server = ServerAppIoServicer(
43
43
  state_factory=state_factory,
44
44
  ffs_factory=ffs_factory,
45
45
  )
46
- driver_add_servicer_to_server_fn = add_DriverServicer_to_server
47
- driver_grpc_server = generic_create_grpc_server(
48
- servicer_and_add_fn=(driver_servicer, driver_add_servicer_to_server_fn),
46
+ serverappio_add_servicer_to_server_fn = add_ServerAppIoServicer_to_server
47
+ serverappio_grpc_server = generic_create_grpc_server(
48
+ servicer_and_add_fn=(
49
+ serverappio_servicer,
50
+ serverappio_add_servicer_to_server_fn,
51
+ ),
49
52
  server_address=address,
50
53
  max_message_length=GRPC_MAX_MESSAGE_LENGTH,
51
54
  certificates=certificates,
52
55
  )
53
56
 
54
- log(INFO, "Flower ECE: Starting Driver API (gRPC-rere) on %s", address)
55
- driver_grpc_server.start()
57
+ log(INFO, "Flower ECE: Starting ServerAppIo API (gRPC-rere) on %s", address)
58
+ serverappio_grpc_server.start()
56
59
 
57
- return driver_grpc_server
60
+ return serverappio_grpc_server
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Driver API servicer."""
15
+ """ServerAppIo API servicer."""
16
16
 
17
17
 
18
18
  import threading
@@ -22,7 +22,6 @@ from typing import Optional
22
22
  from uuid import UUID
23
23
 
24
24
  import grpc
25
- from google.protobuf.message import Message as GrpcMessage
26
25
 
27
26
  from flwr.common.constant import Status
28
27
  from flwr.common.logger import log
@@ -36,19 +35,7 @@ from flwr.common.serde import (
36
35
  user_config_from_proto,
37
36
  )
38
37
  from flwr.common.typing import Fab, RunStatus
39
- from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
40
- from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
41
- GetNodesRequest,
42
- GetNodesResponse,
43
- PullServerAppInputsRequest,
44
- PullServerAppInputsResponse,
45
- PullTaskResRequest,
46
- PullTaskResResponse,
47
- PushServerAppOutputsRequest,
48
- PushServerAppOutputsResponse,
49
- PushTaskInsRequest,
50
- PushTaskInsResponse,
51
- )
38
+ from flwr.proto import serverappio_pb2_grpc # pylint: disable=E0611
52
39
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
53
40
  from flwr.proto.log_pb2 import ( # pylint: disable=E0611
54
41
  PushLogsRequest,
@@ -63,6 +50,18 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
63
50
  UpdateRunStatusRequest,
64
51
  UpdateRunStatusResponse,
65
52
  )
53
+ from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
54
+ GetNodesRequest,
55
+ GetNodesResponse,
56
+ PullServerAppInputsRequest,
57
+ PullServerAppInputsResponse,
58
+ PullTaskResRequest,
59
+ PullTaskResResponse,
60
+ PushServerAppOutputsRequest,
61
+ PushServerAppOutputsResponse,
62
+ PushTaskInsRequest,
63
+ PushTaskInsResponse,
64
+ )
66
65
  from flwr.proto.task_pb2 import TaskRes # pylint: disable=E0611
67
66
  from flwr.server.superlink.ffs.ffs import Ffs
68
67
  from flwr.server.superlink.ffs.ffs_factory import FfsFactory
@@ -70,8 +69,8 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
70
69
  from flwr.server.utils.validator import validate_task_ins_or_res
71
70
 
72
71
 
73
- class DriverServicer(driver_pb2_grpc.DriverServicer):
74
- """Driver API servicer."""
72
+ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
73
+ """ServerAppIo API servicer."""
75
74
 
76
75
  def __init__(
77
76
  self, state_factory: LinkStateFactory, ffs_factory: FfsFactory
@@ -84,7 +83,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
84
83
  self, request: GetNodesRequest, context: grpc.ServicerContext
85
84
  ) -> GetNodesResponse:
86
85
  """Get available nodes."""
87
- log(DEBUG, "DriverServicer.GetNodes")
86
+ log(DEBUG, "ServerAppIoServicer.GetNodes")
88
87
  state: LinkState = self.state_factory.state()
89
88
  all_ids: set[int] = state.get_nodes(request.run_id)
90
89
  nodes: list[Node] = [
@@ -96,7 +95,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
96
95
  self, request: CreateRunRequest, context: grpc.ServicerContext
97
96
  ) -> CreateRunResponse:
98
97
  """Create run ID."""
99
- log(DEBUG, "DriverServicer.CreateRun")
98
+ log(DEBUG, "ServerAppIoServicer.CreateRun")
100
99
  state: LinkState = self.state_factory.state()
101
100
  if request.HasField("fab"):
102
101
  fab = fab_from_proto(request.fab)
@@ -120,7 +119,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
120
119
  self, request: PushTaskInsRequest, context: grpc.ServicerContext
121
120
  ) -> PushTaskInsResponse:
122
121
  """Push a set of TaskIns."""
123
- log(DEBUG, "DriverServicer.PushTaskIns")
122
+ log(DEBUG, "ServerAppIoServicer.PushTaskIns")
124
123
 
125
124
  # Set pushed_at (timestamp in seconds)
126
125
  pushed_at = time.time()
@@ -150,7 +149,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
150
149
  self, request: PullTaskResRequest, context: grpc.ServicerContext
151
150
  ) -> PullTaskResResponse:
152
151
  """Pull a set of TaskRes."""
153
- log(DEBUG, "DriverServicer.PullTaskRes")
152
+ log(DEBUG, "ServerAppIoServicer.PullTaskRes")
154
153
 
155
154
  # Convert each task_id str to UUID
156
155
  task_ids: set[UUID] = {UUID(task_id) for task_id in request.task_ids}
@@ -160,7 +159,10 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
160
159
 
161
160
  # Register callback
162
161
  def on_rpc_done() -> None:
163
- log(DEBUG, "DriverServicer.PullTaskRes callback: delete TaskIns/TaskRes")
162
+ log(
163
+ DEBUG,
164
+ "ServerAppIoServicer.PullTaskRes callback: delete TaskIns/TaskRes",
165
+ )
164
166
 
165
167
  if context.is_active():
166
168
  return
@@ -182,7 +184,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
182
184
  self, request: GetRunRequest, context: grpc.ServicerContext
183
185
  ) -> GetRunResponse:
184
186
  """Get run information."""
185
- log(DEBUG, "DriverServicer.GetRun")
187
+ log(DEBUG, "ServerAppIoServicer.GetRun")
186
188
 
187
189
  # Init state
188
190
  state: LinkState = self.state_factory.state()
@@ -199,7 +201,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
199
201
  self, request: GetFabRequest, context: grpc.ServicerContext
200
202
  ) -> GetFabResponse:
201
203
  """Get FAB from Ffs."""
202
- log(DEBUG, "DriverServicer.GetFab")
204
+ log(DEBUG, "ServerAppIoServicer.GetFab")
203
205
 
204
206
  ffs: Ffs = self.ffs_factory.ffs()
205
207
  if result := ffs.get(request.hash_str):
@@ -212,7 +214,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
212
214
  self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
213
215
  ) -> PullServerAppInputsResponse:
214
216
  """Pull ServerApp process inputs."""
215
- log(DEBUG, "DriverServicer.PullServerAppInputs")
217
+ log(DEBUG, "ServerAppIoServicer.PullServerAppInputs")
216
218
  # Init access to LinkState and Ffs
217
219
  state = self.state_factory.state()
218
220
  ffs = self.ffs_factory.ffs()
@@ -250,7 +252,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
250
252
  self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
251
253
  ) -> PushServerAppOutputsResponse:
252
254
  """Push ServerApp process outputs."""
253
- log(DEBUG, "DriverServicer.PushServerAppOutputs")
255
+ log(DEBUG, "ServerAppIoServicer.PushServerAppOutputs")
254
256
  state = self.state_factory.state()
255
257
  state.set_serverapp_context(request.run_id, context_from_proto(request.context))
256
258
  return PushServerAppOutputsResponse()
@@ -272,7 +274,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
272
274
  self, request: PushLogsRequest, context: grpc.ServicerContext
273
275
  ) -> PushLogsResponse:
274
276
  """Push logs."""
275
- log(DEBUG, "DriverServicer.PushLogs")
277
+ log(DEBUG, "ServerAppIoServicer.PushLogs")
276
278
  state = self.state_factory.state()
277
279
 
278
280
  # Add logs to LinkState
@@ -284,8 +286,3 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
284
286
  def _raise_if(validation_error: bool, detail: str) -> None:
285
287
  if validation_error:
286
288
  raise ValueError(f"Malformed PushTaskInsRequest: {detail}")
287
-
288
-
289
- def _has_field(message: GrpcMessage, field_name: str) -> bool:
290
- """Check if a certain field is set for the message, including scalar fields."""
291
- return field_name in {fld.name for fld, _ in message.ListFields()}
@@ -30,7 +30,7 @@ from flwr.proto.transport_pb2_grpc import ( # pylint: disable=E0611
30
30
  add_FlowerServiceServicer_to_server,
31
31
  )
32
32
  from flwr.server.client_manager import ClientManager
33
- from flwr.server.superlink.driver.driver_servicer import DriverServicer
33
+ from flwr.server.superlink.driver.serverappio_servicer import ServerAppIoServicer
34
34
  from flwr.server.superlink.fleet.grpc_adapter.grpc_adapter_servicer import (
35
35
  GrpcAdapterServicer,
36
36
  )
@@ -161,7 +161,7 @@ def generic_create_grpc_server( # pylint: disable=too-many-arguments,R0917
161
161
  tuple[FleetServicer, AddServicerToServerFn],
162
162
  tuple[GrpcAdapterServicer, AddServicerToServerFn],
163
163
  tuple[FlowerServiceServicer, AddServicerToServerFn],
164
- tuple[DriverServicer, AddServicerToServerFn],
164
+ tuple[ServerAppIoServicer, AddServicerToServerFn],
165
165
  ],
166
166
  server_address: str,
167
167
  max_concurrent_workers: int = 1000,
@@ -31,7 +31,7 @@ class LinkState(abc.ABC): # pylint: disable=R0904
31
31
  def store_task_ins(self, task_ins: TaskIns) -> Optional[UUID]:
32
32
  """Store one TaskIns.
33
33
 
34
- Usually, the Driver API calls this to schedule instructions.
34
+ Usually, the ServerAppIo API calls this to schedule instructions.
35
35
 
36
36
  Stores the value of the `task_ins` in the link state and, if successful,
37
37
  returns the `task_id` (UUID) of the `task_ins`. If, for any reason,
@@ -102,8 +102,8 @@ class LinkState(abc.ABC): # pylint: disable=R0904
102
102
  def get_task_res(self, task_ids: set[UUID]) -> list[TaskRes]:
103
103
  """Get TaskRes for task_ids.
104
104
 
105
- Usually, the Driver API calls this method to get results for instructions it has
106
- previously scheduled.
105
+ Usually, the ServerAppIo API calls this method to get results for instructions
106
+ it has previously scheduled.
107
107
 
108
108
  Retrieves all TaskRes for the given `task_ids` and returns and empty list of
109
109
  none could be found.
@@ -252,7 +252,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
252
252
  def store_task_ins(self, task_ins: TaskIns) -> Optional[UUID]:
253
253
  """Store one TaskIns.
254
254
 
255
- Usually, the Driver API calls this to schedule instructions.
255
+ Usually, the ServerAppIo API calls this to schedule instructions.
256
256
 
257
257
  Stores the value of the task_ins in the link state and, if successful,
258
258
  returns the task_id (UUID) of the task_ins. If, for any reason, storing
@@ -490,8 +490,8 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
490
490
  def get_task_res(self, task_ids: set[UUID]) -> list[TaskRes]:
491
491
  """Get TaskRes for task_ids.
492
492
 
493
- Usually, the Driver API calls this method to get results for instructions it has
494
- previously scheduled.
493
+ Usually, the ServerAppIo API calls this method to get results for instructions
494
+ it has previously scheduled.
495
495
 
496
496
  Retrieves all TaskRes for the given `task_ids` and returns and empty list if
497
497
  none could be found.
@@ -22,7 +22,7 @@ from typing import Optional
22
22
  from typing_extensions import override
23
23
 
24
24
  from flwr.common import Context, RecordSet
25
- from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS, Status, SubStatus
25
+ from flwr.common.constant import SERVERAPPIO_API_DEFAULT_ADDRESS, Status, SubStatus
26
26
  from flwr.common.logger import log
27
27
  from flwr.common.typing import Fab, RunStatus, UserConfig
28
28
  from flwr.server.superlink.ffs import Ffs
@@ -48,7 +48,7 @@ class DeploymentEngine(Executor):
48
48
 
49
49
  def __init__(
50
50
  self,
51
- superlink: str = DRIVER_API_DEFAULT_ADDRESS,
51
+ superlink: str = SERVERAPPIO_API_DEFAULT_ADDRESS,
52
52
  root_certificates: Optional[str] = None,
53
53
  flwr_dir: Optional[str] = None,
54
54
  ) -> None:
@@ -98,7 +98,7 @@ class DeploymentEngine(Executor):
98
98
  A dictionary for configuration values.
99
99
  Supported configuration key/value pairs:
100
100
  - "superlink": str
101
- The address of the SuperLink Driver API.
101
+ The address of the SuperLink ServerAppIo API.
102
102
  - "root-certificates": str
103
103
  The path to the root certificates.
104
104
  - "flwr-dir": str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241031
3
+ Version: 1.13.0.dev20241102
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -2,10 +2,10 @@ flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
2
2
  flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
3
3
  flwr/cli/app.py,sha256=_HDs7HS12Dp7NXIyVrkPs1SKJq3x-XvVZd6y1lvyud4,1255
4
4
  flwr/cli/build.py,sha256=k2M0aIY2q5WB_yXQ22Woxt1zb6m-Z1wNwmhWMxEm5Dw,6344
5
- flwr/cli/config_utils.py,sha256=U0tYiC4uwT68LzXFpiiu6XzzplEo-43BR_ON9t3aHOw,7956
5
+ flwr/cli/config_utils.py,sha256=Dv5N8NcdHMNMpfxxFWppxP8RehxIe0S0ZX219KphpvU,11460
6
6
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
7
7
  flwr/cli/install.py,sha256=7Dx8zrn49mTktxGOToBhGx8hzsHOViDasMJ43ooKPXc,8646
8
- flwr/cli/log.py,sha256=SaHqtqI0xKRxt25s-ocQkKxhvXoLGkrsnXff3BBFPMI,9003
8
+ flwr/cli/log.py,sha256=WlAuxZdTUYZ5bRKkm0jLWrOxHTS0TlSA5BeDtO9xF3k,6659
9
9
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
10
10
  flwr/cli/new/new.py,sha256=uSiG7aXQzPDnikv2YcjQ86OOLqint0hNWCI0fSQD0jI,9634
11
11
  flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
@@ -61,14 +61,14 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=LUsQsEVhCgGzKEBB5Ie
61
61
  flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=BiZPOKEoGiZOuxSHQY_nQHj3KH7wH7QAiVmpxGutOgk,686
62
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
- flwr/cli/run/run.py,sha256=NMCeDfImxta1VEeBqqkP05xsuBK6YWFTd7Qj_bIEA2Y,8394
64
+ flwr/cli/run/run.py,sha256=FCdETDR3d_Aqw3Bn-oGogiAjOqH87AWLtcwifgJLAcQ,6034
65
65
  flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
66
66
  flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
67
67
  flwr/client/app.py,sha256=fEUTXz_uNwZe-otCbUf5F3sJozGfvkrMNS3u7DE6sOo,32808
68
68
  flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
69
69
  flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
70
70
  flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
71
- flwr/client/clientapp/app.py,sha256=h8Shr3zCJrM6zepuD1ddNxN9rXBjnqohMSSErlHo-ro,7857
71
+ flwr/client/clientapp/app.py,sha256=673TTaTl3r73c1nvRcgQECz8kXqszf_8Aw72SxI0lTg,7856
72
72
  flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
73
73
  flwr/client/clientapp/utils.py,sha256=Xg23Q7g7r9jrxXEbvJ9wXal_uAqYK3mi087u0QER6-I,4343
74
74
  flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
@@ -102,7 +102,7 @@ flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
102
102
  flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
103
103
  flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
104
104
  flwr/common/config.py,sha256=nYA1vjiiqSWx5JjSdlQd1i_0N_Dh9kEGUse1Qze3JMs,7803
105
- flwr/common/constant.py,sha256=jWAHR2SRW_XJQ7ZMumFL54gSlo6Jp_sr1ndI5ebQNnI,4701
105
+ flwr/common/constant.py,sha256=Snw3dfKGXKr_5yxRvoNVlyyXV8i36EK7n0X8QX3zxkA,4706
106
106
  flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
107
107
  flwr/common/date.py,sha256=uTvLmCkd3uVQuD4MviPHnIXMGyheL16mEI_UlOsv_R8,894
108
108
  flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
@@ -110,7 +110,7 @@ flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf
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=F5mfXVuxo0qfYIcWpxTkwkOeyhpUZ7oeDS9CUHxCibg,11045
113
+ flwr/common/logger.py,sha256=AJNu-cymiQUp4Dw1zkw5xww_HVkUAhHvtYxwzUtuohM,11065
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
@@ -133,7 +133,7 @@ flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCM
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
135
  flwr/common/serde.py,sha256=ZNPGTjxmIyRMPskpIy3VVYgjckeix0jzDEc1PtVSgLo,30562
136
- flwr/common/telemetry.py,sha256=PvdlipCPYciqEgmXRwQ1HklP1uyECcNqt9HTBzthmAg,8904
136
+ flwr/common/telemetry.py,sha256=20AYNaePOBaSEh99PIuBrxRxtY53-kZ5-2Ej0JWUJmc,8731
137
137
  flwr/common/typing.py,sha256=fS_KmVdg0c1B87yMnccIPfjBzQ3CTRwYJcaWfmvZzEA,5103
138
138
  flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
139
139
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
@@ -149,10 +149,6 @@ 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=2BEQT2YloRBX1-5Gp_rjKBiUD3SY7sr_ic6y0MGlsRk,4795
153
- flwr/proto/driver_pb2.pyi,sha256=Ib9c32FCtjA9zZY54Ohi6B-DtLgSjokAqOExm_2uOvY,6429
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
152
  flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
157
153
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
158
154
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -193,6 +189,10 @@ flwr/proto/run_pb2.py,sha256=pwel-8Hzsz1Gw2EHGEFKObgSEKQNth7nGZOEsJQO8fM,4940
193
189
  flwr/proto/run_pb2.pyi,sha256=pr7MPml_7gOmBuu7BO-yaU-LexamsJYxnRG-utigVAo,9641
194
190
  flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
195
191
  flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
192
+ flwr/proto/serverappio_pb2.py,sha256=zWnODeaj26oSx98-BFvwtWM_fYvsw9OeSIuV7JnKVvw,4822
193
+ flwr/proto/serverappio_pb2.pyi,sha256=Ib9c32FCtjA9zZY54Ohi6B-DtLgSjokAqOExm_2uOvY,6429
194
+ flwr/proto/serverappio_pb2_grpc.py,sha256=M__pFMmb9yTAGMHVd3_K1V6DeLRuFc9UErJHWjBAsZs,17439
195
+ flwr/proto/serverappio_pb2_grpc.pyi,sha256=ERM-0cQVmUqrVXlvEbS2wfUZpZmv5SlIeNsGZPYMrVo,4779
196
196
  flwr/proto/task_pb2.py,sha256=R5GfHgL8IJRI_qHWNeILl1Y9zHjvB0tnCvMHmTgF4Is,2361
197
197
  flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
198
198
  flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -203,7 +203,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
203
203
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
204
204
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
206
- flwr/server/app.py,sha256=2kuS4TsM0RmfnrST209BkKs7dkI9W3jyP9AMulIeNNE,28204
206
+ flwr/server/app.py,sha256=40_gS289mD1WGv6YuJ_0MSh8ooKQo6A4J0iIJauUbsE,28319
207
207
  flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
208
208
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
209
209
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
@@ -213,16 +213,16 @@ flwr/server/compat/driver_client_proxy.py,sha256=Af0bRUEVZNcCYRxt3DjpLPdvVYpTgz6
213
213
  flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
214
214
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
215
215
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
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
216
+ flwr/server/driver/driver.py,sha256=gHHO8oFkFWYf1J9wn4aKCcnzx7hXsmY_JO5jr004s68,5702
217
+ flwr/server/driver/grpc_driver.py,sha256=ziRzquh1fuC-joaalHKI_zcqm9k1kDpZYDIzGa33TsI,9629
218
+ flwr/server/driver/inmemory_driver.py,sha256=DcWFhV57p2OGgVYIdNlB65_o2lviClk9yVp_4XtdYPg,6458
219
219
  flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
220
- flwr/server/run_serverapp.py,sha256=QAeNzOpZPgHQqhCu2glwMSAE-TSu5Z0IQvldNETKA3w,10497
220
+ flwr/server/run_serverapp.py,sha256=SH_glGu-6OwxKcnm-Nl3m5js5BrTQY-y0dlV2u8_Xjk,10481
221
221
  flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
222
222
  flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
223
223
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
224
224
  flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
225
- flwr/server/serverapp/app.py,sha256=bCCfNmUYME1NQGcX8mNsTiI6WTFNHeXDJ7vHx4nmXtE,8979
225
+ flwr/server/serverapp/app.py,sha256=-OUdiyNjnPwibznlc-1hQ54oUT2EowdPVheXUKCW6LM,8988
226
226
  flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
227
227
  flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
228
228
  flwr/server/strategy/aggregate.py,sha256=iFZ8lp7PV_a2m9kywV-FK0iM33ofxavOs5TIaEQY8nU,13961
@@ -233,7 +233,7 @@ flwr/server/strategy/dpfedavg_adaptive.py,sha256=8_C0H99xztzzKLL_Gu6Pcuiv8yjs3EU
233
233
  flwr/server/strategy/dpfedavg_fixed.py,sha256=DqYeduIgqmqjuJG9X3exoX-3SlPEb4ojCL9tlNMG5_A,7230
234
234
  flwr/server/strategy/fault_tolerant_fedavg.py,sha256=VJkDxEIKycF3Ds-ia0lVVFZKM6_M5lG2EGSaTAUq1wM,5881
235
235
  flwr/server/strategy/fedadagrad.py,sha256=0RwvPdv-mY6UJO16BAMb43NHqq4c4lr5iPAxzi_A8w8,6486
236
- flwr/server/strategy/fedadam.py,sha256=V9FD3sHhOYk6kgrIzRnTG8g5FqsICX6xN8j_1pSHPc8,6744
236
+ flwr/server/strategy/fedadam.py,sha256=4nvTL-FAzb-Hh0YBki8z3bpMDwhFE0mmqsutZ148ovo,7258
237
237
  flwr/server/strategy/fedavg.py,sha256=DIq-41JZ2YiyeWRYYFvDKjLxaDQazuifnQ_A_7rvtww,11780
238
238
  flwr/server/strategy/fedavg_android.py,sha256=fau-Uxxc2ev-8nZsvO_1lp_9690zNlo6m5KFmTCQWd0,9765
239
239
  flwr/server/strategy/fedavgm.py,sha256=FxBfvY5KS7WAan4ad7h39xcLLktHxtEqG-nGTp0sAsM,8113
@@ -249,9 +249,9 @@ flwr/server/strategy/krum.py,sha256=Gct2OdnvZEnCPKMyIC330baOKabpDrKiCfVXIkr4S0c,
249
249
  flwr/server/strategy/qfedavg.py,sha256=2ijNNc2vVODWLAaoYo9PCoaFvlanq0lbJ7I7Albdudg,10131
250
250
  flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbCKtk,7524
251
251
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
252
- flwr/server/superlink/driver/__init__.py,sha256=_JaRW-FdyikHc7souUrnk3mwTGViraEJCeUBY_M_ocs,712
253
- flwr/server/superlink/driver/driver_grpc.py,sha256=melAgaV37Y0B9bZe5bRWQOobItZZ9DIzlcbVE8B01wo,2060
254
- flwr/server/superlink/driver/driver_servicer.py,sha256=n2De3kPaUwR9rFycWbpCp4mQILLshCNu9pUZW80_Ezc,10534
252
+ flwr/server/superlink/driver/__init__.py,sha256=5soEK5QSvxNjmJQ-CGTWROc4alSAeU0e9Ad9RDhsd3E,717
253
+ flwr/server/superlink/driver/serverappio_grpc.py,sha256=oTogZLkfeThKdx9Q_bw6OMGHnLIryxQOHxbWi0qgaRM,2185
254
+ flwr/server/superlink/driver/serverappio_servicer.py,sha256=hCl1ZF4VfZdw-_Iot2pRr0HXzrzJdRB61kfk8ItY_4o,10387
255
255
  flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
256
256
  flwr/server/superlink/ffs/disk_ffs.py,sha256=yCN6CCzegnJIOaHr5nIu49wZQa4g5BByiSKshz50RKU,3296
257
257
  flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
@@ -263,7 +263,7 @@ flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dkSKQMuMTYh1qSnuN87cAPv
263
263
  flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=xbvorZhCHBj0CvFWB7oUeHoY0o750hUkiS0DiTCGHDs,6020
264
264
  flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=JkAH_nIZaqe_9kntrg26od_jaz5XdLFuvNMgGu8xk9Q,6485
265
265
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4EjOXH5birmAnMoCBJcP7jpHYCnHZPk,4887
266
- flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=R_479Hz2Drahu1BBOFzkZWwjY9H_7nXnM6HJJeEsibQ,12439
266
+ flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=X4I2rd1ZC9fqjOg9uwdTydLxJ3JiWthkIAqb3wEv17g,12454
267
267
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
268
268
  flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=JuNdT6hs4iRtuToV6vkEuftCE_LgSipBPeRAJLWnJKw,4783
269
269
  flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=iZlgW7L5oVG_0pFkj1C46u8a1sLWiQhw9FpeyYt5Gf8,8169
@@ -278,9 +278,9 @@ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DP
278
278
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=VL6e_Jwf4uxA-X1EelxJZMv6Eji-_p2J9D0MdHG10a4,13029
279
279
  flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
280
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
281
+ flwr/server/superlink/linkstate/linkstate.py,sha256=-pt8U2cpL42TEiyLHxuLq8zTR1vpXdT9l-BsN8rGnFs,11438
282
282
  flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
283
- flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=Yda1uPiRkEmH7HDNwVtQnpzVjDAkGCJePutkjeyYyT4,43188
283
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=ZyxfBhvv8kAW55JiyboHOWAND0BWoPJdo2XGPXxuTHc,43198
284
284
  flwr/server/superlink/linkstate/utils.py,sha256=ukrMlSv0mNFd0YSpyPDpq_ND90SBkwuKgw3FFux3lqs,6914
285
285
  flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
286
286
  flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
@@ -301,13 +301,13 @@ flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUq
301
301
  flwr/simulation/run_simulation.py,sha256=3n1nSik8tTC6LCYVZesNkHuXDQ1Ea4unTnNEOC5rdAc,23436
302
302
  flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
303
303
  flwr/superexec/app.py,sha256=Tt3GonnTwHrMmicwx9XaP-crP78-bf4DUWl-N5cG6zY,1841
304
- flwr/superexec/deployment.py,sha256=jWEA8lnTYpOf8EHMzmoF9x6I_qh_gyJGQCVxk-DJshY,6401
304
+ flwr/superexec/deployment.py,sha256=SVOAfJlCqDmA6TkDCusffjLxhHWoy5_y8mGIPjm1Bo0,6416
305
305
  flwr/superexec/exec_grpc.py,sha256=OuhBAk7hiky9rjGceinLGIXqchtzGPQThZnwyYv6Ei0,2241
306
306
  flwr/superexec/exec_servicer.py,sha256=6dUCijBYhrntZeQj82q2kVOUNFu_tsFOwT5HkkLYn9Q,3927
307
307
  flwr/superexec/executor.py,sha256=QA2_hQJxmN3zc75oEkDs-zkWAHesz59jE0P5lem-5VU,3073
308
308
  flwr/superexec/simulation.py,sha256=Ny3MJnNlgzW4K3NbgsgDM0LKKcoCd_q3LqNqb0GhWLI,7640
309
- flwr_nightly-1.13.0.dev20241031.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
310
- flwr_nightly-1.13.0.dev20241031.dist-info/METADATA,sha256=8vr7tIziR5flW7pgztci7QDIaow__IRpgwE3SGlBJEg,15618
311
- flwr_nightly-1.13.0.dev20241031.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
312
- flwr_nightly-1.13.0.dev20241031.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
313
- flwr_nightly-1.13.0.dev20241031.dist-info/RECORD,,
309
+ flwr_nightly-1.13.0.dev20241102.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
310
+ flwr_nightly-1.13.0.dev20241102.dist-info/METADATA,sha256=-vTeYKkZYT6YsxiwhOSWlvvxQ2IxaH9uMGjJ4-nz6bg,15618
311
+ flwr_nightly-1.13.0.dev20241102.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
312
+ flwr_nightly-1.13.0.dev20241102.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
313
+ flwr_nightly-1.13.0.dev20241102.dist-info/RECORD,,