flwr-nightly 1.14.0.dev20241214__py3-none-any.whl → 1.15.0.dev20250107__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.
- flwr/cli/log.py +9 -7
- flwr/cli/login/login.py +1 -3
- flwr/cli/ls.py +25 -22
- flwr/cli/new/templates/app/.gitignore.tpl +3 -0
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +3 -3
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- flwr/cli/run/run.py +11 -18
- flwr/cli/stop.py +71 -32
- flwr/cli/utils.py +81 -25
- flwr/client/app.py +11 -1
- flwr/client/client.py +0 -32
- flwr/client/clientapp/app.py +3 -1
- flwr/client/grpc_rere_client/connection.py +10 -4
- flwr/client/message_handler/message_handler.py +0 -2
- flwr/client/numpy_client.py +0 -44
- flwr/client/supernode/app.py +1 -2
- flwr/common/logger.py +16 -1
- flwr/common/record/recordset.py +1 -1
- flwr/common/retry_invoker.py +3 -1
- flwr/common/secure_aggregation/crypto/symmetric_encryption.py +45 -0
- flwr/common/telemetry.py +13 -3
- flwr/server/app.py +8 -8
- flwr/server/run_serverapp.py +8 -9
- flwr/server/serverapp/app.py +17 -2
- flwr/server/superlink/driver/serverappio_servicer.py +9 -0
- flwr/server/superlink/fleet/message_handler/message_handler.py +1 -3
- flwr/server/superlink/fleet/vce/vce_api.py +2 -2
- flwr/server/superlink/linkstate/in_memory_linkstate.py +10 -2
- flwr/server/superlink/linkstate/linkstate.py +4 -0
- flwr/server/superlink/linkstate/sqlite_linkstate.py +6 -2
- flwr/server/superlink/simulation/simulationio_servicer.py +13 -0
- flwr/simulation/app.py +15 -4
- flwr/simulation/run_simulation.py +35 -22
- flwr/simulation/simulationio_connection.py +3 -0
- {flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/METADATA +2 -2
- {flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/RECORD +46 -46
- {flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/entry_points.txt +0 -0
@@ -54,6 +54,7 @@ from flwr.proto.simulationio_pb2 import ( # pylint: disable=E0611
|
|
54
54
|
)
|
55
55
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
56
56
|
from flwr.server.superlink.linkstate import LinkStateFactory
|
57
|
+
from flwr.server.superlink.utils import abort_if
|
57
58
|
|
58
59
|
|
59
60
|
class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
|
@@ -110,6 +111,15 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
|
|
110
111
|
"""Push Simulation process outputs."""
|
111
112
|
log(DEBUG, "SimultionIoServicer.PushSimulationOutputs")
|
112
113
|
state = self.state_factory.state()
|
114
|
+
|
115
|
+
# Abort if the run is not running
|
116
|
+
abort_if(
|
117
|
+
request.run_id,
|
118
|
+
[Status.PENDING, Status.STARTING, Status.FINISHED],
|
119
|
+
state,
|
120
|
+
context,
|
121
|
+
)
|
122
|
+
|
113
123
|
state.set_serverapp_context(request.run_id, context_from_proto(request.context))
|
114
124
|
return PushSimulationOutputsResponse()
|
115
125
|
|
@@ -120,6 +130,9 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
|
|
120
130
|
log(DEBUG, "SimultionIoServicer.UpdateRunStatus")
|
121
131
|
state = self.state_factory.state()
|
122
132
|
|
133
|
+
# Abort if the run is finished
|
134
|
+
abort_if(request.run_id, [Status.FINISHED], state, context)
|
135
|
+
|
123
136
|
# Update the run status
|
124
137
|
state.update_run_status(
|
125
138
|
run_id=request.run_id, new_status=run_status_from_proto(request.run_status)
|
flwr/simulation/app.py
CHANGED
@@ -24,7 +24,8 @@ from typing import Optional
|
|
24
24
|
|
25
25
|
from flwr.cli.config_utils import get_fab_metadata
|
26
26
|
from flwr.cli.install import install_from_fab
|
27
|
-
from flwr.
|
27
|
+
from flwr.cli.utils import get_sha256_hash
|
28
|
+
from flwr.common import EventType, event
|
28
29
|
from flwr.common.args import add_args_flwr_app_common
|
29
30
|
from flwr.common.config import (
|
30
31
|
get_flwr_dir,
|
@@ -48,6 +49,7 @@ from flwr.common.logger import (
|
|
48
49
|
from flwr.common.serde import (
|
49
50
|
configs_record_from_proto,
|
50
51
|
context_from_proto,
|
52
|
+
context_to_proto,
|
51
53
|
fab_from_proto,
|
52
54
|
run_from_proto,
|
53
55
|
run_status_to_proto,
|
@@ -201,8 +203,17 @@ def run_simulation_process( # pylint: disable=R0914, disable=W0212, disable=R09
|
|
201
203
|
verbose: bool = fed_opt.get("verbose", False)
|
202
204
|
enable_tf_gpu_growth: bool = fed_opt.get("enable_tf_gpu_growth", False)
|
203
205
|
|
206
|
+
event(
|
207
|
+
EventType.FLWR_SIMULATION_RUN_ENTER,
|
208
|
+
event_details={
|
209
|
+
"backend": "ray",
|
210
|
+
"num-supernodes": num_supernodes,
|
211
|
+
"run-id-hash": get_sha256_hash(run.run_id),
|
212
|
+
},
|
213
|
+
)
|
214
|
+
|
204
215
|
# Launch the simulation
|
205
|
-
_run_simulation(
|
216
|
+
updated_context = _run_simulation(
|
206
217
|
server_app_attr=server_app_attr,
|
207
218
|
client_app_attr=client_app_attr,
|
208
219
|
num_supernodes=num_supernodes,
|
@@ -213,11 +224,11 @@ def run_simulation_process( # pylint: disable=R0914, disable=W0212, disable=R09
|
|
213
224
|
verbose_logging=verbose,
|
214
225
|
server_app_run_config=fused_config,
|
215
226
|
is_app=True,
|
216
|
-
exit_event=EventType.
|
227
|
+
exit_event=EventType.FLWR_SIMULATION_RUN_LEAVE,
|
217
228
|
)
|
218
229
|
|
219
230
|
# Send resulting context
|
220
|
-
context_proto =
|
231
|
+
context_proto = context_to_proto(updated_context)
|
221
232
|
out_req = PushSimulationOutputsRequest(
|
222
233
|
run_id=run.run_id, context=context_proto
|
223
234
|
)
|
@@ -24,10 +24,11 @@ import threading
|
|
24
24
|
import traceback
|
25
25
|
from logging import DEBUG, ERROR, INFO, WARNING
|
26
26
|
from pathlib import Path
|
27
|
-
from
|
27
|
+
from queue import Empty, Queue
|
28
28
|
from typing import Any, Optional
|
29
29
|
|
30
30
|
from flwr.cli.config_utils import load_and_validate
|
31
|
+
from flwr.cli.utils import get_sha256_hash
|
31
32
|
from flwr.client import ClientApp
|
32
33
|
from flwr.common import Context, EventType, RecordSet, event, log, now
|
33
34
|
from flwr.common.config import get_fused_config_from_dir, parse_config_args
|
@@ -127,7 +128,7 @@ def run_simulation_from_cli() -> None:
|
|
127
128
|
run = Run.create_empty(run_id)
|
128
129
|
run.override_config = override_config
|
129
130
|
|
130
|
-
_run_simulation(
|
131
|
+
_ = _run_simulation(
|
131
132
|
server_app_attr=server_app_attr,
|
132
133
|
client_app_attr=client_app_attr,
|
133
134
|
num_supernodes=args.num_supernodes,
|
@@ -136,7 +137,6 @@ def run_simulation_from_cli() -> None:
|
|
136
137
|
app_dir=args.app,
|
137
138
|
run=run,
|
138
139
|
enable_tf_gpu_growth=args.enable_tf_gpu_growth,
|
139
|
-
delay_start=args.delay_start,
|
140
140
|
verbose_logging=args.verbose,
|
141
141
|
server_app_run_config=fused_config,
|
142
142
|
is_app=True,
|
@@ -208,7 +208,7 @@ def run_simulation(
|
|
208
208
|
"\n\tflwr.simulation.run_simulationt(...)",
|
209
209
|
)
|
210
210
|
|
211
|
-
_run_simulation(
|
211
|
+
_ = _run_simulation(
|
212
212
|
num_supernodes=num_supernodes,
|
213
213
|
client_app=client_app,
|
214
214
|
server_app=server_app,
|
@@ -231,6 +231,7 @@ def run_serverapp_th(
|
|
231
231
|
has_exception: threading.Event,
|
232
232
|
enable_tf_gpu_growth: bool,
|
233
233
|
run_id: int,
|
234
|
+
ctx_queue: "Queue[Context]",
|
234
235
|
) -> threading.Thread:
|
235
236
|
"""Run SeverApp in a thread."""
|
236
237
|
|
@@ -243,6 +244,7 @@ def run_serverapp_th(
|
|
243
244
|
_server_app_run_config: UserConfig,
|
244
245
|
_server_app_attr: Optional[str],
|
245
246
|
_server_app: Optional[ServerApp],
|
247
|
+
_ctx_queue: "Queue[Context]",
|
246
248
|
) -> None:
|
247
249
|
"""Run SeverApp, after check if GPU memory growth has to be set.
|
248
250
|
|
@@ -263,13 +265,14 @@ def run_serverapp_th(
|
|
263
265
|
)
|
264
266
|
|
265
267
|
# Run ServerApp
|
266
|
-
_run(
|
268
|
+
updated_context = _run(
|
267
269
|
driver=_driver,
|
268
270
|
context=context,
|
269
271
|
server_app_dir=_server_app_dir,
|
270
272
|
server_app_attr=_server_app_attr,
|
271
273
|
loaded_server_app=_server_app,
|
272
274
|
)
|
275
|
+
_ctx_queue.put(updated_context)
|
273
276
|
except Exception as ex: # pylint: disable=broad-exception-caught
|
274
277
|
log(ERROR, "ServerApp thread raised an exception: %s", ex)
|
275
278
|
log(ERROR, traceback.format_exc())
|
@@ -293,6 +296,7 @@ def run_serverapp_th(
|
|
293
296
|
server_app_run_config,
|
294
297
|
server_app_attr,
|
295
298
|
server_app,
|
299
|
+
ctx_queue,
|
296
300
|
),
|
297
301
|
)
|
298
302
|
serverapp_th.start()
|
@@ -309,14 +313,13 @@ def _main_loop(
|
|
309
313
|
enable_tf_gpu_growth: bool,
|
310
314
|
run: Run,
|
311
315
|
exit_event: EventType,
|
312
|
-
delay_start: int,
|
313
316
|
flwr_dir: Optional[str] = None,
|
314
317
|
client_app: Optional[ClientApp] = None,
|
315
318
|
client_app_attr: Optional[str] = None,
|
316
319
|
server_app: Optional[ServerApp] = None,
|
317
320
|
server_app_attr: Optional[str] = None,
|
318
321
|
server_app_run_config: Optional[UserConfig] = None,
|
319
|
-
) ->
|
322
|
+
) -> Context:
|
320
323
|
"""Start ServerApp on a separate thread, then launch Simulation Engine."""
|
321
324
|
# Initialize StateFactory
|
322
325
|
state_factory = LinkStateFactory(":flwr-in-memory-state:")
|
@@ -326,6 +329,13 @@ def _main_loop(
|
|
326
329
|
server_app_thread_has_exception = threading.Event()
|
327
330
|
serverapp_th = None
|
328
331
|
success = True
|
332
|
+
updated_context = Context(
|
333
|
+
run_id=run.run_id,
|
334
|
+
node_id=0,
|
335
|
+
node_config=UserConfig(),
|
336
|
+
state=RecordSet(),
|
337
|
+
run_config=UserConfig(),
|
338
|
+
)
|
329
339
|
try:
|
330
340
|
# Register run
|
331
341
|
log(DEBUG, "Pre-registering run with id %s", run.run_id)
|
@@ -340,6 +350,7 @@ def _main_loop(
|
|
340
350
|
# Initialize Driver
|
341
351
|
driver = InMemoryDriver(state_factory=state_factory)
|
342
352
|
driver.set_run(run_id=run.run_id)
|
353
|
+
output_context_queue: Queue[Context] = Queue()
|
343
354
|
|
344
355
|
# Get and run ServerApp thread
|
345
356
|
serverapp_th = run_serverapp_th(
|
@@ -352,11 +363,9 @@ def _main_loop(
|
|
352
363
|
has_exception=server_app_thread_has_exception,
|
353
364
|
enable_tf_gpu_growth=enable_tf_gpu_growth,
|
354
365
|
run_id=run.run_id,
|
366
|
+
ctx_queue=output_context_queue,
|
355
367
|
)
|
356
368
|
|
357
|
-
# Buffer time so the `ServerApp` in separate thread is ready
|
358
|
-
log(DEBUG, "Buffer time delay: %ds", delay_start)
|
359
|
-
sleep(delay_start)
|
360
369
|
# Start Simulation Engine
|
361
370
|
vce.start_vce(
|
362
371
|
num_supernodes=num_supernodes,
|
@@ -372,6 +381,11 @@ def _main_loop(
|
|
372
381
|
flwr_dir=flwr_dir,
|
373
382
|
)
|
374
383
|
|
384
|
+
updated_context = output_context_queue.get(timeout=3)
|
385
|
+
|
386
|
+
except Empty:
|
387
|
+
log(DEBUG, "Queue timeout. No context received.")
|
388
|
+
|
375
389
|
except Exception as ex:
|
376
390
|
log(ERROR, "An exception occurred !! %s", ex)
|
377
391
|
log(ERROR, traceback.format_exc())
|
@@ -381,13 +395,20 @@ def _main_loop(
|
|
381
395
|
finally:
|
382
396
|
# Trigger stop event
|
383
397
|
f_stop.set()
|
384
|
-
event(
|
398
|
+
event(
|
399
|
+
exit_event,
|
400
|
+
event_details={
|
401
|
+
"run-id-hash": get_sha256_hash(run.run_id),
|
402
|
+
"success": success,
|
403
|
+
},
|
404
|
+
)
|
385
405
|
if serverapp_th:
|
386
406
|
serverapp_th.join()
|
387
407
|
if server_app_thread_has_exception.is_set():
|
388
408
|
raise RuntimeError("Exception in ServerApp thread")
|
389
409
|
|
390
410
|
log(DEBUG, "Stopping Simulation Engine now.")
|
411
|
+
return updated_context
|
391
412
|
|
392
413
|
|
393
414
|
# pylint: disable=too-many-arguments,too-many-locals,too-many-positional-arguments
|
@@ -405,10 +426,9 @@ def _run_simulation(
|
|
405
426
|
flwr_dir: Optional[str] = None,
|
406
427
|
run: Optional[Run] = None,
|
407
428
|
enable_tf_gpu_growth: bool = False,
|
408
|
-
delay_start: int = 5,
|
409
429
|
verbose_logging: bool = False,
|
410
430
|
is_app: bool = False,
|
411
|
-
) ->
|
431
|
+
) -> Context:
|
412
432
|
"""Launch the Simulation Engine."""
|
413
433
|
if backend_config is None:
|
414
434
|
backend_config = {}
|
@@ -460,7 +480,6 @@ def _run_simulation(
|
|
460
480
|
enable_tf_gpu_growth,
|
461
481
|
run,
|
462
482
|
exit_event,
|
463
|
-
delay_start,
|
464
483
|
flwr_dir,
|
465
484
|
client_app,
|
466
485
|
client_app_attr,
|
@@ -488,7 +507,8 @@ def _run_simulation(
|
|
488
507
|
# Set logger propagation to False to prevent duplicated log output in Colab.
|
489
508
|
logger = set_logger_propagation(logger, False)
|
490
509
|
|
491
|
-
_main_loop(*args)
|
510
|
+
updated_context = _main_loop(*args)
|
511
|
+
return updated_context
|
492
512
|
|
493
513
|
|
494
514
|
def _parse_args_run_simulation() -> argparse.ArgumentParser:
|
@@ -538,13 +558,6 @@ def _parse_args_run_simulation() -> argparse.ArgumentParser:
|
|
538
558
|
"Read more about how `tf.config.experimental.set_memory_growth()` works in "
|
539
559
|
"the TensorFlow documentation: https://www.tensorflow.org/api/stable.",
|
540
560
|
)
|
541
|
-
parser.add_argument(
|
542
|
-
"--delay-start",
|
543
|
-
type=int,
|
544
|
-
default=3,
|
545
|
-
help="Buffer time (in seconds) to delay the start the simulation engine after "
|
546
|
-
"the `ServerApp`, which runs in a separate thread, has been launched.",
|
547
|
-
)
|
548
561
|
parser.add_argument(
|
549
562
|
"--verbose",
|
550
563
|
action="store_true",
|
@@ -23,6 +23,7 @@ import grpc
|
|
23
23
|
from flwr.common.constant import SIMULATIONIO_API_DEFAULT_CLIENT_ADDRESS
|
24
24
|
from flwr.common.grpc import create_channel
|
25
25
|
from flwr.common.logger import log
|
26
|
+
from flwr.common.retry_invoker import _make_simple_grpc_retry_invoker, _wrap_stub
|
26
27
|
from flwr.proto.simulationio_pb2_grpc import SimulationIoStub # pylint: disable=E0611
|
27
28
|
|
28
29
|
|
@@ -48,6 +49,7 @@ class SimulationIoConnection:
|
|
48
49
|
self._cert = root_certificates
|
49
50
|
self._grpc_stub: Optional[SimulationIoStub] = None
|
50
51
|
self._channel: Optional[grpc.Channel] = None
|
52
|
+
self._retry_invoker = _make_simple_grpc_retry_invoker()
|
51
53
|
|
52
54
|
@property
|
53
55
|
def _is_connected(self) -> bool:
|
@@ -72,6 +74,7 @@ class SimulationIoConnection:
|
|
72
74
|
root_certificates=self._cert,
|
73
75
|
)
|
74
76
|
self._grpc_stub = SimulationIoStub(self._channel)
|
77
|
+
_wrap_stub(self._grpc_stub, self._retry_invoker)
|
75
78
|
log(DEBUG, "[SimulationIO] Connected to %s", self._addr)
|
76
79
|
|
77
80
|
def _disconnect(self) -> None:
|
{flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.15.0.dev20250107
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
Home-page: https://flower.ai
|
6
6
|
License: Apache-2.0
|
@@ -118,7 +118,7 @@ Flower's goal is to make federated learning accessible to everyone. This series
|
|
118
118
|
|
119
119
|
4. **Custom Clients for Federated Learning**
|
120
120
|
|
121
|
-
[](https://colab.research.google.com/github/adap/flower/blob/main/
|
121
|
+
[](https://colab.research.google.com/github/adap/flower/blob/main/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb))
|
122
122
|
|
123
123
|
Stay tuned, more tutorials are coming soon. Topics include **Privacy and Security in Federated Learning**, and **Scaling Federated Learning**.
|
124
124
|
|
{flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/RECORD
RENAMED
@@ -6,14 +6,14 @@ flwr/cli/cli_user_auth_interceptor.py,sha256=rEjgAZmzHO0GjwdyZib6bkTI2X59ErJAZlu
|
|
6
6
|
flwr/cli/config_utils.py,sha256=I4_EMv2f68mfrL_QuOYoAG--yDfKisE7tGiIg09G2YQ,12079
|
7
7
|
flwr/cli/example.py,sha256=uk5CoD0ZITgpY_ffsTbEKf8XOOCSUzByjHPcMSPqV18,2216
|
8
8
|
flwr/cli/install.py,sha256=0AD0qJD79SKgBnWOQlphcubfr4zHk8jTpFgwZbJBI_g,8180
|
9
|
-
flwr/cli/log.py,sha256=
|
9
|
+
flwr/cli/log.py,sha256=O7MBpsJp114PIZb-7Cru-KM6fqyneFQkqoQbQsqQmZU,6121
|
10
10
|
flwr/cli/login/__init__.py,sha256=6_9zOzbPOAH72K2wX3-9dXTAbS7Mjpa5sEn2lA6eHHI,800
|
11
|
-
flwr/cli/login/login.py,sha256=
|
12
|
-
flwr/cli/ls.py,sha256=
|
11
|
+
flwr/cli/login/login.py,sha256=bZZ3hVeGpF5805R0Eg_SBZUGwrLAWmyaoLhLw6vQFcg,2764
|
12
|
+
flwr/cli/ls.py,sha256=K_3Bt2RfETw4V7J4qgo8_Wx-Y_bWZqttuO879Ppxo5Y,11056
|
13
13
|
flwr/cli/new/__init__.py,sha256=pOQtPT9W4kCIttcKne5m-FtJbvTqdjTVJxzQ9AUYK8I,790
|
14
14
|
flwr/cli/new/new.py,sha256=scyyKt8mzkc3El1bypgkHjKwVQEc2-q4I50PxriPFdI,9922
|
15
15
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
16
|
-
flwr/cli/new/templates/app/.gitignore.tpl,sha256=
|
16
|
+
flwr/cli/new/templates/app/.gitignore.tpl,sha256=HZJcGQoxp7aUzaPg8Uqch3kNrIESwr9yjimDxJYgXVY,3104
|
17
17
|
flwr/cli/new/templates/app/LICENSE.tpl,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
18
18
|
flwr/cli/new/templates/app/README.baseline.md.tpl,sha256=4dg2aBS-NIleVyDlxsG8m65Af6LIJ-pZA5ICjGFU5XA,9641
|
19
19
|
flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=QSG51uifue2KVZz2ZNw8kmOStS7svC2AQ2gTa5E7Bhs,3326
|
@@ -55,25 +55,25 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN
|
|
55
55
|
flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=SeIIo0rr_6ffn4Qx2xELD18jYXCkcW__NWtYEDXCICM,1843
|
56
56
|
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
|
57
57
|
flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
58
|
-
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=
|
59
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256
|
60
|
-
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=
|
61
|
-
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=
|
62
|
-
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=
|
63
|
-
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=
|
64
|
-
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=
|
65
|
-
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=
|
66
|
-
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=
|
58
|
+
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=5-xGWgb1s0c4E5KXfQqWzVziJXIsUp1cGwZEsMEI31Q,2666
|
59
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=-XdX44M9o6dl-EDBLtHLQejFGQlwQnjATgmEpA8cuq4,1873
|
60
|
+
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=QPxFT3_7RSUVwy8jjT6SeWmV9dl2FQ26gUhdp8O7CpI,1143
|
61
|
+
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=cFFgI0zzzyThm38iXy9OLBkPpZz8mOP1qSagBJvwxGQ,673
|
62
|
+
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=1qeTW-GHMAWr-vuMAJ-eijco9IIsftdBeqNH7g8x3Zw,744
|
63
|
+
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=nU-ij9nPXxmPgE2SGapXnRfghye8g_Fo1_ub5XpaKAE,612
|
64
|
+
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=PA_dEtWkY6Wf3Ektc9DvSKE81er3yDntf_VTtC1nDHc,710
|
65
|
+
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=d7TwWH-QJN0j-9rs9zHnng_bHeHV7mk138KXqdv5BoE,686
|
66
|
+
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=r0SZnvoR5a5mEWKJIvQ3rW8C6-2DkhaC8A1fTA0avm0,710
|
67
67
|
flwr/cli/run/__init__.py,sha256=cCsKVB0SFzh2b3QmGba6BHckB85xlhjh3mh4pBpACtY,790
|
68
|
-
flwr/cli/run/run.py,sha256=
|
69
|
-
flwr/cli/stop.py,sha256=
|
70
|
-
flwr/cli/utils.py,sha256=
|
68
|
+
flwr/cli/run/run.py,sha256=BvpjYyUvDhVMvO5cG711ihtdeSbls9p8zVAuFGETLA8,7893
|
69
|
+
flwr/cli/stop.py,sha256=1T9RNRCH8dxjmBT38hFtKAWY9Gb7RMCMCML7kex9WzE,4613
|
70
|
+
flwr/cli/utils.py,sha256=d15VkwxVK-NC1X-LVXXW3_O4-A38ZrlevwSNKNYpJCY,10592
|
71
71
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
72
|
-
flwr/client/app.py,sha256=
|
73
|
-
flwr/client/client.py,sha256=
|
72
|
+
flwr/client/app.py,sha256=XJWu-kPswM52oLYXaOLKr0gj87KPNRI7M0Na9oBsDK4,34784
|
73
|
+
flwr/client/client.py,sha256=8o58nd9o6ZFcMIaVYPGcV4MSjBG4H0oFgWiv8ZEO3oA,7895
|
74
74
|
flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
|
75
75
|
flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
|
76
|
-
flwr/client/clientapp/app.py,sha256=
|
76
|
+
flwr/client/clientapp/app.py,sha256=n3IbbQ__QBjd4n7hhP2oydYg66IvrnSXvwi3sZvnWeU,8949
|
77
77
|
flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
|
78
78
|
flwr/client/clientapp/utils.py,sha256=TTihPRO_AUhA3ZCszPsLyLZ30D_tnhTfe1ndMNVOBPg,4344
|
79
79
|
flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
|
@@ -83,11 +83,11 @@ flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1
|
|
83
83
|
flwr/client/grpc_client/connection.py,sha256=gMwB87mlmRBbvPOvUA1m3C-Ci6bjMEmTRI4bJpgbyic,9416
|
84
84
|
flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
|
85
85
|
flwr/client/grpc_rere_client/client_interceptor.py,sha256=q08lIEeJLvvonNOiejNXvmySbPObteGnbDHhEKDmWzE,5380
|
86
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
86
|
+
flwr/client/grpc_rere_client/connection.py,sha256=NqKSoYIJblB4lElZ7EKIgDjLb6KYEcI-7CBrTbyiKfg,11475
|
87
87
|
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=sQo0I9T65t97LFGoW_PrmgaTbd18GFgi2DoAI5wQJ4k,5589
|
88
88
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
89
89
|
flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
|
90
|
-
flwr/client/message_handler/message_handler.py,sha256=
|
90
|
+
flwr/client/message_handler/message_handler.py,sha256=s7FEfYJp5QB259Pj1L94_9AC24Kh5JyKC2U-E6eNkkY,6492
|
91
91
|
flwr/client/message_handler/task_handler.py,sha256=ZDJBKmrn2grRMNl1rU1iGs7FiMHL5VmZiSp_6h9GHVU,1824
|
92
92
|
flwr/client/mod/__init__.py,sha256=37XeXZLFq_tzFVKVtC9JaigM2bSAU7BrGQvMPCE3Q28,1159
|
93
93
|
flwr/client/mod/centraldp_mods.py,sha256=UGwNuqpmOWfLdfJITFgdi1TG-nLjuSb-cbEyoyfDgxQ,5415
|
@@ -101,12 +101,12 @@ flwr/client/nodestate/__init__.py,sha256=6FTlzydo1j0n55Tb-Qo0XmuqTUyRxg3x7jHgo3g
|
|
101
101
|
flwr/client/nodestate/in_memory_nodestate.py,sha256=MKI3jVPARPWJmNGw61k1-9LIXROkTx2PrhWjDM8cpHk,1291
|
102
102
|
flwr/client/nodestate/nodestate.py,sha256=CmHZdR6kVO8tkffg42W0Yb9JdRmrUonZ9deXfUNK6Hg,1024
|
103
103
|
flwr/client/nodestate/nodestate_factory.py,sha256=apUbcJG0a_FUVsc0TkNN3q9yovc9u_J34u9iuLFKTLQ,1430
|
104
|
-
flwr/client/numpy_client.py,sha256=
|
104
|
+
flwr/client/numpy_client.py,sha256=chTkL9dOtK_wgUoYtzp5mfDOC1k8xPAd1qPIsB3hcjA,9581
|
105
105
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
106
106
|
flwr/client/rest_client/connection.py,sha256=NWBu7Cc8LUTlf7GjJl3rgdCAykrE5suul_xZUV21OgI,12659
|
107
107
|
flwr/client/run_info_store.py,sha256=ZN2Phi4DSLbSyzg8RmzJcVYh1g6eurHOmWRCT7GMtw4,4040
|
108
108
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
109
|
-
flwr/client/supernode/app.py,sha256=
|
109
|
+
flwr/client/supernode/app.py,sha256=LCZs4ImGkleGgsn-b1AOK-u_P8Gi5nKeSvicEDRDF8Q,11400
|
110
110
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
111
111
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
112
112
|
flwr/common/address.py,sha256=9KNYE69WW_QVcyumsux3Qn1wmn4J7f13Y9nHASpvzbA,3018
|
@@ -122,7 +122,7 @@ flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf
|
|
122
122
|
flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
|
123
123
|
flwr/common/exit_handlers.py,sha256=MracJaBeoCOC7TaXK9zCJQxhrMSx9ZtczK237qvhBpU,2806
|
124
124
|
flwr/common/grpc.py,sha256=AIPMAHsvcTlduaYKCgnoBnst1A7RZEgGqh0Ulm7qfJ0,2621
|
125
|
-
flwr/common/logger.py,sha256=
|
125
|
+
flwr/common/logger.py,sha256=qwiOc9N_Dqh-NlxtENcMa-dCPqint20ZLuWEvnAEwHU,12323
|
126
126
|
flwr/common/message.py,sha256=Zv4ID2BLQsbff0F03DI_MeFoHbSqVZAdDD9NcKYv6Zo,13832
|
127
127
|
flwr/common/object_ref.py,sha256=fIXf8aP5mG6Nuni7dvcKK5Di3zRfRWGs4ljvqIXplds,10115
|
128
128
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
@@ -132,20 +132,20 @@ flwr/common/record/configsrecord.py,sha256=i40jOzBx04ysZKECwaw4FdUXMdY9HgdY8GAqK
|
|
132
132
|
flwr/common/record/conversion_utils.py,sha256=n3I3SI2P6hUjyxbWNc0QAch-SEhfMK6Hm-UUaplAlUc,1393
|
133
133
|
flwr/common/record/metricsrecord.py,sha256=UywkEPbifiu_IyPUFoDJCi8WEVLujlqZERUWAWpc3vs,5752
|
134
134
|
flwr/common/record/parametersrecord.py,sha256=SasHn35JRHsj8G1UT76FgRjaP4ZJasejvgjBV6HnaTg,7748
|
135
|
-
flwr/common/record/recordset.py,sha256=
|
135
|
+
flwr/common/record/recordset.py,sha256=qqIFdRZ0ivQhUhztpdxNIvCRDZQXY_zX0kKDEU9mhfM,8319
|
136
136
|
flwr/common/record/typeddict.py,sha256=q5hL2xkXymuiCprHWb69mUmLpWQk_XXQq0hGQ69YPaw,3599
|
137
137
|
flwr/common/recordset_compat.py,sha256=ViSwA26h6Q55ZmV1LLjSJpcKiipV-p_JpCj4wxdE-Ow,14230
|
138
|
-
flwr/common/retry_invoker.py,sha256=
|
138
|
+
flwr/common/retry_invoker.py,sha256=UIDKsn0AitS3fOr43WTqZAdD-TaHkBeTj1QxD7SGba0,14481
|
139
139
|
flwr/common/secure_aggregation/__init__.py,sha256=erPnTWdOfMH0K0HQTmj5foDJ6t3iYcExy2aACy8iZNQ,731
|
140
140
|
flwr/common/secure_aggregation/crypto/__init__.py,sha256=nlHesCWy8xxE5s6qHWnauCtyClcMQ2K0CEXAHakY5n0,738
|
141
141
|
flwr/common/secure_aggregation/crypto/shamir.py,sha256=wCSfEfeaPgJ9Om580-YPUF2ljiyRhq33TRC4HtwxYl8,2779
|
142
|
-
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=
|
142
|
+
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=J_pRkxbogc7e1fxRZStZFBdzzG5jeUycshJPpvyCt6g,5333
|
143
143
|
flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=zvVAIrIyI6OSzGhpCi8NNaTvPXmoMYQIPJT-NkBg8RU,3013
|
144
144
|
flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCMOS7VD93zHCzuv3MHU,2304
|
145
145
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
|
146
146
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=OgYd68YBRaHQYLc-YdExj9CSpwL58bVTaPrdHoAj2AE,3214
|
147
147
|
flwr/common/serde.py,sha256=K9ExsqcTPETESkt2HMaNtIQAIAfwmuwtJFlG-59I7Sw,31046
|
148
|
-
flwr/common/telemetry.py,sha256=
|
148
|
+
flwr/common/telemetry.py,sha256=APKVubU_zJNrE-M_rip6S6Fsu41DxY3tAjFWNOgTmC0,9086
|
149
149
|
flwr/common/typing.py,sha256=eTlGl56rdus583r11xHY_ejG-3b3rknqF735UY5zMK8,6025
|
150
150
|
flwr/common/version.py,sha256=aNSxLL49RKeLz8sPcZrsTEWtrAeQ0uxu6tjmfba4O60,1325
|
151
151
|
flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
|
@@ -211,7 +211,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
211
211
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
212
212
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
213
213
|
flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
|
214
|
-
flwr/server/app.py,sha256=
|
214
|
+
flwr/server/app.py,sha256=qn5gdsDqvJ7o4ZiWpbNBHtYKSZiUJ7SiGfdkUEczTd4,31010
|
215
215
|
flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
|
216
216
|
flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
|
217
217
|
flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
|
@@ -225,12 +225,12 @@ flwr/server/driver/driver.py,sha256=u_fMfqLYTroTafGCNwKPHI4lttRL-Z5CqeT3_FHSq-Q,
|
|
225
225
|
flwr/server/driver/grpc_driver.py,sha256=9Vns8XRSc3WmQn8KejJtJftgsg3UzsEwqPC8ekTGSHY,9636
|
226
226
|
flwr/server/driver/inmemory_driver.py,sha256=fCDhbP3OGmqWrUPQlagsMFGbEwFT0pn9OqhxeHr65zg,6614
|
227
227
|
flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
|
228
|
-
flwr/server/run_serverapp.py,sha256=
|
228
|
+
flwr/server/run_serverapp.py,sha256=vIPhvJx0i5sEZO4IKM6ruCXmx4ncat76rh0B4KhdhhM,2446
|
229
229
|
flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
|
230
230
|
flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
|
231
231
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
232
232
|
flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
|
233
|
-
flwr/server/serverapp/app.py,sha256=
|
233
|
+
flwr/server/serverapp/app.py,sha256=eh15kToGVRdIFXHyVKa58tWN5Hh3EIXHcYEbcIqqNb0,8467
|
234
234
|
flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
|
235
235
|
flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
|
236
236
|
flwr/server/strategy/aggregate.py,sha256=PDvekufza13s9AsVmz9WASunaBs3yCtl8JVliFx9j6Q,13978
|
@@ -259,7 +259,7 @@ flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbC
|
|
259
259
|
flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
|
260
260
|
flwr/server/superlink/driver/__init__.py,sha256=5soEK5QSvxNjmJQ-CGTWROc4alSAeU0e9Ad9RDhsd3E,717
|
261
261
|
flwr/server/superlink/driver/serverappio_grpc.py,sha256=62371xIRzp3k-eQTaSpb9c4TiSfueSuI7Iw5X3IafOY,2186
|
262
|
-
flwr/server/superlink/driver/serverappio_servicer.py,sha256=
|
262
|
+
flwr/server/superlink/driver/serverappio_servicer.py,sha256=mgyV0XTONO7Vqb7sGOLu6AkCXWpBSeJ2s7ksadK1vE4,12197
|
263
263
|
flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
|
264
264
|
flwr/server/superlink/ffs/disk_ffs.py,sha256=n_Ah0sQwXGVQ9wj5965nLjdkQQbpoHCljjXKFnwftsU,3297
|
265
265
|
flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
|
@@ -276,23 +276,23 @@ flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fG
|
|
276
276
|
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=KBVsGt57G2_OWB_74N29TYVzD36G0xJg2l5m0ArPoEU,5389
|
277
277
|
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=8PHzqtW_rKBvqI5XVwYN-CBEpEonnj85iN0daSWliyI,8299
|
278
278
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
|
279
|
-
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=
|
279
|
+
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=hzL8t6uUqO1lu5UHLF_NerdJuce4S5cK9fIWkKDzJfA,5298
|
280
280
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
|
281
281
|
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=0b10l9zz381GXgCmTZGoz76Z_fdRaa8XcqMGwuLqJ38,6723
|
282
282
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=TZJsKTpYO_djv2EXx9Ji62I8TA0JiZF8jvRyJRZkAes,784
|
283
283
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=cGgal5qpd0_MwEdIqjJbHHSIgGa6GSPoI5_byUwtG_k,1437
|
284
284
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0QIvVP5O-RQxKQlUGNUj974,2194
|
285
285
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=jsUkFEVQTnrucK1jNQ_cUM8YwL7W4MQNA1GAf8ibRdg,7156
|
286
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
286
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=WTnUILr1OHS8LfjXQUA3FyWJYdJgdqpFAybyJUD-1Xo,13025
|
287
287
|
flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
|
288
|
-
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=
|
289
|
-
flwr/server/superlink/linkstate/linkstate.py,sha256=
|
288
|
+
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=SR6a0wb-xFVQmPEsNseT91jmBeN0Lh1m_lZ6nY6aNS0,21984
|
289
|
+
flwr/server/superlink/linkstate/linkstate.py,sha256=ayQY5eb-2InSldQUnVcx5ABjPU4QhQRV2lEVPVM_818,13114
|
290
290
|
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
|
291
|
-
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=
|
291
|
+
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=svP5Vj6Jaq1iazd6q0wWQU0lJslfIJT0XBw8mA1SABs,42879
|
292
292
|
flwr/server/superlink/linkstate/utils.py,sha256=d5uqqIOCKfd54X8CFNfUr3AWqPLpgmzsC_RagRwFugM,13321
|
293
293
|
flwr/server/superlink/simulation/__init__.py,sha256=mg-oapC9dkzEfjXPQFior5lpWj4g9kwbLovptyYM_g0,718
|
294
294
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=5wflYW_TS0mjmPG6OYuHMJwXD2_cYmUNhFkdOU0jMWQ,2237
|
295
|
-
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=
|
295
|
+
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=J_TmdqM-Bxgp-iPEI3tvCuBpykw1UX0FouMQalEYAF4,6907
|
296
296
|
flwr/server/superlink/utils.py,sha256=KVb3K_g2vYfu9TnftcN0ewmev133WZcjuEePMm8d7GE,2137
|
297
297
|
flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
|
298
298
|
flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
|
@@ -305,14 +305,14 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B
|
|
305
305
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=l2IdMdJjs1bgHs5vQgLSOVzar7v2oxUn46oCrnVE1rM,5839
|
306
306
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=rfn2etO1nb7u-1oRl-H9q3enJZz3shMINZaBB7rPsC4,29671
|
307
307
|
flwr/simulation/__init__.py,sha256=5UcDVJNjFoSwWqHbGM1hKfTTUUNdwAtuoNvNrfvdkUY,1556
|
308
|
-
flwr/simulation/app.py,sha256=
|
308
|
+
flwr/simulation/app.py,sha256=cQgIJJujFUpBCcydxgakNygibf3Iww6OAWRo7Sq6y8w,9754
|
309
309
|
flwr/simulation/legacy_app.py,sha256=ySggtKEtXe8L77n8qyGXDA7UPv840MXh-QoalzoGiLU,15780
|
310
310
|
flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
|
311
311
|
flwr/simulation/ray_transport/ray_actor.py,sha256=k11yoAPQzFGQU-KnCCP0ZrfPPdUPXXrBe-1DKM5VdW4,18997
|
312
312
|
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2vjOKoom3B74C6XU-jC3N6DwYmsLdB-lmkHZ_Xrv96o,7367
|
313
313
|
flwr/simulation/ray_transport/utils.py,sha256=wtbQhKQ4jGoiQDLJNQP17m1DSfL22ERhDBGuoeUFaAQ,2393
|
314
|
-
flwr/simulation/run_simulation.py,sha256=
|
315
|
-
flwr/simulation/simulationio_connection.py,sha256=
|
314
|
+
flwr/simulation/run_simulation.py,sha256=KFpdL_RxE8NHZ68ZdghmFS6rccmWkO_iQ-kLLE1WUn8,20336
|
315
|
+
flwr/simulation/simulationio_connection.py,sha256=8aAh6MKQkQPMSnWEqA5vua_QzZtoMxG-_-AB23RPhS4,3412
|
316
316
|
flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
|
317
317
|
flwr/superexec/app.py,sha256=Z6kYHWd62YL0Q4YKyCAbt_BcefNfbKH6V-jCC-1NkZM,1842
|
318
318
|
flwr/superexec/deployment.py,sha256=wZ9G42gGS91knfplswh95MnQ83Fzu-rs6wcuNgDmmvY,6735
|
@@ -321,8 +321,8 @@ flwr/superexec/exec_servicer.py,sha256=8tFwj1fDBF6PzwLhByTlxM-KNZc83bG1UdE92-8DS
|
|
321
321
|
flwr/superexec/exec_user_auth_interceptor.py,sha256=K06OU-l4LnYhTDg071hGJuOaQWEJbZsYi5qxUmmtiG0,3704
|
322
322
|
flwr/superexec/executor.py,sha256=_B55WW2TD1fBINpabSSDRenVHXYmvlfhv-k8hJKU4lQ,3115
|
323
323
|
flwr/superexec/simulation.py,sha256=WQDon15oqpMopAZnwRZoTICYCfHqtkvFSqiTQ2hLD_g,4088
|
324
|
-
flwr_nightly-1.
|
325
|
-
flwr_nightly-1.
|
326
|
-
flwr_nightly-1.
|
327
|
-
flwr_nightly-1.
|
328
|
-
flwr_nightly-1.
|
324
|
+
flwr_nightly-1.15.0.dev20250107.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
325
|
+
flwr_nightly-1.15.0.dev20250107.dist-info/METADATA,sha256=WViuONypdpsZ9HD8sY37AA9v1KR4FA86-PspOAyHPCQ,15810
|
326
|
+
flwr_nightly-1.15.0.dev20250107.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
327
|
+
flwr_nightly-1.15.0.dev20250107.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
|
328
|
+
flwr_nightly-1.15.0.dev20250107.dist-info/RECORD,,
|
{flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/LICENSE
RENAMED
File without changes
|
{flwr_nightly-1.14.0.dev20241214.dist-info → flwr_nightly-1.15.0.dev20250107.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|