flwr-nightly 1.10.0.dev20240710__py3-none-any.whl → 1.10.0.dev20240712__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 +10 -0
  2. flwr/cli/run/run.py +25 -8
  3. flwr/client/app.py +49 -17
  4. flwr/client/grpc_adapter_client/connection.py +1 -1
  5. flwr/client/grpc_client/connection.py +1 -1
  6. flwr/client/grpc_rere_client/connection.py +3 -2
  7. flwr/client/node_state.py +44 -11
  8. flwr/client/node_state_tests.py +4 -3
  9. flwr/client/rest_client/connection.py +4 -3
  10. flwr/client/supernode/app.py +14 -7
  11. flwr/common/config.py +3 -3
  12. flwr/common/context.py +13 -2
  13. flwr/common/logger.py +25 -0
  14. flwr/server/__init__.py +2 -0
  15. flwr/server/compat/legacy_context.py +1 -1
  16. flwr/server/run_serverapp.py +3 -1
  17. flwr/server/server_app.py +56 -10
  18. flwr/server/serverapp_components.py +52 -0
  19. flwr/server/superlink/fleet/vce/backend/backend.py +4 -4
  20. flwr/server/superlink/fleet/vce/backend/raybackend.py +8 -9
  21. flwr/server/superlink/fleet/vce/vce_api.py +88 -121
  22. flwr/server/typing.py +2 -0
  23. flwr/simulation/ray_transport/ray_actor.py +15 -19
  24. flwr/simulation/ray_transport/ray_client_proxy.py +3 -1
  25. flwr/simulation/run_simulation.py +49 -33
  26. flwr/superexec/app.py +3 -3
  27. {flwr_nightly-1.10.0.dev20240710.dist-info → flwr_nightly-1.10.0.dev20240712.dist-info}/METADATA +2 -2
  28. {flwr_nightly-1.10.0.dev20240710.dist-info → flwr_nightly-1.10.0.dev20240712.dist-info}/RECORD +31 -30
  29. {flwr_nightly-1.10.0.dev20240710.dist-info → flwr_nightly-1.10.0.dev20240712.dist-info}/LICENSE +0 -0
  30. {flwr_nightly-1.10.0.dev20240710.dist-info → flwr_nightly-1.10.0.dev20240712.dist-info}/WHEEL +0 -0
  31. {flwr_nightly-1.10.0.dev20240710.dist-info → flwr_nightly-1.10.0.dev20240712.dist-info}/entry_points.txt +0 -0
@@ -59,7 +59,9 @@ class RayActorClientProxy(ClientProxy):
59
59
 
60
60
  self.app_fn = _load_app
61
61
  self.actor_pool = actor_pool
62
- self.proxy_state = NodeState(partition_id=self.partition_id)
62
+ self.proxy_state = NodeState(
63
+ node_id=node_id, node_config={}, partition_id=self.partition_id
64
+ )
63
65
 
64
66
  def _submit_job(self, message: Message, timeout: Optional[float]) -> Message:
65
67
  """Sumbit a message to the ActorPool."""
@@ -22,7 +22,7 @@ import threading
22
22
  import traceback
23
23
  from logging import DEBUG, ERROR, INFO, WARNING
24
24
  from time import sleep
25
- from typing import Optional
25
+ from typing import Dict, Optional
26
26
 
27
27
  from flwr.client import ClientApp
28
28
  from flwr.common import EventType, event, log
@@ -126,16 +126,25 @@ def run_simulation(
126
126
  def run_serverapp_th(
127
127
  server_app_attr: Optional[str],
128
128
  server_app: Optional[ServerApp],
129
+ server_app_run_config: Dict[str, str],
129
130
  driver: Driver,
130
131
  app_dir: str,
131
- f_stop: asyncio.Event,
132
+ f_stop: threading.Event,
133
+ has_exception: threading.Event,
132
134
  enable_tf_gpu_growth: bool,
133
135
  delay_launch: int = 3,
134
136
  ) -> threading.Thread:
135
137
  """Run SeverApp in a thread."""
136
138
 
137
- def server_th_with_start_checks( # type: ignore
138
- tf_gpu_growth: bool, stop_event: asyncio.Event, **kwargs
139
+ def server_th_with_start_checks(
140
+ tf_gpu_growth: bool,
141
+ stop_event: threading.Event,
142
+ exception_event: threading.Event,
143
+ _driver: Driver,
144
+ _server_app_dir: str,
145
+ _server_app_run_config: Dict[str, str],
146
+ _server_app_attr: Optional[str],
147
+ _server_app: Optional[ServerApp],
139
148
  ) -> None:
140
149
  """Run SeverApp, after check if GPU memory growth has to be set.
141
150
 
@@ -147,10 +156,18 @@ def run_serverapp_th(
147
156
  enable_gpu_growth()
148
157
 
149
158
  # Run ServerApp
150
- run(**kwargs)
159
+ run(
160
+ driver=_driver,
161
+ server_app_dir=_server_app_dir,
162
+ server_app_run_config=_server_app_run_config,
163
+ server_app_attr=_server_app_attr,
164
+ loaded_server_app=_server_app,
165
+ )
151
166
  except Exception as ex: # pylint: disable=broad-exception-caught
152
167
  log(ERROR, "ServerApp thread raised an exception: %s", ex)
153
168
  log(ERROR, traceback.format_exc())
169
+ exception_event.set()
170
+ raise
154
171
  finally:
155
172
  log(DEBUG, "ServerApp finished running.")
156
173
  # Upon completion, trigger stop event if one was passed
@@ -160,13 +177,16 @@ def run_serverapp_th(
160
177
 
161
178
  serverapp_th = threading.Thread(
162
179
  target=server_th_with_start_checks,
163
- args=(enable_tf_gpu_growth, f_stop),
164
- kwargs={
165
- "server_app_attr": server_app_attr,
166
- "loaded_server_app": server_app,
167
- "driver": driver,
168
- "server_app_dir": app_dir,
169
- },
180
+ args=(
181
+ enable_tf_gpu_growth,
182
+ f_stop,
183
+ has_exception,
184
+ driver,
185
+ app_dir,
186
+ server_app_run_config,
187
+ server_app_attr,
188
+ server_app,
189
+ ),
170
190
  )
171
191
  sleep(delay_launch)
172
192
  serverapp_th.start()
@@ -196,20 +216,18 @@ def _main_loop(
196
216
  server_app: Optional[ServerApp] = None,
197
217
  server_app_attr: Optional[str] = None,
198
218
  ) -> None:
199
- """Launch SuperLink with Simulation Engine, then ServerApp on a separate thread.
200
-
201
- Everything runs on the main thread or a separate one, depending on whether the main
202
- thread already contains a running Asyncio event loop. This is the case if running
203
- the Simulation Engine on a Jupyter/Colab notebook.
204
- """
219
+ """Launch SuperLink with Simulation Engine, then ServerApp on a separate thread."""
205
220
  # Initialize StateFactory
206
221
  state_factory = StateFactory(":flwr-in-memory-state:")
207
222
 
208
- f_stop = asyncio.Event()
223
+ f_stop = threading.Event()
224
+ # A Threading event to indicate if an exception was raised in the ServerApp thread
225
+ server_app_thread_has_exception = threading.Event()
209
226
  serverapp_th = None
210
227
  try:
211
228
  # Create run (with empty fab_id and fab_version)
212
229
  run_id_ = state_factory.state().create_run("", "", {})
230
+ server_app_run_config: Dict[str, str] = {}
213
231
 
214
232
  if run_id:
215
233
  _override_run_id(state_factory, run_id_to_replace=run_id_, run_id=run_id)
@@ -222,9 +240,11 @@ def _main_loop(
222
240
  serverapp_th = run_serverapp_th(
223
241
  server_app_attr=server_app_attr,
224
242
  server_app=server_app,
243
+ server_app_run_config=server_app_run_config,
225
244
  driver=driver,
226
245
  app_dir=app_dir,
227
246
  f_stop=f_stop,
247
+ has_exception=server_app_thread_has_exception,
228
248
  enable_tf_gpu_growth=enable_tf_gpu_growth,
229
249
  )
230
250
 
@@ -253,6 +273,8 @@ def _main_loop(
253
273
  event(EventType.RUN_SUPERLINK_LEAVE)
254
274
  if serverapp_th:
255
275
  serverapp_th.join()
276
+ if server_app_thread_has_exception.is_set():
277
+ raise RuntimeError("Exception in ServerApp thread")
256
278
 
257
279
  log(DEBUG, "Stopping Simulation Engine now.")
258
280
 
@@ -349,7 +371,6 @@ def _run_simulation(
349
371
  # Convert config to original JSON-stream format
350
372
  backend_config_stream = json.dumps(backend_config)
351
373
 
352
- simulation_engine_th = None
353
374
  args = (
354
375
  num_supernodes,
355
376
  backend_name,
@@ -363,31 +384,26 @@ def _run_simulation(
363
384
  server_app_attr,
364
385
  )
365
386
  # Detect if there is an Asyncio event loop already running.
366
- # If yes, run everything on a separate thread. In environments
367
- # like Jupyter/Colab notebooks, there is an event loop present.
368
- run_in_thread = False
387
+ # If yes, disable logger propagation. In environmnets
388
+ # like Jupyter/Colab notebooks, it's often better to do this.
389
+ asyncio_loop_running = False
369
390
  try:
370
391
  _ = (
371
392
  asyncio.get_running_loop()
372
393
  ) # Raises RuntimeError if no event loop is present
373
394
  log(DEBUG, "Asyncio event loop already running.")
374
395
 
375
- run_in_thread = True
396
+ asyncio_loop_running = True
376
397
 
377
398
  except RuntimeError:
378
- log(DEBUG, "No asyncio event loop running")
399
+ pass
379
400
 
380
401
  finally:
381
- if run_in_thread:
402
+ if asyncio_loop_running:
382
403
  # Set logger propagation to False to prevent duplicated log output in Colab.
383
404
  logger = set_logger_propagation(logger, False)
384
- log(DEBUG, "Starting Simulation Engine on a new thread.")
385
- simulation_engine_th = threading.Thread(target=_main_loop, args=args)
386
- simulation_engine_th.start()
387
- simulation_engine_th.join()
388
- else:
389
- log(DEBUG, "Starting Simulation Engine on the main thread.")
390
- _main_loop(*args)
405
+
406
+ _main_loop(*args)
391
407
 
392
408
 
393
409
  def _parse_args_run_simulation() -> argparse.ArgumentParser:
flwr/superexec/app.py CHANGED
@@ -127,11 +127,11 @@ def _try_obtain_certificates(
127
127
  return None
128
128
  # Check if certificates are provided
129
129
  if args.ssl_certfile and args.ssl_keyfile and args.ssl_ca_certfile:
130
- if not Path.is_file(args.ssl_ca_certfile):
130
+ if not Path(args.ssl_ca_certfile).is_file():
131
131
  sys.exit("Path argument `--ssl-ca-certfile` does not point to a file.")
132
- if not Path.is_file(args.ssl_certfile):
132
+ if not Path(args.ssl_certfile).is_file():
133
133
  sys.exit("Path argument `--ssl-certfile` does not point to a file.")
134
- if not Path.is_file(args.ssl_keyfile):
134
+ if not Path(args.ssl_keyfile).is_file():
135
135
  sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
136
136
  certificates = (
137
137
  Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.10.0.dev20240710
3
+ Version: 1.10.0.dev20240712
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -33,7 +33,7 @@ Classifier: Typing :: Typed
33
33
  Provides-Extra: rest
34
34
  Provides-Extra: simulation
35
35
  Requires-Dist: cryptography (>=42.0.4,<43.0.0)
36
- Requires-Dist: grpcio (>=1.60.0,<2.0.0)
36
+ Requires-Dist: grpcio (>=1.60.0,<2.0.0,!=1.64.2,!=1.65.0)
37
37
  Requires-Dist: iterators (>=0.0.2,<0.0.3)
38
38
  Requires-Dist: numpy (>=1.21.0,<2.0.0)
39
39
  Requires-Dist: pathspec (>=0.12.1,<0.13.0)
@@ -2,7 +2,7 @@ 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=G0wgNrgxir_H0Qb_YlT2itxETEb-9q_3RQflqIqNXTU,4737
5
- flwr/cli/config_utils.py,sha256=ugUlqH52yxTPMtKw6q4xv5k2OVWUy89cwyJ5LB2RLgk,6037
5
+ flwr/cli/config_utils.py,sha256=jz7ODmLE62tXHorg73zzB7POMe4WXLUzX8lt-WNfNVM,6488
6
6
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
7
7
  flwr/cli/install.py,sha256=Wz7Hqg2PE9N-w5CnqlH9Zr8mzADN2J7NLcUhgldZLWU,6579
8
8
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
@@ -50,20 +50,20 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=wxN6I8uvWZ4MErvTbQJ
50
50
  flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=wFeJuhqnBPQtKCBvnE3ySBpxmbeNdxcsq2Eb_RmSDIg,655
51
51
  flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=zkxLTQRvujF76sIlzNNGPVU7Y9nVCwNBxAx82AOBaJY,654
52
52
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
53
- flwr/cli/run/run.py,sha256=WsOknYnwm_iD-s6jAHxjGKbm0PgV3VZdQ04v6s4nPQY,4449
53
+ flwr/cli/run/run.py,sha256=eFYZwHOw9pHo_jxtS-UQIf7LVIOiNwjnJdaykcZQz5Q,4969
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=J4O5tyOP0LDOJgaXFEli97aSbE5dy8hIirRndAUlL0k,24887
56
+ flwr/client/app.py,sha256=60e0vEmMNRusDheu7laQRqe87FhFyVzxIZKAhLrRLAo,26268
57
57
  flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
58
58
  flwr/client/client_app.py,sha256=cvY-km3JEOWKxUio4xvksNFBk2FQQXliUfQTlDty71w,9648
59
59
  flwr/client/dpfedavg_numpy_client.py,sha256=ylZ-LpBIKmL1HCiS8kq4pkp2QGalc8rYEzDHdRG3VRQ,7435
60
60
  flwr/client/grpc_adapter_client/__init__.py,sha256=QyNWIbsq9DpyMk7oemiO1P3TBFfkfkctnJ1JoAkTl3s,742
61
- flwr/client/grpc_adapter_client/connection.py,sha256=jxwWnqppwpwI7c5xtGRwbiyDKRLdMP4Y6YLAwTypfeY,3864
61
+ flwr/client/grpc_adapter_client/connection.py,sha256=fM6QTIrcDGIXux7nzxOY3qNUfBGxVl1W7861iGSy5wA,3873
62
62
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
63
- flwr/client/grpc_client/connection.py,sha256=5KZ1AhKJiJsMgLoAwsyN83k8hu_XWaRbUb-ATR1RvF0,9302
63
+ flwr/client/grpc_client/connection.py,sha256=7J3YlvvBrky3f8UJ99U9IsPECGtcY8rvXsyr_Ol8qyY,9311
64
64
  flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
65
65
  flwr/client/grpc_rere_client/client_interceptor.py,sha256=sYPEznuQPdy2BPDlvM9FK0ZRRucb4NfwUee1Z_mN82E,4954
66
- flwr/client/grpc_rere_client/connection.py,sha256=ieIOBSrrjWVZflbLdb6KMehzs-aOdvIhcTTtfgQbT5I,10292
66
+ flwr/client/grpc_rere_client/connection.py,sha256=nC4Usb1qok2liVxwlbQokUNwRRRD10_GIscbspqqz_c,10338
67
67
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=woljH8yr1pyLH4W4Azogyy7Nafn6y9DHBnDCIIVKwCw,4711
68
68
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
69
69
  flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
@@ -77,26 +77,26 @@ flwr/client/mod/secure_aggregation/__init__.py,sha256=A7DzZ3uvXTUkuHBzrxJMWQQD4R
77
77
  flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=wI9tuIEvMUETz-wVIEbPYvh-1nK9CEylBLGoVpNhL94,1095
78
78
  flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=fZTfIELkYS64lpgxQKL66s-QHjCn-159qfLoNoIMJjc,19699
79
79
  flwr/client/mod/utils.py,sha256=UAJXiB0wwVyLkCkpW_i5BXikdBR65p8sNFr7VNHm2nk,1226
80
- flwr/client/node_state.py,sha256=f_zZaoSCLUVwbJDqQGZbRvQkEK82UlhSVtgtCKFVM3s,1937
81
- flwr/client/node_state_tests.py,sha256=fadnOTT3VAuzzs_UAbOukcuyx-oQPv2lBq92qTuUecw,2212
80
+ flwr/client/node_state.py,sha256=Yh-3-YQtnUfAjMxz356cUQp40UFfdM1yw-n_Ir50JBk,2971
81
+ flwr/client/node_state_tests.py,sha256=DAZk3Ir3HSN24xx42l0u9n5Q7sTgw8Jps4QRhwGew3A,2258
82
82
  flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,10283
83
83
  flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
84
- flwr/client/rest_client/connection.py,sha256=nowX8_TMnaiIhBMU5f60sIOkvcS3DHOHBT_YrvCnxnw,12096
84
+ flwr/client/rest_client/connection.py,sha256=aY_UzrNyE8g-xPAK_POZZZ93mERHTe-pOhNP-uZ8GyU,12147
85
85
  flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
86
- flwr/client/supernode/app.py,sha256=jVg5vWJnE50jUJPOlK_hwA_RsGo_heygZeWHGsWH76g,15275
86
+ flwr/client/supernode/app.py,sha256=cg8momLzMnFrDBNJsSRDYrn8zHuJ-4UC3wIHf51aBXQ,15385
87
87
  flwr/client/typing.py,sha256=RJGVF64Z0nqW-qmdFuFaY4Jig3dMUFgNhFi-5dq-8-I,1069
88
88
  flwr/common/__init__.py,sha256=4cBLNNnNTwHDnL_HCxhU5ILCSZ6fYh3A_aMBtlvHTVw,3721
89
89
  flwr/common/address.py,sha256=wRu1Luezx1PWadwV9OA_KNko01oVvbRnPqfzaDn8QOk,1882
90
- flwr/common/config.py,sha256=GTmXfeCi6Xt1CTUzg8TUshOHVv2vP8X8e6uCcLBWoX4,5024
90
+ flwr/common/config.py,sha256=7OF4R43st8teFXBWmV92noGEYVe00wT29QMs6od8mlI,4994
91
91
  flwr/common/constant.py,sha256=qNmxEV3_pOO7MeTAA9qwIh4KoCPStcX3Gm8GRPIRx_4,2890
92
- flwr/common/context.py,sha256=dd37Q_0rngvGTzIwQ2M50jfhGGV0vV2-uGlL-gC4Y_Y,2170
92
+ flwr/common/context.py,sha256=iW-rDC0dTzwyvLSWdtaeHMZM7l5XAf6dg2TdVw0lg68,2643
93
93
  flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
94
94
  flwr/common/differential_privacy.py,sha256=WZWrL7C9XaB9l9NDkLDI5PvM7jwcoTTFu08ZVG8-M5Q,6113
95
95
  flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf6d3qk6K7KBZGlV4Q,1074
96
96
  flwr/common/dp.py,sha256=SZ3MtJKpjxUeQeyb2pqWSF0S_h9rZtCGYPToIxqcNj8,2004
97
97
  flwr/common/exit_handlers.py,sha256=2Nt0wLhc17KQQsLPFSRAjjhUiEFfJK6tNozdGiIY4Fs,2812
98
98
  flwr/common/grpc.py,sha256=_9838_onFLx7W6_lakUN35ziKpdcKp7fA-0jE0EhcEQ,2460
99
- flwr/common/logger.py,sha256=2WW8xV49EHNTBGQP9N83ekYYLVgzjtxLYCM-m0UXwgw,7426
99
+ flwr/common/logger.py,sha256=42rLD69BetRkVKYXZLUaTgyjPxsCn6phVbndMC1fWjk,8130
100
100
  flwr/common/message.py,sha256=QmFYYXA-3e9M8tGO-3NPyAI8yvdmcpdYaA_noR1DE88,13194
101
101
  flwr/common/object_ref.py,sha256=PQR0tztVOkD1nn_uGuNz4bHm7z4fwsosTsUKvWIGF5Y,6506
102
102
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
@@ -172,7 +172,7 @@ flwr/proto/transport_pb2.pyi,sha256=CZvJRWTU3QWFWLXNFtyLSrSKFatIyMcy-ohzLbQ-G9c,
172
172
  flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPcosk,2598
173
173
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
174
174
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
- flwr/server/__init__.py,sha256=PAoUaE5kQ9toC6gS7L68d74AgbRrHHoHt8wNr81CcEw,1575
175
+ flwr/server/__init__.py,sha256=BxzPhvouvWFGi7CFpI5b4EeVR9XDqbK7Ndqg24EL_Rw,1679
176
176
  flwr/server/app.py,sha256=WABxljYzn9mEaHvnXXBceVkBx2V6lmlFGpl5f0Uue08,23736
177
177
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
178
178
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
@@ -180,17 +180,18 @@ flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw
180
180
  flwr/server/compat/app.py,sha256=u0elxfiLjGouCMQIy5KnCpeCHdc3s0qvojUm8unInIs,3421
181
181
  flwr/server/compat/app_utils.py,sha256=B9pec7LnYACzowXKZTZNu3SNS-fSaHfefwvRyAQa4Nc,3456
182
182
  flwr/server/compat/driver_client_proxy.py,sha256=BxTDo7i89VAG2tuF4x7zogSVn2bXPMr0H2H0lERzW9c,5444
183
- flwr/server/compat/legacy_context.py,sha256=3T_vON4qXt31To0dd9ygULvxL9l1hmDSED6ZqBiLhxI,1781
183
+ flwr/server/compat/legacy_context.py,sha256=-c2J_tPDFahDILl80XFrgkdRLfpHWDu5W3DQP3nKdls,1814
184
184
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
185
185
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
186
186
  flwr/server/driver/driver.py,sha256=NT_yaeit7_kZEIsCEqOWPID1GrVD3ywH4xZ2wtIh5lM,5217
187
187
  flwr/server/driver/grpc_driver.py,sha256=4Azmzq4RWzcLbOqBBEF-I78krWVWZ6bT0U42S25zMvY,9659
188
188
  flwr/server/driver/inmemory_driver.py,sha256=RcK94_NtjGZ4aZDIscnU7A3Uv1u8jGx29-xcbjQvZTM,6444
189
189
  flwr/server/history.py,sha256=bBOHKyX1eQONIsUx4EUU-UnAk1i0EbEl8ioyMq_UWQ8,5063
190
- flwr/server/run_serverapp.py,sha256=s8KyWbANv9kyj8_tJoDiLkUj9D6QrPWfC5M_xDCOtYU,9445
190
+ flwr/server/run_serverapp.py,sha256=iq62xuSPYndmsYiJRpRkT9cTfQpZ0FgsWLncktUvh98,9486
191
191
  flwr/server/server.py,sha256=wsXsxMZ9SQ0B42nBnUlcV83NJPycgrgg5bFwcQ4BYBE,17821
192
- flwr/server/server_app.py,sha256=WdsLcMsdi_pKk2y9fKkaWqT3CgCPX55-C8qhkDXCet8,4415
192
+ flwr/server/server_app.py,sha256=1hul76ospG8L_KooK_ewn1sWPNTNYLTtZMeGNOBNruA,6267
193
193
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
194
+ flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
194
195
  flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
195
196
  flwr/server/strategy/aggregate.py,sha256=QyRIJtI5gnuY1NbgrcrOvkHxGIxBvApq7d9Y4xl-6W4,13468
196
197
  flwr/server/strategy/bulyan.py,sha256=zHBSZ40KtRg07tXtwWg2SRvpt89oeRbUO9zTnOFYx2k,6532
@@ -236,16 +237,16 @@ flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0
236
237
  flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=yoSU-6nCJF9ASHGNpSY69nZbUhPGXkMIKYDgybKQX3c,7672
237
238
  flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
238
239
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=oBIzmnrSSRvH_H0vRGEGWhWzQQwqe3zn6e13RsNwlIY,1466
239
- flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LJsKl7oixVvptcG98Rd9ejJycNWcEVB0ODvSreLGp-A,2260
240
- flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=dwaebZfzvzlvjkMflH5hJ19-Sszvxt0AWwIEGk9BliU,7495
241
- flwr/server/superlink/fleet/vce/vce_api.py,sha256=JvkrLB26-sXbrsQKG4iGwgBYDIfuix3PJ1P6qd_nqxQ,13296
240
+ flwr/server/superlink/fleet/vce/backend/backend.py,sha256=iG3KSIY7DzNfcxmuLfTs7VdQJnqPCvvn5DFkTWKG5lI,2227
241
+ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=pIJm6YXZw-Jv3okRgred1yjm7b3EWuj1BvtyBd3Fk08,7422
242
+ flwr/server/superlink/fleet/vce/vce_api.py,sha256=253x7nGgAbLZzJmSKNxii_xZDrF_8fC0hpbj4bIQ7SY,11800
242
243
  flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
243
244
  flwr/server/superlink/state/in_memory_state.py,sha256=fb-f4RGiqXON0DC7aSEMNuNIjH406BhBYrNNX5Kza2g,13061
244
245
  flwr/server/superlink/state/sqlite_state.py,sha256=dO374mTkvhWQSiwbqwUXVnAYHev-j2mHaX9v8wFmmMA,29044
245
246
  flwr/server/superlink/state/state.py,sha256=mwvYPLK_udk4-yV8Q2MLX5FfTlgLG0P9biyyOZGibRY,8115
246
247
  flwr/server/superlink/state/state_factory.py,sha256=Fo8pBQ1WWrVJK5TOEPZ_zgJE69_mfTGjTO6czh6571o,2021
247
248
  flwr/server/superlink/state/utils.py,sha256=155ngcaSePy7nD8X4LHgpuVok6fcH5_CPNRiFAbLWDA,2407
248
- flwr/server/typing.py,sha256=2zSG-KuDAgwFPuzgVjTLDaEqJ8gXXGqFR2RD-qIk730,913
249
+ flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
249
250
  flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
250
251
  flwr/server/utils/tensorboard.py,sha256=l6aMVdtZbbfCX8uwFW-WxH6P171-R-tulMcPhlykowo,5485
251
252
  flwr/server/utils/validator.py,sha256=pzyXoOEEPSoYC2UEzened8IKSFRI-kIqqI0QlwRK9jk,5301
@@ -258,18 +259,18 @@ flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=BRqhlnVe8C
258
259
  flwr/simulation/__init__.py,sha256=9x8OCkK3jpFAPJB1aeEMOddz6V58bExQPtwE8Z3q-RY,1359
259
260
  flwr/simulation/app.py,sha256=8NDXoQ8oC11khXIGnydrsUh5JfaH7c2Fwzix8vDFK1I,15144
260
261
  flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
261
- flwr/simulation/ray_transport/ray_actor.py,sha256=bu6gEnbHYtlUxLtzjzpEUtvkQDRzl1PVMjJuCDZvfgQ,19196
262
- flwr/simulation/ray_transport/ray_client_proxy.py,sha256=zGLVebfwFhBo1CAqEQ0MtW-fPG8ark3e4n6OksFGch4,6954
262
+ flwr/simulation/ray_transport/ray_actor.py,sha256=3j0HgzjrlYjnzdTRy8aA4Nf6VoUvxi1hGRQkGSU5z6c,19020
263
+ flwr/simulation/ray_transport/ray_client_proxy.py,sha256=lcrYLHeAud6AT0TgzKLK14yi3ijZpqMWS4oKj5M1A3A,7009
263
264
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
264
- flwr/simulation/run_simulation.py,sha256=7dlpFtviRsD7TncoWEqwsdZ758JQbc0Sxvxlw1mkuMg,16862
265
+ flwr/simulation/run_simulation.py,sha256=qGP8sHKAzJT9nGeqMw36iCsVXm4ZFMBisCORuTswr-g,17277
265
266
  flwr/superexec/__init__.py,sha256=9h94ogLxi6eJ3bUuJYq3E3pApThSabTPiSmPAGlTkHE,800
266
- flwr/superexec/app.py,sha256=dm0o3O6dlsk8hZHondat5QWrBh9UfKzHxn4dVrqwiRk,6151
267
+ flwr/superexec/app.py,sha256=1ZGSErFo3AQeIQOARKM1DN99fCuH451PeM1bDasBjRQ,6157
267
268
  flwr/superexec/deployment.py,sha256=xv5iQWuaMeeL0XE5KMLWq3gRU4lvsGu1-_oPIXi5x9E,3955
268
269
  flwr/superexec/exec_grpc.py,sha256=u-rztpOleqSGqgvNE-ZLw1HchNsBHU1-eB3m52GZ0pQ,1852
269
270
  flwr/superexec/exec_servicer.py,sha256=4R1f_9v0vly_bXpIYaXAeV1tO5LAy1AYygGGGNZmlQk,2194
270
271
  flwr/superexec/executor.py,sha256=TMQMMf-vv0htlv6v-eEBI67J1WL3Yz7dp_Fm1lgMEyU,1718
271
- flwr_nightly-1.10.0.dev20240710.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
272
- flwr_nightly-1.10.0.dev20240710.dist-info/METADATA,sha256=d1HBDVTaENA9E7Peceqo7v7bNogHZJCWA4dKq581OCo,15614
273
- flwr_nightly-1.10.0.dev20240710.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
274
- flwr_nightly-1.10.0.dev20240710.dist-info/entry_points.txt,sha256=7qBQcA-bDGDxnJmLd9FYqglFQubjCNqyg9M8a-lukps,336
275
- flwr_nightly-1.10.0.dev20240710.dist-info/RECORD,,
272
+ flwr_nightly-1.10.0.dev20240712.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
273
+ flwr_nightly-1.10.0.dev20240712.dist-info/METADATA,sha256=ueea2HUP0m4iFuOa_T3u2lD-93HGTmfD-ulaZv7LKJg,15632
274
+ flwr_nightly-1.10.0.dev20240712.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
275
+ flwr_nightly-1.10.0.dev20240712.dist-info/entry_points.txt,sha256=7qBQcA-bDGDxnJmLd9FYqglFQubjCNqyg9M8a-lukps,336
276
+ flwr_nightly-1.10.0.dev20240712.dist-info/RECORD,,