flwr-nightly 1.20.0.dev20250710__py3-none-any.whl → 1.20.0.dev20250714__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/common/inflatable_utils.py +14 -7
- flwr/proto/appio_pb2.py +51 -0
- flwr/proto/appio_pb2.pyi +167 -0
- flwr/proto/appio_pb2_grpc.py +4 -0
- flwr/proto/appio_pb2_grpc.pyi +4 -0
- flwr/proto/clientappio_pb2.py +19 -11
- flwr/proto/clientappio_pb2.pyi +50 -12
- flwr/proto/clientappio_pb2_grpc.py +68 -0
- flwr/proto/clientappio_pb2_grpc.pyi +26 -0
- flwr/proto/serverappio_pb2.py +8 -31
- flwr/proto/serverappio_pb2.pyi +0 -152
- flwr/proto/serverappio_pb2_grpc.py +39 -38
- flwr/proto/serverappio_pb2_grpc.pyi +21 -20
- flwr/server/grid/grpc_grid.py +10 -8
- flwr/server/serverapp/app.py +9 -11
- flwr/server/superlink/serverappio/serverappio_servicer.py +27 -25
- flwr/server/superlink/utils.py +2 -2
- flwr/supercore/license_plugin/license_plugin.py +0 -8
- flwr/superexec/exec_grpc.py +2 -4
- flwr/supernode/runtime/run_clientapp.py +14 -4
- flwr/supernode/servicer/clientappio/clientappio_servicer.py +48 -5
- flwr/supernode/start_client_internal.py +14 -0
- {flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/METADATA +1 -1
- {flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/RECORD +26 -22
- {flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/entry_points.txt +0 -0
flwr/server/superlink/utils.py
CHANGED
@@ -22,9 +22,9 @@ import grpc
|
|
22
22
|
from flwr.common.constant import Status, SubStatus
|
23
23
|
from flwr.common.inflatable import iterate_object_tree
|
24
24
|
from flwr.common.typing import RunStatus
|
25
|
+
from flwr.proto.appio_pb2 import PushAppMessagesRequest # pylint: disable=E0611
|
25
26
|
from flwr.proto.fleet_pb2 import PushMessagesRequest # pylint: disable=E0611
|
26
27
|
from flwr.proto.message_pb2 import ObjectIDs # pylint: disable=E0611
|
27
|
-
from flwr.proto.serverappio_pb2 import PushInsMessagesRequest # pylint: disable=E0611
|
28
28
|
from flwr.server.superlink.linkstate import LinkState
|
29
29
|
from flwr.supercore.object_store import ObjectStore
|
30
30
|
|
@@ -77,7 +77,7 @@ def abort_if(
|
|
77
77
|
|
78
78
|
|
79
79
|
def store_mapping_and_register_objects(
|
80
|
-
store: ObjectStore, request: Union[
|
80
|
+
store: ObjectStore, request: Union[PushAppMessagesRequest, PushMessagesRequest]
|
81
81
|
) -> dict[str, ObjectIDs]:
|
82
82
|
"""Store Message object to descendants mapping and preregister objects."""
|
83
83
|
if not request.messages_list:
|
@@ -21,14 +21,6 @@ from abc import ABC, abstractmethod
|
|
21
21
|
class LicensePlugin(ABC):
|
22
22
|
"""Abstract Flower License Plugin class."""
|
23
23
|
|
24
|
-
@abstractmethod
|
25
|
-
def __init__(self) -> None:
|
26
|
-
"""Abstract constructor."""
|
27
|
-
|
28
24
|
@abstractmethod
|
29
25
|
def check_license(self) -> bool:
|
30
26
|
"""Check if the license is valid."""
|
31
|
-
|
32
|
-
@abstractmethod
|
33
|
-
def get_license_info(self) -> None:
|
34
|
-
"""Get information about the license."""
|
flwr/superexec/exec_grpc.py
CHANGED
@@ -64,10 +64,8 @@ def run_exec_api_grpc(
|
|
64
64
|
executor.set_config(config)
|
65
65
|
|
66
66
|
license_plugin: Optional[LicensePlugin] = get_license_plugin()
|
67
|
-
if license_plugin:
|
68
|
-
|
69
|
-
if not license_plugin.check_license():
|
70
|
-
flwr_exit(ExitCode.SUPERLINK_LICENSE_INVALID)
|
67
|
+
if license_plugin and not license_plugin.check_license():
|
68
|
+
flwr_exit(ExitCode.SUPERLINK_LICENSE_INVALID)
|
71
69
|
|
72
70
|
exec_servicer: grpc.Server = ExecServicer(
|
73
71
|
linkstate_factory=state_factory,
|
@@ -50,8 +50,11 @@ from flwr.proto.clientappio_pb2 import (
|
|
50
50
|
GetRunIdsWithPendingMessagesResponse,
|
51
51
|
PullClientAppInputsRequest,
|
52
52
|
PullClientAppInputsResponse,
|
53
|
+
PullMessageRequest,
|
54
|
+
PullMessageResponse,
|
53
55
|
PushClientAppOutputsRequest,
|
54
56
|
PushClientAppOutputsResponse,
|
57
|
+
PushMessageRequest,
|
55
58
|
RequestTokenRequest,
|
56
59
|
RequestTokenResponse,
|
57
60
|
)
|
@@ -199,10 +202,14 @@ def pull_clientappinputs(
|
|
199
202
|
masked_token = mask_string(token)
|
200
203
|
log(INFO, "[flwr-clientapp] Pull `ClientAppInputs` for token %s", masked_token)
|
201
204
|
try:
|
205
|
+
# Pull Message
|
206
|
+
res_msg: PullMessageResponse = stub.PullMessage(PullMessageRequest(token=token))
|
207
|
+
message = message_from_proto(res_msg.message)
|
208
|
+
|
209
|
+
# Pull Context, Run and (optional) FAB
|
202
210
|
res: PullClientAppInputsResponse = stub.PullClientAppInputs(
|
203
211
|
PullClientAppInputsRequest(token=token)
|
204
212
|
)
|
205
|
-
message = message_from_proto(res.message)
|
206
213
|
context = context_from_proto(res.context)
|
207
214
|
run = run_from_proto(res.run)
|
208
215
|
fab = fab_from_proto(res.fab) if res.fab else None
|
@@ -224,10 +231,13 @@ def push_clientappoutputs(
|
|
224
231
|
proto_context = context_to_proto(context)
|
225
232
|
|
226
233
|
try:
|
234
|
+
|
235
|
+
# Push Message
|
236
|
+
_ = stub.PushMessage(PushMessageRequest(token=token, message=proto_message))
|
237
|
+
|
238
|
+
# Push Context
|
227
239
|
res: PushClientAppOutputsResponse = stub.PushClientAppOutputs(
|
228
|
-
PushClientAppOutputsRequest(
|
229
|
-
token=token, message=proto_message, context=proto_context
|
230
|
-
)
|
240
|
+
PushClientAppOutputsRequest(token=token, context=proto_context)
|
231
241
|
)
|
232
242
|
return res
|
233
243
|
except grpc.RpcError as e:
|
@@ -39,8 +39,12 @@ from flwr.proto.clientappio_pb2 import ( # pylint: disable=E0401
|
|
39
39
|
GetRunIdsWithPendingMessagesResponse,
|
40
40
|
PullClientAppInputsRequest,
|
41
41
|
PullClientAppInputsResponse,
|
42
|
+
PullMessageRequest,
|
43
|
+
PullMessageResponse,
|
42
44
|
PushClientAppOutputsRequest,
|
43
45
|
PushClientAppOutputsResponse,
|
46
|
+
PushMessageRequest,
|
47
|
+
PushMessageResponse,
|
44
48
|
RequestTokenRequest,
|
45
49
|
RequestTokenResponse,
|
46
50
|
)
|
@@ -119,14 +123,12 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
119
123
|
)
|
120
124
|
raise RuntimeError("This line should never be reached.")
|
121
125
|
|
122
|
-
# Retrieve
|
123
|
-
message = state.get_messages(run_ids=[run_id], is_reply=False)[0]
|
126
|
+
# Retrieve context, run and fab for this run
|
124
127
|
context = cast(Context, state.get_context(run_id))
|
125
128
|
run = cast(Run, state.get_run(run_id))
|
126
129
|
fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0]) # type: ignore
|
127
130
|
|
128
131
|
return PullClientAppInputsResponse(
|
129
|
-
message=message_to_proto(message),
|
130
132
|
context=context_to_proto(context),
|
131
133
|
run=run_to_proto(run),
|
132
134
|
fab=fab_to_proto(fab),
|
@@ -150,8 +152,7 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
150
152
|
)
|
151
153
|
raise RuntimeError("This line should never be reached.")
|
152
154
|
|
153
|
-
# Save the
|
154
|
-
state.store_message(message_from_proto(request.message))
|
155
|
+
# Save the context to the state
|
155
156
|
state.store_context(context_from_proto(request.context))
|
156
157
|
|
157
158
|
# Remove the token to make the run eligible for processing
|
@@ -159,3 +160,45 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
159
160
|
state.delete_token(run_id)
|
160
161
|
|
161
162
|
return PushClientAppOutputsResponse()
|
163
|
+
|
164
|
+
def PullMessage(
|
165
|
+
self, request: PullMessageRequest, context: grpc.ServicerContext
|
166
|
+
) -> PullMessageResponse:
|
167
|
+
"""Pull one Message."""
|
168
|
+
# Initialize state and ffs connection
|
169
|
+
state = self.state_factory.state()
|
170
|
+
|
171
|
+
# Validate the token
|
172
|
+
run_id = state.get_run_id_by_token(request.token)
|
173
|
+
if run_id is None or not state.verify_token(run_id, request.token):
|
174
|
+
context.abort(
|
175
|
+
grpc.StatusCode.PERMISSION_DENIED,
|
176
|
+
"Invalid token.",
|
177
|
+
)
|
178
|
+
raise RuntimeError("This line should never be reached.")
|
179
|
+
|
180
|
+
# Retrieve message, context, run and fab for this run
|
181
|
+
message = state.get_messages(run_ids=[run_id], is_reply=False)[0]
|
182
|
+
|
183
|
+
return PullMessageResponse(message=message_to_proto(message))
|
184
|
+
|
185
|
+
def PushMessage(
|
186
|
+
self, request: PushMessageRequest, context: grpc.ServicerContext
|
187
|
+
) -> PushMessageResponse:
|
188
|
+
"""Push one Message."""
|
189
|
+
# Initialize state connection
|
190
|
+
state = self.state_factory.state()
|
191
|
+
|
192
|
+
# Validate the token
|
193
|
+
run_id = state.get_run_id_by_token(request.token)
|
194
|
+
if run_id is None or not state.verify_token(run_id, request.token):
|
195
|
+
context.abort(
|
196
|
+
grpc.StatusCode.PERMISSION_DENIED,
|
197
|
+
"Invalid token.",
|
198
|
+
)
|
199
|
+
raise RuntimeError("This line should never be reached.")
|
200
|
+
|
201
|
+
# Save the message and context to the state
|
202
|
+
state.store_message(message_from_proto(request.message))
|
203
|
+
|
204
|
+
return PushMessageResponse()
|
@@ -47,6 +47,11 @@ from flwr.common.constant import (
|
|
47
47
|
from flwr.common.exit import ExitCode, flwr_exit
|
48
48
|
from flwr.common.exit_handlers import register_exit_handlers
|
49
49
|
from flwr.common.grpc import generic_create_grpc_server
|
50
|
+
from flwr.common.inflatable import (
|
51
|
+
get_all_nested_objects,
|
52
|
+
get_object_tree,
|
53
|
+
no_object_id_recompute,
|
54
|
+
)
|
50
55
|
from flwr.common.logger import log
|
51
56
|
from flwr.common.retry_invoker import RetryInvoker, RetryState, exponential
|
52
57
|
from flwr.common.telemetry import EventType
|
@@ -289,7 +294,16 @@ def _pull_and_store_message( # pylint: disable=too-many-positional-arguments
|
|
289
294
|
state.store_context(run_ctx)
|
290
295
|
|
291
296
|
# Store the message in the state
|
297
|
+
# This shall be removed after the transition to ObjectStore
|
292
298
|
state.store_message(message)
|
299
|
+
|
300
|
+
# Store the message in ObjectStore
|
301
|
+
# This is a temporary solution to store messages in ObjectStore
|
302
|
+
with no_object_id_recompute():
|
303
|
+
object_store.preregister(run_id, get_object_tree(message))
|
304
|
+
for obj_id, obj in get_all_nested_objects(message).items():
|
305
|
+
object_store.put(obj_id, obj.deflate())
|
306
|
+
|
293
307
|
except RunNotRunningException:
|
294
308
|
if message is None:
|
295
309
|
log(
|
{flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.20.0.
|
3
|
+
Version: 1.20.0.dev20250714
|
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
|
{flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/RECORD
RENAMED
@@ -125,7 +125,7 @@ flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
|
|
125
125
|
flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
|
126
126
|
flwr/common/inflatable_grpc_utils.py,sha256=ZpwtgF1tGD6NwQkCidbhbeBPDBZ1Nx9eGMHQ04eNEE8,3554
|
127
127
|
flwr/common/inflatable_rest_utils.py,sha256=KiZd06XRiXcl_WewOrag0JTvUQt5kZ74UIsQ3FCAXGc,3580
|
128
|
-
flwr/common/inflatable_utils.py,sha256=
|
128
|
+
flwr/common/inflatable_utils.py,sha256=yew5VU8po8yZsmoTVxg-tB5vrvnb2mvBAE55qjiOAq8,12840
|
129
129
|
flwr/common/logger.py,sha256=JbRf6E2vQxXzpDBq1T8IDUJo_usu3gjWEBPQ6uKcmdg,13049
|
130
130
|
flwr/common/message.py,sha256=xAL7iZN5-n-xPQpgoSFvxNrzs8fmiiPfoU0DjNQEhRw,19953
|
131
131
|
flwr/common/object_ref.py,sha256=p3SfTeqo3Aj16SkB-vsnNn01zswOPdGNBitcbRnqmUk,9134
|
@@ -165,10 +165,14 @@ flwr/compat/server/__init__.py,sha256=TGVSoOTuf5T5JHUVrK5wuorQF7L6Wvdem8B4uufvMJ
|
|
165
165
|
flwr/compat/server/app.py,sha256=_lIe7Q4KUk-olq9PYBxIsO3UaOn6N92CWgWQ4hRcAZw,6490
|
166
166
|
flwr/compat/simulation/__init__.py,sha256=MApGa-tysDDw34iSdxZ7TWOKtGJM-z3i8fIRJa0qbZ8,750
|
167
167
|
flwr/proto/__init__.py,sha256=S3VbQzVwNC1P-3_9EdrXuwgptO-BVuuAe20Z_OUc1cQ,683
|
168
|
-
flwr/proto/
|
169
|
-
flwr/proto/
|
170
|
-
flwr/proto/
|
171
|
-
flwr/proto/
|
168
|
+
flwr/proto/appio_pb2.py,sha256=rAewGZ8FiIaB-BPdOZHL3lzytzPWmJ-mB6-S8gfcq84,4213
|
169
|
+
flwr/proto/appio_pb2.pyi,sha256=Ab8L81Ooyd5OzogmNsEaNRaIhyTd8ZJ9veqwwvxK9Io,7889
|
170
|
+
flwr/proto/appio_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
171
|
+
flwr/proto/appio_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
172
|
+
flwr/proto/clientappio_pb2.py,sha256=mgxqxwY6Uy7G4XFQPZbHWWScFThFs97HF-RIYCjfZTg,5166
|
173
|
+
flwr/proto/clientappio_pb2.pyi,sha256=MNDZpPjLStQp-VGdp91Pe2SmEQAvu96HJz1IWVQOb38,8344
|
174
|
+
flwr/proto/clientappio_pb2_grpc.py,sha256=bhUGniS48FKipJYRmbMWCv_kXjt82ca1zqLWepy3rso,11317
|
175
|
+
flwr/proto/clientappio_pb2_grpc.pyi,sha256=GoHd2vOw4mDLTMxHJ-osQ6oIRzQZNgXMFOZknghyzsk,3265
|
172
176
|
flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
|
173
177
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
174
178
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
@@ -213,10 +217,10 @@ flwr/proto/run_pb2.py,sha256=76pAp3ugvpsUyx34ehvMTe-o-J2pTTvb1OskDmsAcag,4768
|
|
213
217
|
flwr/proto/run_pb2.pyi,sha256=7hWfS3DzrrrKn5ZXRYL1x1rz9u1ZZd68Sz5kinRBDCk,9542
|
214
218
|
flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
215
219
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
216
|
-
flwr/proto/serverappio_pb2.py,sha256=
|
217
|
-
flwr/proto/serverappio_pb2.pyi,sha256=
|
218
|
-
flwr/proto/serverappio_pb2_grpc.py,sha256=
|
219
|
-
flwr/proto/serverappio_pb2_grpc.pyi,sha256=
|
220
|
+
flwr/proto/serverappio_pb2.py,sha256=CeVRUlT3jn4xVaTVi2U9L5H7r7uc_U4DYZOZNxT5kI4,3575
|
221
|
+
flwr/proto/serverappio_pb2.pyi,sha256=MDY9CEUnev_oi7Y-gZIXx8divcc0BufLAE2d7nmbo_Y,1319
|
222
|
+
flwr/proto/serverappio_pb2_grpc.py,sha256=Y4uz8M2JT5pg6ADobq5hDQyYFjFplRV53J2z8pdRqVk,24140
|
223
|
+
flwr/proto/serverappio_pb2_grpc.pyi,sha256=8pFqwGZjBUzyg1hTY7LCbLiYmGL7hlffeS0jyCi7L20,6571
|
220
224
|
flwr/proto/simulationio_pb2.py,sha256=sAJX72z-IttVGxyU3PFnG8AFuA-pV7itvBoxz-hOudE,3342
|
221
225
|
flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
|
222
226
|
flwr/proto/simulationio_pb2_grpc.py,sha256=HuGbhOwV_A5GTbvmd5XTm6lSm9fWUgKcxq9OKhgmBT0,12999
|
@@ -239,7 +243,7 @@ flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
|
|
239
243
|
flwr/server/fleet_event_log_interceptor.py,sha256=ifV4gUB_hSg7QPLIrAyDpjciqZBOKb0L0abZno3GTwA,3780
|
240
244
|
flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
|
241
245
|
flwr/server/grid/grid.py,sha256=naGCYt5J6dnmUvrcGkdNyKPe3MBd-0awGm1ALmgahqY,6625
|
242
|
-
flwr/server/grid/grpc_grid.py,sha256
|
246
|
+
flwr/server/grid/grpc_grid.py,sha256=-SLS1VifRo1uxgjRWQJSshkTm5t0s8Wrj2ZZcbSu86I,13581
|
243
247
|
flwr/server/grid/inmemory_grid.py,sha256=RjejYT-d-hHuTs1KSs_5wvOdAWKLus8w5_UAcnGt4iw,6168
|
244
248
|
flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
|
245
249
|
flwr/server/run_serverapp.py,sha256=v0p6jXj2dFxlRUdoEeF1mnaFd9XRQi6dZCflPY6d3qI,2063
|
@@ -247,7 +251,7 @@ flwr/server/server.py,sha256=39m4FSN2T-uVA-no9nstN0eWW0co-IUUAIMmpd3V7Jc,17893
|
|
247
251
|
flwr/server/server_app.py,sha256=8uagoZX-3CY3tazPqkIV9jY-cN0YrRRrDmVe23o0AV0,9515
|
248
252
|
flwr/server/server_config.py,sha256=e_6ddh0riwOJsdNn2BFev344uMWfDk9n7dyjNpPgm1w,1349
|
249
253
|
flwr/server/serverapp/__init__.py,sha256=xcC0T_MQSMS9cicUzUUpMNCOsF2d8Oh_8jvnoBLuZvo,800
|
250
|
-
flwr/server/serverapp/app.py,sha256=
|
254
|
+
flwr/server/serverapp/app.py,sha256=GetSKAsDlNlJFazregZ_Vu63SIIL9KrZXEvSjND7qA0,9407
|
251
255
|
flwr/server/serverapp_components.py,sha256=dfSqmrsVy3arKXpl3ZIBQWdV8rehfIms8aJooyzdmEM,2118
|
252
256
|
flwr/server/strategy/__init__.py,sha256=HhsSWMWaC7oCb2g7Kqn1MBKdrfvgi8VxACy9ZL706Q0,2836
|
253
257
|
flwr/server/strategy/aggregate.py,sha256=smlKKy-uFUuuFR12vlclucnwSQWRz78R79-Km4RWqbw,13978
|
@@ -302,11 +306,11 @@ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=E699Ak0jMF3N7i1SIeFRu
|
|
302
306
|
flwr/server/superlink/linkstate/utils.py,sha256=IeLh7iGRCHU5MEWOl7iriaSE4L__8GWOa2OleXadK5M,15444
|
303
307
|
flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
|
304
308
|
flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=zcvzDhCAnlFxAwCiJUHNm6IE7-rk5jeZqSmPgjEY3AU,2307
|
305
|
-
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=
|
309
|
+
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=BBDxoYj1BlNtT7wOr9TUGJUHP6MS5dMKqcBsW4Uji00,18735
|
306
310
|
flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
|
307
311
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=VqWKxjpd4bCgPFKsgtIZPk9YcG0kc1EEmr5k20EKty4,2205
|
308
312
|
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=m1T1zvEn81jlfx9hVTqmeWxAu6APCS2YW8l5O0OQvhU,7724
|
309
|
-
flwr/server/superlink/utils.py,sha256=
|
313
|
+
flwr/server/superlink/utils.py,sha256=kN7Wg7bK0wwK6B3JSXNCrUCVt8LTogKf3lKXAFREZSM,3892
|
310
314
|
flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
|
311
315
|
flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
|
312
316
|
flwr/server/utils/tensorboard.py,sha256=3z3MeF0cu_U6ghNgRd0UQ5bunyDQKxCLpIpEdGMoCJ0,5466
|
@@ -333,7 +337,7 @@ flwr/supercore/ffs/disk_ffs.py,sha256=c5VywSaRnq3XM_zuJptNtsF2HFwsRK0pvBd5-5CNON
|
|
333
337
|
flwr/supercore/ffs/ffs.py,sha256=6w7wy71i7tbuJwqEgdeCa49JejXMEof3jujURN_R7Rg,2395
|
334
338
|
flwr/supercore/ffs/ffs_factory.py,sha256=pK-g3LMelvWTV6N9Cd-j-_-FdcGbRFTKNsWaqmlBDSk,1490
|
335
339
|
flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
|
336
|
-
flwr/supercore/license_plugin/license_plugin.py,sha256=
|
340
|
+
flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
|
337
341
|
flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
|
338
342
|
flwr/supercore/object_store/in_memory_object_store.py,sha256=oflJcOuVNgx9A-B2da4VHDb1qj_Jub9wKFOrUBgtz_U,9630
|
339
343
|
flwr/supercore/object_store/object_store.py,sha256=VlZz-yzoWZtITbnYD8vwLZbFosv7vgr1XVNzByObeY0,5853
|
@@ -343,7 +347,7 @@ flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,71
|
|
343
347
|
flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
|
344
348
|
flwr/superexec/deployment.py,sha256=cFxhFom-0zv93HLNjNcUdBy3Sf6JwshRoXPQtcZunF0,6797
|
345
349
|
flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
|
346
|
-
flwr/superexec/exec_grpc.py,sha256=
|
350
|
+
flwr/superexec/exec_grpc.py,sha256=D7xPHEXjW4SXMb9_dWNZhbFFxUeKr8zE67LITZQbHU8,4148
|
347
351
|
flwr/superexec/exec_license_interceptor.py,sha256=Wg6Wt4ZdSOFDEPAtI7TQZbkLSJc0x8KJ5Xk_5iWyc74,3160
|
348
352
|
flwr/superexec/exec_servicer.py,sha256=c0nwdFBiS6CbKrRA7ffOpsgASOLeaRV_ICwxDfxNGAg,12498
|
349
353
|
flwr/superexec/exec_user_auth_interceptor.py,sha256=AQnSb7dpVeuHR0BMyUcUJeBTXllnnrPygMVErBfTkiI,6028
|
@@ -359,12 +363,12 @@ flwr/supernode/nodestate/in_memory_nodestate.py,sha256=LF3AbaW0bcZHY5yKWwUJSU2RZ
|
|
359
363
|
flwr/supernode/nodestate/nodestate.py,sha256=kkGFxYnLIwT4-UmlPnf6HvAUpPey2urUNrweGybAIY4,6398
|
360
364
|
flwr/supernode/nodestate/nodestate_factory.py,sha256=UYTDCcwK_baHUmkzkJDxL0UEqvtTfOMlQRrROMCd0Xo,1430
|
361
365
|
flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
|
362
|
-
flwr/supernode/runtime/run_clientapp.py,sha256=
|
366
|
+
flwr/supernode/runtime/run_clientapp.py,sha256=jOACPK1YEwtuJas9cpILcxgPuM756Yzk1cCa04-v78M,8565
|
363
367
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
364
368
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
365
|
-
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=
|
366
|
-
flwr/supernode/start_client_internal.py,sha256=
|
367
|
-
flwr_nightly-1.20.0.
|
368
|
-
flwr_nightly-1.20.0.
|
369
|
-
flwr_nightly-1.20.0.
|
370
|
-
flwr_nightly-1.20.0.
|
369
|
+
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=U-uAJ7Yd_BzEqhbpCSgEG9pxX5Zf4RuPVYKimYDvMbU,7176
|
370
|
+
flwr/supernode/start_client_internal.py,sha256=_ZqSfL_j4qn6Cg-P6sv3k_n1ZG62J_teokBxnWrXrPE,18772
|
371
|
+
flwr_nightly-1.20.0.dev20250714.dist-info/METADATA,sha256=-5TYbMnUQ41aFZf_OizdSM0Rzf84wudcSfT9qkfpTEo,15910
|
372
|
+
flwr_nightly-1.20.0.dev20250714.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
373
|
+
flwr_nightly-1.20.0.dev20250714.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
|
374
|
+
flwr_nightly-1.20.0.dev20250714.dist-info/RECORD,,
|
{flwr_nightly-1.20.0.dev20250710.dist-info → flwr_nightly-1.20.0.dev20250714.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|