flwr-nightly 1.10.0.dev20240708__py3-none-any.whl → 1.10.0.dev20240710__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/new/new.py +3 -1
- flwr/client/node_state.py +1 -1
- flwr/client/supernode/app.py +19 -6
- flwr/common/context.py +6 -1
- flwr/server/compat/legacy_context.py +1 -1
- flwr/server/run_serverapp.py +18 -4
- flwr/server/server_app.py +1 -1
- flwr/server/superlink/fleet/vce/vce_api.py +43 -13
- {flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/METADATA +1 -1
- {flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/RECORD +13 -13
- {flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/entry_points.txt +0 -0
flwr/cli/new/new.py
CHANGED
|
@@ -264,9 +264,11 @@ def new(
|
|
|
264
264
|
bold=True,
|
|
265
265
|
)
|
|
266
266
|
)
|
|
267
|
+
|
|
268
|
+
_add = " huggingface-cli login\n" if framework_str == "flowertune" else ""
|
|
267
269
|
print(
|
|
268
270
|
typer.style(
|
|
269
|
-
f" cd {package_name}\n" + " pip install -e .\n flwr run\n",
|
|
271
|
+
f" cd {package_name}\n" + " pip install -e .\n" + _add + " flwr run\n",
|
|
270
272
|
fg=typer.colors.BRIGHT_CYAN,
|
|
271
273
|
bold=True,
|
|
272
274
|
)
|
flwr/client/node_state.py
CHANGED
|
@@ -32,7 +32,7 @@ class NodeState:
|
|
|
32
32
|
"""Register new run context for this node."""
|
|
33
33
|
if run_id not in self.run_contexts:
|
|
34
34
|
self.run_contexts[run_id] = Context(
|
|
35
|
-
state=RecordSet(), partition_id=self._partition_id
|
|
35
|
+
state=RecordSet(), run_config={}, partition_id=self._partition_id
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
def retrieve_context(self, run_id: int) -> Context:
|
flwr/client/supernode/app.py
CHANGED
|
@@ -178,7 +178,7 @@ def _get_load_client_app_fn(
|
|
|
178
178
|
else:
|
|
179
179
|
flwr_dir = Path(args.flwr_dir).absolute()
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
inserted_path = None
|
|
182
182
|
|
|
183
183
|
default_app_ref: str = getattr(args, "client-app")
|
|
184
184
|
|
|
@@ -188,6 +188,11 @@ def _get_load_client_app_fn(
|
|
|
188
188
|
"Flower SuperNode will load and validate ClientApp `%s`",
|
|
189
189
|
getattr(args, "client-app"),
|
|
190
190
|
)
|
|
191
|
+
# Insert sys.path
|
|
192
|
+
dir_path = Path(args.dir).absolute()
|
|
193
|
+
sys.path.insert(0, str(dir_path))
|
|
194
|
+
inserted_path = str(dir_path)
|
|
195
|
+
|
|
191
196
|
valid, error_msg = validate(default_app_ref)
|
|
192
197
|
if not valid and error_msg:
|
|
193
198
|
raise LoadClientAppError(error_msg) from None
|
|
@@ -196,7 +201,7 @@ def _get_load_client_app_fn(
|
|
|
196
201
|
# If multi-app feature is disabled
|
|
197
202
|
if not multi_app:
|
|
198
203
|
# Get sys path to be inserted
|
|
199
|
-
|
|
204
|
+
dir_path = Path(args.dir).absolute()
|
|
200
205
|
|
|
201
206
|
# Set app reference
|
|
202
207
|
client_app_ref = default_app_ref
|
|
@@ -209,7 +214,7 @@ def _get_load_client_app_fn(
|
|
|
209
214
|
|
|
210
215
|
log(WARN, "FAB ID is not provided; the default ClientApp will be loaded.")
|
|
211
216
|
# Get sys path to be inserted
|
|
212
|
-
|
|
217
|
+
dir_path = Path(args.dir).absolute()
|
|
213
218
|
|
|
214
219
|
# Set app reference
|
|
215
220
|
client_app_ref = default_app_ref
|
|
@@ -222,13 +227,21 @@ def _get_load_client_app_fn(
|
|
|
222
227
|
raise LoadClientAppError("Failed to load ClientApp") from e
|
|
223
228
|
|
|
224
229
|
# Get sys path to be inserted
|
|
225
|
-
|
|
230
|
+
dir_path = Path(project_dir).absolute()
|
|
226
231
|
|
|
227
232
|
# Set app reference
|
|
228
233
|
client_app_ref = config["flower"]["components"]["clientapp"]
|
|
229
234
|
|
|
230
235
|
# Set sys.path
|
|
231
|
-
|
|
236
|
+
nonlocal inserted_path
|
|
237
|
+
if inserted_path != str(dir_path):
|
|
238
|
+
# Remove the previously inserted path
|
|
239
|
+
if inserted_path is not None:
|
|
240
|
+
sys.path.remove(inserted_path)
|
|
241
|
+
# Insert the new path
|
|
242
|
+
sys.path.insert(0, str(dir_path))
|
|
243
|
+
|
|
244
|
+
inserted_path = str(dir_path)
|
|
232
245
|
|
|
233
246
|
# Load ClientApp
|
|
234
247
|
log(
|
|
@@ -236,7 +249,7 @@ def _get_load_client_app_fn(
|
|
|
236
249
|
"Loading ClientApp `%s`",
|
|
237
250
|
client_app_ref,
|
|
238
251
|
)
|
|
239
|
-
client_app = load_app(client_app_ref, LoadClientAppError,
|
|
252
|
+
client_app = load_app(client_app_ref, LoadClientAppError, dir_path)
|
|
240
253
|
|
|
241
254
|
if not isinstance(client_app, ClientApp):
|
|
242
255
|
raise LoadClientAppError(
|
flwr/common/context.py
CHANGED
|
@@ -34,6 +34,10 @@ class Context:
|
|
|
34
34
|
executing mods. It can also be used as a memory to access
|
|
35
35
|
at different points during the lifecycle of this entity (e.g. across
|
|
36
36
|
multiple rounds)
|
|
37
|
+
run_config : Dict[str, str]
|
|
38
|
+
A config (key/value mapping) held by the entity in a given run and that will
|
|
39
|
+
stay local. It can be used at any point during the lifecycle of this entity
|
|
40
|
+
(e.g. across multiple rounds)
|
|
37
41
|
partition_id : Optional[int] (default: None)
|
|
38
42
|
An index that specifies the data partition that the ClientApp using this Context
|
|
39
43
|
object should make use of. Setting this attribute is better suited for
|
|
@@ -47,8 +51,9 @@ class Context:
|
|
|
47
51
|
def __init__(
|
|
48
52
|
self,
|
|
49
53
|
state: RecordSet,
|
|
54
|
+
run_config: Dict[str, str],
|
|
50
55
|
partition_id: Optional[int] = None,
|
|
51
56
|
) -> None:
|
|
52
57
|
self.state = state
|
|
58
|
+
self.run_config = run_config
|
|
53
59
|
self.partition_id = partition_id
|
|
54
|
-
self.run_config = {}
|
flwr/server/run_serverapp.py
CHANGED
|
@@ -19,10 +19,15 @@ import argparse
|
|
|
19
19
|
import sys
|
|
20
20
|
from logging import DEBUG, INFO, WARN
|
|
21
21
|
from pathlib import Path
|
|
22
|
-
from typing import Optional
|
|
22
|
+
from typing import Dict, Optional
|
|
23
23
|
|
|
24
24
|
from flwr.common import Context, EventType, RecordSet, event
|
|
25
|
-
from flwr.common.config import
|
|
25
|
+
from flwr.common.config import (
|
|
26
|
+
get_flwr_dir,
|
|
27
|
+
get_fused_config,
|
|
28
|
+
get_project_config,
|
|
29
|
+
get_project_dir,
|
|
30
|
+
)
|
|
26
31
|
from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
|
|
27
32
|
from flwr.common.object_ref import load_app
|
|
28
33
|
from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
@@ -40,6 +45,7 @@ ADDRESS_DRIVER_API = "0.0.0.0:9091"
|
|
|
40
45
|
def run(
|
|
41
46
|
driver: Driver,
|
|
42
47
|
server_app_dir: str,
|
|
48
|
+
server_app_run_config: Dict[str, str],
|
|
43
49
|
server_app_attr: Optional[str] = None,
|
|
44
50
|
loaded_server_app: Optional[ServerApp] = None,
|
|
45
51
|
) -> None:
|
|
@@ -72,7 +78,7 @@ def run(
|
|
|
72
78
|
server_app = _load()
|
|
73
79
|
|
|
74
80
|
# Initialize Context
|
|
75
|
-
context = Context(state=RecordSet())
|
|
81
|
+
context = Context(state=RecordSet(), run_config=server_app_run_config)
|
|
76
82
|
|
|
77
83
|
# Call ServerApp
|
|
78
84
|
server_app(driver=driver, context=context)
|
|
@@ -169,6 +175,8 @@ def run_server_app() -> None: # pylint: disable=too-many-branches
|
|
|
169
175
|
# Overwrite driver._run_id
|
|
170
176
|
driver._run_id = res.run_id # pylint: disable=W0212
|
|
171
177
|
|
|
178
|
+
server_app_run_config = {}
|
|
179
|
+
|
|
172
180
|
# Dynamically obtain ServerApp path based on run_id
|
|
173
181
|
if args.run_id is not None:
|
|
174
182
|
# User provided `--run-id`, but not `server-app`
|
|
@@ -177,6 +185,7 @@ def run_server_app() -> None: # pylint: disable=too-many-branches
|
|
|
177
185
|
server_app_dir = str(get_project_dir(run_.fab_id, run_.fab_version, flwr_dir))
|
|
178
186
|
config = get_project_config(server_app_dir)
|
|
179
187
|
server_app_attr = config["flower"]["components"]["serverapp"]
|
|
188
|
+
server_app_run_config = get_fused_config(run_, flwr_dir)
|
|
180
189
|
else:
|
|
181
190
|
# User provided `server-app`, but not `--run-id`
|
|
182
191
|
server_app_dir = str(Path(args.dir).absolute())
|
|
@@ -190,7 +199,12 @@ def run_server_app() -> None: # pylint: disable=too-many-branches
|
|
|
190
199
|
)
|
|
191
200
|
|
|
192
201
|
# Run the ServerApp with the Driver
|
|
193
|
-
run(
|
|
202
|
+
run(
|
|
203
|
+
driver=driver,
|
|
204
|
+
server_app_dir=server_app_dir,
|
|
205
|
+
server_app_run_config=server_app_run_config,
|
|
206
|
+
server_app_attr=server_app_attr,
|
|
207
|
+
)
|
|
194
208
|
|
|
195
209
|
# Clean up
|
|
196
210
|
driver.close()
|
flwr/server/server_app.py
CHANGED
|
@@ -30,7 +30,7 @@ from flwr.common.logger import log
|
|
|
30
30
|
from flwr.common.message import Error
|
|
31
31
|
from flwr.common.object_ref import load_app
|
|
32
32
|
from flwr.common.serde import message_from_taskins, message_to_taskres
|
|
33
|
-
from flwr.proto.task_pb2 import TaskIns # pylint: disable=E0611
|
|
33
|
+
from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
|
|
34
34
|
from flwr.server.superlink.state import StateFactory
|
|
35
35
|
|
|
36
36
|
from .backend import Backend, error_messages_backends, supported_backends
|
|
@@ -54,17 +54,16 @@ def _register_nodes(
|
|
|
54
54
|
# pylint: disable=too-many-arguments,too-many-locals
|
|
55
55
|
async def worker(
|
|
56
56
|
app_fn: Callable[[], ClientApp],
|
|
57
|
-
|
|
57
|
+
taskins_queue: "asyncio.Queue[TaskIns]",
|
|
58
|
+
taskres_queue: "asyncio.Queue[TaskRes]",
|
|
58
59
|
node_states: Dict[int, NodeState],
|
|
59
|
-
state_factory: StateFactory,
|
|
60
60
|
backend: Backend,
|
|
61
61
|
) -> None:
|
|
62
62
|
"""Get TaskIns from queue and pass it to an actor in the pool to execute it."""
|
|
63
|
-
state = state_factory.state()
|
|
64
63
|
while True:
|
|
65
64
|
out_mssg = None
|
|
66
65
|
try:
|
|
67
|
-
task_ins: TaskIns = await
|
|
66
|
+
task_ins: TaskIns = await taskins_queue.get()
|
|
68
67
|
node_id = task_ins.task.consumer.node_id
|
|
69
68
|
|
|
70
69
|
# Register and retrieve runstate
|
|
@@ -111,7 +110,7 @@ async def worker(
|
|
|
111
110
|
task_res = message_to_taskres(out_mssg)
|
|
112
111
|
# Store TaskRes in state
|
|
113
112
|
task_res.task.pushed_at = time.time()
|
|
114
|
-
|
|
113
|
+
await taskres_queue.put(task_res)
|
|
115
114
|
|
|
116
115
|
|
|
117
116
|
async def add_taskins_to_queue(
|
|
@@ -162,6 +161,21 @@ async def add_taskins_to_queue(
|
|
|
162
161
|
log(DEBUG, "Async producer: Stopped pulling from StateFactory.")
|
|
163
162
|
|
|
164
163
|
|
|
164
|
+
async def put_taskres_into_state(
|
|
165
|
+
queue: "asyncio.Queue[TaskRes]",
|
|
166
|
+
state_factory: StateFactory,
|
|
167
|
+
f_stop: asyncio.Event,
|
|
168
|
+
) -> None:
|
|
169
|
+
"""Remove TaskRes from queue and add into State."""
|
|
170
|
+
state = state_factory.state()
|
|
171
|
+
while not f_stop.is_set():
|
|
172
|
+
if queue.qsize():
|
|
173
|
+
task_res = await queue.get()
|
|
174
|
+
state.store_task_res(task_res)
|
|
175
|
+
else:
|
|
176
|
+
await asyncio.sleep(0.1)
|
|
177
|
+
|
|
178
|
+
|
|
165
179
|
async def run(
|
|
166
180
|
app_fn: Callable[[], ClientApp],
|
|
167
181
|
backend_fn: Callable[[], Backend],
|
|
@@ -171,7 +185,8 @@ async def run(
|
|
|
171
185
|
f_stop: asyncio.Event,
|
|
172
186
|
) -> None:
|
|
173
187
|
"""Run the VCE async."""
|
|
174
|
-
|
|
188
|
+
taskins_queue: "asyncio.Queue[TaskIns]" = asyncio.Queue(128)
|
|
189
|
+
taskres_queue: "asyncio.Queue[TaskRes]" = asyncio.Queue(128)
|
|
175
190
|
|
|
176
191
|
try:
|
|
177
192
|
|
|
@@ -184,22 +199,37 @@ async def run(
|
|
|
184
199
|
# Add workers (they submit Messages to Backend)
|
|
185
200
|
worker_tasks = [
|
|
186
201
|
asyncio.create_task(
|
|
187
|
-
worker(
|
|
202
|
+
worker(
|
|
203
|
+
app_fn,
|
|
204
|
+
taskins_queue,
|
|
205
|
+
taskres_queue,
|
|
206
|
+
node_states,
|
|
207
|
+
backend,
|
|
208
|
+
)
|
|
188
209
|
)
|
|
189
210
|
for _ in range(backend.num_workers)
|
|
190
211
|
]
|
|
191
212
|
# Create producer (adds TaskIns into Queue)
|
|
192
|
-
|
|
213
|
+
taskins_producer = asyncio.create_task(
|
|
193
214
|
add_taskins_to_queue(
|
|
194
|
-
|
|
215
|
+
taskins_queue,
|
|
216
|
+
state_factory,
|
|
217
|
+
nodes_mapping,
|
|
218
|
+
backend,
|
|
219
|
+
worker_tasks,
|
|
220
|
+
f_stop,
|
|
195
221
|
)
|
|
196
222
|
)
|
|
197
223
|
|
|
198
|
-
|
|
199
|
-
|
|
224
|
+
taskres_consumer = asyncio.create_task(
|
|
225
|
+
put_taskres_into_state(taskres_queue, state_factory, f_stop)
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
# Wait for asyncio taks pulling/pushing TaskIns/TaskRes.
|
|
229
|
+
# These run forever until f_stop is set or until
|
|
200
230
|
# all worker (consumer) coroutines are completed. Workers
|
|
201
231
|
# also run forever and only end if an exception is raised.
|
|
202
|
-
await asyncio.gather(
|
|
232
|
+
await asyncio.gather(*(taskins_producer, taskres_consumer))
|
|
203
233
|
|
|
204
234
|
except Exception as ex:
|
|
205
235
|
|
{flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/RECORD
RENAMED
|
@@ -6,7 +6,7 @@ flwr/cli/config_utils.py,sha256=ugUlqH52yxTPMtKw6q4xv5k2OVWUy89cwyJ5LB2RLgk,6037
|
|
|
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
|
|
9
|
-
flwr/cli/new/new.py,sha256=
|
|
9
|
+
flwr/cli/new/new.py,sha256=vSLxyWOtD33U8mTGeqOhw5OjeDpFStekAVLUH9GJq6k,9432
|
|
10
10
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
|
11
11
|
flwr/cli/new/templates/app/.gitignore.tpl,sha256=XixnHdyeMB2vwkGtGnwHqoWpH-9WChdyG0GXe57duhc,3078
|
|
12
12
|
flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=PqzkGm0g6Zy-vZK9_0EO3f_U6g1r69lGc4UL8kds5Q8,2696
|
|
@@ -77,19 +77,19 @@ 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=
|
|
80
|
+
flwr/client/node_state.py,sha256=f_zZaoSCLUVwbJDqQGZbRvQkEK82UlhSVtgtCKFVM3s,1937
|
|
81
81
|
flwr/client/node_state_tests.py,sha256=fadnOTT3VAuzzs_UAbOukcuyx-oQPv2lBq92qTuUecw,2212
|
|
82
82
|
flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,10283
|
|
83
83
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
|
84
84
|
flwr/client/rest_client/connection.py,sha256=nowX8_TMnaiIhBMU5f60sIOkvcS3DHOHBT_YrvCnxnw,12096
|
|
85
85
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
|
86
|
-
flwr/client/supernode/app.py,sha256=
|
|
86
|
+
flwr/client/supernode/app.py,sha256=jVg5vWJnE50jUJPOlK_hwA_RsGo_heygZeWHGsWH76g,15275
|
|
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
90
|
flwr/common/config.py,sha256=GTmXfeCi6Xt1CTUzg8TUshOHVv2vP8X8e6uCcLBWoX4,5024
|
|
91
91
|
flwr/common/constant.py,sha256=qNmxEV3_pOO7MeTAA9qwIh4KoCPStcX3Gm8GRPIRx_4,2890
|
|
92
|
-
flwr/common/context.py,sha256=
|
|
92
|
+
flwr/common/context.py,sha256=dd37Q_0rngvGTzIwQ2M50jfhGGV0vV2-uGlL-gC4Y_Y,2170
|
|
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
|
|
@@ -180,16 +180,16 @@ 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=
|
|
183
|
+
flwr/server/compat/legacy_context.py,sha256=3T_vON4qXt31To0dd9ygULvxL9l1hmDSED6ZqBiLhxI,1781
|
|
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=
|
|
190
|
+
flwr/server/run_serverapp.py,sha256=s8KyWbANv9kyj8_tJoDiLkUj9D6QrPWfC5M_xDCOtYU,9445
|
|
191
191
|
flwr/server/server.py,sha256=wsXsxMZ9SQ0B42nBnUlcV83NJPycgrgg5bFwcQ4BYBE,17821
|
|
192
|
-
flwr/server/server_app.py,sha256=
|
|
192
|
+
flwr/server/server_app.py,sha256=WdsLcMsdi_pKk2y9fKkaWqT3CgCPX55-C8qhkDXCet8,4415
|
|
193
193
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
|
194
194
|
flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
|
|
195
195
|
flwr/server/strategy/aggregate.py,sha256=QyRIJtI5gnuY1NbgrcrOvkHxGIxBvApq7d9Y4xl-6W4,13468
|
|
@@ -238,7 +238,7 @@ flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3
|
|
|
238
238
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=oBIzmnrSSRvH_H0vRGEGWhWzQQwqe3zn6e13RsNwlIY,1466
|
|
239
239
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LJsKl7oixVvptcG98Rd9ejJycNWcEVB0ODvSreLGp-A,2260
|
|
240
240
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=dwaebZfzvzlvjkMflH5hJ19-Sszvxt0AWwIEGk9BliU,7495
|
|
241
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
|
241
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=JvkrLB26-sXbrsQKG4iGwgBYDIfuix3PJ1P6qd_nqxQ,13296
|
|
242
242
|
flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
|
|
243
243
|
flwr/server/superlink/state/in_memory_state.py,sha256=fb-f4RGiqXON0DC7aSEMNuNIjH406BhBYrNNX5Kza2g,13061
|
|
244
244
|
flwr/server/superlink/state/sqlite_state.py,sha256=dO374mTkvhWQSiwbqwUXVnAYHev-j2mHaX9v8wFmmMA,29044
|
|
@@ -268,8 +268,8 @@ flwr/superexec/deployment.py,sha256=xv5iQWuaMeeL0XE5KMLWq3gRU4lvsGu1-_oPIXi5x9E,
|
|
|
268
268
|
flwr/superexec/exec_grpc.py,sha256=u-rztpOleqSGqgvNE-ZLw1HchNsBHU1-eB3m52GZ0pQ,1852
|
|
269
269
|
flwr/superexec/exec_servicer.py,sha256=4R1f_9v0vly_bXpIYaXAeV1tO5LAy1AYygGGGNZmlQk,2194
|
|
270
270
|
flwr/superexec/executor.py,sha256=TMQMMf-vv0htlv6v-eEBI67J1WL3Yz7dp_Fm1lgMEyU,1718
|
|
271
|
-
flwr_nightly-1.10.0.
|
|
272
|
-
flwr_nightly-1.10.0.
|
|
273
|
-
flwr_nightly-1.10.0.
|
|
274
|
-
flwr_nightly-1.10.0.
|
|
275
|
-
flwr_nightly-1.10.0.
|
|
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,,
|
{flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.10.0.dev20240708.dist-info → flwr_nightly-1.10.0.dev20240710.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|