flwr-nightly 1.13.0.dev20241101__py3-none-any.whl → 1.13.0.dev20241102__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/config_utils.py +98 -0
- flwr/cli/log.py +19 -82
- flwr/cli/run/run.py +18 -83
- flwr/client/clientapp/app.py +1 -2
- flwr/common/constant.py +1 -1
- flwr/common/logger.py +3 -3
- flwr/common/telemetry.py +0 -6
- flwr/proto/serverappio_pb2.py +52 -0
- flwr/proto/{driver_pb2_grpc.py → serverappio_pb2_grpc.py} +56 -56
- flwr/proto/{driver_pb2_grpc.pyi → serverappio_pb2_grpc.pyi} +24 -24
- flwr/server/app.py +20 -20
- flwr/server/driver/driver.py +1 -1
- flwr/server/driver/grpc_driver.py +18 -18
- flwr/server/driver/inmemory_driver.py +1 -1
- flwr/server/run_serverapp.py +11 -11
- flwr/server/serverapp/app.py +4 -5
- flwr/server/strategy/fedadam.py +11 -1
- flwr/server/superlink/driver/__init__.py +1 -1
- flwr/server/superlink/driver/{driver_grpc.py → serverappio_grpc.py} +17 -14
- flwr/server/superlink/driver/{driver_servicer.py → serverappio_servicer.py} +29 -32
- flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
- flwr/server/superlink/linkstate/linkstate.py +3 -3
- flwr/server/superlink/linkstate/sqlite_linkstate.py +3 -3
- flwr/superexec/deployment.py +3 -3
- {flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/METADATA +1 -1
- {flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/RECORD +30 -30
- flwr/proto/driver_pb2.py +0 -52
- /flwr/proto/{driver_pb2.pyi → serverappio_pb2.pyi} +0 -0
- {flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/entry_points.txt +0 -0
flwr/server/run_serverapp.py
CHANGED
|
@@ -31,7 +31,7 @@ from flwr.common.config import (
|
|
|
31
31
|
get_project_config,
|
|
32
32
|
get_project_dir,
|
|
33
33
|
)
|
|
34
|
-
from flwr.common.constant import
|
|
34
|
+
from flwr.common.constant import SERVERAPPIO_API_DEFAULT_ADDRESS
|
|
35
35
|
from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
|
|
36
36
|
from flwr.common.object_ref import load_app
|
|
37
37
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
@@ -45,7 +45,6 @@ from .driver.grpc_driver import GrpcDriver
|
|
|
45
45
|
from .server_app import LoadServerAppError, ServerApp
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
# pylint: disable-next=too-many-arguments,too-many-positional-arguments
|
|
49
48
|
def run(
|
|
50
49
|
driver: Driver,
|
|
51
50
|
context: Context,
|
|
@@ -107,18 +106,18 @@ def run_server_app() -> None:
|
|
|
107
106
|
"app by executing `flwr new` and following the prompt."
|
|
108
107
|
)
|
|
109
108
|
|
|
110
|
-
if args.server !=
|
|
109
|
+
if args.server != SERVERAPPIO_API_DEFAULT_ADDRESS:
|
|
111
110
|
warn = "Passing flag --server is deprecated. Use --superlink instead."
|
|
112
111
|
warn_deprecated_feature(warn)
|
|
113
112
|
|
|
114
|
-
if args.superlink !=
|
|
113
|
+
if args.superlink != SERVERAPPIO_API_DEFAULT_ADDRESS:
|
|
115
114
|
# if `--superlink` also passed, then
|
|
116
115
|
# warn user that this argument overrides what was passed with `--server`
|
|
117
116
|
log(
|
|
118
117
|
WARN,
|
|
119
118
|
"Both `--server` and `--superlink` were passed. "
|
|
120
|
-
"`--server` will be ignored. Connecting to the
|
|
121
|
-
"at %s.",
|
|
119
|
+
"`--server` will be ignored. Connecting to the "
|
|
120
|
+
"SuperLink ServerAppIo API at %s.",
|
|
122
121
|
args.superlink,
|
|
123
122
|
)
|
|
124
123
|
else:
|
|
@@ -171,7 +170,7 @@ def run_server_app() -> None:
|
|
|
171
170
|
if app_path is None:
|
|
172
171
|
# User provided `--run-id`, but not `app_dir`
|
|
173
172
|
driver = GrpcDriver(
|
|
174
|
-
|
|
173
|
+
serverappio_service_address=args.superlink,
|
|
175
174
|
root_certificates=root_certificates,
|
|
176
175
|
)
|
|
177
176
|
flwr_dir = get_flwr_dir(args.flwr_dir)
|
|
@@ -193,7 +192,7 @@ def run_server_app() -> None:
|
|
|
193
192
|
# User provided `app_dir`, but not `--run-id`
|
|
194
193
|
# Create run if run_id is not provided
|
|
195
194
|
driver = GrpcDriver(
|
|
196
|
-
|
|
195
|
+
serverappio_service_address=args.superlink,
|
|
197
196
|
root_certificates=root_certificates,
|
|
198
197
|
)
|
|
199
198
|
# Load config from the project directory
|
|
@@ -275,13 +274,14 @@ def _parse_args_run_server_app() -> argparse.ArgumentParser:
|
|
|
275
274
|
)
|
|
276
275
|
parser.add_argument(
|
|
277
276
|
"--server",
|
|
278
|
-
default=
|
|
277
|
+
default=SERVERAPPIO_API_DEFAULT_ADDRESS,
|
|
279
278
|
help="Server address",
|
|
280
279
|
)
|
|
281
280
|
parser.add_argument(
|
|
282
281
|
"--superlink",
|
|
283
|
-
default=
|
|
284
|
-
help="SuperLink
|
|
282
|
+
default=SERVERAPPIO_API_DEFAULT_ADDRESS,
|
|
283
|
+
help="SuperLink ServerAppIo API (gRPC-rere) address "
|
|
284
|
+
"(IPv4, IPv6, or a domain name)",
|
|
285
285
|
)
|
|
286
286
|
parser.add_argument(
|
|
287
287
|
"--run-id",
|
flwr/server/serverapp/app.py
CHANGED
|
@@ -47,12 +47,12 @@ from flwr.common.serde import (
|
|
|
47
47
|
run_status_to_proto,
|
|
48
48
|
)
|
|
49
49
|
from flwr.common.typing import RunStatus
|
|
50
|
-
from flwr.proto.
|
|
50
|
+
from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
|
|
51
|
+
from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
|
|
51
52
|
PullServerAppInputsRequest,
|
|
52
53
|
PullServerAppInputsResponse,
|
|
53
54
|
PushServerAppOutputsRequest,
|
|
54
55
|
)
|
|
55
|
-
from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
|
|
56
56
|
from flwr.server.driver.grpc_driver import GrpcDriver
|
|
57
57
|
from flwr.server.run_serverapp import run as run_
|
|
58
58
|
|
|
@@ -63,8 +63,6 @@ def flwr_serverapp() -> None:
|
|
|
63
63
|
log_queue: Queue[Optional[str]] = Queue()
|
|
64
64
|
mirror_output_to_queue(log_queue)
|
|
65
65
|
|
|
66
|
-
log(INFO, "Starting Flower ServerApp")
|
|
67
|
-
|
|
68
66
|
parser = argparse.ArgumentParser(
|
|
69
67
|
description="Run a Flower ServerApp",
|
|
70
68
|
)
|
|
@@ -106,6 +104,7 @@ def flwr_serverapp() -> None:
|
|
|
106
104
|
)
|
|
107
105
|
args = parser.parse_args()
|
|
108
106
|
|
|
107
|
+
log(INFO, "Starting Flower ServerApp")
|
|
109
108
|
certificates = _try_obtain_certificates(args)
|
|
110
109
|
|
|
111
110
|
log(
|
|
@@ -167,7 +166,7 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212
|
|
|
167
166
|
) -> None:
|
|
168
167
|
"""Run Flower ServerApp process."""
|
|
169
168
|
driver = GrpcDriver(
|
|
170
|
-
|
|
169
|
+
serverappio_service_address=superlink,
|
|
171
170
|
root_certificates=certificates,
|
|
172
171
|
)
|
|
173
172
|
|
flwr/server/strategy/fedadam.py
CHANGED
|
@@ -170,8 +170,18 @@ class FedAdam(FedOpt):
|
|
|
170
170
|
for x, y in zip(self.v_t, delta_t)
|
|
171
171
|
]
|
|
172
172
|
|
|
173
|
+
# Compute the bias-corrected learning rate, `eta_norm` for improving convergence
|
|
174
|
+
# in the early rounds of FL training. This `eta_norm` is `\alpha_t` in Kingma &
|
|
175
|
+
# Ba, 2014 (http://arxiv.org/abs/1412.6980) "Adam: A Method for Stochastic
|
|
176
|
+
# Optimization" in the formula line right before Section 2.1.
|
|
177
|
+
eta_norm = (
|
|
178
|
+
self.eta
|
|
179
|
+
* np.sqrt(1 - np.power(self.beta_2, server_round + 1.0))
|
|
180
|
+
/ (1 - np.power(self.beta_1, server_round + 1.0))
|
|
181
|
+
)
|
|
182
|
+
|
|
173
183
|
new_weights = [
|
|
174
|
-
x +
|
|
184
|
+
x + eta_norm * y / (np.sqrt(z) + self.tau)
|
|
175
185
|
for x, y, z in zip(self.current_weights, self.m_t, self.v_t)
|
|
176
186
|
]
|
|
177
187
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
|
-
"""
|
|
15
|
+
"""ServerAppIo gRPC API."""
|
|
16
16
|
|
|
17
17
|
from logging import INFO
|
|
18
18
|
from typing import Optional
|
|
@@ -21,37 +21,40 @@ import grpc
|
|
|
21
21
|
|
|
22
22
|
from flwr.common import GRPC_MAX_MESSAGE_LENGTH
|
|
23
23
|
from flwr.common.logger import log
|
|
24
|
-
from flwr.proto.
|
|
25
|
-
|
|
24
|
+
from flwr.proto.serverappio_pb2_grpc import ( # pylint: disable=E0611
|
|
25
|
+
add_ServerAppIoServicer_to_server,
|
|
26
26
|
)
|
|
27
27
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
|
28
28
|
from flwr.server.superlink.linkstate import LinkStateFactory
|
|
29
29
|
|
|
30
30
|
from ..fleet.grpc_bidi.grpc_server import generic_create_grpc_server
|
|
31
|
-
from .
|
|
31
|
+
from .serverappio_servicer import ServerAppIoServicer
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
def
|
|
34
|
+
def run_serverappio_api_grpc(
|
|
35
35
|
address: str,
|
|
36
36
|
state_factory: LinkStateFactory,
|
|
37
37
|
ffs_factory: FfsFactory,
|
|
38
38
|
certificates: Optional[tuple[bytes, bytes, bytes]],
|
|
39
39
|
) -> grpc.Server:
|
|
40
|
-
"""Run
|
|
41
|
-
# Create
|
|
42
|
-
|
|
40
|
+
"""Run ServerAppIo API (gRPC, request-response)."""
|
|
41
|
+
# Create ServerAppIo API gRPC server
|
|
42
|
+
serverappio_servicer: grpc.Server = ServerAppIoServicer(
|
|
43
43
|
state_factory=state_factory,
|
|
44
44
|
ffs_factory=ffs_factory,
|
|
45
45
|
)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
servicer_and_add_fn=(
|
|
46
|
+
serverappio_add_servicer_to_server_fn = add_ServerAppIoServicer_to_server
|
|
47
|
+
serverappio_grpc_server = generic_create_grpc_server(
|
|
48
|
+
servicer_and_add_fn=(
|
|
49
|
+
serverappio_servicer,
|
|
50
|
+
serverappio_add_servicer_to_server_fn,
|
|
51
|
+
),
|
|
49
52
|
server_address=address,
|
|
50
53
|
max_message_length=GRPC_MAX_MESSAGE_LENGTH,
|
|
51
54
|
certificates=certificates,
|
|
52
55
|
)
|
|
53
56
|
|
|
54
|
-
log(INFO, "Flower ECE: Starting
|
|
55
|
-
|
|
57
|
+
log(INFO, "Flower ECE: Starting ServerAppIo API (gRPC-rere) on %s", address)
|
|
58
|
+
serverappio_grpc_server.start()
|
|
56
59
|
|
|
57
|
-
return
|
|
60
|
+
return serverappio_grpc_server
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ==============================================================================
|
|
15
|
-
"""
|
|
15
|
+
"""ServerAppIo API servicer."""
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
import threading
|
|
@@ -22,7 +22,6 @@ from typing import Optional
|
|
|
22
22
|
from uuid import UUID
|
|
23
23
|
|
|
24
24
|
import grpc
|
|
25
|
-
from google.protobuf.message import Message as GrpcMessage
|
|
26
25
|
|
|
27
26
|
from flwr.common.constant import Status
|
|
28
27
|
from flwr.common.logger import log
|
|
@@ -36,19 +35,7 @@ from flwr.common.serde import (
|
|
|
36
35
|
user_config_from_proto,
|
|
37
36
|
)
|
|
38
37
|
from flwr.common.typing import Fab, RunStatus
|
|
39
|
-
from flwr.proto import
|
|
40
|
-
from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
41
|
-
GetNodesRequest,
|
|
42
|
-
GetNodesResponse,
|
|
43
|
-
PullServerAppInputsRequest,
|
|
44
|
-
PullServerAppInputsResponse,
|
|
45
|
-
PullTaskResRequest,
|
|
46
|
-
PullTaskResResponse,
|
|
47
|
-
PushServerAppOutputsRequest,
|
|
48
|
-
PushServerAppOutputsResponse,
|
|
49
|
-
PushTaskInsRequest,
|
|
50
|
-
PushTaskInsResponse,
|
|
51
|
-
)
|
|
38
|
+
from flwr.proto import serverappio_pb2_grpc # pylint: disable=E0611
|
|
52
39
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
53
40
|
from flwr.proto.log_pb2 import ( # pylint: disable=E0611
|
|
54
41
|
PushLogsRequest,
|
|
@@ -63,6 +50,18 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
|
63
50
|
UpdateRunStatusRequest,
|
|
64
51
|
UpdateRunStatusResponse,
|
|
65
52
|
)
|
|
53
|
+
from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
|
|
54
|
+
GetNodesRequest,
|
|
55
|
+
GetNodesResponse,
|
|
56
|
+
PullServerAppInputsRequest,
|
|
57
|
+
PullServerAppInputsResponse,
|
|
58
|
+
PullTaskResRequest,
|
|
59
|
+
PullTaskResResponse,
|
|
60
|
+
PushServerAppOutputsRequest,
|
|
61
|
+
PushServerAppOutputsResponse,
|
|
62
|
+
PushTaskInsRequest,
|
|
63
|
+
PushTaskInsResponse,
|
|
64
|
+
)
|
|
66
65
|
from flwr.proto.task_pb2 import TaskRes # pylint: disable=E0611
|
|
67
66
|
from flwr.server.superlink.ffs.ffs import Ffs
|
|
68
67
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
|
@@ -70,8 +69,8 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
|
|
|
70
69
|
from flwr.server.utils.validator import validate_task_ins_or_res
|
|
71
70
|
|
|
72
71
|
|
|
73
|
-
class
|
|
74
|
-
"""
|
|
72
|
+
class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
|
|
73
|
+
"""ServerAppIo API servicer."""
|
|
75
74
|
|
|
76
75
|
def __init__(
|
|
77
76
|
self, state_factory: LinkStateFactory, ffs_factory: FfsFactory
|
|
@@ -84,7 +83,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
84
83
|
self, request: GetNodesRequest, context: grpc.ServicerContext
|
|
85
84
|
) -> GetNodesResponse:
|
|
86
85
|
"""Get available nodes."""
|
|
87
|
-
log(DEBUG, "
|
|
86
|
+
log(DEBUG, "ServerAppIoServicer.GetNodes")
|
|
88
87
|
state: LinkState = self.state_factory.state()
|
|
89
88
|
all_ids: set[int] = state.get_nodes(request.run_id)
|
|
90
89
|
nodes: list[Node] = [
|
|
@@ -96,7 +95,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
96
95
|
self, request: CreateRunRequest, context: grpc.ServicerContext
|
|
97
96
|
) -> CreateRunResponse:
|
|
98
97
|
"""Create run ID."""
|
|
99
|
-
log(DEBUG, "
|
|
98
|
+
log(DEBUG, "ServerAppIoServicer.CreateRun")
|
|
100
99
|
state: LinkState = self.state_factory.state()
|
|
101
100
|
if request.HasField("fab"):
|
|
102
101
|
fab = fab_from_proto(request.fab)
|
|
@@ -120,7 +119,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
120
119
|
self, request: PushTaskInsRequest, context: grpc.ServicerContext
|
|
121
120
|
) -> PushTaskInsResponse:
|
|
122
121
|
"""Push a set of TaskIns."""
|
|
123
|
-
log(DEBUG, "
|
|
122
|
+
log(DEBUG, "ServerAppIoServicer.PushTaskIns")
|
|
124
123
|
|
|
125
124
|
# Set pushed_at (timestamp in seconds)
|
|
126
125
|
pushed_at = time.time()
|
|
@@ -150,7 +149,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
150
149
|
self, request: PullTaskResRequest, context: grpc.ServicerContext
|
|
151
150
|
) -> PullTaskResResponse:
|
|
152
151
|
"""Pull a set of TaskRes."""
|
|
153
|
-
log(DEBUG, "
|
|
152
|
+
log(DEBUG, "ServerAppIoServicer.PullTaskRes")
|
|
154
153
|
|
|
155
154
|
# Convert each task_id str to UUID
|
|
156
155
|
task_ids: set[UUID] = {UUID(task_id) for task_id in request.task_ids}
|
|
@@ -160,7 +159,10 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
160
159
|
|
|
161
160
|
# Register callback
|
|
162
161
|
def on_rpc_done() -> None:
|
|
163
|
-
log(
|
|
162
|
+
log(
|
|
163
|
+
DEBUG,
|
|
164
|
+
"ServerAppIoServicer.PullTaskRes callback: delete TaskIns/TaskRes",
|
|
165
|
+
)
|
|
164
166
|
|
|
165
167
|
if context.is_active():
|
|
166
168
|
return
|
|
@@ -182,7 +184,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
182
184
|
self, request: GetRunRequest, context: grpc.ServicerContext
|
|
183
185
|
) -> GetRunResponse:
|
|
184
186
|
"""Get run information."""
|
|
185
|
-
log(DEBUG, "
|
|
187
|
+
log(DEBUG, "ServerAppIoServicer.GetRun")
|
|
186
188
|
|
|
187
189
|
# Init state
|
|
188
190
|
state: LinkState = self.state_factory.state()
|
|
@@ -199,7 +201,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
199
201
|
self, request: GetFabRequest, context: grpc.ServicerContext
|
|
200
202
|
) -> GetFabResponse:
|
|
201
203
|
"""Get FAB from Ffs."""
|
|
202
|
-
log(DEBUG, "
|
|
204
|
+
log(DEBUG, "ServerAppIoServicer.GetFab")
|
|
203
205
|
|
|
204
206
|
ffs: Ffs = self.ffs_factory.ffs()
|
|
205
207
|
if result := ffs.get(request.hash_str):
|
|
@@ -212,7 +214,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
212
214
|
self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
|
|
213
215
|
) -> PullServerAppInputsResponse:
|
|
214
216
|
"""Pull ServerApp process inputs."""
|
|
215
|
-
log(DEBUG, "
|
|
217
|
+
log(DEBUG, "ServerAppIoServicer.PullServerAppInputs")
|
|
216
218
|
# Init access to LinkState and Ffs
|
|
217
219
|
state = self.state_factory.state()
|
|
218
220
|
ffs = self.ffs_factory.ffs()
|
|
@@ -250,7 +252,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
250
252
|
self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
|
|
251
253
|
) -> PushServerAppOutputsResponse:
|
|
252
254
|
"""Push ServerApp process outputs."""
|
|
253
|
-
log(DEBUG, "
|
|
255
|
+
log(DEBUG, "ServerAppIoServicer.PushServerAppOutputs")
|
|
254
256
|
state = self.state_factory.state()
|
|
255
257
|
state.set_serverapp_context(request.run_id, context_from_proto(request.context))
|
|
256
258
|
return PushServerAppOutputsResponse()
|
|
@@ -272,7 +274,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
272
274
|
self, request: PushLogsRequest, context: grpc.ServicerContext
|
|
273
275
|
) -> PushLogsResponse:
|
|
274
276
|
"""Push logs."""
|
|
275
|
-
log(DEBUG, "
|
|
277
|
+
log(DEBUG, "ServerAppIoServicer.PushLogs")
|
|
276
278
|
state = self.state_factory.state()
|
|
277
279
|
|
|
278
280
|
# Add logs to LinkState
|
|
@@ -284,8 +286,3 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
284
286
|
def _raise_if(validation_error: bool, detail: str) -> None:
|
|
285
287
|
if validation_error:
|
|
286
288
|
raise ValueError(f"Malformed PushTaskInsRequest: {detail}")
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
def _has_field(message: GrpcMessage, field_name: str) -> bool:
|
|
290
|
-
"""Check if a certain field is set for the message, including scalar fields."""
|
|
291
|
-
return field_name in {fld.name for fld, _ in message.ListFields()}
|
|
@@ -30,7 +30,7 @@ from flwr.proto.transport_pb2_grpc import ( # pylint: disable=E0611
|
|
|
30
30
|
add_FlowerServiceServicer_to_server,
|
|
31
31
|
)
|
|
32
32
|
from flwr.server.client_manager import ClientManager
|
|
33
|
-
from flwr.server.superlink.driver.
|
|
33
|
+
from flwr.server.superlink.driver.serverappio_servicer import ServerAppIoServicer
|
|
34
34
|
from flwr.server.superlink.fleet.grpc_adapter.grpc_adapter_servicer import (
|
|
35
35
|
GrpcAdapterServicer,
|
|
36
36
|
)
|
|
@@ -161,7 +161,7 @@ def generic_create_grpc_server( # pylint: disable=too-many-arguments,R0917
|
|
|
161
161
|
tuple[FleetServicer, AddServicerToServerFn],
|
|
162
162
|
tuple[GrpcAdapterServicer, AddServicerToServerFn],
|
|
163
163
|
tuple[FlowerServiceServicer, AddServicerToServerFn],
|
|
164
|
-
tuple[
|
|
164
|
+
tuple[ServerAppIoServicer, AddServicerToServerFn],
|
|
165
165
|
],
|
|
166
166
|
server_address: str,
|
|
167
167
|
max_concurrent_workers: int = 1000,
|
|
@@ -31,7 +31,7 @@ class LinkState(abc.ABC): # pylint: disable=R0904
|
|
|
31
31
|
def store_task_ins(self, task_ins: TaskIns) -> Optional[UUID]:
|
|
32
32
|
"""Store one TaskIns.
|
|
33
33
|
|
|
34
|
-
Usually, the
|
|
34
|
+
Usually, the ServerAppIo API calls this to schedule instructions.
|
|
35
35
|
|
|
36
36
|
Stores the value of the `task_ins` in the link state and, if successful,
|
|
37
37
|
returns the `task_id` (UUID) of the `task_ins`. If, for any reason,
|
|
@@ -102,8 +102,8 @@ class LinkState(abc.ABC): # pylint: disable=R0904
|
|
|
102
102
|
def get_task_res(self, task_ids: set[UUID]) -> list[TaskRes]:
|
|
103
103
|
"""Get TaskRes for task_ids.
|
|
104
104
|
|
|
105
|
-
Usually, the
|
|
106
|
-
previously scheduled.
|
|
105
|
+
Usually, the ServerAppIo API calls this method to get results for instructions
|
|
106
|
+
it has previously scheduled.
|
|
107
107
|
|
|
108
108
|
Retrieves all TaskRes for the given `task_ids` and returns and empty list of
|
|
109
109
|
none could be found.
|
|
@@ -252,7 +252,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
|
252
252
|
def store_task_ins(self, task_ins: TaskIns) -> Optional[UUID]:
|
|
253
253
|
"""Store one TaskIns.
|
|
254
254
|
|
|
255
|
-
Usually, the
|
|
255
|
+
Usually, the ServerAppIo API calls this to schedule instructions.
|
|
256
256
|
|
|
257
257
|
Stores the value of the task_ins in the link state and, if successful,
|
|
258
258
|
returns the task_id (UUID) of the task_ins. If, for any reason, storing
|
|
@@ -490,8 +490,8 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
|
490
490
|
def get_task_res(self, task_ids: set[UUID]) -> list[TaskRes]:
|
|
491
491
|
"""Get TaskRes for task_ids.
|
|
492
492
|
|
|
493
|
-
Usually, the
|
|
494
|
-
previously scheduled.
|
|
493
|
+
Usually, the ServerAppIo API calls this method to get results for instructions
|
|
494
|
+
it has previously scheduled.
|
|
495
495
|
|
|
496
496
|
Retrieves all TaskRes for the given `task_ids` and returns and empty list if
|
|
497
497
|
none could be found.
|
flwr/superexec/deployment.py
CHANGED
|
@@ -22,7 +22,7 @@ from typing import Optional
|
|
|
22
22
|
from typing_extensions import override
|
|
23
23
|
|
|
24
24
|
from flwr.common import Context, RecordSet
|
|
25
|
-
from flwr.common.constant import
|
|
25
|
+
from flwr.common.constant import SERVERAPPIO_API_DEFAULT_ADDRESS, Status, SubStatus
|
|
26
26
|
from flwr.common.logger import log
|
|
27
27
|
from flwr.common.typing import Fab, RunStatus, UserConfig
|
|
28
28
|
from flwr.server.superlink.ffs import Ffs
|
|
@@ -48,7 +48,7 @@ class DeploymentEngine(Executor):
|
|
|
48
48
|
|
|
49
49
|
def __init__(
|
|
50
50
|
self,
|
|
51
|
-
superlink: str =
|
|
51
|
+
superlink: str = SERVERAPPIO_API_DEFAULT_ADDRESS,
|
|
52
52
|
root_certificates: Optional[str] = None,
|
|
53
53
|
flwr_dir: Optional[str] = None,
|
|
54
54
|
) -> None:
|
|
@@ -98,7 +98,7 @@ class DeploymentEngine(Executor):
|
|
|
98
98
|
A dictionary for configuration values.
|
|
99
99
|
Supported configuration key/value pairs:
|
|
100
100
|
- "superlink": str
|
|
101
|
-
The address of the SuperLink
|
|
101
|
+
The address of the SuperLink ServerAppIo API.
|
|
102
102
|
- "root-certificates": str
|
|
103
103
|
The path to the root certificates.
|
|
104
104
|
- "flwr-dir": str
|
{flwr_nightly-1.13.0.dev20241101.dist-info → flwr_nightly-1.13.0.dev20241102.dist-info}/RECORD
RENAMED
|
@@ -2,10 +2,10 @@ flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
|
|
|
2
2
|
flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
|
|
3
3
|
flwr/cli/app.py,sha256=_HDs7HS12Dp7NXIyVrkPs1SKJq3x-XvVZd6y1lvyud4,1255
|
|
4
4
|
flwr/cli/build.py,sha256=k2M0aIY2q5WB_yXQ22Woxt1zb6m-Z1wNwmhWMxEm5Dw,6344
|
|
5
|
-
flwr/cli/config_utils.py,sha256=
|
|
5
|
+
flwr/cli/config_utils.py,sha256=Dv5N8NcdHMNMpfxxFWppxP8RehxIe0S0ZX219KphpvU,11460
|
|
6
6
|
flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
|
|
7
7
|
flwr/cli/install.py,sha256=7Dx8zrn49mTktxGOToBhGx8hzsHOViDasMJ43ooKPXc,8646
|
|
8
|
-
flwr/cli/log.py,sha256=
|
|
8
|
+
flwr/cli/log.py,sha256=WlAuxZdTUYZ5bRKkm0jLWrOxHTS0TlSA5BeDtO9xF3k,6659
|
|
9
9
|
flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
|
|
10
10
|
flwr/cli/new/new.py,sha256=uSiG7aXQzPDnikv2YcjQ86OOLqint0hNWCI0fSQD0jI,9634
|
|
11
11
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
|
@@ -61,14 +61,14 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=LUsQsEVhCgGzKEBB5Ie
|
|
|
61
61
|
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=BiZPOKEoGiZOuxSHQY_nQHj3KH7wH7QAiVmpxGutOgk,686
|
|
62
62
|
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=6R_bIGyPvXlCtLABF8fHLmGBNlIptG8QrYM69_Fy_nk,710
|
|
63
63
|
flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
|
|
64
|
-
flwr/cli/run/run.py,sha256=
|
|
64
|
+
flwr/cli/run/run.py,sha256=FCdETDR3d_Aqw3Bn-oGogiAjOqH87AWLtcwifgJLAcQ,6034
|
|
65
65
|
flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
|
|
66
66
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
|
67
67
|
flwr/client/app.py,sha256=fEUTXz_uNwZe-otCbUf5F3sJozGfvkrMNS3u7DE6sOo,32808
|
|
68
68
|
flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
|
|
69
69
|
flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
|
|
70
70
|
flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
|
|
71
|
-
flwr/client/clientapp/app.py,sha256=
|
|
71
|
+
flwr/client/clientapp/app.py,sha256=673TTaTl3r73c1nvRcgQECz8kXqszf_8Aw72SxI0lTg,7856
|
|
72
72
|
flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
|
|
73
73
|
flwr/client/clientapp/utils.py,sha256=Xg23Q7g7r9jrxXEbvJ9wXal_uAqYK3mi087u0QER6-I,4343
|
|
74
74
|
flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
|
|
@@ -102,7 +102,7 @@ flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
|
|
102
102
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
|
103
103
|
flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
|
|
104
104
|
flwr/common/config.py,sha256=nYA1vjiiqSWx5JjSdlQd1i_0N_Dh9kEGUse1Qze3JMs,7803
|
|
105
|
-
flwr/common/constant.py,sha256=
|
|
105
|
+
flwr/common/constant.py,sha256=Snw3dfKGXKr_5yxRvoNVlyyXV8i36EK7n0X8QX3zxkA,4706
|
|
106
106
|
flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
|
|
107
107
|
flwr/common/date.py,sha256=uTvLmCkd3uVQuD4MviPHnIXMGyheL16mEI_UlOsv_R8,894
|
|
108
108
|
flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
|
|
@@ -110,7 +110,7 @@ flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf
|
|
|
110
110
|
flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
|
|
111
111
|
flwr/common/exit_handlers.py,sha256=MracJaBeoCOC7TaXK9zCJQxhrMSx9ZtczK237qvhBpU,2806
|
|
112
112
|
flwr/common/grpc.py,sha256=6Yi28JjAll19nxYJlOT9B03RN8dvJZP9zUoR3RSmxoY,2487
|
|
113
|
-
flwr/common/logger.py,sha256=
|
|
113
|
+
flwr/common/logger.py,sha256=AJNu-cymiQUp4Dw1zkw5xww_HVkUAhHvtYxwzUtuohM,11065
|
|
114
114
|
flwr/common/message.py,sha256=4O1m0OWXBAYZz05gKgEtnoJ94J1gjo7hCNHyUXThxRo,13831
|
|
115
115
|
flwr/common/object_ref.py,sha256=5lgWqYaJR28UdFc-iirWw9YqFXMfgkOOAdfJc1AVibE,8711
|
|
116
116
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
|
@@ -133,7 +133,7 @@ flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCM
|
|
|
133
133
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
|
|
134
134
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=o7IhHH6J9xqinhQy3TdPgQpoj1XyEpyv3OQFyx81RVQ,3193
|
|
135
135
|
flwr/common/serde.py,sha256=ZNPGTjxmIyRMPskpIy3VVYgjckeix0jzDEc1PtVSgLo,30562
|
|
136
|
-
flwr/common/telemetry.py,sha256=
|
|
136
|
+
flwr/common/telemetry.py,sha256=20AYNaePOBaSEh99PIuBrxRxtY53-kZ5-2Ej0JWUJmc,8731
|
|
137
137
|
flwr/common/typing.py,sha256=fS_KmVdg0c1B87yMnccIPfjBzQ3CTRwYJcaWfmvZzEA,5103
|
|
138
138
|
flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
|
|
139
139
|
flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
|
|
@@ -149,10 +149,6 @@ flwr/proto/control_pb2.py,sha256=yaUkwY2J9uo-fdUIB5aHwVSDOuGunxaUr4ZlggifA_M,143
|
|
|
149
149
|
flwr/proto/control_pb2.pyi,sha256=XbFvpZvvrS7QcH5AFXfpRGl4hQvhd3QdKO6x0oTlCCU,165
|
|
150
150
|
flwr/proto/control_pb2_grpc.py,sha256=FFE21nZvEILWpe1WCR5vAwgYEtpzrdG78-_SsU0gZ7w,5783
|
|
151
151
|
flwr/proto/control_pb2_grpc.pyi,sha256=9DU4sgkzJ497a4Nq6kitZWEG4g_5MO8MevichnO0oAg,1672
|
|
152
|
-
flwr/proto/driver_pb2.py,sha256=2BEQT2YloRBX1-5Gp_rjKBiUD3SY7sr_ic6y0MGlsRk,4795
|
|
153
|
-
flwr/proto/driver_pb2.pyi,sha256=Ib9c32FCtjA9zZY54Ohi6B-DtLgSjokAqOExm_2uOvY,6429
|
|
154
|
-
flwr/proto/driver_pb2_grpc.py,sha256=UgZ2PrrBmff-mwH1FG3Zf1YPYLoZVMldEBMUesjC-IQ,17154
|
|
155
|
-
flwr/proto/driver_pb2_grpc.pyi,sha256=1yVGhlZFwR-o1hrGFJptMBrEpdjc_MYpD14oEWDqib8,4654
|
|
156
152
|
flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
|
|
157
153
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
158
154
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
@@ -193,6 +189,10 @@ flwr/proto/run_pb2.py,sha256=pwel-8Hzsz1Gw2EHGEFKObgSEKQNth7nGZOEsJQO8fM,4940
|
|
|
193
189
|
flwr/proto/run_pb2.pyi,sha256=pr7MPml_7gOmBuu7BO-yaU-LexamsJYxnRG-utigVAo,9641
|
|
194
190
|
flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
195
191
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
192
|
+
flwr/proto/serverappio_pb2.py,sha256=zWnODeaj26oSx98-BFvwtWM_fYvsw9OeSIuV7JnKVvw,4822
|
|
193
|
+
flwr/proto/serverappio_pb2.pyi,sha256=Ib9c32FCtjA9zZY54Ohi6B-DtLgSjokAqOExm_2uOvY,6429
|
|
194
|
+
flwr/proto/serverappio_pb2_grpc.py,sha256=M__pFMmb9yTAGMHVd3_K1V6DeLRuFc9UErJHWjBAsZs,17439
|
|
195
|
+
flwr/proto/serverappio_pb2_grpc.pyi,sha256=ERM-0cQVmUqrVXlvEbS2wfUZpZmv5SlIeNsGZPYMrVo,4779
|
|
196
196
|
flwr/proto/task_pb2.py,sha256=R5GfHgL8IJRI_qHWNeILl1Y9zHjvB0tnCvMHmTgF4Is,2361
|
|
197
197
|
flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
|
|
198
198
|
flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
@@ -203,7 +203,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
|
203
203
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
|
204
204
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
205
205
|
flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
|
|
206
|
-
flwr/server/app.py,sha256=
|
|
206
|
+
flwr/server/app.py,sha256=40_gS289mD1WGv6YuJ_0MSh8ooKQo6A4J0iIJauUbsE,28319
|
|
207
207
|
flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
|
|
208
208
|
flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
|
|
209
209
|
flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
|
|
@@ -213,16 +213,16 @@ flwr/server/compat/driver_client_proxy.py,sha256=Af0bRUEVZNcCYRxt3DjpLPdvVYpTgz6
|
|
|
213
213
|
flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
|
|
214
214
|
flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
|
|
215
215
|
flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
|
|
216
|
-
flwr/server/driver/driver.py,sha256=
|
|
217
|
-
flwr/server/driver/grpc_driver.py,sha256=
|
|
218
|
-
flwr/server/driver/inmemory_driver.py,sha256=
|
|
216
|
+
flwr/server/driver/driver.py,sha256=gHHO8oFkFWYf1J9wn4aKCcnzx7hXsmY_JO5jr004s68,5702
|
|
217
|
+
flwr/server/driver/grpc_driver.py,sha256=ziRzquh1fuC-joaalHKI_zcqm9k1kDpZYDIzGa33TsI,9629
|
|
218
|
+
flwr/server/driver/inmemory_driver.py,sha256=DcWFhV57p2OGgVYIdNlB65_o2lviClk9yVp_4XtdYPg,6458
|
|
219
219
|
flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
|
|
220
|
-
flwr/server/run_serverapp.py,sha256=
|
|
220
|
+
flwr/server/run_serverapp.py,sha256=SH_glGu-6OwxKcnm-Nl3m5js5BrTQY-y0dlV2u8_Xjk,10481
|
|
221
221
|
flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
|
|
222
222
|
flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
|
|
223
223
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
|
224
224
|
flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
|
|
225
|
-
flwr/server/serverapp/app.py,sha256
|
|
225
|
+
flwr/server/serverapp/app.py,sha256=-OUdiyNjnPwibznlc-1hQ54oUT2EowdPVheXUKCW6LM,8988
|
|
226
226
|
flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
|
|
227
227
|
flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
|
|
228
228
|
flwr/server/strategy/aggregate.py,sha256=iFZ8lp7PV_a2m9kywV-FK0iM33ofxavOs5TIaEQY8nU,13961
|
|
@@ -233,7 +233,7 @@ flwr/server/strategy/dpfedavg_adaptive.py,sha256=8_C0H99xztzzKLL_Gu6Pcuiv8yjs3EU
|
|
|
233
233
|
flwr/server/strategy/dpfedavg_fixed.py,sha256=DqYeduIgqmqjuJG9X3exoX-3SlPEb4ojCL9tlNMG5_A,7230
|
|
234
234
|
flwr/server/strategy/fault_tolerant_fedavg.py,sha256=VJkDxEIKycF3Ds-ia0lVVFZKM6_M5lG2EGSaTAUq1wM,5881
|
|
235
235
|
flwr/server/strategy/fedadagrad.py,sha256=0RwvPdv-mY6UJO16BAMb43NHqq4c4lr5iPAxzi_A8w8,6486
|
|
236
|
-
flwr/server/strategy/fedadam.py,sha256=
|
|
236
|
+
flwr/server/strategy/fedadam.py,sha256=4nvTL-FAzb-Hh0YBki8z3bpMDwhFE0mmqsutZ148ovo,7258
|
|
237
237
|
flwr/server/strategy/fedavg.py,sha256=DIq-41JZ2YiyeWRYYFvDKjLxaDQazuifnQ_A_7rvtww,11780
|
|
238
238
|
flwr/server/strategy/fedavg_android.py,sha256=fau-Uxxc2ev-8nZsvO_1lp_9690zNlo6m5KFmTCQWd0,9765
|
|
239
239
|
flwr/server/strategy/fedavgm.py,sha256=FxBfvY5KS7WAan4ad7h39xcLLktHxtEqG-nGTp0sAsM,8113
|
|
@@ -249,9 +249,9 @@ flwr/server/strategy/krum.py,sha256=Gct2OdnvZEnCPKMyIC330baOKabpDrKiCfVXIkr4S0c,
|
|
|
249
249
|
flwr/server/strategy/qfedavg.py,sha256=2ijNNc2vVODWLAaoYo9PCoaFvlanq0lbJ7I7Albdudg,10131
|
|
250
250
|
flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbCKtk,7524
|
|
251
251
|
flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
|
|
252
|
-
flwr/server/superlink/driver/__init__.py,sha256=
|
|
253
|
-
flwr/server/superlink/driver/
|
|
254
|
-
flwr/server/superlink/driver/
|
|
252
|
+
flwr/server/superlink/driver/__init__.py,sha256=5soEK5QSvxNjmJQ-CGTWROc4alSAeU0e9Ad9RDhsd3E,717
|
|
253
|
+
flwr/server/superlink/driver/serverappio_grpc.py,sha256=oTogZLkfeThKdx9Q_bw6OMGHnLIryxQOHxbWi0qgaRM,2185
|
|
254
|
+
flwr/server/superlink/driver/serverappio_servicer.py,sha256=hCl1ZF4VfZdw-_Iot2pRr0HXzrzJdRB61kfk8ItY_4o,10387
|
|
255
255
|
flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
|
|
256
256
|
flwr/server/superlink/ffs/disk_ffs.py,sha256=yCN6CCzegnJIOaHr5nIu49wZQa4g5BByiSKshz50RKU,3296
|
|
257
257
|
flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
|
|
@@ -263,7 +263,7 @@ flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dkSKQMuMTYh1qSnuN87cAPv
|
|
|
263
263
|
flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=xbvorZhCHBj0CvFWB7oUeHoY0o750hUkiS0DiTCGHDs,6020
|
|
264
264
|
flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=JkAH_nIZaqe_9kntrg26od_jaz5XdLFuvNMgGu8xk9Q,6485
|
|
265
265
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4EjOXH5birmAnMoCBJcP7jpHYCnHZPk,4887
|
|
266
|
-
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=
|
|
266
|
+
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=X4I2rd1ZC9fqjOg9uwdTydLxJ3JiWthkIAqb3wEv17g,12454
|
|
267
267
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
|
|
268
268
|
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=JuNdT6hs4iRtuToV6vkEuftCE_LgSipBPeRAJLWnJKw,4783
|
|
269
269
|
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=iZlgW7L5oVG_0pFkj1C46u8a1sLWiQhw9FpeyYt5Gf8,8169
|
|
@@ -278,9 +278,9 @@ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DP
|
|
|
278
278
|
flwr/server/superlink/fleet/vce/vce_api.py,sha256=VL6e_Jwf4uxA-X1EelxJZMv6Eji-_p2J9D0MdHG10a4,13029
|
|
279
279
|
flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
|
|
280
280
|
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=zsolNnK3LPkk_b00hnA9kSmnQ71hS_BPpc7s7uG_tps,20599
|
|
281
|
-
flwr/server/superlink/linkstate/linkstate.py,sha256
|
|
281
|
+
flwr/server/superlink/linkstate/linkstate.py,sha256=-pt8U2cpL42TEiyLHxuLq8zTR1vpXdT9l-BsN8rGnFs,11438
|
|
282
282
|
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
|
|
283
|
-
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=
|
|
283
|
+
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=ZyxfBhvv8kAW55JiyboHOWAND0BWoPJdo2XGPXxuTHc,43198
|
|
284
284
|
flwr/server/superlink/linkstate/utils.py,sha256=ukrMlSv0mNFd0YSpyPDpq_ND90SBkwuKgw3FFux3lqs,6914
|
|
285
285
|
flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
|
|
286
286
|
flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
|
|
@@ -301,13 +301,13 @@ flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUq
|
|
|
301
301
|
flwr/simulation/run_simulation.py,sha256=3n1nSik8tTC6LCYVZesNkHuXDQ1Ea4unTnNEOC5rdAc,23436
|
|
302
302
|
flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
|
|
303
303
|
flwr/superexec/app.py,sha256=Tt3GonnTwHrMmicwx9XaP-crP78-bf4DUWl-N5cG6zY,1841
|
|
304
|
-
flwr/superexec/deployment.py,sha256=
|
|
304
|
+
flwr/superexec/deployment.py,sha256=SVOAfJlCqDmA6TkDCusffjLxhHWoy5_y8mGIPjm1Bo0,6416
|
|
305
305
|
flwr/superexec/exec_grpc.py,sha256=OuhBAk7hiky9rjGceinLGIXqchtzGPQThZnwyYv6Ei0,2241
|
|
306
306
|
flwr/superexec/exec_servicer.py,sha256=6dUCijBYhrntZeQj82q2kVOUNFu_tsFOwT5HkkLYn9Q,3927
|
|
307
307
|
flwr/superexec/executor.py,sha256=QA2_hQJxmN3zc75oEkDs-zkWAHesz59jE0P5lem-5VU,3073
|
|
308
308
|
flwr/superexec/simulation.py,sha256=Ny3MJnNlgzW4K3NbgsgDM0LKKcoCd_q3LqNqb0GhWLI,7640
|
|
309
|
-
flwr_nightly-1.13.0.
|
|
310
|
-
flwr_nightly-1.13.0.
|
|
311
|
-
flwr_nightly-1.13.0.
|
|
312
|
-
flwr_nightly-1.13.0.
|
|
313
|
-
flwr_nightly-1.13.0.
|
|
309
|
+
flwr_nightly-1.13.0.dev20241102.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
310
|
+
flwr_nightly-1.13.0.dev20241102.dist-info/METADATA,sha256=-vTeYKkZYT6YsxiwhOSWlvvxQ2IxaH9uMGjJ4-nz6bg,15618
|
|
311
|
+
flwr_nightly-1.13.0.dev20241102.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
312
|
+
flwr_nightly-1.13.0.dev20241102.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
|
|
313
|
+
flwr_nightly-1.13.0.dev20241102.dist-info/RECORD,,
|