flwr-nightly 1.12.0.dev20240918__py3-none-any.whl → 1.12.0.dev20241006__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.
- flwr/cli/app.py +2 -0
- flwr/cli/log.py +234 -0
- flwr/cli/new/new.py +1 -1
- flwr/cli/new/templates/app/README.flowertune.md.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -0
- flwr/cli/run/run.py +17 -1
- flwr/client/grpc_rere_client/client_interceptor.py +3 -0
- flwr/client/grpc_rere_client/connection.py +3 -3
- flwr/client/grpc_rere_client/grpc_adapter.py +14 -3
- flwr/client/rest_client/connection.py +3 -3
- flwr/client/supernode/app.py +1 -0
- flwr/common/constant.py +6 -3
- flwr/common/secure_aggregation/secaggplus_utils.py +4 -4
- flwr/common/serde.py +22 -7
- flwr/proto/control_pb2.py +27 -0
- flwr/proto/control_pb2.pyi +7 -0
- flwr/proto/control_pb2_grpc.py +135 -0
- flwr/proto/control_pb2_grpc.pyi +53 -0
- flwr/proto/driver_pb2.py +15 -24
- flwr/proto/driver_pb2.pyi +0 -52
- flwr/proto/driver_pb2_grpc.py +6 -6
- flwr/proto/driver_pb2_grpc.pyi +4 -4
- flwr/proto/fab_pb2.py +8 -7
- flwr/proto/fab_pb2.pyi +7 -1
- flwr/proto/fleet_pb2.py +10 -10
- flwr/proto/fleet_pb2.pyi +6 -1
- flwr/proto/recordset_pb2.py +35 -33
- flwr/proto/recordset_pb2.pyi +40 -14
- flwr/proto/run_pb2.py +33 -9
- flwr/proto/run_pb2.pyi +150 -1
- flwr/proto/transport_pb2.py +8 -8
- flwr/proto/transport_pb2.pyi +9 -6
- flwr/server/run_serverapp.py +2 -2
- flwr/server/superlink/driver/driver_servicer.py +2 -2
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +17 -2
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +4 -0
- flwr/server/superlink/state/in_memory_state.py +17 -0
- flwr/server/superlink/state/sqlite_state.py +44 -6
- flwr/server/utils/validator.py +6 -0
- flwr/superexec/deployment.py +3 -1
- flwr/superexec/exec_servicer.py +68 -3
- flwr/superexec/executor.py +2 -1
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/METADATA +4 -2
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/RECORD +47 -42
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/entry_points.txt +0 -0
|
@@ -372,7 +372,18 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
372
372
|
# Create task_id
|
|
373
373
|
task_id = uuid4()
|
|
374
374
|
|
|
375
|
-
|
|
375
|
+
task_ins_id = task_res.task.ancestry[0]
|
|
376
|
+
task_ins = self.get_valid_task_ins(task_ins_id)
|
|
377
|
+
if task_ins is None:
|
|
378
|
+
log(
|
|
379
|
+
ERROR,
|
|
380
|
+
"Failed to store TaskRes: "
|
|
381
|
+
"TaskIns with task_id %s does not exist or has expired.",
|
|
382
|
+
task_ins_id,
|
|
383
|
+
)
|
|
384
|
+
return None
|
|
385
|
+
|
|
386
|
+
# Store TaskRes
|
|
376
387
|
task_res.task_id = str(task_id)
|
|
377
388
|
data = (task_res_to_dict(task_res),)
|
|
378
389
|
|
|
@@ -782,8 +793,9 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
782
793
|
# Convert the uint64 value to sint64 for SQLite
|
|
783
794
|
sint64_run_id = convert_uint64_to_sint64(run_id)
|
|
784
795
|
query = "SELECT * FROM run WHERE run_id = ?;"
|
|
785
|
-
|
|
786
|
-
|
|
796
|
+
rows = self.query(query, (sint64_run_id,))
|
|
797
|
+
if rows:
|
|
798
|
+
row = rows[0]
|
|
787
799
|
return Run(
|
|
788
800
|
run_id=convert_sint64_to_uint64(row["run_id"]),
|
|
789
801
|
fab_id=row["fab_id"],
|
|
@@ -791,9 +803,8 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
791
803
|
fab_hash=row["fab_hash"],
|
|
792
804
|
override_config=json.loads(row["override_config"]),
|
|
793
805
|
)
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
return None
|
|
806
|
+
log(ERROR, "`run_id` does not exist.")
|
|
807
|
+
return None
|
|
797
808
|
|
|
798
809
|
def acknowledge_ping(self, node_id: int, ping_interval: float) -> bool:
|
|
799
810
|
"""Acknowledge a ping received from a node, serving as a heartbeat."""
|
|
@@ -810,6 +821,33 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
810
821
|
log(ERROR, "`node_id` does not exist.")
|
|
811
822
|
return False
|
|
812
823
|
|
|
824
|
+
def get_valid_task_ins(self, task_id: str) -> Optional[dict[str, Any]]:
|
|
825
|
+
"""Check if the TaskIns exists and is valid (not expired).
|
|
826
|
+
|
|
827
|
+
Return TaskIns if valid.
|
|
828
|
+
"""
|
|
829
|
+
query = """
|
|
830
|
+
SELECT *
|
|
831
|
+
FROM task_ins
|
|
832
|
+
WHERE task_id = :task_id
|
|
833
|
+
"""
|
|
834
|
+
data = {"task_id": task_id}
|
|
835
|
+
rows = self.query(query, data)
|
|
836
|
+
if not rows:
|
|
837
|
+
# TaskIns does not exist
|
|
838
|
+
return None
|
|
839
|
+
|
|
840
|
+
task_ins = rows[0]
|
|
841
|
+
created_at = task_ins["created_at"]
|
|
842
|
+
ttl = task_ins["ttl"]
|
|
843
|
+
current_time = time.time()
|
|
844
|
+
|
|
845
|
+
# Check if TaskIns is expired
|
|
846
|
+
if ttl is not None and created_at + ttl <= current_time:
|
|
847
|
+
return None
|
|
848
|
+
|
|
849
|
+
return task_ins
|
|
850
|
+
|
|
813
851
|
|
|
814
852
|
def dict_factory(
|
|
815
853
|
cursor: sqlite3.Cursor,
|
flwr/server/utils/validator.py
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"""Validators."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
import time
|
|
18
19
|
from typing import Union
|
|
19
20
|
|
|
20
21
|
from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
|
|
@@ -47,6 +48,11 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> list[str
|
|
|
47
48
|
# unix timestamp of 27 March 2024 00h:00m:00s UTC
|
|
48
49
|
validation_errors.append("`pushed_at` is not a recent timestamp")
|
|
49
50
|
|
|
51
|
+
# Verify TTL and created_at time
|
|
52
|
+
current_time = time.time()
|
|
53
|
+
if tasks_ins_res.task.created_at + tasks_ins_res.task.ttl <= current_time:
|
|
54
|
+
validation_errors.append("Task TTL has expired")
|
|
55
|
+
|
|
50
56
|
# TaskIns specific
|
|
51
57
|
if isinstance(tasks_ins_res, TaskIns):
|
|
52
58
|
# Task producer
|
flwr/superexec/deployment.py
CHANGED
|
@@ -28,8 +28,8 @@ from flwr.common.grpc import create_channel
|
|
|
28
28
|
from flwr.common.logger import log
|
|
29
29
|
from flwr.common.serde import fab_to_proto, user_config_to_proto
|
|
30
30
|
from flwr.common.typing import Fab, UserConfig
|
|
31
|
-
from flwr.proto.driver_pb2 import CreateRunRequest # pylint: disable=E0611
|
|
32
31
|
from flwr.proto.driver_pb2_grpc import DriverStub
|
|
32
|
+
from flwr.proto.run_pb2 import CreateRunRequest # pylint: disable=E0611
|
|
33
33
|
|
|
34
34
|
from .executor import Executor, RunTracker
|
|
35
35
|
|
|
@@ -167,6 +167,8 @@ class DeploymentEngine(Executor):
|
|
|
167
167
|
# Execute the command
|
|
168
168
|
proc = subprocess.Popen( # pylint: disable=consider-using-with
|
|
169
169
|
command,
|
|
170
|
+
stdout=subprocess.PIPE,
|
|
171
|
+
stderr=subprocess.PIPE,
|
|
170
172
|
text=True,
|
|
171
173
|
)
|
|
172
174
|
log(INFO, "Started run %s", str(run_id))
|
flwr/superexec/exec_servicer.py
CHANGED
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"""SuperExec API servicer."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
import select
|
|
19
|
+
import sys
|
|
20
|
+
import threading
|
|
21
|
+
import time
|
|
18
22
|
from collections.abc import Generator
|
|
19
23
|
from logging import ERROR, INFO
|
|
20
24
|
from typing import Any
|
|
@@ -33,6 +37,8 @@ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
|
|
|
33
37
|
|
|
34
38
|
from .executor import Executor, RunTracker
|
|
35
39
|
|
|
40
|
+
SELECT_TIMEOUT = 1 # Timeout for selecting ready-to-read file descriptors (in seconds)
|
|
41
|
+
|
|
36
42
|
|
|
37
43
|
class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
38
44
|
"""SuperExec API servicer."""
|
|
@@ -59,13 +65,72 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
|
59
65
|
|
|
60
66
|
self.runs[run.run_id] = run
|
|
61
67
|
|
|
68
|
+
# Start a background thread to capture the log output
|
|
69
|
+
capture_thread = threading.Thread(
|
|
70
|
+
target=_capture_logs, args=(run,), daemon=True
|
|
71
|
+
)
|
|
72
|
+
capture_thread.start()
|
|
73
|
+
|
|
62
74
|
return StartRunResponse(run_id=run.run_id)
|
|
63
75
|
|
|
64
|
-
def StreamLogs(
|
|
76
|
+
def StreamLogs( # pylint: disable=C0103
|
|
65
77
|
self, request: StreamLogsRequest, context: grpc.ServicerContext
|
|
66
78
|
) -> Generator[StreamLogsResponse, Any, None]:
|
|
67
79
|
"""Get logs."""
|
|
68
|
-
|
|
80
|
+
log(INFO, "ExecServicer.StreamLogs")
|
|
81
|
+
|
|
82
|
+
# Exit if `run_id` not found
|
|
83
|
+
if request.run_id not in self.runs:
|
|
84
|
+
context.abort(grpc.StatusCode.NOT_FOUND, "Run ID not found")
|
|
85
|
+
|
|
86
|
+
last_sent_index = 0
|
|
69
87
|
while context.is_active():
|
|
70
|
-
|
|
88
|
+
# Yield n'th row of logs, if n'th row < len(logs)
|
|
89
|
+
logs = self.runs[request.run_id].logs
|
|
90
|
+
for i in range(last_sent_index, len(logs)):
|
|
71
91
|
yield StreamLogsResponse(log_output=logs[i])
|
|
92
|
+
last_sent_index = len(logs)
|
|
93
|
+
|
|
94
|
+
# Wait for and continue to yield more log responses only if the
|
|
95
|
+
# run isn't completed yet. If the run is finished, the entire log
|
|
96
|
+
# is returned at this point and the server ends the stream.
|
|
97
|
+
if self.runs[request.run_id].proc.poll() is not None:
|
|
98
|
+
log(INFO, "All logs for run ID `%s` returned", request.run_id)
|
|
99
|
+
context.set_code(grpc.StatusCode.OK)
|
|
100
|
+
context.cancel()
|
|
101
|
+
|
|
102
|
+
time.sleep(1.0) # Sleep briefly to avoid busy waiting
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _capture_logs(
|
|
106
|
+
run: RunTracker,
|
|
107
|
+
) -> None:
|
|
108
|
+
while True:
|
|
109
|
+
# Explicitly check if Popen.poll() is None. Required for `pytest`.
|
|
110
|
+
if run.proc.poll() is None:
|
|
111
|
+
# Select streams only when ready to read
|
|
112
|
+
ready_to_read, _, _ = select.select(
|
|
113
|
+
[run.proc.stdout, run.proc.stderr],
|
|
114
|
+
[],
|
|
115
|
+
[],
|
|
116
|
+
SELECT_TIMEOUT,
|
|
117
|
+
)
|
|
118
|
+
# Read from std* and append to RunTracker.logs
|
|
119
|
+
for stream in ready_to_read:
|
|
120
|
+
# Flush stdout to view output in real time
|
|
121
|
+
readline = stream.readline()
|
|
122
|
+
sys.stdout.write(readline)
|
|
123
|
+
sys.stdout.flush()
|
|
124
|
+
# Append to logs
|
|
125
|
+
line = readline.rstrip()
|
|
126
|
+
if line:
|
|
127
|
+
run.logs.append(f"{line}")
|
|
128
|
+
|
|
129
|
+
# Close std* to prevent blocking
|
|
130
|
+
elif run.proc.poll() is not None:
|
|
131
|
+
log(INFO, "Subprocess finished, exiting log capture")
|
|
132
|
+
if run.proc.stdout:
|
|
133
|
+
run.proc.stdout.close()
|
|
134
|
+
if run.proc.stderr:
|
|
135
|
+
run.proc.stderr.close()
|
|
136
|
+
break
|
flwr/superexec/executor.py
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"""Execute and monitor a Flower run."""
|
|
16
16
|
|
|
17
17
|
from abc import ABC, abstractmethod
|
|
18
|
-
from dataclasses import dataclass
|
|
18
|
+
from dataclasses import dataclass, field
|
|
19
19
|
from subprocess import Popen
|
|
20
20
|
from typing import Optional
|
|
21
21
|
|
|
@@ -28,6 +28,7 @@ class RunTracker:
|
|
|
28
28
|
|
|
29
29
|
run_id: int
|
|
30
30
|
proc: Popen # type: ignore
|
|
31
|
+
logs: list[str] = field(default_factory=list)
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
class Executor(ABC):
|
{flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.12.0.
|
|
3
|
+
Version: 1.12.0.dev20241006
|
|
4
4
|
Summary: Flower: A Friendly Federated Learning Framework
|
|
5
5
|
Home-page: https://flower.ai
|
|
6
6
|
License: Apache-2.0
|
|
@@ -43,7 +43,7 @@ Requires-Dist: requests (>=2.31.0,<3.0.0) ; extra == "rest"
|
|
|
43
43
|
Requires-Dist: starlette (>=0.31.0,<0.32.0) ; extra == "rest"
|
|
44
44
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
|
45
45
|
Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
|
|
46
|
-
Requires-Dist: typer
|
|
46
|
+
Requires-Dist: typer (>=0.12.5,<0.13.0)
|
|
47
47
|
Requires-Dist: uvicorn[standard] (>=0.23.0,<0.24.0) ; extra == "rest"
|
|
48
48
|
Project-URL: Documentation, https://flower.ai
|
|
49
49
|
Project-URL: Repository, https://github.com/adap/flower
|
|
@@ -69,6 +69,7 @@ Description-Content-Type: text/markdown
|
|
|
69
69
|
[](https://github.com/adap/flower/blob/main/CONTRIBUTING.md)
|
|
70
70
|

|
|
71
71
|
[](https://pepy.tech/project/flwr)
|
|
72
|
+
[](https://hub.docker.com/u/flwr)
|
|
72
73
|
[](https://flower.ai/join-slack)
|
|
73
74
|
|
|
74
75
|
Flower (`flwr`) is a framework for building federated learning systems. The
|
|
@@ -152,6 +153,7 @@ Flower Baselines is a collection of community-contributed projects that reproduc
|
|
|
152
153
|
- [FedNova](https://github.com/adap/flower/tree/main/baselines/fednova)
|
|
153
154
|
- [HeteroFL](https://github.com/adap/flower/tree/main/baselines/heterofl)
|
|
154
155
|
- [FedAvgM](https://github.com/adap/flower/tree/main/baselines/fedavgm)
|
|
156
|
+
- [FedRep](https://github.com/adap/flower/tree/main/baselines/fedrep)
|
|
155
157
|
- [FedStar](https://github.com/adap/flower/tree/main/baselines/fedstar)
|
|
156
158
|
- [FedWav2vec2](https://github.com/adap/flower/tree/main/baselines/fedwav2vec2)
|
|
157
159
|
- [FjORD](https://github.com/adap/flower/tree/main/baselines/fjord)
|
{flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/RECORD
RENAMED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
|
|
2
2
|
flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
|
|
3
|
-
flwr/cli/app.py,sha256=
|
|
3
|
+
flwr/cli/app.py,sha256=_HDs7HS12Dp7NXIyVrkPs1SKJq3x-XvVZd6y1lvyud4,1255
|
|
4
4
|
flwr/cli/build.py,sha256=H4xrQPDj7kvZ7Ys65yb-jE86RLEmvIE3pZ3mokZfJHg,5145
|
|
5
5
|
flwr/cli/config_utils.py,sha256=uJmJAHNoqeSeAC3BAxxoBuYOR9eV3mJg8wrWZgbGp3E,7521
|
|
6
6
|
flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
|
|
7
7
|
flwr/cli/install.py,sha256=t5tdeKOsTmG3nuInUoSKBVzUU1RnzA096yzYs013VhE,7065
|
|
8
|
+
flwr/cli/log.py,sha256=uhtcLcFGkazirWnEmet3Wt3rt_q-a13kauQqPLaMaRY,8097
|
|
8
9
|
flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
|
|
9
|
-
flwr/cli/new/new.py,sha256=
|
|
10
|
+
flwr/cli/new/new.py,sha256=wpHBmHOq6X04CPwJDaEgu3H5_MsfoEYsYsv3E-EDhzM,9558
|
|
10
11
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
|
11
12
|
flwr/cli/new/templates/app/.gitignore.tpl,sha256=XixnHdyeMB2vwkGtGnwHqoWpH-9WChdyG0GXe57duhc,3078
|
|
12
13
|
flwr/cli/new/templates/app/LICENSE.tpl,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
13
14
|
flwr/cli/new/templates/app/README.baseline.md.tpl,sha256=4dg2aBS-NIleVyDlxsG8m65Af6LIJ-pZA5ICjGFU5XA,9641
|
|
14
|
-
flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=
|
|
15
|
+
flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=QSG51uifue2KVZz2ZNw8kmOStS7svC2AQ2gTa5E7Bhs,3326
|
|
15
16
|
flwr/cli/new/templates/app/README.md.tpl,sha256=t7w4YFZEcJOxAnuJmNPw5-fDdIJu7PfLd8gFJDiBwwo,436
|
|
16
17
|
flwr/cli/new/templates/app/__init__.py,sha256=DU7QMY7IhMQyuwm_tja66xU0KXTWQFqzfTqwg-_NJdE,729
|
|
17
18
|
flwr/cli/new/templates/app/code/__init__.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
|
@@ -49,7 +50,7 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=NgbPix74X1t3ybaGjqdls
|
|
|
49
50
|
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
|
|
50
51
|
flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
|
51
52
|
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=4gi90W9_B1kj6rYkpvVJxhNX9Yctsv9OH6CzXP-dcE4,2666
|
|
52
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256
|
|
53
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=bYdDP0O8z741pvy1INnH4UBuP-KFvcyQt6Yo81n4frQ,1853
|
|
53
54
|
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=CHJgkPNkJfzJhEbTe15uiV3AhOtIddQi-yofPZsCk3E,1143
|
|
54
55
|
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=Tq6jeGcoOKzMwWWYxMVnzMcipLURHLiW69iYlD1ywMg,659
|
|
55
56
|
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=SHwYAA2qgIlOAU3Sb9BKSZcZ7O9biACg27MHexXUtDw,741
|
|
@@ -58,7 +59,7 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=vIO1ArukTC76ogYLNmJ
|
|
|
58
59
|
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=jk_5teoyOVM9QdBea8J-nk10S6TKw81QZiiKB54ATF0,654
|
|
59
60
|
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=bRIvPCPvTTI4Eo5b61Rmw8WdDw3sjcohciTXgULN5l8,702
|
|
60
61
|
flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
|
|
61
|
-
flwr/cli/run/run.py,sha256=
|
|
62
|
+
flwr/cli/run/run.py,sha256=tLKeWpWJqEBxkOtDKEprL4SBKxH1vHGybQxlCLnXiSQ,8386
|
|
62
63
|
flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
|
|
63
64
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
|
64
65
|
flwr/client/app.py,sha256=cH0LAmpm6M8rfgc3lJFJ3pEwCVEgMuv-58WvOo6FEw0,31956
|
|
@@ -74,9 +75,9 @@ flwr/client/grpc_adapter_client/connection.py,sha256=50LlADsrvvo_kYoGRXOph3ICAmc
|
|
|
74
75
|
flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
|
|
75
76
|
flwr/client/grpc_client/connection.py,sha256=WX0cKlV_S19bYYp52z3PYRrtOdGb52ovvFFVWIz6Uyw,9382
|
|
76
77
|
flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
|
|
77
|
-
flwr/client/grpc_rere_client/client_interceptor.py,sha256=
|
|
78
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
|
79
|
-
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=
|
|
78
|
+
flwr/client/grpc_rere_client/client_interceptor.py,sha256=q08lIEeJLvvonNOiejNXvmySbPObteGnbDHhEKDmWzE,5380
|
|
79
|
+
flwr/client/grpc_rere_client/connection.py,sha256=tppAfMTV1yLBNmgS0KuvqGUjaecpA7SWbPIITkfEHcY,10960
|
|
80
|
+
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=sQo0I9T65t97LFGoW_PrmgaTbd18GFgi2DoAI5wQJ4k,5589
|
|
80
81
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
|
81
82
|
flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
|
|
82
83
|
flwr/client/message_handler/message_handler.py,sha256=lwBUvnY21GTK9uZPyxfiAPnGav9ueKo7YmyDpzUU6-Y,6524
|
|
@@ -93,14 +94,14 @@ flwr/client/node_state.py,sha256=HRKqkgTVGcZXL7nQSQ1nLxNx22eLyaCCIieZ5NZXgnA,394
|
|
|
93
94
|
flwr/client/node_state_tests.py,sha256=-4fVsn7y-z9NYBuhq-cjepgxgVuPqqQgDOL4SofrdIo,2239
|
|
94
95
|
flwr/client/numpy_client.py,sha256=tqGyhIkeeZQGr65BR03B7TWgx4rW3FA7G2874D8z_VU,11167
|
|
95
96
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
|
96
|
-
flwr/client/rest_client/connection.py,sha256=
|
|
97
|
+
flwr/client/rest_client/connection.py,sha256=icPDYPaTMWn3bQ9g42VUHEppcIVcBJFGuV3leo7mMpo,12814
|
|
97
98
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
|
98
|
-
flwr/client/supernode/app.py,sha256=
|
|
99
|
+
flwr/client/supernode/app.py,sha256=it4jm9GATntwmRJNXfIIfsS8bTIRwba94B1uNy0I2TM,11973
|
|
99
100
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
|
100
101
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
|
101
102
|
flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
|
|
102
103
|
flwr/common/config.py,sha256=QjsDEDf4xsx8StJV9I80dYWbBp7aBNrJmTlAeLpQpyw,7567
|
|
103
|
-
flwr/common/constant.py,sha256=
|
|
104
|
+
flwr/common/constant.py,sha256=m2FkF5QzFC_72hFxDioekOHwhilPKCds1axojg77oX8,3606
|
|
104
105
|
flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
|
|
105
106
|
flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
|
|
106
107
|
flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
|
|
@@ -129,8 +130,8 @@ flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=wTDbOaMGZwT
|
|
|
129
130
|
flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=zvVAIrIyI6OSzGhpCi8NNaTvPXmoMYQIPJT-NkBg8RU,3013
|
|
130
131
|
flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCMOS7VD93zHCzuv3MHU,2304
|
|
131
132
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
|
|
132
|
-
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=
|
|
133
|
-
flwr/common/serde.py,sha256=
|
|
133
|
+
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=o7IhHH6J9xqinhQy3TdPgQpoj1XyEpyv3OQFyx81RVQ,3193
|
|
134
|
+
flwr/common/serde.py,sha256=74nN5uqASdqfykSWPOhaTJARA07Iznyg3Nyr-dh-uy4,29918
|
|
134
135
|
flwr/common/telemetry.py,sha256=PvdlipCPYciqEgmXRwQ1HklP1uyECcNqt9HTBzthmAg,8904
|
|
135
136
|
flwr/common/typing.py,sha256=ZVviEABqDeGCyo_yM9ft8EbIGA9RaLOeoNHmMnTkmUo,4985
|
|
136
137
|
flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
|
|
@@ -143,10 +144,14 @@ flwr/proto/common_pb2.py,sha256=uzSmq0FJdC-MriN9UGPFs7QVIFTKJmX5lyLnzcyZ5WE,2405
|
|
|
143
144
|
flwr/proto/common_pb2.pyi,sha256=0ylFO7G79qqLuRg9IQUCBdgyIIFv4m8VzrfoWad4xXU,5394
|
|
144
145
|
flwr/proto/common_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
145
146
|
flwr/proto/common_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
146
|
-
flwr/proto/
|
|
147
|
-
flwr/proto/
|
|
148
|
-
flwr/proto/
|
|
149
|
-
flwr/proto/
|
|
147
|
+
flwr/proto/control_pb2.py,sha256=yaUkwY2J9uo-fdUIB5aHwVSDOuGunxaUr4ZlggifA_M,1439
|
|
148
|
+
flwr/proto/control_pb2.pyi,sha256=XbFvpZvvrS7QcH5AFXfpRGl4hQvhd3QdKO6x0oTlCCU,165
|
|
149
|
+
flwr/proto/control_pb2_grpc.py,sha256=FFE21nZvEILWpe1WCR5vAwgYEtpzrdG78-_SsU0gZ7w,5783
|
|
150
|
+
flwr/proto/control_pb2_grpc.pyi,sha256=9DU4sgkzJ497a4Nq6kitZWEG4g_5MO8MevichnO0oAg,1672
|
|
151
|
+
flwr/proto/driver_pb2.py,sha256=Z2fRF9mBa0cR0p6cItgyp5Q70WUAsh--kPEq8aIJuZk,3176
|
|
152
|
+
flwr/proto/driver_pb2.pyi,sha256=jUOe6tHWQhddVbB3xtnNvlrztNUcxRHHJS7-LqGO_70,4034
|
|
153
|
+
flwr/proto/driver_pb2_grpc.py,sha256=SGNmNcpsSWRc0jjNyH0xYNB8a7DAxIsXaL9a0M78vZw,10444
|
|
154
|
+
flwr/proto/driver_pb2_grpc.pyi,sha256=wTVkRgVUNq2Jnzo5yhIIqGFiLN_VRB1zpjfqRLD5QnM,2800
|
|
150
155
|
flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
|
|
151
156
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
152
157
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
@@ -155,12 +160,12 @@ flwr/proto/exec_pb2.py,sha256=GH_VWC-BZwWmeWdmjP4IkXvwR8yY1uBZNNwKru-ZZL4,3231
|
|
|
155
160
|
flwr/proto/exec_pb2.pyi,sha256=5y6L3xFkAuCfLTn2pVIHQAlXp17YcTTq8WVDS7_MPl4,4273
|
|
156
161
|
flwr/proto/exec_pb2_grpc.py,sha256=faAN19XEMP8GTKrcIU6jvlWkN44n2KiUsZh_OG0sYcg,4072
|
|
157
162
|
flwr/proto/exec_pb2_grpc.pyi,sha256=VrFhT1Um3Nb8UC2YqnR9GIiM-Yyx0FqaxVOWljh-G_w,1208
|
|
158
|
-
flwr/proto/fab_pb2.py,sha256=
|
|
159
|
-
flwr/proto/fab_pb2.pyi,sha256=
|
|
163
|
+
flwr/proto/fab_pb2.py,sha256=3QSDq9pjbZoqVxsmCRDwHO5PrSjzn2vixjYxE-qPmb0,1589
|
|
164
|
+
flwr/proto/fab_pb2.pyi,sha256=fXI108QaFtbl1WWTyslPbIx9c_19D0aYCoFn0xYtL4U,2277
|
|
160
165
|
flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
161
166
|
flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
162
|
-
flwr/proto/fleet_pb2.py,sha256=
|
|
163
|
-
flwr/proto/fleet_pb2.pyi,sha256=
|
|
167
|
+
flwr/proto/fleet_pb2.py,sha256=06NAaIAOxTA2UhkBA-VWZKflaVQIzXgPZ3Fb6vtliY0,4789
|
|
168
|
+
flwr/proto/fleet_pb2.pyi,sha256=bkzPOFXaYVZv9jRIA_XqckTR4dLZcfPRmluaGeoqxBY,7851
|
|
164
169
|
flwr/proto/fleet_pb2_grpc.py,sha256=VyqpAcX-6tiQVehQfRMbCErtIW4Mot1uXUSzRaklZTI,12228
|
|
165
170
|
flwr/proto/fleet_pb2_grpc.pyi,sha256=VvOtOBwPcgoHRPgj2JENXq2HbcfU8cxp82E9tDfGyEs,3216
|
|
166
171
|
flwr/proto/grpcadapter_pb2.py,sha256=bb8mW09XzNCpMdr1KuYQkefPFWR8lc8y1uL6Uk0TtsM,1843
|
|
@@ -175,20 +180,20 @@ flwr/proto/node_pb2.py,sha256=qrxEpf7Up9XhigP8g9cIHVhmpdKmYpxMdlO67H0xjEM,1081
|
|
|
175
180
|
flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
|
|
176
181
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
177
182
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
178
|
-
flwr/proto/recordset_pb2.py,sha256=
|
|
179
|
-
flwr/proto/recordset_pb2.pyi,sha256=
|
|
183
|
+
flwr/proto/recordset_pb2.py,sha256=XjEIDU-YlKSY59qNd0qXTFB4COvMHGiszQ5O1krJ1Ks,6367
|
|
184
|
+
flwr/proto/recordset_pb2.pyi,sha256=ypFNvroU4aIlnN0D6W4XAsOfm0UzTfXhxxL1v7u__Ac,15370
|
|
180
185
|
flwr/proto/recordset_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
181
186
|
flwr/proto/recordset_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
182
|
-
flwr/proto/run_pb2.py,sha256=
|
|
183
|
-
flwr/proto/run_pb2.pyi,sha256=
|
|
187
|
+
flwr/proto/run_pb2.py,sha256=pwel-8Hzsz1Gw2EHGEFKObgSEKQNth7nGZOEsJQO8fM,4940
|
|
188
|
+
flwr/proto/run_pb2.pyi,sha256=pr7MPml_7gOmBuu7BO-yaU-LexamsJYxnRG-utigVAo,9641
|
|
184
189
|
flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
185
190
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
186
191
|
flwr/proto/task_pb2.py,sha256=R5GfHgL8IJRI_qHWNeILl1Y9zHjvB0tnCvMHmTgF4Is,2361
|
|
187
192
|
flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
|
|
188
193
|
flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
189
194
|
flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
190
|
-
flwr/proto/transport_pb2.py,sha256=
|
|
191
|
-
flwr/proto/transport_pb2.pyi,sha256=
|
|
195
|
+
flwr/proto/transport_pb2.py,sha256=lJsj9rnLiFBhepXuZAIpZysGAqvtXtoSt4h7soU61Do,9824
|
|
196
|
+
flwr/proto/transport_pb2.pyi,sha256=ipHQ03eFBqsxtAuAVefZ2lVr04BZ4YifJCS2eauNmy8,21627
|
|
192
197
|
flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPcosk,2598
|
|
193
198
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
|
194
199
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -207,7 +212,7 @@ flwr/server/driver/driver.py,sha256=rGLbOfLhBOn74mUHi_0CMbXqZLX8q_lXqEkcUXoL_wI,
|
|
|
207
212
|
flwr/server/driver/grpc_driver.py,sha256=xd1mxRexeiIJrZw9l-urj2zEIncLT8KtNn0l8hIDYZs,9681
|
|
208
213
|
flwr/server/driver/inmemory_driver.py,sha256=up5L2ux9l0pEUZO3hh8p5LufXntGL95IA4E3e7WsxqY,6465
|
|
209
214
|
flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
|
|
210
|
-
flwr/server/run_serverapp.py,sha256=
|
|
215
|
+
flwr/server/run_serverapp.py,sha256=SaE9hoWLCAPnRXvdAzE4Oi3QaiC8NOTrHxrIGXjgYxU,10531
|
|
211
216
|
flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
|
|
212
217
|
flwr/server/server_app.py,sha256=1hul76ospG8L_KooK_ewn1sWPNTNYLTtZMeGNOBNruA,6267
|
|
213
218
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
|
@@ -239,14 +244,14 @@ flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbC
|
|
|
239
244
|
flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
|
|
240
245
|
flwr/server/superlink/driver/__init__.py,sha256=_JaRW-FdyikHc7souUrnk3mwTGViraEJCeUBY_M_ocs,712
|
|
241
246
|
flwr/server/superlink/driver/driver_grpc.py,sha256=ej9T21zIquIJEZyWcvapQSQFckh4oFPamOe6P6DhB2s,2048
|
|
242
|
-
flwr/server/superlink/driver/driver_servicer.py,sha256=
|
|
247
|
+
flwr/server/superlink/driver/driver_servicer.py,sha256=x8L8rIO6r7kVdmWZFJp-xmTB0K_Tz1mh-7Akc6I_ZjY,6967
|
|
243
248
|
flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
|
|
244
249
|
flwr/server/superlink/ffs/disk_ffs.py,sha256=yCN6CCzegnJIOaHr5nIu49wZQa4g5BByiSKshz50RKU,3296
|
|
245
250
|
flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
|
|
246
251
|
flwr/server/superlink/ffs/ffs_factory.py,sha256=N_eMuUZggotdGiDQ5r_Tf21xsu_ob0e3jyM6ag7d3kk,1490
|
|
247
252
|
flwr/server/superlink/fleet/__init__.py,sha256=76od-HhYjOUoZFLFDFCFnNHI4JLAmaXQEAyp7LWlQpc,711
|
|
248
253
|
flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=spBQQJeYz8zPOBOfyMLv87kqWPASGB73AymcLXdFaYA,742
|
|
249
|
-
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=
|
|
254
|
+
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=kE7ejRKR-8rVJsKgvglHn78L2ok6ZJ1Y4frZvgiJvpk,6341
|
|
250
255
|
flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dkSKQMuMTYh1qSnuN87cAPv_mcdLg3f0PqTABHs8gUE,735
|
|
251
256
|
flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=xbvorZhCHBj0CvFWB7oUeHoY0o750hUkiS0DiTCGHDs,6020
|
|
252
257
|
flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=JkAH_nIZaqe_9kntrg26od_jaz5XdLFuvNMgGu8xk9Q,6485
|
|
@@ -254,7 +259,7 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4E
|
|
|
254
259
|
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=8VFp7K5ollkexR2UmXOrLtxo6H_B79eZkyM_Ro77tSU,12312
|
|
255
260
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
|
|
256
261
|
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=bgoLQEhahVHjdlRDk_58zyKFeMOziiPUXSbYMhOxybY,4757
|
|
257
|
-
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=
|
|
262
|
+
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=pgSiH-qrTgDxu4M_jJu-8gvEQnxTdR-qIAawKgxjQ6M,8157
|
|
258
263
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
|
|
259
264
|
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=NneayZ9FjIf7k2h_R3wQ2wluqYCAyzVVU_Uq7keWay4,4433
|
|
260
265
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
|
|
@@ -265,15 +270,15 @@ flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0Q
|
|
|
265
270
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DPSioTSKD3YGtS3uJsPD7Hn2Fw,7155
|
|
266
271
|
flwr/server/superlink/fleet/vce/vce_api.py,sha256=cGPsjS_4SJHm8jszGjsHh8ZNk9nqWoIQwW_62yKKR1Y,12647
|
|
267
272
|
flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
|
|
268
|
-
flwr/server/superlink/state/in_memory_state.py,sha256=
|
|
269
|
-
flwr/server/superlink/state/sqlite_state.py,sha256=
|
|
273
|
+
flwr/server/superlink/state/in_memory_state.py,sha256=m7UwCEYwDaUVnPq6AMegmFnHMx7C5ENKHT5GeVaWalM,13792
|
|
274
|
+
flwr/server/superlink/state/sqlite_state.py,sha256=tLdpnXZ4KDdWTMXfCylRlu3pGrR156cGgDq9N_0TK0Y,33244
|
|
270
275
|
flwr/server/superlink/state/state.py,sha256=KpM894R8RE1N0b-s_Nlii6i0TDxj0DRkKa3Vf24Gt70,8127
|
|
271
276
|
flwr/server/superlink/state/state_factory.py,sha256=Fo8pBQ1WWrVJK5TOEPZ_zgJE69_mfTGjTO6czh6571o,2021
|
|
272
277
|
flwr/server/superlink/state/utils.py,sha256=OsF3OOoU4bU4PgLWkypX6EDoFs0L8RP_mHEBG-tVqGA,5227
|
|
273
278
|
flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
|
|
274
279
|
flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
|
|
275
280
|
flwr/server/utils/tensorboard.py,sha256=gEBD8w_5uaIfp5aw5RYH66lYZpd_SfkObHQ7eDd9MUk,5466
|
|
276
|
-
flwr/server/utils/validator.py,sha256=
|
|
281
|
+
flwr/server/utils/validator.py,sha256=o13PPwjSM7VyUZgzGUiBQTaJLVmRRKi0NSQj6f5HuiA,5512
|
|
277
282
|
flwr/server/workflow/__init__.py,sha256=SXY0XkwbkezFBxxrFB5hKUtmtAgnYISBkPouR1V71ss,902
|
|
278
283
|
flwr/server/workflow/constant.py,sha256=q4DLdR8Krlxuewq2AQjwTL75hphxE5ODNz4AhViHMXk,1082
|
|
279
284
|
flwr/server/workflow/default_workflows.py,sha256=UMC9JgdomKwxql5G0OV4AeRXWI-bMClaLAOn5OrZMnw,14073
|
|
@@ -289,13 +294,13 @@ flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUq
|
|
|
289
294
|
flwr/simulation/run_simulation.py,sha256=AN62VEoJhqe88VmkJ5dlJPVcDhUXGBaMKo4KjHqUu_8,22744
|
|
290
295
|
flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
|
|
291
296
|
flwr/superexec/app.py,sha256=mKwlsysbtmGPuz4CpWAPDPWAEFZH3b8u0JKRkWpfzuw,6552
|
|
292
|
-
flwr/superexec/deployment.py,sha256=
|
|
297
|
+
flwr/superexec/deployment.py,sha256=TbzOAAaY2sNt7O516w1GS6N5xvt0UV-dML74O6WA2O4,6344
|
|
293
298
|
flwr/superexec/exec_grpc.py,sha256=ZPq7EP55Vwj0kRcLVuTCokFqfIgBk-7YmDykZoMKi-c,1935
|
|
294
|
-
flwr/superexec/exec_servicer.py,sha256=
|
|
295
|
-
flwr/superexec/executor.py,sha256
|
|
299
|
+
flwr/superexec/exec_servicer.py,sha256=TRpwPVl7eI0Y_xlCY6DmVpAo0yFU1gLwzyIeqFw9pyk,4746
|
|
300
|
+
flwr/superexec/executor.py,sha256=-5J-ZLs-uArro3T2pCq0YQRC65cs18M888nufzdYE4E,2375
|
|
296
301
|
flwr/superexec/simulation.py,sha256=J6pw-RqCSiUed8I_3MasZH4tl57ZmDebPAHNnbb0-vE,7420
|
|
297
|
-
flwr_nightly-1.12.0.
|
|
298
|
-
flwr_nightly-1.12.0.
|
|
299
|
-
flwr_nightly-1.12.0.
|
|
300
|
-
flwr_nightly-1.12.0.
|
|
301
|
-
flwr_nightly-1.12.0.
|
|
302
|
+
flwr_nightly-1.12.0.dev20241006.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
303
|
+
flwr_nightly-1.12.0.dev20241006.dist-info/METADATA,sha256=OGFyy8F9HtsY-OAw8UZsNKncs_mkkG4NsNQvlAc0Mx4,15618
|
|
304
|
+
flwr_nightly-1.12.0.dev20241006.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
305
|
+
flwr_nightly-1.12.0.dev20241006.dist-info/entry_points.txt,sha256=WUCbqhLEOzjx_lyATIM0-f0e8kOVaQjzwOvyOxHrMhs,434
|
|
306
|
+
flwr_nightly-1.12.0.dev20241006.dist-info/RECORD,,
|
{flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241006.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|