flwr-nightly 1.26.0.dev20260201__py3-none-any.whl → 1.26.0.dev20260203__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flwr/cli/federation/ls.py +4 -1
- flwr/cli/utils.py +2 -0
- flwr/common/typing.py +1 -0
- flwr/proto/clientappio_pb2.py +2 -2
- flwr/proto/clientappio_pb2_grpc.py +56 -56
- flwr/proto/clientappio_pb2_grpc.pyi +52 -52
- flwr/proto/federation_pb2.py +2 -2
- flwr/proto/federation_pb2.pyi +16 -4
- flwr/proto/run_pb2.py +5 -13
- flwr/proto/run_pb2.pyi +0 -57
- flwr/proto/serverappio_pb2.py +2 -2
- flwr/proto/serverappio_pb2_grpc.py +56 -100
- flwr/proto/serverappio_pb2_grpc.pyi +52 -72
- flwr/proto/simulationio_pb2.py +2 -2
- flwr/proto/simulationio_pb2_grpc.py +7 -51
- flwr/proto/simulationio_pb2_grpc.pyi +24 -44
- flwr/server/superlink/serverappio/serverappio_servicer.py +0 -18
- flwr/server/superlink/simulation/simulationio_servicer.py +0 -19
- flwr/supercore/constant.py +1 -0
- flwr/supercore/object_store/sql_object_store.py +22 -18
- flwr/superlink/federation/federation_manager.py +2 -2
- flwr/superlink/federation/noop_federation_manager.py +5 -4
- flwr/superlink/servicer/control/control_servicer.py +5 -3
- flwr/supernode/runtime/run_clientapp.py +12 -12
- flwr/supernode/servicer/clientappio/clientappio_servicer.py +4 -4
- {flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/METADATA +4 -4
- {flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/RECORD +29 -29
- {flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/entry_points.txt +0 -0
|
@@ -74,30 +74,24 @@ class SimulationIoStub:
|
|
|
74
74
|
flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
75
75
|
flwr.proto.appio_pb2.PullAppInputsResponse,
|
|
76
76
|
]
|
|
77
|
-
"""
|
|
78
|
-
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
79
|
-
///////////////////////////////////////////////////////////////////////////
|
|
80
|
-
|
|
81
|
-
Pull Simulation inputs
|
|
82
|
-
"""
|
|
77
|
+
"""Pull app inputs"""
|
|
83
78
|
|
|
84
79
|
PushAppOutputs: grpc.UnaryUnaryMultiCallable[
|
|
85
80
|
flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
86
81
|
flwr.proto.appio_pb2.PushAppOutputsResponse,
|
|
87
82
|
]
|
|
88
|
-
"""Push
|
|
89
|
-
|
|
90
|
-
GetRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
91
|
-
flwr.proto.run_pb2.GetRunStatusRequest,
|
|
92
|
-
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
93
|
-
]
|
|
94
|
-
"""Get Run Status"""
|
|
83
|
+
"""Push app outputs"""
|
|
95
84
|
|
|
96
85
|
UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
97
86
|
flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
98
87
|
flwr.proto.run_pb2.UpdateRunStatusResponse,
|
|
99
88
|
]
|
|
100
|
-
"""
|
|
89
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
90
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
91
|
+
///////////////////////////////////////////////////////////////////////////
|
|
92
|
+
|
|
93
|
+
Update the status of a given run
|
|
94
|
+
"""
|
|
101
95
|
|
|
102
96
|
PushLogs: grpc.UnaryUnaryMultiCallable[
|
|
103
97
|
flwr.proto.log_pb2.PushLogsRequest,
|
|
@@ -155,30 +149,24 @@ class SimulationIoAsyncStub:
|
|
|
155
149
|
flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
156
150
|
flwr.proto.appio_pb2.PullAppInputsResponse,
|
|
157
151
|
]
|
|
158
|
-
"""
|
|
159
|
-
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
160
|
-
///////////////////////////////////////////////////////////////////////////
|
|
161
|
-
|
|
162
|
-
Pull Simulation inputs
|
|
163
|
-
"""
|
|
152
|
+
"""Pull app inputs"""
|
|
164
153
|
|
|
165
154
|
PushAppOutputs: grpc.aio.UnaryUnaryMultiCallable[
|
|
166
155
|
flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
167
156
|
flwr.proto.appio_pb2.PushAppOutputsResponse,
|
|
168
157
|
]
|
|
169
|
-
"""Push
|
|
170
|
-
|
|
171
|
-
GetRunStatus: grpc.aio.UnaryUnaryMultiCallable[
|
|
172
|
-
flwr.proto.run_pb2.GetRunStatusRequest,
|
|
173
|
-
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
174
|
-
]
|
|
175
|
-
"""Get Run Status"""
|
|
158
|
+
"""Push app outputs"""
|
|
176
159
|
|
|
177
160
|
UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
|
|
178
161
|
flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
179
162
|
flwr.proto.run_pb2.UpdateRunStatusResponse,
|
|
180
163
|
]
|
|
181
|
-
"""
|
|
164
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
165
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
166
|
+
///////////////////////////////////////////////////////////////////////////
|
|
167
|
+
|
|
168
|
+
Update the status of a given run
|
|
169
|
+
"""
|
|
182
170
|
|
|
183
171
|
PushLogs: grpc.aio.UnaryUnaryMultiCallable[
|
|
184
172
|
flwr.proto.log_pb2.PushLogsRequest,
|
|
@@ -246,12 +234,7 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
246
234
|
request: flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
247
235
|
context: _ServicerContext,
|
|
248
236
|
) -> typing.Union[flwr.proto.appio_pb2.PullAppInputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppInputsResponse]]:
|
|
249
|
-
"""
|
|
250
|
-
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
251
|
-
///////////////////////////////////////////////////////////////////////////
|
|
252
|
-
|
|
253
|
-
Pull Simulation inputs
|
|
254
|
-
"""
|
|
237
|
+
"""Pull app inputs"""
|
|
255
238
|
|
|
256
239
|
@abc.abstractmethod
|
|
257
240
|
def PushAppOutputs(
|
|
@@ -259,15 +242,7 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
259
242
|
request: flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
260
243
|
context: _ServicerContext,
|
|
261
244
|
) -> typing.Union[flwr.proto.appio_pb2.PushAppOutputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppOutputsResponse]]:
|
|
262
|
-
"""Push
|
|
263
|
-
|
|
264
|
-
@abc.abstractmethod
|
|
265
|
-
def GetRunStatus(
|
|
266
|
-
self,
|
|
267
|
-
request: flwr.proto.run_pb2.GetRunStatusRequest,
|
|
268
|
-
context: _ServicerContext,
|
|
269
|
-
) -> typing.Union[flwr.proto.run_pb2.GetRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunStatusResponse]]:
|
|
270
|
-
"""Get Run Status"""
|
|
245
|
+
"""Push app outputs"""
|
|
271
246
|
|
|
272
247
|
@abc.abstractmethod
|
|
273
248
|
def UpdateRunStatus(
|
|
@@ -275,7 +250,12 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
275
250
|
request: flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
276
251
|
context: _ServicerContext,
|
|
277
252
|
) -> typing.Union[flwr.proto.run_pb2.UpdateRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.UpdateRunStatusResponse]]:
|
|
278
|
-
"""
|
|
253
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
254
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
255
|
+
///////////////////////////////////////////////////////////////////////////
|
|
256
|
+
|
|
257
|
+
Update the status of a given run
|
|
258
|
+
"""
|
|
279
259
|
|
|
280
260
|
@abc.abstractmethod
|
|
281
261
|
def PushLogs(
|
|
@@ -36,7 +36,6 @@ from flwr.common.serde import (
|
|
|
36
36
|
message_from_proto,
|
|
37
37
|
message_to_proto,
|
|
38
38
|
run_status_from_proto,
|
|
39
|
-
run_status_to_proto,
|
|
40
39
|
run_to_proto,
|
|
41
40
|
)
|
|
42
41
|
from flwr.common.typing import Fab, RunStatus
|
|
@@ -76,8 +75,6 @@ from flwr.proto.node_pb2 import Node # pylint: disable=E0611
|
|
|
76
75
|
from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
77
76
|
GetRunRequest,
|
|
78
77
|
GetRunResponse,
|
|
79
|
-
GetRunStatusRequest,
|
|
80
|
-
GetRunStatusResponse,
|
|
81
78
|
UpdateRunStatusRequest,
|
|
82
79
|
UpdateRunStatusResponse,
|
|
83
80
|
)
|
|
@@ -434,21 +431,6 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
|
|
|
434
431
|
state.add_serverapp_log(request.run_id, merged_logs)
|
|
435
432
|
return PushLogsResponse()
|
|
436
433
|
|
|
437
|
-
def GetRunStatus(
|
|
438
|
-
self, request: GetRunStatusRequest, context: grpc.ServicerContext
|
|
439
|
-
) -> GetRunStatusResponse:
|
|
440
|
-
"""Get the status of a run."""
|
|
441
|
-
log(DEBUG, "ServerAppIoServicer.GetRunStatus")
|
|
442
|
-
state = self.state_factory.state()
|
|
443
|
-
|
|
444
|
-
# Get run status from LinkState
|
|
445
|
-
run_statuses = state.get_run_status(set(request.run_ids))
|
|
446
|
-
run_status_dict = {
|
|
447
|
-
run_id: run_status_to_proto(run_status)
|
|
448
|
-
for run_id, run_status in run_statuses.items()
|
|
449
|
-
}
|
|
450
|
-
return GetRunStatusResponse(run_status_dict=run_status_dict)
|
|
451
|
-
|
|
452
434
|
def SendAppHeartbeat(
|
|
453
435
|
self, request: SendAppHeartbeatRequest, context: grpc.ServicerContext
|
|
454
436
|
) -> SendAppHeartbeatResponse:
|
|
@@ -29,7 +29,6 @@ from flwr.common.serde import (
|
|
|
29
29
|
context_to_proto,
|
|
30
30
|
fab_to_proto,
|
|
31
31
|
run_status_from_proto,
|
|
32
|
-
run_status_to_proto,
|
|
33
32
|
run_to_proto,
|
|
34
33
|
)
|
|
35
34
|
from flwr.common.typing import Fab, RunStatus
|
|
@@ -57,8 +56,6 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
|
57
56
|
GetFederationOptionsResponse,
|
|
58
57
|
GetRunRequest,
|
|
59
58
|
GetRunResponse,
|
|
60
|
-
GetRunStatusRequest,
|
|
61
|
-
GetRunStatusResponse,
|
|
62
59
|
UpdateRunStatusRequest,
|
|
63
60
|
UpdateRunStatusResponse,
|
|
64
61
|
)
|
|
@@ -219,22 +216,6 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
|
|
|
219
216
|
)
|
|
220
217
|
return UpdateRunStatusResponse()
|
|
221
218
|
|
|
222
|
-
def GetRunStatus(
|
|
223
|
-
self, request: GetRunStatusRequest, context: ServicerContext
|
|
224
|
-
) -> GetRunStatusResponse:
|
|
225
|
-
"""Get status of requested runs."""
|
|
226
|
-
log(DEBUG, "SimultionIoServicer.GetRunStatus")
|
|
227
|
-
state = self.state_factory.state()
|
|
228
|
-
|
|
229
|
-
statuses = state.get_run_status(set(request.run_ids))
|
|
230
|
-
|
|
231
|
-
return GetRunStatusResponse(
|
|
232
|
-
run_status_dict={
|
|
233
|
-
run_id: run_status_to_proto(status)
|
|
234
|
-
for run_id, status in statuses.items()
|
|
235
|
-
}
|
|
236
|
-
)
|
|
237
|
-
|
|
238
219
|
def PushLogs(
|
|
239
220
|
self, request: PushLogsRequest, context: grpc.ServicerContext
|
|
240
221
|
) -> PushLogsResponse:
|
flwr/supercore/constant.py
CHANGED
|
@@ -59,6 +59,7 @@ MIME_MAP = {
|
|
|
59
59
|
|
|
60
60
|
# Constants for federations
|
|
61
61
|
NOOP_FEDERATION = f"@{NOOP_ACCOUNT_NAME}/default"
|
|
62
|
+
NOOP_FEDERATION_DESCRIPTION = "A federation for testing and development purposes."
|
|
62
63
|
|
|
63
64
|
# Constants for exit handling
|
|
64
65
|
FORCE_EXIT_TIMEOUT_SECONDS = 5 # Used in `flwr_exit` function
|
|
@@ -52,24 +52,24 @@ class SqlObjectStore(ObjectStore, SqlMixin):
|
|
|
52
52
|
|
|
53
53
|
child_ids = [child.object_id for child in tree_node.children]
|
|
54
54
|
with self.session():
|
|
55
|
+
# Insert new object if it doesn't exist (race-condition safe)
|
|
56
|
+
# RETURNING returns a row only if the insert succeeded
|
|
55
57
|
rows = self.query(
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
|
|
58
|
+
"INSERT INTO objects "
|
|
59
|
+
"(object_id, content, is_available, ref_count) "
|
|
60
|
+
"VALUES (:object_id, :content, :is_available, :ref_count) "
|
|
61
|
+
"ON CONFLICT (object_id) DO NOTHING "
|
|
62
|
+
"RETURNING object_id",
|
|
63
|
+
{
|
|
64
|
+
"object_id": obj_id,
|
|
65
|
+
"content": b"",
|
|
66
|
+
"is_available": 0,
|
|
67
|
+
"ref_count": 0,
|
|
68
|
+
},
|
|
59
69
|
)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"INSERT INTO objects "
|
|
64
|
-
"(object_id, content, is_available, ref_count) "
|
|
65
|
-
"VALUES (:object_id, :content, :is_available, :ref_count)",
|
|
66
|
-
{
|
|
67
|
-
"object_id": obj_id,
|
|
68
|
-
"content": b"",
|
|
69
|
-
"is_available": 0,
|
|
70
|
-
"ref_count": 0,
|
|
71
|
-
},
|
|
72
|
-
)
|
|
70
|
+
|
|
71
|
+
if rows:
|
|
72
|
+
# New object inserted: set up child relationships
|
|
73
73
|
for cid in child_ids:
|
|
74
74
|
self.query(
|
|
75
75
|
"INSERT INTO object_children (parent_id, child_id) "
|
|
@@ -83,8 +83,12 @@ class SqlObjectStore(ObjectStore, SqlMixin):
|
|
|
83
83
|
)
|
|
84
84
|
new_objects.append(obj_id)
|
|
85
85
|
else:
|
|
86
|
-
#
|
|
87
|
-
|
|
86
|
+
# Object exists: check if unavailable
|
|
87
|
+
rows = self.query(
|
|
88
|
+
"SELECT is_available FROM objects WHERE object_id = :object_id",
|
|
89
|
+
{"object_id": obj_id},
|
|
90
|
+
)
|
|
91
|
+
if rows and not rows[0]["is_available"]:
|
|
88
92
|
new_objects.append(obj_id)
|
|
89
93
|
|
|
90
94
|
# Ensure run mapping
|
|
@@ -56,8 +56,8 @@ class FederationManager(ABC):
|
|
|
56
56
|
"""Given a node ID, check if it is in the federation."""
|
|
57
57
|
|
|
58
58
|
@abstractmethod
|
|
59
|
-
def get_federations(self, flwr_aid: str) -> list[str]:
|
|
60
|
-
"""Get federations of which the account is a member."""
|
|
59
|
+
def get_federations(self, flwr_aid: str) -> list[tuple[str, str]]:
|
|
60
|
+
"""Get federations (name, description) of which the account is a member."""
|
|
61
61
|
|
|
62
62
|
@abstractmethod
|
|
63
63
|
def get_details(self, federation: str) -> Federation:
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
from flwr.common.constant import NOOP_ACCOUNT_NAME, NOOP_FLWR_AID
|
|
19
19
|
from flwr.common.typing import Federation
|
|
20
20
|
from flwr.proto.federation_pb2 import Account # pylint: disable=E0611
|
|
21
|
-
from flwr.supercore.constant import NOOP_FEDERATION
|
|
21
|
+
from flwr.supercore.constant import NOOP_FEDERATION, NOOP_FEDERATION_DESCRIPTION
|
|
22
22
|
|
|
23
23
|
from .federation_manager import FederationManager
|
|
24
24
|
|
|
@@ -48,11 +48,11 @@ class NoOpFederationManager(FederationManager):
|
|
|
48
48
|
raise ValueError(f"Federation '{federation}' does not exist.")
|
|
49
49
|
return True
|
|
50
50
|
|
|
51
|
-
def get_federations(self, flwr_aid: str) -> list[str]:
|
|
52
|
-
"""Get federations of which the account is a member."""
|
|
51
|
+
def get_federations(self, flwr_aid: str) -> list[tuple[str, str]]:
|
|
52
|
+
"""Get federations (name, description) of which the account is a member."""
|
|
53
53
|
if flwr_aid != NOOP_FLWR_AID:
|
|
54
54
|
return []
|
|
55
|
-
return [NOOP_FEDERATION]
|
|
55
|
+
return [(NOOP_FEDERATION, NOOP_FEDERATION_DESCRIPTION)]
|
|
56
56
|
|
|
57
57
|
def get_details(self, federation: str) -> Federation:
|
|
58
58
|
"""Get details of the federation."""
|
|
@@ -66,6 +66,7 @@ class NoOpFederationManager(FederationManager):
|
|
|
66
66
|
]
|
|
67
67
|
return Federation(
|
|
68
68
|
name=NOOP_FEDERATION,
|
|
69
|
+
description=NOOP_FEDERATION_DESCRIPTION,
|
|
69
70
|
accounts=[Account(id=NOOP_FLWR_AID, name=NOOP_ACCOUNT_NAME)],
|
|
70
71
|
nodes=nodes,
|
|
71
72
|
runs=runs,
|
|
@@ -536,9 +536,10 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
|
536
536
|
|
|
537
537
|
# Get federations the account is a member of
|
|
538
538
|
federations = state.federation_manager.get_federations(flwr_aid=flwr_aid)
|
|
539
|
-
|
|
540
539
|
return ListFederationsResponse(
|
|
541
|
-
federations=[
|
|
540
|
+
federations=[
|
|
541
|
+
Federation(name=fed[0], description=fed[1]) for fed in federations
|
|
542
|
+
]
|
|
542
543
|
)
|
|
543
544
|
|
|
544
545
|
def ShowFederation(
|
|
@@ -558,7 +559,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
|
558
559
|
|
|
559
560
|
# Ensure flwr_aid is a member of the requested federation
|
|
560
561
|
federation = request.federation_name
|
|
561
|
-
if federation not in federations:
|
|
562
|
+
if federation not in [fed[0] for fed in federations]:
|
|
562
563
|
context.abort(
|
|
563
564
|
grpc.StatusCode.FAILED_PRECONDITION,
|
|
564
565
|
f"Federation '{federation}' does not exist or you are "
|
|
@@ -571,6 +572,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
|
571
572
|
# Build Federation proto object
|
|
572
573
|
federation_proto = Federation(
|
|
573
574
|
name=federation,
|
|
575
|
+
member_aids=[acc.id for acc in details.accounts], # Deprecated in v1.26.0
|
|
574
576
|
accounts=details.accounts,
|
|
575
577
|
nodes=details.nodes,
|
|
576
578
|
runs=[run_to_proto(run) for run in details.runs],
|
|
@@ -110,7 +110,7 @@ def run_clientapp( # pylint: disable=R0913, R0914, R0917
|
|
|
110
110
|
heartbeat_sender.start()
|
|
111
111
|
|
|
112
112
|
# Pull Message, Context, Run and (optional) FAB from SuperNode
|
|
113
|
-
message, context, run, fab =
|
|
113
|
+
message, context, run, fab = pull_appinputs(stub=stub, token=token)
|
|
114
114
|
|
|
115
115
|
try:
|
|
116
116
|
|
|
@@ -152,7 +152,7 @@ def run_clientapp( # pylint: disable=R0913, R0914, R0917
|
|
|
152
152
|
reply_message = Message(Error(code=e_code, reason=reason), reply_to=message)
|
|
153
153
|
|
|
154
154
|
# Push Message and Context to SuperNode
|
|
155
|
-
_ =
|
|
155
|
+
_ = push_appoutputs(
|
|
156
156
|
stub=stub, token=token, message=reply_message, context=context
|
|
157
157
|
)
|
|
158
158
|
|
|
@@ -165,15 +165,15 @@ def run_clientapp( # pylint: disable=R0913, R0914, R0917
|
|
|
165
165
|
)
|
|
166
166
|
|
|
167
167
|
|
|
168
|
-
def
|
|
168
|
+
def pull_appinputs(
|
|
169
169
|
stub: ClientAppIoStub, token: str
|
|
170
170
|
) -> tuple[Message, Context, Run, Fab | None]:
|
|
171
|
-
"""Pull
|
|
171
|
+
"""Pull AppInputs from SuperNode."""
|
|
172
172
|
masked_token = mask_string(token)
|
|
173
|
-
log(INFO, "[flwr-clientapp] Pull `
|
|
173
|
+
log(INFO, "[flwr-clientapp] Pull `AppInputs` for token %s", masked_token)
|
|
174
174
|
try:
|
|
175
175
|
# Pull Context, Run and (optional) FAB
|
|
176
|
-
res: PullAppInputsResponse = stub.
|
|
176
|
+
res: PullAppInputsResponse = stub.PullAppInputs(
|
|
177
177
|
PullAppInputsRequest(token=token)
|
|
178
178
|
)
|
|
179
179
|
context = context_from_proto(res.context)
|
|
@@ -201,16 +201,16 @@ def pull_clientappinputs(
|
|
|
201
201
|
message.metadata.__dict__["_message_id"] = object_tree.object_id
|
|
202
202
|
return message, context, run, fab
|
|
203
203
|
except grpc.RpcError as e:
|
|
204
|
-
log(ERROR, "[
|
|
204
|
+
log(ERROR, "[PullAppInputs] gRPC error occurred: %s", str(e))
|
|
205
205
|
raise e
|
|
206
206
|
|
|
207
207
|
|
|
208
|
-
def
|
|
208
|
+
def push_appoutputs(
|
|
209
209
|
stub: ClientAppIoStub, token: str, message: Message, context: Context
|
|
210
210
|
) -> PushAppOutputsResponse:
|
|
211
|
-
"""Push
|
|
211
|
+
"""Push AppOutputs to SuperNode."""
|
|
212
212
|
masked_token = mask_string(token)
|
|
213
|
-
log(INFO, "[flwr-clientapp] Push `
|
|
213
|
+
log(INFO, "[flwr-clientapp] Push `AppOutputs` for token %s", masked_token)
|
|
214
214
|
# Set message ID
|
|
215
215
|
message.metadata.__dict__["_message_id"] = message.object_id
|
|
216
216
|
proto_message = message_to_proto(remove_content_from_message(message))
|
|
@@ -250,10 +250,10 @@ def push_clientappoutputs(
|
|
|
250
250
|
)
|
|
251
251
|
|
|
252
252
|
# Push Context
|
|
253
|
-
res: PushAppOutputsResponse = stub.
|
|
253
|
+
res: PushAppOutputsResponse = stub.PushAppOutputs(
|
|
254
254
|
PushAppOutputsRequest(token=token, context=proto_context)
|
|
255
255
|
)
|
|
256
256
|
return res
|
|
257
257
|
except grpc.RpcError as e:
|
|
258
|
-
log(ERROR, "[
|
|
258
|
+
log(ERROR, "[PushAppOutputs] gRPC error occurred: %s", str(e))
|
|
259
259
|
raise e
|
|
@@ -129,11 +129,11 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
|
129
129
|
|
|
130
130
|
return GetRunResponse(run=run_to_proto(run))
|
|
131
131
|
|
|
132
|
-
def
|
|
132
|
+
def PullAppInputs(
|
|
133
133
|
self, request: PullAppInputsRequest, context: grpc.ServicerContext
|
|
134
134
|
) -> PullAppInputsResponse:
|
|
135
135
|
"""Pull Message, Context, and Run."""
|
|
136
|
-
log(DEBUG, "ClientAppIo.
|
|
136
|
+
log(DEBUG, "ClientAppIo.PullAppInputs")
|
|
137
137
|
|
|
138
138
|
# Initialize state and ffs connection
|
|
139
139
|
state = self.state_factory.state()
|
|
@@ -176,11 +176,11 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
|
176
176
|
fab=fab_to_proto(fab),
|
|
177
177
|
)
|
|
178
178
|
|
|
179
|
-
def
|
|
179
|
+
def PushAppOutputs(
|
|
180
180
|
self, request: PushAppOutputsRequest, context: grpc.ServicerContext
|
|
181
181
|
) -> PushAppOutputsResponse:
|
|
182
182
|
"""Push Message and Context."""
|
|
183
|
-
log(DEBUG, "ClientAppIo.
|
|
183
|
+
log(DEBUG, "ClientAppIo.PushAppOutputs")
|
|
184
184
|
|
|
185
185
|
# Initialize state connection
|
|
186
186
|
state = self.state_factory.state()
|
{flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.26.0.
|
|
3
|
+
Version: 1.26.0.dev20260203
|
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
|
@@ -46,11 +46,11 @@ Requires-Dist: ray (==2.51.1) ; (python_version >= "3.10" and python_version < "
|
|
|
46
46
|
Requires-Dist: ray (==2.51.1) ; (sys_platform != "win32" and python_version == "3.13") and (extra == "simulation")
|
|
47
47
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
48
48
|
Requires-Dist: rich (>=13.5.0,<14.0.0)
|
|
49
|
-
Requires-Dist: starlette (>=0.
|
|
49
|
+
Requires-Dist: starlette (>=0.50.0,<0.51.0) ; extra == "rest"
|
|
50
50
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
|
51
51
|
Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
|
|
52
52
|
Requires-Dist: typer (>=0.12.5,<0.21.0)
|
|
53
|
-
Requires-Dist: uvicorn[standard] (>=0.
|
|
53
|
+
Requires-Dist: uvicorn[standard] (>=0.40.0,<0.41.0) ; extra == "rest"
|
|
54
54
|
Project-URL: Documentation, https://flower.ai
|
|
55
55
|
Project-URL: Homepage, https://flower.ai
|
|
56
56
|
Project-URL: Repository, https://github.com/adap/flower
|
|
@@ -67,7 +67,7 @@ Description-Content-Type: text/markdown
|
|
|
67
67
|
<a href="https://flower.ai/">Website</a> |
|
|
68
68
|
<a href="https://flower.ai/blog">Blog</a> |
|
|
69
69
|
<a href="https://flower.ai/docs/">Docs</a> |
|
|
70
|
-
<a href="https://flower.ai/events/flower-ai-summit-
|
|
70
|
+
<a href="https://flower.ai/events/flower-ai-summit-2026">Summit</a> |
|
|
71
71
|
<a href="https://flower.ai/join-slack">Slack</a>
|
|
72
72
|
<br /><br />
|
|
73
73
|
</p>
|
{flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/RECORD
RENAMED
|
@@ -23,7 +23,7 @@ flwr/cli/config_utils.py,sha256=LNmbPODWefsEtt4ov63BFtuTcK1Pb8Z-AHt1_haWWdA,7841
|
|
|
23
23
|
flwr/cli/constant.py,sha256=MYLI7m9ntwWNkFgEEtKVo1JWX3umf_0EdqY8nJy-83Y,3525
|
|
24
24
|
flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
|
|
25
25
|
flwr/cli/federation/__init__.py,sha256=okxswL4fAjApI9gV_alU1lRkTUcQRbwlzvtUTLz61fE,793
|
|
26
|
-
flwr/cli/federation/ls.py,sha256=
|
|
26
|
+
flwr/cli/federation/ls.py,sha256=k3FyGrH_xh_OdHqw5oj1S5RTKm8ZBqxeA4m6fEEoQx8,10278
|
|
27
27
|
flwr/cli/flower_config.py,sha256=YQfuFGW52jf6EoAxWrXQYw6lmuH0j2qsZ0twHRLxx4k,15278
|
|
28
28
|
flwr/cli/install.py,sha256=AKjJxDr_kBJirpqMg_EemlP23CfH5UF3h5IjtJQ_xPs,9124
|
|
29
29
|
flwr/cli/log.py,sha256=BPA0dvGlXx5PrtURPua5fJyF7iVrb28K4fEY2Uth0EE,7317
|
|
@@ -42,7 +42,7 @@ flwr/cli/supernode/ls.py,sha256=mmpwIpwp5YZSdq3gDlv0h8QpKoMBgZWrMrvJm_ltiRw,7594
|
|
|
42
42
|
flwr/cli/supernode/register.py,sha256=HzgJ1Q8Mlx7oJE-2kRLbIX2OrQP7wM0IeywirLqyz9Y,4724
|
|
43
43
|
flwr/cli/supernode/unregister.py,sha256=ha8-oTXA4NW8xHLyQPHn-e0f7-9bF2QyjXxUD299O6s,2938
|
|
44
44
|
flwr/cli/typing.py,sha256=xGAIv9mAVzs6UXapzu4i8bQ-MckzHMSihtLcnu5SWGU,7562
|
|
45
|
-
flwr/cli/utils.py,sha256=
|
|
45
|
+
flwr/cli/utils.py,sha256=BTPz9p6X5_u6cZvr43pzfuT26t6XJnXPwUu-0Tp2yCk,17442
|
|
46
46
|
flwr/client/__init__.py,sha256=xwkPJfdeWxIIfmiPE5vnmnY_JbTlErP0Qs9eBP6qRFg,1252
|
|
47
47
|
flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
|
|
48
48
|
flwr/client/dpfedavg_numpy_client.py,sha256=ELDHyEJcTB-FlLhHC-JXy8HuB3ZFHfT0HL3g1VSWY5w,7451
|
|
@@ -119,7 +119,7 @@ flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wO
|
|
|
119
119
|
flwr/common/serde.py,sha256=FqqJqNqCk-DryCOgTGkabENvFeU2Q0LieLe0bt3qBbU,22342
|
|
120
120
|
flwr/common/serde_utils.py,sha256=Vk49PnZWRgo0NrvBhFqH-Li7sMFVVgyrs3Ck7kHB-ZE,5820
|
|
121
121
|
flwr/common/telemetry.py,sha256=7HNy5ytioJ3SbFtaKNucwYYC-IXEOXphitZbdHmSlfk,8924
|
|
122
|
-
flwr/common/typing.py,sha256=
|
|
122
|
+
flwr/common/typing.py,sha256=5wBdrZ2VFDlerywQyI_WTgrgPcZ68YGamok79Tg8U60,7388
|
|
123
123
|
flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
|
|
124
124
|
flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
|
|
125
125
|
flwr/compat/client/app.py,sha256=oBOB-gYm0oqxtfAp58QZtv3dyUsPxjFm__f1_teenHU,27178
|
|
@@ -135,10 +135,10 @@ flwr/proto/appio_pb2.py,sha256=GhleCmuqLiDqvumA0qgVl37NTwuan_K_XpUKStXZxwU,4274
|
|
|
135
135
|
flwr/proto/appio_pb2.pyi,sha256=pbrd1mRg0q7mbGqkJYYX1-GwzhiSnuZpjrAJU5im0Og,9512
|
|
136
136
|
flwr/proto/appio_pb2_grpc.py,sha256=f8jZU97X0SNIz4PQ9qj43yAhgVzmaGInItUCOAGZ7tU,897
|
|
137
137
|
flwr/proto/appio_pb2_grpc.pyi,sha256=M-7_sdP1mjiKKC4o13hXUx5sEnX3BXSIXgovr9tNVCg,1071
|
|
138
|
-
flwr/proto/clientappio_pb2.py,sha256=
|
|
138
|
+
flwr/proto/clientappio_pb2.py,sha256=kFTbDt-0TUeqF2rqNapoWQwTWu5IHeOMCQP0ZNr3EE8,2905
|
|
139
139
|
flwr/proto/clientappio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
|
|
140
|
-
flwr/proto/clientappio_pb2_grpc.py,sha256=
|
|
141
|
-
flwr/proto/clientappio_pb2_grpc.pyi,sha256=
|
|
140
|
+
flwr/proto/clientappio_pb2_grpc.py,sha256=Wv9zKVk2h84OF3NPFsIJMUzf8T6lTApkzv8cTJ9TPtk,22814
|
|
141
|
+
flwr/proto/clientappio_pb2_grpc.pyi,sha256=gJZJf9Ol0WeX0Kvsv6TEWwK5MDut-OyrfhvsU6HNKFU,12008
|
|
142
142
|
flwr/proto/control_pb2.py,sha256=RSrFkLnCxmrW9HXv8Qj2H7_34568HU9uKe9D23uPnBE,9231
|
|
143
143
|
flwr/proto/control_pb2.pyi,sha256=tTdf9mOD_rrN96l9uh8rBPc1-sTGHOdiAhtIY9mGtZc,16528
|
|
144
144
|
flwr/proto/control_pb2_grpc.py,sha256=XDGrK2tIT_AcopBnygjddXZRdBTtxP29q-9mK63PsP4,23321
|
|
@@ -151,8 +151,8 @@ flwr/proto/fab_pb2.py,sha256=QDkVHGRGmugjQQUiN8A_okppZ5e2pJi5KipjnWmF6e4,2320
|
|
|
151
151
|
flwr/proto/fab_pb2.pyi,sha256=PUUZ1FHeTwXxjVmTX14Vx5gmgRSFvoW_e5v_Z5qkT54,3948
|
|
152
152
|
flwr/proto/fab_pb2_grpc.py,sha256=jmhCnnwSqBpZ0329XGUGARbcz5sHrr0WrXwccqzc3Vs,895
|
|
153
153
|
flwr/proto/fab_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
|
|
154
|
-
flwr/proto/federation_pb2.py,sha256=
|
|
155
|
-
flwr/proto/federation_pb2.pyi,sha256=
|
|
154
|
+
flwr/proto/federation_pb2.py,sha256=strZ42K6S-50tuRVCqXqGcaLR6suXrGFT0SQOqNcpLQ,1974
|
|
155
|
+
flwr/proto/federation_pb2.pyi,sha256=mk1qfH85SURZWXGVpAzpPCgPTu3L4dlEefucG3lMyu8,3203
|
|
156
156
|
flwr/proto/federation_pb2_grpc.py,sha256=HPErt9uXJPbY8jLtTNFr941z82uMm7cOx10hTHgcwZM,902
|
|
157
157
|
flwr/proto/federation_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
|
|
158
158
|
flwr/proto/fleet_pb2.py,sha256=HnxtM2pqVdn2xhl3e1NlLazpSMaGoUUEG9Nd17egxqU,6543
|
|
@@ -183,18 +183,18 @@ flwr/proto/recorddict_pb2.py,sha256=L2mNSyIVWA2dcI1xWI3gj0nktuDHYgxbbLuVRQKVU74,
|
|
|
183
183
|
flwr/proto/recorddict_pb2.pyi,sha256=BYgVNk985Ww4dCXCjDGg1YU6q7MuMqbDa0usGVH3ktg,15208
|
|
184
184
|
flwr/proto/recorddict_pb2_grpc.py,sha256=kw9_kXNcRe3y6j6HquG1P1MqccFFAogfi48djxbOLDE,902
|
|
185
185
|
flwr/proto/recorddict_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
|
|
186
|
-
flwr/proto/run_pb2.py,sha256=
|
|
187
|
-
flwr/proto/run_pb2.pyi,sha256=
|
|
186
|
+
flwr/proto/run_pb2.py,sha256=0HsPXXNxKq0uefBY3gJOBvu9gQGZ-FhKaGhJiAwMKgU,4146
|
|
187
|
+
flwr/proto/run_pb2.pyi,sha256=m6YeVUE2LnljsF_1FTpJWpxPEKw8RB_X1HuRFvijHG0,8689
|
|
188
188
|
flwr/proto/run_pb2_grpc.py,sha256=l5u1Ww6JxVLVN784Z2OQbkQ-tAf5yYGh6QbNDc4F5II,895
|
|
189
189
|
flwr/proto/run_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
|
|
190
|
-
flwr/proto/serverappio_pb2.py,sha256=
|
|
190
|
+
flwr/proto/serverappio_pb2.py,sha256=g4NlMFE4F3u0FXSmNJNGOe2nFRAaRRH8oEak6FSqeX8,3940
|
|
191
191
|
flwr/proto/serverappio_pb2.pyi,sha256=KpVM8B_O0M3RFJ-DtnNlQapJs4V-7pHcdEb2G3ECbhE,1998
|
|
192
|
-
flwr/proto/serverappio_pb2_grpc.py,sha256=
|
|
193
|
-
flwr/proto/serverappio_pb2_grpc.pyi,sha256
|
|
194
|
-
flwr/proto/simulationio_pb2.py,sha256=
|
|
192
|
+
flwr/proto/serverappio_pb2_grpc.py,sha256=CNLkE1rVU5TaJHC7XoWYwONyPcDwCq5t6sezceCZbIg,30319
|
|
193
|
+
flwr/proto/serverappio_pb2_grpc.pyi,sha256=-vpa_s5oGrT2aXE4zmIdDXXGxJ7ZSfcs8pIeOGvX7yE,15557
|
|
194
|
+
flwr/proto/simulationio_pb2.py,sha256=b7B2VXAwKcfgKPulDmOBQs0RvEWKnWbGuTwF4GvMnn8,2681
|
|
195
195
|
flwr/proto/simulationio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
|
|
196
|
-
flwr/proto/simulationio_pb2_grpc.py,sha256=
|
|
197
|
-
flwr/proto/simulationio_pb2_grpc.pyi,sha256=
|
|
196
|
+
flwr/proto/simulationio_pb2_grpc.py,sha256=JVJ_u2RR64amAnacdH6op6eOW7CT0RAzZbRBfqPLBQk,19201
|
|
197
|
+
flwr/proto/simulationio_pb2_grpc.pyi,sha256=SHge7XK0FJoPsZzXBrVeagBUlmpRzMAiXDMaYkjB3eI,10614
|
|
198
198
|
flwr/proto/transport_pb2.py,sha256=xqDF2oI0PzAndH17O80SQkyOT_QF9m7CQ0166He7UDQ,10122
|
|
199
199
|
flwr/proto/transport_pb2.pyi,sha256=A-AzbyDAyp4hzJCuC6MOA1NewkFmtuhPwFCjPKqQP0Q,22450
|
|
200
200
|
flwr/proto/transport_pb2_grpc.py,sha256=jYsbV3KYdp4TaNfWxv3ljFEvB-Yjsa8MIPtTH-vVPPk,3600
|
|
@@ -276,10 +276,10 @@ flwr/server/superlink/linkstate/sql_linkstate.py,sha256=ziZvpEQBVV9GSxjHiS0fAyaY
|
|
|
276
276
|
flwr/server/superlink/linkstate/utils.py,sha256=IA1mKKhGVBPoD61VXKFa8dZ_prnfuyWIuKAeeHPLmuE,16000
|
|
277
277
|
flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
|
|
278
278
|
flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=2NFPynJMpYpT9C98Fr4n0QrTTjWBWbeUzlHcc6pg2kY,2279
|
|
279
|
-
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=
|
|
279
|
+
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=sEdA8lQzNEKMdpvvwzCsJJWHdlkPI1omCs6XyAWKES0,19586
|
|
280
280
|
flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
|
|
281
281
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=fHFW8SOR4iyfBxQeYOXWwqUStGsv0P4EAIVkBk69BN4,2174
|
|
282
|
-
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=
|
|
282
|
+
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=QghTkyaNrSR41HMwQPtWAqhv6kWqdoj44tuto1K5x6A,9558
|
|
283
283
|
flwr/server/superlink/utils.py,sha256=pdeB9dm21e5D2Vuymme8069VWW5XuWZfi1LAm7nKjeQ,2400
|
|
284
284
|
flwr/server/typing.py,sha256=qr04ihK3cARvw2Cz64axwzbdCbLtK8R5DDtlh5kWXEU,1020
|
|
285
285
|
flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
|
|
@@ -328,7 +328,7 @@ flwr/supercore/address.py,sha256=SgM_pazKsw1Avo5nms0WWgIZFUGS349O0gOP7N3bFW4,331
|
|
|
328
328
|
flwr/supercore/app_utils.py,sha256=P558DOr5a4UPyOdRCxbDQueQF-L-kSc6qzouPPuqj0U,1773
|
|
329
329
|
flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
|
|
330
330
|
flwr/supercore/cli/flower_superexec.py,sha256=IQIGzxgaeLNMNzGXGemfYK3lp8God5bTkXpVkbeP_ig,6109
|
|
331
|
-
flwr/supercore/constant.py,sha256=
|
|
331
|
+
flwr/supercore/constant.py,sha256=Hn87UDdFZBhVq2kbGziPoV2veozYZlJ3R_Unjmr7ekY,3008
|
|
332
332
|
flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
|
|
333
333
|
flwr/supercore/corestate/corestate.py,sha256=EZg4gPXqVOXwS7t0tlPfedajoWj5T80oeDBNxpV2y2I,2874
|
|
334
334
|
flwr/supercore/corestate/in_memory_corestate.py,sha256=9qa6RuRZfCp6vs-ARYdiZjCL31VOAAxw0a_VkBXR5zY,5116
|
|
@@ -351,7 +351,7 @@ flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mk
|
|
|
351
351
|
flwr/supercore/object_store/in_memory_object_store.py,sha256=-DU6n1Ef3EmllHY9SzeXw57ftoU0mR_6or4NIDSZlcs,9322
|
|
352
352
|
flwr/supercore/object_store/object_store.py,sha256=XLo-xe258TmCel9dNLCJepFjXaQtEi0wBqzU9YsyJVg,5221
|
|
353
353
|
flwr/supercore/object_store/object_store_factory.py,sha256=RByhm8Ow6TxmklP1MTluaze3v5kw0O1CILrA7Y0nWMg,2604
|
|
354
|
-
flwr/supercore/object_store/sql_object_store.py,sha256=
|
|
354
|
+
flwr/supercore/object_store/sql_object_store.py,sha256=z0zqPNwkx7tay3vFJ2Bd1Ddv3nWXBB3zcK-LP8ZfsbI,10349
|
|
355
355
|
flwr/supercore/primitives/__init__.py,sha256=Tx8GOjnmMo8Y74RsDGrMpfr-E0Nl8dcUDF784_ge6F8,745
|
|
356
356
|
flwr/supercore/primitives/asymmetric.py,sha256=1643niHYj3uEbfPd06VuMHwN3tKVwg0uVyR3RhTdWIU,3778
|
|
357
357
|
flwr/supercore/primitives/asymmetric_ed25519.py,sha256=eIhOTMibQW0FJX4MXdplHdL3HcfCiKuFu2mQ8GQTUz8,5025
|
|
@@ -385,15 +385,15 @@ flwr/superlink/auth_plugin/__init__.py,sha256=ApYBHnDmtv5gVrnxdFq97zC58O1icqHogK
|
|
|
385
385
|
flwr/superlink/auth_plugin/auth_plugin.py,sha256=xLqAYFG7sjAhYgyeTvvEY6fSMjPRq0offmTDRYpIs78,2956
|
|
386
386
|
flwr/superlink/auth_plugin/noop_auth_plugin.py,sha256=0MWjNXZdz6zGRfitlnZfVKu4sKVn0HhJvnp09c3xVUA,2962
|
|
387
387
|
flwr/superlink/federation/__init__.py,sha256=A1pFFvkEQrHzvRAOstr2o7nphx3JbuJgkNRFKJ9qD3M,890
|
|
388
|
-
flwr/superlink/federation/federation_manager.py,sha256
|
|
389
|
-
flwr/superlink/federation/noop_federation_manager.py,sha256=
|
|
388
|
+
flwr/superlink/federation/federation_manager.py,sha256=vpVaW-WS-mGAazxh9fy9Xp3gLPQozRsUoJiloG5_tBI,2354
|
|
389
|
+
flwr/superlink/federation/noop_federation_manager.py,sha256=LuBDncifAvcn8KszumZBmsp7-9PIp_5iHiHoPLahlBE,3149
|
|
390
390
|
flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
|
|
391
391
|
flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
|
|
392
392
|
flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=AJs7GE-fyUBLcUEUzB058TpFzC7gyDOL17THvYkJTn8,6529
|
|
393
393
|
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=r9LjF5VkrE1sZIcml-sO2uOPAwpvr6dj4tFchqoDcR4,5965
|
|
394
394
|
flwr/superlink/servicer/control/control_grpc.py,sha256=AD7q2eo7RvXEhntcfVLgoKAR7AWfD_Z56Qw51wGLanY,4218
|
|
395
395
|
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=8d28soJ0mLLhpSGCpuY2YzgbX0vVO7Sqe2DcApEgILc,3336
|
|
396
|
-
flwr/superlink/servicer/control/control_servicer.py,sha256=
|
|
396
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=7z4orYaoEO0Zm5JDtlvJ6TKBOO5cDy20ieloCZ0K8iU,25682
|
|
397
397
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
|
398
398
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
|
399
399
|
flwr/supernode/cli/flower_supernode.py,sha256=LhciYbUwUfvkR4hiHxizERhQzpqZOAG9d6qVm6-V4jY,10891
|
|
@@ -403,12 +403,12 @@ flwr/supernode/nodestate/in_memory_nodestate.py,sha256=DBhpDsPmitkOr86pW78_0aiG_
|
|
|
403
403
|
flwr/supernode/nodestate/nodestate.py,sha256=RWrsHS1nndK67-T6YSmi85qRb_t_wM7fjLb16YS-87Y,6217
|
|
404
404
|
flwr/supernode/nodestate/nodestate_factory.py,sha256=i-1cv42R9LBM1nyasTHuTHSqlyJxVSRtUK2BMzqT-Ss,1631
|
|
405
405
|
flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
|
|
406
|
-
flwr/supernode/runtime/run_clientapp.py,sha256=
|
|
406
|
+
flwr/supernode/runtime/run_clientapp.py,sha256=cNcaOjgEXLNDFhfYS6auOcdsgj-nmwfuIwfoEtVDRpM,9385
|
|
407
407
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
|
408
408
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
|
409
|
-
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=
|
|
409
|
+
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=5TOp0SelGqiWzRHfhYpoKzUd7EuVTqt5_PXvnUy7_Ok,11615
|
|
410
410
|
flwr/supernode/start_client_internal.py,sha256=3MkeDiWZr-SsvACuuAxJi8nYw6GYNKOO6q8b36E3R9k,26250
|
|
411
|
-
flwr_nightly-1.26.0.
|
|
412
|
-
flwr_nightly-1.26.0.
|
|
413
|
-
flwr_nightly-1.26.0.
|
|
414
|
-
flwr_nightly-1.26.0.
|
|
411
|
+
flwr_nightly-1.26.0.dev20260203.dist-info/METADATA,sha256=HtDC4Sl-9R0f1NwHCNuXm4dulzTEou5G11nh6ximGBw,14447
|
|
412
|
+
flwr_nightly-1.26.0.dev20260203.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
413
|
+
flwr_nightly-1.26.0.dev20260203.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
|
414
|
+
flwr_nightly-1.26.0.dev20260203.dist-info/RECORD,,
|
{flwr_nightly-1.26.0.dev20260201.dist-info → flwr_nightly-1.26.0.dev20260203.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|