flwr-nightly 1.11.0.dev20240813__py3-none-any.whl → 1.11.0.dev20240821__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 (58) hide show
  1. flwr/cli/config_utils.py +2 -2
  2. flwr/cli/install.py +3 -1
  3. flwr/cli/run/run.py +15 -11
  4. flwr/client/app.py +132 -14
  5. flwr/client/clientapp/__init__.py +22 -0
  6. flwr/client/clientapp/app.py +233 -0
  7. flwr/client/clientapp/clientappio_servicer.py +244 -0
  8. flwr/client/clientapp/utils.py +108 -0
  9. flwr/client/grpc_rere_client/connection.py +9 -1
  10. flwr/client/node_state.py +17 -4
  11. flwr/client/rest_client/connection.py +16 -3
  12. flwr/client/supernode/__init__.py +0 -2
  13. flwr/client/supernode/app.py +37 -122
  14. flwr/common/__init__.py +4 -0
  15. flwr/common/config.py +31 -10
  16. flwr/common/record/configsrecord.py +49 -15
  17. flwr/common/record/metricsrecord.py +54 -14
  18. flwr/common/record/parametersrecord.py +84 -17
  19. flwr/common/record/recordset.py +80 -8
  20. flwr/common/record/typeddict.py +20 -58
  21. flwr/common/recordset_compat.py +6 -6
  22. flwr/common/serde.py +24 -2
  23. flwr/common/typing.py +1 -0
  24. flwr/proto/clientappio_pb2.py +17 -13
  25. flwr/proto/clientappio_pb2.pyi +24 -2
  26. flwr/proto/clientappio_pb2_grpc.py +34 -0
  27. flwr/proto/clientappio_pb2_grpc.pyi +13 -0
  28. flwr/proto/exec_pb2.py +16 -15
  29. flwr/proto/exec_pb2.pyi +7 -4
  30. flwr/proto/message_pb2.py +2 -2
  31. flwr/proto/message_pb2.pyi +4 -1
  32. flwr/server/app.py +15 -0
  33. flwr/server/driver/grpc_driver.py +1 -0
  34. flwr/server/run_serverapp.py +18 -2
  35. flwr/server/server.py +3 -1
  36. flwr/server/superlink/driver/driver_grpc.py +3 -0
  37. flwr/server/superlink/driver/driver_servicer.py +32 -4
  38. flwr/server/superlink/ffs/disk_ffs.py +6 -3
  39. flwr/server/superlink/ffs/ffs.py +3 -3
  40. flwr/server/superlink/ffs/ffs_factory.py +47 -0
  41. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +12 -4
  42. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +8 -2
  43. flwr/server/superlink/fleet/message_handler/message_handler.py +16 -1
  44. flwr/server/superlink/fleet/vce/backend/raybackend.py +5 -2
  45. flwr/server/superlink/fleet/vce/vce_api.py +2 -2
  46. flwr/server/superlink/state/in_memory_state.py +7 -5
  47. flwr/server/superlink/state/sqlite_state.py +17 -7
  48. flwr/server/superlink/state/state.py +4 -3
  49. flwr/server/workflow/default_workflows.py +3 -1
  50. flwr/simulation/run_simulation.py +5 -67
  51. flwr/superexec/app.py +3 -3
  52. flwr/superexec/deployment.py +8 -9
  53. flwr/superexec/exec_servicer.py +1 -1
  54. {flwr_nightly-1.11.0.dev20240813.dist-info → flwr_nightly-1.11.0.dev20240821.dist-info}/METADATA +2 -2
  55. {flwr_nightly-1.11.0.dev20240813.dist-info → flwr_nightly-1.11.0.dev20240821.dist-info}/RECORD +58 -53
  56. {flwr_nightly-1.11.0.dev20240813.dist-info → flwr_nightly-1.11.0.dev20240821.dist-info}/entry_points.txt +1 -1
  57. {flwr_nightly-1.11.0.dev20240813.dist-info → flwr_nightly-1.11.0.dev20240821.dist-info}/LICENSE +0 -0
  58. {flwr_nightly-1.11.0.dev20240813.dist-info → flwr_nightly-1.11.0.dev20240821.dist-info}/WHEEL +0 -0
@@ -65,6 +65,7 @@ CREATE TABLE IF NOT EXISTS run(
65
65
  run_id INTEGER UNIQUE,
66
66
  fab_id TEXT,
67
67
  fab_version TEXT,
68
+ fab_hash TEXT,
68
69
  override_config TEXT
69
70
  );
70
71
  """
@@ -617,8 +618,9 @@ class SqliteState(State): # pylint: disable=R0904
617
618
 
618
619
  def create_run(
619
620
  self,
620
- fab_id: str,
621
- fab_version: str,
621
+ fab_id: Optional[str],
622
+ fab_version: Optional[str],
623
+ fab_hash: Optional[str],
622
624
  override_config: UserConfig,
623
625
  ) -> int:
624
626
  """Create a new run for the specified `fab_id` and `fab_version`."""
@@ -630,12 +632,19 @@ class SqliteState(State): # pylint: disable=R0904
630
632
  # If run_id does not exist
631
633
  if self.query(query, (run_id,))[0]["COUNT(*)"] == 0:
632
634
  query = (
633
- "INSERT INTO run (run_id, fab_id, fab_version, override_config)"
634
- "VALUES (?, ?, ?, ?);"
635
- )
636
- self.query(
637
- query, (run_id, fab_id, fab_version, json.dumps(override_config))
635
+ "INSERT INTO run "
636
+ "(run_id, fab_id, fab_version, fab_hash, override_config)"
637
+ "VALUES (?, ?, ?, ?, ?);"
638
638
  )
639
+ if fab_hash:
640
+ self.query(
641
+ query, (run_id, "", "", fab_hash, json.dumps(override_config))
642
+ )
643
+ else:
644
+ self.query(
645
+ query,
646
+ (run_id, fab_id, fab_version, "", json.dumps(override_config)),
647
+ )
639
648
  return run_id
640
649
  log(ERROR, "Unexpected run creation failure.")
641
650
  return 0
@@ -702,6 +711,7 @@ class SqliteState(State): # pylint: disable=R0904
702
711
  run_id=run_id,
703
712
  fab_id=row["fab_id"],
704
713
  fab_version=row["fab_version"],
714
+ fab_hash=row["fab_hash"],
705
715
  override_config=json.loads(row["override_config"]),
706
716
  )
707
717
  except sqlite3.IntegrityError:
@@ -159,11 +159,12 @@ class State(abc.ABC): # pylint: disable=R0904
159
159
  @abc.abstractmethod
160
160
  def create_run(
161
161
  self,
162
- fab_id: str,
163
- fab_version: str,
162
+ fab_id: Optional[str],
163
+ fab_version: Optional[str],
164
+ fab_hash: Optional[str],
164
165
  override_config: UserConfig,
165
166
  ) -> int:
166
- """Create a new run for the specified `fab_id` and `fab_version`."""
167
+ """Create a new run for the specified `fab_hash`."""
167
168
 
168
169
  @abc.abstractmethod
169
170
  def get_run(self, run_id: int) -> Optional[Run]:
@@ -167,7 +167,7 @@ def default_init_params_workflow(driver: Driver, context: Context) -> None:
167
167
  context.state.parameters_records[MAIN_PARAMS_RECORD] = paramsrecord
168
168
 
169
169
  # Evaluate initial parameters
170
- log(INFO, "Evaluating initial global parameters")
170
+ log(INFO, "Starting evaluation of initial global parameters")
171
171
  parameters = compat.parametersrecord_to_parameters(paramsrecord, keep_input=True)
172
172
  res = context.strategy.evaluate(0, parameters=parameters)
173
173
  if res is not None:
@@ -179,6 +179,8 @@ def default_init_params_workflow(driver: Driver, context: Context) -> None:
179
179
  )
180
180
  context.history.add_loss_centralized(server_round=0, loss=res[0])
181
181
  context.history.add_metrics_centralized(server_round=0, metrics=res[1])
182
+ else:
183
+ log(INFO, "Evaluation returned no results (`None`)")
182
184
 
183
185
 
184
186
  def default_centralized_evaluation_workflow(_: Driver, context: Context) -> None:
@@ -163,6 +163,7 @@ def run_simulation_from_cli() -> None:
163
163
  run_id=run_id,
164
164
  fab_id="",
165
165
  fab_version="",
166
+ fab_hash="",
166
167
  override_config=override_config,
167
168
  )
168
169
 
@@ -424,72 +425,7 @@ def _run_simulation(
424
425
  verbose_logging: bool = False,
425
426
  is_app: bool = False,
426
427
  ) -> None:
427
- r"""Launch the Simulation Engine.
428
-
429
- Parameters
430
- ----------
431
- num_supernodes : int
432
- Number of nodes that run a ClientApp. They can be sampled by a
433
- Driver in the ServerApp and receive a Message describing what the ClientApp
434
- should perform.
435
-
436
- client_app : Optional[ClientApp]
437
- The `ClientApp` to be executed by each of the `SuperNodes`. It will receive
438
- messages sent by the `ServerApp`.
439
-
440
- server_app : Optional[ServerApp]
441
- The `ServerApp` to be executed.
442
-
443
- backend_name : str (default: ray)
444
- A simulation backend that runs `ClientApp`s.
445
-
446
- backend_config : Optional[BackendConfig]
447
- 'A dictionary to configure a backend. Separate dictionaries to configure
448
- different elements of backend. Supported top-level keys are `init_args`
449
- for values parsed to initialisation of backend, `client_resources`
450
- to define the resources for clients, and `actor` to define the actor
451
- parameters. Values supported in <value> are those included by
452
- `flwr.common.typing.ConfigsRecordValues`.
453
-
454
- client_app_attr : Optional[str]
455
- A path to a `ClientApp` module to be loaded: For example: `client:app` or
456
- `project.package.module:wrapper.app`."
457
-
458
- server_app_attr : Optional[str]
459
- A path to a `ServerApp` module to be loaded: For example: `server:app` or
460
- `project.package.module:wrapper.app`."
461
-
462
- server_app_run_config : Optional[UserConfig]
463
- Config dictionary that parameterizes the run config. It will be made accesible
464
- to the ServerApp.
465
-
466
- app_dir : str
467
- Add specified directory to the PYTHONPATH and load `ClientApp` from there.
468
- (Default: current working directory.)
469
-
470
- flwr_dir : Optional[str]
471
- The path containing installed Flower Apps.
472
-
473
- run : Optional[Run]
474
- An object carrying details about the run.
475
-
476
- enable_tf_gpu_growth : bool (default: False)
477
- A boolean to indicate whether to enable GPU growth on the main thread. This is
478
- desirable if you make use of a TensorFlow model on your `ServerApp` while
479
- having your `ClientApp` running on the same GPU. Without enabling this, you
480
- might encounter an out-of-memory error because TensorFlow by default allocates
481
- all GPU memory. Read mor about how `tf.config.experimental.set_memory_growth()`
482
- works in the TensorFlow documentation: https://www.tensorflow.org/api/stable.
483
-
484
- verbose_logging : bool (default: False)
485
- When disabled, only INFO, WARNING and ERROR log messages will be shown. If
486
- enabled, DEBUG-level logs will be displayed.
487
-
488
- is_app : bool (default: False)
489
- A flag that indicates whether the simulation is running an app or not. This is
490
- needed in order to attempt loading an app's pyproject.toml when nodes register
491
- a context object.
492
- """
428
+ """Launch the Simulation Engine."""
493
429
  if backend_config is None:
494
430
  backend_config = {}
495
431
 
@@ -529,7 +465,9 @@ def _run_simulation(
529
465
  # If no `Run` object is set, create one
530
466
  if run is None:
531
467
  run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES)
532
- run = Run(run_id=run_id, fab_id="", fab_version="", override_config={})
468
+ run = Run(
469
+ run_id=run_id, fab_id="", fab_version="", fab_hash="", override_config={}
470
+ )
533
471
 
534
472
  args = (
535
473
  num_supernodes,
flwr/superexec/app.py CHANGED
@@ -93,9 +93,9 @@ def _parse_args_run_superexec() -> argparse.ArgumentParser:
93
93
  )
94
94
  parser.add_argument(
95
95
  "--executor-config",
96
- help="Key-value pairs for the executor config, separated by commas. "
97
- 'For example:\n\n`--executor-config superlink="superlink:9091",'
98
- 'root-certificates="certificates/superlink-ca.crt"`',
96
+ help="Key-value pairs for the executor config, separated by spaces. "
97
+ 'For example:\n\n`--executor-config \'superlink="superlink:9091" '
98
+ 'root-certificates="certificates/superlink-ca.crt"\'`',
99
99
  )
100
100
  parser.add_argument(
101
101
  "--insecure",
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Deployment engine executor."""
16
16
 
17
+ import hashlib
17
18
  import subprocess
18
19
  from logging import ERROR, INFO
19
20
  from pathlib import Path
@@ -21,12 +22,11 @@ from typing import Optional
21
22
 
22
23
  from typing_extensions import override
23
24
 
24
- from flwr.cli.config_utils import get_fab_metadata
25
25
  from flwr.cli.install import install_from_fab
26
26
  from flwr.common.grpc import create_channel
27
27
  from flwr.common.logger import log
28
- from flwr.common.serde import user_config_to_proto
29
- from flwr.common.typing import UserConfig
28
+ from flwr.common.serde import fab_to_proto, user_config_to_proto
29
+ from flwr.common.typing import Fab, UserConfig
30
30
  from flwr.proto.driver_pb2 import CreateRunRequest # pylint: disable=E0611
31
31
  from flwr.proto.driver_pb2_grpc import DriverStub
32
32
  from flwr.server.driver.grpc_driver import DEFAULT_SERVER_ADDRESS_DRIVER
@@ -113,8 +113,7 @@ class DeploymentEngine(Executor):
113
113
 
114
114
  def _create_run(
115
115
  self,
116
- fab_id: str,
117
- fab_version: str,
116
+ fab: Fab,
118
117
  override_config: UserConfig,
119
118
  ) -> int:
120
119
  if self.stub is None:
@@ -123,8 +122,7 @@ class DeploymentEngine(Executor):
123
122
  assert self.stub is not None
124
123
 
125
124
  req = CreateRunRequest(
126
- fab_id=fab_id,
127
- fab_version=fab_version,
125
+ fab=fab_to_proto(fab),
128
126
  override_config=user_config_to_proto(override_config),
129
127
  )
130
128
  res = self.stub.CreateRun(request=req)
@@ -140,11 +138,12 @@ class DeploymentEngine(Executor):
140
138
  """Start run using the Flower Deployment Engine."""
141
139
  try:
142
140
  # Install FAB to flwr dir
143
- fab_version, fab_id = get_fab_metadata(fab_file)
144
141
  install_from_fab(fab_file, None, True)
145
142
 
146
143
  # Call SuperLink to create run
147
- run_id: int = self._create_run(fab_id, fab_version, override_config)
144
+ run_id: int = self._create_run(
145
+ Fab(hashlib.sha256(fab_file).hexdigest(), fab_file), override_config
146
+ )
148
147
  log(INFO, "Created run %s", str(run_id))
149
148
 
150
149
  command = [
@@ -47,7 +47,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
47
47
  log(INFO, "ExecServicer.StartRun")
48
48
 
49
49
  run = self.executor.start_run(
50
- request.fab_file,
50
+ request.fab.content,
51
51
  user_config_from_proto(request.override_config),
52
52
  user_config_from_proto(request.federation_config),
53
53
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.11.0.dev20240813
3
+ Version: 1.11.0.dev20240821
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -212,7 +212,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
212
212
  Flower is built by a wonderful community of researchers and engineers. [Join Slack](https://flower.ai/join-slack) to meet them, [contributions](#contributing-to-flower) are welcome.
213
213
 
214
214
  <a href="https://github.com/adap/flower/graphs/contributors">
215
- <img src="https://contrib.rocks/image?repo=adap/flower" />
215
+ <img src="https://contrib.rocks/image?repo=adap/flower&columns=10" />
216
216
  </a>
217
217
 
218
218
  ## Citation
@@ -2,9 +2,9 @@ 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=FBcSrE35ll88VE11ib67qgsJe2GYDN25UswV9-cYcX8,1267
4
4
  flwr/cli/build.py,sha256=gIR-nTgmLJY5ZtJFLN5ebFBCN3_hoqaioFT77AHojNU,5159
5
- flwr/cli/config_utils.py,sha256=WK6ywT-mHt2iMG90bspkSGMewv8jXh7yQPVdcPuT2JE,7540
5
+ flwr/cli/config_utils.py,sha256=mDGXbcIxG14UpkUplILBYUkSk5M1LeTzZYDGNx-pFpU,7540
6
6
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
7
- flwr/cli/install.py,sha256=AI6Zv2dQVDHpLDX1Z_vX5XHVxmZo1OU3ndCSrD2stzQ,7059
7
+ flwr/cli/install.py,sha256=tUncrbZYRbC9QEcWSeTER16plPEoU-ERP0-nMgWiSPo,7094
8
8
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
9
9
  flwr/cli/new/new.py,sha256=VNb31-NLedm-_OK_D0aed0QxHO-tVlXjnf9UWVhC_Jk,9612
10
10
  flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
@@ -50,12 +50,16 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=vIO1ArukTC76ogYLNmJ
50
50
  flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=jk_5teoyOVM9QdBea8J-nk10S6TKw81QZiiKB54ATF0,654
51
51
  flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=bRIvPCPvTTI4Eo5b61Rmw8WdDw3sjcohciTXgULN5l8,702
52
52
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
53
- flwr/cli/run/run.py,sha256=te6J1HxOOzyC47HMIrvbh-_4xVEGM1x_yXLIhlCBkb8,7521
53
+ flwr/cli/run/run.py,sha256=8SoZsow349rC4KC6bfm4uV7NakqWiZahrqvd1Yb-lt0,7653
54
54
  flwr/cli/utils.py,sha256=l65Ul0YsSBPuypk0uorAtEDmLEYiUrzpCXi6zCg9mJ4,4506
55
55
  flwr/client/__init__.py,sha256=wzJZsYJIHf_8-PMzvfbinyzzjgh1UP1vLrAw2_yEbKI,1345
56
- flwr/client/app.py,sha256=ZeAl3pKGAFSRtH8WpICCZVgy9ESAo7_8R5GdP3tCXQA,26166
56
+ flwr/client/app.py,sha256=o_2bhmlBeZATtWnAPZhL-Q1Ly0QZxc9ou4i7t0HKumE,31956
57
57
  flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
58
58
  flwr/client/client_app.py,sha256=WcO4r6wrdfaus__3s22D2sYjfcptdgmVujUAYdNE6HU,10393
59
+ flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
60
+ flwr/client/clientapp/app.py,sha256=4QtblvJsZ0-V-QBbzyNqWV13ugrgJmkZnsHpBCuqgi8,7797
61
+ flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
62
+ flwr/client/clientapp/utils.py,sha256=2fYKY1LfZPalG5Cm5FbSuNMIDtouQg17GbrzPINyM_A,3990
59
63
  flwr/client/dpfedavg_numpy_client.py,sha256=ylZ-LpBIKmL1HCiS8kq4pkp2QGalc8rYEzDHdRG3VRQ,7435
60
64
  flwr/client/grpc_adapter_client/__init__.py,sha256=QyNWIbsq9DpyMk7oemiO1P3TBFfkfkctnJ1JoAkTl3s,742
61
65
  flwr/client/grpc_adapter_client/connection.py,sha256=aOlCYasl8f2CrfcN-WrVEmvjAZFfEGWFOLwD6K9R0ZQ,3951
@@ -63,7 +67,7 @@ flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1
63
67
  flwr/client/grpc_client/connection.py,sha256=czhRm23fwTgjN24Vf5nyNQ3hcb5Fo_5k-o9yZnelQCs,9362
64
68
  flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
65
69
  flwr/client/grpc_rere_client/client_interceptor.py,sha256=sYPEznuQPdy2BPDlvM9FK0ZRRucb4NfwUee1Z_mN82E,4954
66
- flwr/client/grpc_rere_client/connection.py,sha256=5n8AknkYAx3q6zuYXY3UqoatP2gQyw8v6rjBr93ee0c,10541
70
+ flwr/client/grpc_rere_client/connection.py,sha256=aiIWW9fVgJZNeZ9SjUAx5ax-3825JrjYc5E5l7XvzyM,10913
67
71
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=Pw7Toi4wCUIEdBMyv4yKirjgW6814gFhhAmsTYmV4IM,5005
68
72
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
69
73
  flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
@@ -77,17 +81,17 @@ flwr/client/mod/secure_aggregation/__init__.py,sha256=A7DzZ3uvXTUkuHBzrxJMWQQD4R
77
81
  flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=wI9tuIEvMUETz-wVIEbPYvh-1nK9CEylBLGoVpNhL94,1095
78
82
  flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=fZTfIELkYS64lpgxQKL66s-QHjCn-159qfLoNoIMJjc,19699
79
83
  flwr/client/mod/utils.py,sha256=UAJXiB0wwVyLkCkpW_i5BXikdBR65p8sNFr7VNHm2nk,1226
80
- flwr/client/node_state.py,sha256=Z0ZUPL5BWde9nfAPwR7cSV9YiNQeiEHbuMKDxqpy6-M,3492
84
+ flwr/client/node_state.py,sha256=ETr9XmMJ9irFT3shCM4Hv4JWN0ewV-e0S-CFwCh80B8,3953
81
85
  flwr/client/node_state_tests.py,sha256=-4fVsn7y-z9NYBuhq-cjepgxgVuPqqQgDOL4SofrdIo,2239
82
86
  flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,10283
83
87
  flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
84
- flwr/client/rest_client/connection.py,sha256=N9D1YCTy6Jk8MLWDGFWTE261_EEgIfzw4rjXD8k3JS4,12350
85
- flwr/client/supernode/__init__.py,sha256=8JuFMx5B06SymNWZ9ndvUimD0mopq0Yp2RdQaUANsw8,937
86
- flwr/client/supernode/app.py,sha256=mbSs612GCpRsv6xIi_TD_V2Gi7aYBdpo_e4nKs8kAvI,15910
88
+ flwr/client/rest_client/connection.py,sha256=SglZC4jpqc_0-VBo9cBHa1_2RO9TfPUULQ49DnYeFS0,12767
89
+ flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
90
+ flwr/client/supernode/app.py,sha256=-Gnjb8g93Kb5lC_NWXTfhdLNH5XI-guJXd9u6avJ7S4,13101
87
91
  flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
88
- flwr/common/__init__.py,sha256=4cBLNNnNTwHDnL_HCxhU5ILCSZ6fYh3A_aMBtlvHTVw,3721
92
+ flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
89
93
  flwr/common/address.py,sha256=wRu1Luezx1PWadwV9OA_KNko01oVvbRnPqfzaDn8QOk,1882
90
- flwr/common/config.py,sha256=soJEX0bo3gcKpYlZBzu4NGiNVmwF0tEvqSnwWQsu3pw,6548
94
+ flwr/common/config.py,sha256=GN-eKrCuyypLMFgr1kO2d-mwiNNphaFt30UlfbaKJFk,7435
91
95
  flwr/common/constant.py,sha256=1XxuRezsr9fl3xvQNPR2kyFkwNeG_f5vZayv0PFh0kY,3012
92
96
  flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
93
97
  flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
@@ -102,13 +106,13 @@ flwr/common/object_ref.py,sha256=qXwF441qulzl18pggrj9LDLtz92K83xjAuSA0HfPKP0,872
102
106
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
103
107
  flwr/common/pyproject.py,sha256=EI_ovbCHGmhYrdPx0RSDi5EkFZFof-8m1PA54c0ZTjc,1385
104
108
  flwr/common/record/__init__.py,sha256=ejDBQOIA0OkwZAC5cK_tTPHA4oAM0Ju7Oi13-NneMlE,1054
105
- flwr/common/record/configsrecord.py,sha256=VKeFEYa6cneyStqQlUOaKj12by5ZI_NXYR25LOEVeo8,4652
109
+ flwr/common/record/configsrecord.py,sha256=6nIpGaeB_o8SvjMfD_iehJC1efAHgWyaeGfLDJGOWW4,6273
106
110
  flwr/common/record/conversion_utils.py,sha256=n3I3SI2P6hUjyxbWNc0QAch-SEhfMK6Hm-UUaplAlUc,1393
107
- flwr/common/record/metricsrecord.py,sha256=Yv99oRa3LzFgSfwl903S8sB8rAgr3Sv6i6ovW7pdHsA,3923
108
- flwr/common/record/parametersrecord.py,sha256=2sgjxsolFBUfnYYstIciOir0HAs95lqWY3pdcsYvsso,4838
109
- flwr/common/record/recordset.py,sha256=wOonAziLalABXzCHF5ih-QzXsKXZAKCls3HhMFJCWkY,5056
110
- flwr/common/record/typeddict.py,sha256=2NW8JF27p1uNWaqDbJ7bMkItA5x4ygYT8aHrf8NaqnE,3879
111
- flwr/common/recordset_compat.py,sha256=SYuJJmsfsWUP60nXREviyl78nOojKfMekALjzeZLsP8,14009
111
+ flwr/common/record/metricsrecord.py,sha256=aTuw0gWjRaZhekf76zg0h0rES3iEnTIGPZ7-jN2PYO4,5764
112
+ flwr/common/record/parametersrecord.py,sha256=mOcERCUylgWLQ-hISYmOHXlt-Qohv8YtPnJdLO0Kr8U,7730
113
+ flwr/common/record/recordset.py,sha256=6-a6EYN2YlH0H62jymJcHGVFBB8gJo69U2lvWyAv60A,8314
114
+ flwr/common/record/typeddict.py,sha256=M9zU1vjuPmKRxA0uiP2v752TB3D2VfrJzKNWx-EFviw,3016
115
+ flwr/common/recordset_compat.py,sha256=5prvfx8mT4ZWIEU4Gmz2wzCbO4yPjQ3ONr20uKt3UM0,13973
112
116
  flwr/common/retry_invoker.py,sha256=dQY5fPIKhy9OiFswZhLxA9fB455u-DYCvDVcFJmrPDk,11707
113
117
  flwr/common/secure_aggregation/__init__.py,sha256=erPnTWdOfMH0K0HQTmj5foDJ6t3iYcExy2aACy8iZNQ,731
114
118
  flwr/common/secure_aggregation/crypto/__init__.py,sha256=nlHesCWy8xxE5s6qHWnauCtyClcMQ2K0CEXAHakY5n0,738
@@ -118,15 +122,15 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=7Y0WnWcYi8UWZEKnUb4
118
122
  flwr/common/secure_aggregation/quantization.py,sha256=1obYr9qneaI8r-A0F_pghrPNG9FcAwM5svSLbzMw6C4,2310
119
123
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
120
124
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=3VssKgYF7HQIkSpROnEUoYWVt47p12PE_Rj4nYqqg04,3221
121
- flwr/common/serde.py,sha256=VgfTKU4B0g7qJkOf7w8uaHlVysEd_NrwzQCNDfkfRHU,28466
125
+ flwr/common/serde.py,sha256=SIKZa-TNCSWVtqx8L3aUkylN6gxK-IwXlgoukiYwYyc,29209
122
126
  flwr/common/telemetry.py,sha256=nSjJHDitPhzB2qUl6LeSMT9Zld5lIk9uW98RpxQwiZw,8366
123
- flwr/common/typing.py,sha256=VJvdhrVxu6a1y2lgZSjHdSgYqXQ6Cma4t_owI3EhOes,4986
127
+ flwr/common/typing.py,sha256=rGabiSkjFvGIHwmhDqtuu-LBvz7LVSj1vyMlNtA7VA0,5004
124
128
  flwr/common/version.py,sha256=W1ntylR04xkCP6zeSet6sRtBn7P1cje2lOqBJgYBjJY,1349
125
129
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
126
- flwr/proto/clientappio_pb2.py,sha256=018Lj2HBXmEeq6KsmqFVVx2DGO2nDQqTA6YHEPjCTbc,3242
127
- flwr/proto/clientappio_pb2.pyi,sha256=M0-zbx5cNMUtGY7orsSQWwXo5EbN0CvwQPTuQFwXaCg,4855
128
- flwr/proto/clientappio_pb2_grpc.py,sha256=7WjUVfUUKctIloX3bkKjDprhtkqj2d9Xj3UlYxKzp1s,4513
129
- flwr/proto/clientappio_pb2_grpc.pyi,sha256=30X6jhMIjy5w3iZsDCBGDDwNwj3vj3RslZVWkRvzTn0,1413
130
+ flwr/proto/clientappio_pb2.py,sha256=3qT-IbcGPFGh9WKpa9ZRKCYzUtwrDf-ziEY9uBhd_gU,3703
131
+ flwr/proto/clientappio_pb2.pyi,sha256=iL6pOPmnot5wP3aXGiDfiUpp-eJIkysyju0ebPehS8Y,5670
132
+ flwr/proto/clientappio_pb2_grpc.py,sha256=G35GhZ3iEOL8N6tu7Kn_ip4QUx4O2HveXngHAuU2YEM,6112
133
+ flwr/proto/clientappio_pb2_grpc.pyi,sha256=cybktpMPaIMwrItd8hQaQDnRv4zNu_wgRddSqR9REyI,1822
130
134
  flwr/proto/common_pb2.py,sha256=uzSmq0FJdC-MriN9UGPFs7QVIFTKJmX5lyLnzcyZ5WE,2405
131
135
  flwr/proto/common_pb2.pyi,sha256=0ylFO7G79qqLuRg9IQUCBdgyIIFv4m8VzrfoWad4xXU,5394
132
136
  flwr/proto/common_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -139,8 +143,8 @@ flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
139
143
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
140
144
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
141
145
  flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
142
- flwr/proto/exec_pb2.py,sha256=7b1JUZgt04lBxdXpnd3WOOwmY2egUausm4G1wbmXFPs,3120
143
- flwr/proto/exec_pb2.pyi,sha256=R9xCAUxkLvuXcvQfhNGZ5Qy8qiUCdjN-gp3Iy5BmkNo,4110
146
+ flwr/proto/exec_pb2.py,sha256=iqAvJ03atrueo5duiRHD_peegJiLsrWuNnVU8lA2PXw,3231
147
+ flwr/proto/exec_pb2.pyi,sha256=5y6L3xFkAuCfLTn2pVIHQAlXp17YcTTq8WVDS7_MPl4,4273
144
148
  flwr/proto/exec_pb2_grpc.py,sha256=faAN19XEMP8GTKrcIU6jvlWkN44n2KiUsZh_OG0sYcg,4072
145
149
  flwr/proto/exec_pb2_grpc.pyi,sha256=VrFhT1Um3Nb8UC2YqnR9GIiM-Yyx0FqaxVOWljh-G_w,1208
146
150
  flwr/proto/fab_pb2.py,sha256=ztC3HnD5e-bYpp7lxrlxkdc30haAlBHswTnt4X5G1eg,1432
@@ -155,8 +159,8 @@ flwr/proto/grpcadapter_pb2.py,sha256=bb8mW09XzNCpMdr1KuYQkefPFWR8lc8y1uL6Uk0TtsM
155
159
  flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
156
160
  flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
157
161
  flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=AgA9Qo_lnANb9SNuPzbZGAxupau-xcqYawZz6vqf-24,735
158
- flwr/proto/message_pb2.py,sha256=7sP1PEOoZnfynNcM_KmlHn2bFM8eZpHYJbzkCSoAT2E,3110
159
- flwr/proto/message_pb2.pyi,sha256=0IF_l1-fgQOs2uBNqu6PszzfulRQppdUIvDA-T6XeJ8,5475
162
+ flwr/proto/message_pb2.py,sha256=6fiapmq94u3T9wqW7tGsWVuyLanW31VAg0-rD2Hfk8U,3151
163
+ flwr/proto/message_pb2.pyi,sha256=_J9NjZa7Pr-kSO7-GGOL5EvIXQx5mQD04iVIvnVHBMU,5617
160
164
  flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
161
165
  flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
162
166
  flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
@@ -181,7 +185,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
181
185
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
182
186
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
187
  flwr/server/__init__.py,sha256=BxzPhvouvWFGi7CFpI5b4EeVR9XDqbK7Ndqg24EL_Rw,1679
184
- flwr/server/app.py,sha256=WABxljYzn9mEaHvnXXBceVkBx2V6lmlFGpl5f0Uue08,23736
188
+ flwr/server/app.py,sha256=YhGK5LKD12yZOXJC6p5deAodweV91c0IInyiHx7PnWA,24252
185
189
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
186
190
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
187
191
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
@@ -192,11 +196,11 @@ flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_Od
192
196
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
193
197
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
194
198
  flwr/server/driver/driver.py,sha256=NT_yaeit7_kZEIsCEqOWPID1GrVD3ywH4xZ2wtIh5lM,5217
195
- flwr/server/driver/grpc_driver.py,sha256=4LMLDXjMU1VdHsj9nyqFIF71GWVsUR85fsO6biWMHRU,9710
199
+ flwr/server/driver/grpc_driver.py,sha256=EbnOtrTR4cmu2ZhmPqKEmOHAhNQD1fd0hAd_xN1MePQ,9749
196
200
  flwr/server/driver/inmemory_driver.py,sha256=RcK94_NtjGZ4aZDIscnU7A3Uv1u8jGx29-xcbjQvZTM,6444
197
201
  flwr/server/history.py,sha256=bBOHKyX1eQONIsUx4EUU-UnAk1i0EbEl8ioyMq_UWQ8,5063
198
- flwr/server/run_serverapp.py,sha256=8HCGSVaNYd2cnd_j-JpVTRH7Cg8_U7ATZUejiMmJe0o,8894
199
- flwr/server/server.py,sha256=wsXsxMZ9SQ0B42nBnUlcV83NJPycgrgg5bFwcQ4BYBE,17821
202
+ flwr/server/run_serverapp.py,sha256=Lb3n-YEsZ86ZzI9vbhLytr4uiVngZ1LgHhnDtYxn42k,9633
203
+ flwr/server/server.py,sha256=PsJeh7ROKMoeLpIVrmbKoQUvdz-iqb54E4HZJanRUmM,17912
200
204
  flwr/server/server_app.py,sha256=1hul76ospG8L_KooK_ewn1sWPNTNYLTtZMeGNOBNruA,6267
201
205
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
202
206
  flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
@@ -226,11 +230,12 @@ flwr/server/strategy/qfedavg.py,sha256=LZ-zVHRFPVMeeROgDHfMshHaAKaq9Hu9Ev9blREQm
226
230
  flwr/server/strategy/strategy.py,sha256=g6VoIFogEviRub6G4QsKdIp6M_Ek6GhBhqcdNx5ueUk,7543
227
231
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
228
232
  flwr/server/superlink/driver/__init__.py,sha256=_JaRW-FdyikHc7souUrnk3mwTGViraEJCeUBY_M_ocs,712
229
- flwr/server/superlink/driver/driver_grpc.py,sha256=wMqYVeDwIc_FEfQPbCzd9p1YyIcjwiFUMX4QZjGSx5k,1932
230
- flwr/server/superlink/driver/driver_servicer.py,sha256=UWJKw7-eVILw97MdTGjZt9yV0noXnrzcO72bYZ0b2kM,6010
233
+ flwr/server/superlink/driver/driver_grpc.py,sha256=XZ8veSfKStieUgkRntvOw10F0fmHytw_lr7CDtgzLpY,2055
234
+ flwr/server/superlink/driver/driver_servicer.py,sha256=H8r5zdQC0ksBHPSzdMYhwIT6CXJYWox0AylDCO0aYak,6978
231
235
  flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
232
- flwr/server/superlink/ffs/disk_ffs.py,sha256=ZsBCQVpuScm5QNul_XWlXU65XEaOGbH9ULIls6h7p1A,3213
233
- flwr/server/superlink/ffs/ffs.py,sha256=AVl1AM7ZfVTPOIEQJuMR-aXUUd2foSkRe49NWoPecL8,2384
236
+ flwr/server/superlink/ffs/disk_ffs.py,sha256=wluGIPZfUZdSPcTHG08nGfZtE4A35zEtLs3OFxWFvhY,3315
237
+ flwr/server/superlink/ffs/ffs.py,sha256=vzldg6ulYOFwOhLMk9LrUADaJaM6klP9H8_JL76iu4U,2414
238
+ flwr/server/superlink/ffs/ffs_factory.py,sha256=N_eMuUZggotdGiDQ5r_Tf21xsu_ob0e3jyM6ag7d3kk,1490
234
239
  flwr/server/superlink/fleet/__init__.py,sha256=76od-HhYjOUoZFLFDFCFnNHI4JLAmaXQEAyp7LWlQpc,711
235
240
  flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=spBQQJeYz8zPOBOfyMLv87kqWPASGB73AymcLXdFaYA,742
236
241
  flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=K4LkOsVzIdsR7Py_9cfo6CR-bDocpP15ktHTc2UnJ9k,4957
@@ -240,21 +245,21 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=hh7ykcLMA_ymmD72eWFM
240
245
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4EjOXH5birmAnMoCBJcP7jpHYCnHZPk,4887
241
246
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=ROH-dr7TQZ9nVXjkKOzMhxidJguX2li8--nDnXRi-dU,12095
242
247
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
243
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=D7OBFZSDBTpA5MiNHtAmELr569gqhjpCHbFlsvqx4Gg,3705
244
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=v54f7yEX0Xwqh9KRDPzKgJdSBsosus4RzUyzTl-_u5Q,7738
248
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=9vZPmdNuRcXsCJQUv9hrzQvdvUJO4-gvxxCHJJTFvGE,4047
249
+ flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=DsHj6XaE0pBSWLYFsUYE44NPqx6IWWTJ9sqbh3GpmvY,7961
245
250
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
246
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=KgNah2AaNDiqsTEa653wQqVGUy8hvNAOFzeUfaQR6-Y,3893
251
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=9qDDPwj3txHPo2dNaWQiO3UpGno5Zm9IMhJXnAPZbqg,4439
247
252
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
248
253
  flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=yoSU-6nCJF9ASHGNpSY69nZbUhPGXkMIKYDgybKQX3c,7672
249
254
  flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
250
255
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=psQjI1DQHOM5uWVXM27l_wPHjfEkMUTP-_8-lEFH1JA,1466
251
256
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=KL0eHScWr_YfP2eY3VP8_OOMgZwnRNW7qpu5J-ISpXI,2212
252
- flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=6-CjUTv1cFnAb53cZzEYCuVLrVu60tPczTo8meqeqbk,6289
253
- flwr/server/superlink/fleet/vce/vce_api.py,sha256=AeJBEZIC3V54Wg4bzBJa0aO4IXUNiRzRDRv-EKhqtpQ,12750
257
+ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=nb_IZNW_ZKoVzM9duqPddUV4C6T1Jpz9VDBVOzpU-WE,6408
258
+ flwr/server/superlink/fleet/vce/vce_api.py,sha256=n9SfUaLDgiPVvGVudSC4dZ37vytEDlPn1WA0iUDWJ1I,12750
254
259
  flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
255
- flwr/server/superlink/state/in_memory_state.py,sha256=LnKlnXe9JjVHb5_XOo6eD1RQhlCvJVKgz_CkXrMz8DY,13069
256
- flwr/server/superlink/state/sqlite_state.py,sha256=LdLnHtF8C-1L1IAglfZPqIuKa782Qo7qAYzTXMdMYGM,29052
257
- flwr/server/superlink/state/state.py,sha256=juv9a8pQLxylfcZcXRaDBLG5gFG4MXytIcG6NlZTn4E,8117
260
+ flwr/server/superlink/state/in_memory_state.py,sha256=XMcT5WvKPOrFOuKcByr5BRFacX4aR2n9bRkABUuPg-M,13206
261
+ flwr/server/superlink/state/sqlite_state.py,sha256=N8eOLZUveJOzdzL31-hXRYOMqV_-w75S1InyDenaDWU,29420
262
+ flwr/server/superlink/state/state.py,sha256=peHACUjhUF4gfZ5icMsBGjQNa6A6rvku9a_mziRJW40,8154
258
263
  flwr/server/superlink/state/state_factory.py,sha256=Fo8pBQ1WWrVJK5TOEPZ_zgJE69_mfTGjTO6czh6571o,2021
259
264
  flwr/server/superlink/state/utils.py,sha256=155ngcaSePy7nD8X4LHgpuVok6fcH5_CPNRiFAbLWDA,2407
260
265
  flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
@@ -263,7 +268,7 @@ flwr/server/utils/tensorboard.py,sha256=l6aMVdtZbbfCX8uwFW-WxH6P171-R-tulMcPhlyk
263
268
  flwr/server/utils/validator.py,sha256=pzyXoOEEPSoYC2UEzened8IKSFRI-kIqqI0QlwRK9jk,5301
264
269
  flwr/server/workflow/__init__.py,sha256=SXY0XkwbkezFBxxrFB5hKUtmtAgnYISBkPouR1V71ss,902
265
270
  flwr/server/workflow/constant.py,sha256=q4DLdR8Krlxuewq2AQjwTL75hphxE5ODNz4AhViHMXk,1082
266
- flwr/server/workflow/default_workflows.py,sha256=_GqFCaxtiq3_UVCvZWgJ200QroGSI9qibeVcT2R71ao,14003
271
+ flwr/server/workflow/default_workflows.py,sha256=q9f1N2NfOrDrR3S3FH1ePNmTMsUUNwv3cdcAejbGSlk,14086
267
272
  flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B-8M_dPlVSJuTbvXIbiO-Ic,880
268
273
  flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=wpAkYPId0nfK6SgpUAtsCni4_MQLd-uqJ81tUKu3xlI,5838
269
274
  flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=LLW4LfPAVdpMhIjJBopHVl-OltYuVSqsESw3PULcrN8,29694
@@ -273,16 +278,16 @@ flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQD
273
278
  flwr/simulation/ray_transport/ray_actor.py,sha256=3j0HgzjrlYjnzdTRy8aA4Nf6VoUvxi1hGRQkGSU5z6c,19020
274
279
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=0abIsU0VBk9rNJZOKHIyzYGy3ZnWBgqYocX_oct1EP0,7307
275
280
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
276
- flwr/simulation/run_simulation.py,sha256=BPW_zn5xuGlOHKZDvl8J-IuwH7E8ZZAIR2zcXNjsLMo,23391
281
+ flwr/simulation/run_simulation.py,sha256=BXzDF2vMoLTne1NkHKHOGv1FH0fRNy4Ds83Vkr_Qudk,20613
277
282
  flwr/superexec/__init__.py,sha256=9h94ogLxi6eJ3bUuJYq3E3pApThSabTPiSmPAGlTkHE,800
278
- flwr/superexec/app.py,sha256=bmYl8zABnWka9WhRQxX4p1YAI76cYG655dP09ro-V0o,6485
279
- flwr/superexec/deployment.py,sha256=B--96bAvyotQX-c4-umXIe50uCw4HVjD79rXCQtSUH4,6357
283
+ flwr/superexec/app.py,sha256=KQuAnyTs2RQMGeIOrJjR3fJ70HsIEF3LQRKazOy27OA,6489
284
+ flwr/superexec/deployment.py,sha256=1qhztkcZDjaSbicligbXGqn49gbpN271rTlEVAnNuWw,6283
280
285
  flwr/superexec/exec_grpc.py,sha256=PhqGoZEpTMxSQmUSV8Wgtzb1Za_pHJ-adZqo5RYnDyE,1942
281
- flwr/superexec/exec_servicer.py,sha256=fxQAKfgmQRSnYq5anjryfGeRbsZrNFEkuiNcTZhRwiE,2320
286
+ flwr/superexec/exec_servicer.py,sha256=jl0aKVjm0PLQABcTL5c3jdSIzb0Z6hpVOtrAn4Ob7ts,2323
282
287
  flwr/superexec/executor.py,sha256=k_adivto6R2U82DADOHNvdtobehBYreRek1gOEBIQnQ,2318
283
288
  flwr/superexec/simulation.py,sha256=lfdClQYSAIMHe43aJ0Pk-kBw_xoV09LsIMfHo2eo-Ck,6775
284
- flwr_nightly-1.11.0.dev20240813.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
285
- flwr_nightly-1.11.0.dev20240813.dist-info/METADATA,sha256=ZfHPCwurXVhKgVFFPJ3XAwtN6e45R-GcF0rIlNPMhQw,15690
286
- flwr_nightly-1.11.0.dev20240813.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
287
- flwr_nightly-1.11.0.dev20240813.dist-info/entry_points.txt,sha256=KqQQGNjnr-2IT-bheOkO9yM4Gv5BtjaBgYKRkp-NhVg,388
288
- flwr_nightly-1.11.0.dev20240813.dist-info/RECORD,,
289
+ flwr_nightly-1.11.0.dev20240821.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
290
+ flwr_nightly-1.11.0.dev20240821.dist-info/METADATA,sha256=RP7AKm6ELj38eTiFF_dlf516qwA76oWyZsa1OU4D9Ew,15701
291
+ flwr_nightly-1.11.0.dev20240821.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
292
+ flwr_nightly-1.11.0.dev20240821.dist-info/entry_points.txt,sha256=3cDQVJEBRCSLzJrVYAgjXpoCjuQ74I3A9NZ61DOHdVo,388
293
+ flwr_nightly-1.11.0.dev20240821.dist-info/RECORD,,
@@ -6,5 +6,5 @@ flower-superexec=flwr.superexec:run_superexec
6
6
  flower-superlink=flwr.server:run_superlink
7
7
  flower-supernode=flwr.client:run_supernode
8
8
  flwr=flwr.cli.app:app
9
- flwr-clientapp=flwr.client.supernode:flwr_clientapp
9
+ flwr-clientapp=flwr.client.clientapp:flwr_clientapp
10
10