flwr-nightly 1.23.0.dev20250930__py3-none-any.whl → 1.23.0.dev20251002__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/app.py +13 -0
- flwr/cli/auth_plugin/__init__.py +6 -3
- flwr/cli/auth_plugin/auth_plugin.py +23 -11
- flwr/cli/auth_plugin/noop_auth_plugin.py +58 -0
- flwr/cli/auth_plugin/oidc_cli_plugin.py +12 -22
- flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +4 -4
- flwr/cli/login/login.py +29 -9
- flwr/{client/clientapp → cli/supernode}/__init__.py +11 -1
- flwr/cli/supernode/create.py +58 -0
- flwr/cli/supernode/delete.py +58 -0
- flwr/cli/supernode/ls.py +51 -0
- flwr/cli/utils.py +29 -15
- flwr/client/__init__.py +2 -1
- flwr/clientapp/__init__.py +1 -2
- flwr/{client/clientapp → clientapp}/utils.py +1 -1
- flwr/common/constant.py +10 -4
- flwr/common/record/arrayrecord.py +10 -1
- flwr/common/typing.py +5 -5
- flwr/compat/client/app.py +1 -1
- flwr/proto/control_pb2.py +48 -35
- flwr/proto/control_pb2.pyi +63 -0
- flwr/proto/control_pb2_grpc.py +102 -0
- flwr/proto/control_pb2_grpc.pyi +39 -0
- flwr/proto/node_pb2.py +3 -1
- flwr/proto/node_pb2.pyi +33 -0
- flwr/server/app.py +17 -10
- flwr/server/superlink/fleet/vce/backend/backend.py +1 -1
- flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -1
- flwr/server/superlink/fleet/vce/vce_api.py +2 -2
- flwr/simulation/ray_transport/ray_actor.py +1 -1
- flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
- flwr/simulation/run_simulation.py +1 -1
- flwr/superlink/auth_plugin/__init__.py +5 -2
- flwr/superlink/auth_plugin/auth_plugin.py +16 -12
- flwr/superlink/auth_plugin/noop_auth_plugin.py +87 -0
- flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +16 -16
- flwr/superlink/servicer/control/control_event_log_interceptor.py +1 -1
- flwr/superlink/servicer/control/control_grpc.py +6 -6
- flwr/superlink/servicer/control/control_servicer.py +45 -17
- flwr/supernode/runtime/run_clientapp.py +2 -2
- {flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/METADATA +1 -1
- {flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/RECORD +45 -40
- /flwr/{client → clientapp}/client_app.py +0 -0
- {flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/entry_points.txt +0 -0
@@ -28,8 +28,8 @@ from flwr.common import Context, RecordDict, now
|
|
28
28
|
from flwr.common.constant import (
|
29
29
|
FAB_MAX_SIZE,
|
30
30
|
LOG_STREAM_INTERVAL,
|
31
|
+
NO_ACCOUNT_AUTH_MESSAGE,
|
31
32
|
NO_ARTIFACT_PROVIDER_MESSAGE,
|
32
|
-
NO_USER_AUTH_MESSAGE,
|
33
33
|
PULL_UNFINISHED_RUN_MESSAGE,
|
34
34
|
RUN_ID_NOT_FOUND_MESSAGE,
|
35
35
|
Status,
|
@@ -44,10 +44,16 @@ from flwr.common.serde import (
|
|
44
44
|
from flwr.common.typing import Fab, Run, RunStatus
|
45
45
|
from flwr.proto import control_pb2_grpc # pylint: disable=E0611
|
46
46
|
from flwr.proto.control_pb2 import ( # pylint: disable=E0611
|
47
|
+
CreateNodeCliRequest,
|
48
|
+
CreateNodeCliResponse,
|
49
|
+
DeleteNodeCliRequest,
|
50
|
+
DeleteNodeCliResponse,
|
47
51
|
GetAuthTokensRequest,
|
48
52
|
GetAuthTokensResponse,
|
49
53
|
GetLoginDetailsRequest,
|
50
54
|
GetLoginDetailsResponse,
|
55
|
+
ListNodesCliRequest,
|
56
|
+
ListNodesCliResponse,
|
51
57
|
ListRunsRequest,
|
52
58
|
ListRunsResponse,
|
53
59
|
PullArtifactsRequest,
|
@@ -63,9 +69,9 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
|
|
63
69
|
from flwr.supercore.ffs import FfsFactory
|
64
70
|
from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
|
65
71
|
from flwr.superlink.artifact_provider import ArtifactProvider
|
66
|
-
from flwr.superlink.auth_plugin import
|
72
|
+
from flwr.superlink.auth_plugin import ControlAuthnPlugin
|
67
73
|
|
68
|
-
from .
|
74
|
+
from .control_account_auth_interceptor import shared_account_info
|
69
75
|
|
70
76
|
|
71
77
|
class ControlServicer(control_pb2_grpc.ControlServicer):
|
@@ -77,7 +83,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
77
83
|
ffs_factory: FfsFactory,
|
78
84
|
objectstore_factory: ObjectStoreFactory,
|
79
85
|
is_simulation: bool,
|
80
|
-
auth_plugin: Optional[
|
86
|
+
auth_plugin: Optional[ControlAuthnPlugin] = None,
|
81
87
|
artifact_provider: Optional[ArtifactProvider] = None,
|
82
88
|
) -> None:
|
83
89
|
self.linkstate_factory = linkstate_factory
|
@@ -177,7 +183,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
177
183
|
if not run:
|
178
184
|
context.abort(grpc.StatusCode.NOT_FOUND, RUN_ID_NOT_FOUND_MESSAGE)
|
179
185
|
|
180
|
-
# If
|
186
|
+
# If account auth is enabled, check if `flwr_aid` matches the run's `flwr_aid`
|
181
187
|
if self.auth_plugin:
|
182
188
|
flwr_aid = shared_account_info.get().flwr_aid
|
183
189
|
_check_flwr_aid_in_run(
|
@@ -219,17 +225,17 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
219
225
|
# Build a set of run IDs for `flwr ls --runs`
|
220
226
|
if not request.HasField("run_id"):
|
221
227
|
if self.auth_plugin:
|
222
|
-
# If no `run_id` is specified and
|
223
|
-
# return run IDs for the authenticated
|
228
|
+
# If no `run_id` is specified and account auth is enabled,
|
229
|
+
# return run IDs for the authenticated account
|
224
230
|
flwr_aid = shared_account_info.get().flwr_aid
|
225
231
|
if flwr_aid is None:
|
226
232
|
context.abort(
|
227
233
|
grpc.StatusCode.PERMISSION_DENIED,
|
228
|
-
"️⛔️
|
234
|
+
"️⛔️ Account authentication is enabled, but `flwr_aid` is None",
|
229
235
|
)
|
230
236
|
run_ids = state.get_run_ids(flwr_aid=flwr_aid)
|
231
237
|
else:
|
232
|
-
# If no `run_id` is specified and no
|
238
|
+
# If no `run_id` is specified and no account auth is enabled,
|
233
239
|
# return all run IDs
|
234
240
|
run_ids = state.get_run_ids(None)
|
235
241
|
# Build a set of run IDs for `flwr ls --run-id <run_id>`
|
@@ -242,7 +248,8 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
242
248
|
if not run:
|
243
249
|
context.abort(grpc.StatusCode.NOT_FOUND, RUN_ID_NOT_FOUND_MESSAGE)
|
244
250
|
|
245
|
-
# If
|
251
|
+
# If account auth is enabled,
|
252
|
+
# check if `flwr_aid` matches the run's `flwr_aid`
|
246
253
|
if self.auth_plugin:
|
247
254
|
flwr_aid = shared_account_info.get().flwr_aid
|
248
255
|
_check_flwr_aid_in_run(
|
@@ -270,7 +277,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
270
277
|
if not run:
|
271
278
|
context.abort(grpc.StatusCode.NOT_FOUND, RUN_ID_NOT_FOUND_MESSAGE)
|
272
279
|
|
273
|
-
# If
|
280
|
+
# If account auth is enabled, check if `flwr_aid` matches the run's `flwr_aid`
|
274
281
|
if self.auth_plugin:
|
275
282
|
flwr_aid = shared_account_info.get().flwr_aid
|
276
283
|
_check_flwr_aid_in_run(
|
@@ -308,7 +315,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
308
315
|
if self.auth_plugin is None:
|
309
316
|
context.abort(
|
310
317
|
grpc.StatusCode.UNIMPLEMENTED,
|
311
|
-
|
318
|
+
NO_ACCOUNT_AUTH_MESSAGE,
|
312
319
|
)
|
313
320
|
raise grpc.RpcError() # This line is unreachable
|
314
321
|
|
@@ -335,7 +342,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
335
342
|
if self.auth_plugin is None:
|
336
343
|
context.abort(
|
337
344
|
grpc.StatusCode.UNIMPLEMENTED,
|
338
|
-
|
345
|
+
NO_ACCOUNT_AUTH_MESSAGE,
|
339
346
|
)
|
340
347
|
raise grpc.RpcError() # This line is unreachable
|
341
348
|
|
@@ -383,7 +390,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
383
390
|
grpc.StatusCode.FAILED_PRECONDITION, PULL_UNFINISHED_RUN_MESSAGE
|
384
391
|
)
|
385
392
|
|
386
|
-
# Check if `flwr_aid` matches the run's `flwr_aid` when
|
393
|
+
# Check if `flwr_aid` matches the run's `flwr_aid` when account auth is enabled
|
387
394
|
if self.auth_plugin:
|
388
395
|
flwr_aid = shared_account_info.get().flwr_aid
|
389
396
|
_check_flwr_aid_in_run(flwr_aid=flwr_aid, run=run, context=context)
|
@@ -392,6 +399,27 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
392
399
|
download_url = self.artifact_provider.get_url(run_id)
|
393
400
|
return PullArtifactsResponse(url=download_url)
|
394
401
|
|
402
|
+
def CreateNodeCli(
|
403
|
+
self, request: CreateNodeCliRequest, context: grpc.ServicerContext
|
404
|
+
) -> CreateNodeCliResponse:
|
405
|
+
"""Add a SuperNode."""
|
406
|
+
log(INFO, "ControlServicer.CreateNodeCli")
|
407
|
+
return CreateNodeCliResponse()
|
408
|
+
|
409
|
+
def DeleteNodeCli(
|
410
|
+
self, request: DeleteNodeCliRequest, context: grpc.ServicerContext
|
411
|
+
) -> DeleteNodeCliResponse:
|
412
|
+
"""Remove a SuperNode."""
|
413
|
+
log(INFO, "ControlServicer.RemoveNode")
|
414
|
+
return DeleteNodeCliResponse()
|
415
|
+
|
416
|
+
def ListNodesCli(
|
417
|
+
self, request: ListNodesCliRequest, context: grpc.ServicerContext
|
418
|
+
) -> ListNodesCliResponse:
|
419
|
+
"""List all SuperNodes."""
|
420
|
+
log(INFO, "ControlServicer.ListNodesCli")
|
421
|
+
return ListNodesCliResponse()
|
422
|
+
|
395
423
|
|
396
424
|
def _create_list_runs_response(
|
397
425
|
run_ids: set[int], state: LinkState, store: ObjectStore
|
@@ -418,7 +446,7 @@ def _check_flwr_aid_in_run(
|
|
418
446
|
if flwr_aid is None:
|
419
447
|
context.abort(
|
420
448
|
grpc.StatusCode.PERMISSION_DENIED,
|
421
|
-
"️⛔️
|
449
|
+
"️⛔️ Account authentication is enabled, but `flwr_aid` is None",
|
422
450
|
)
|
423
451
|
|
424
452
|
# `run.flwr_aid` must not be an empty string. Abort if it is empty.
|
@@ -426,7 +454,7 @@ def _check_flwr_aid_in_run(
|
|
426
454
|
if not run_flwr_aid:
|
427
455
|
context.abort(
|
428
456
|
grpc.StatusCode.PERMISSION_DENIED,
|
429
|
-
"⛔️
|
457
|
+
"⛔️ Account authentication is enabled, but the run is not associated "
|
430
458
|
"with a `flwr_aid`.",
|
431
459
|
)
|
432
460
|
|
@@ -434,5 +462,5 @@ def _check_flwr_aid_in_run(
|
|
434
462
|
if run_flwr_aid != flwr_aid:
|
435
463
|
context.abort(
|
436
464
|
grpc.StatusCode.PERMISSION_DENIED,
|
437
|
-
"⛔️ Run ID does not belong to the
|
465
|
+
"⛔️ Run ID does not belong to the account",
|
438
466
|
)
|
@@ -23,8 +23,8 @@ import grpc
|
|
23
23
|
|
24
24
|
from flwr.app.error import Error
|
25
25
|
from flwr.cli.install import install_from_fab
|
26
|
-
from flwr.
|
27
|
-
from flwr.
|
26
|
+
from flwr.clientapp.client_app import ClientApp, LoadClientAppError
|
27
|
+
from flwr.clientapp.utils import get_load_client_app_fn
|
28
28
|
from flwr.common import Context, Message
|
29
29
|
from flwr.common.config import get_flwr_dir
|
30
30
|
from flwr.common.constant import ErrorCode
|
{flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.23.0.
|
3
|
+
Version: 1.23.0.dev20251002
|
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.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/RECORD
RENAMED
@@ -4,19 +4,20 @@ flwr/app/error.py,sha256=0PwA-E_CAs5P_nWAA0kksVO1A44t4CNLEf7u-Su-uJ0,2342
|
|
4
4
|
flwr/app/exception.py,sha256=WX45Yviu_CmYrYd8JHNjRkSsb-g4Br7XvVLKuVxwSdI,1298
|
5
5
|
flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
|
6
6
|
flwr/cli/__init__.py,sha256=EfMGmHoobET6P2blBt_eOByXL8299MgFfB7XNdaPQ6I,720
|
7
|
-
flwr/cli/app.py,sha256=
|
8
|
-
flwr/cli/auth_plugin/__init__.py,sha256=
|
9
|
-
flwr/cli/auth_plugin/auth_plugin.py,sha256=
|
10
|
-
flwr/cli/auth_plugin/
|
7
|
+
flwr/cli/app.py,sha256=tNSJcp8D3iVbWgyPF9rWO9lcYgsZMnXYVJunahRiQe8,2422
|
8
|
+
flwr/cli/auth_plugin/__init__.py,sha256=6psuDYfU90YjeLjvRbBsf-t_fp99_znDzxY8ITc5TIE,1223
|
9
|
+
flwr/cli/auth_plugin/auth_plugin.py,sha256=LK-DYGk8J85Mjsbc5BX9ueDVOOPcFSo9cKWJX25X-QI,3050
|
10
|
+
flwr/cli/auth_plugin/noop_auth_plugin.py,sha256=KRyxoYtrzOWAIlSuXznli9gqL-rmHSG3zESmYSCQ_rg,2093
|
11
|
+
flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=HJv_co4kPz1GrYQg6D9bs0OQv0Q888qbz77hy8tX1-w,5143
|
11
12
|
flwr/cli/build.py,sha256=hE54Q_eMdWLpVKSVC2aQaUxVaiUlWnAosGNvIPSEg6Y,7284
|
12
|
-
flwr/cli/
|
13
|
+
flwr/cli/cli_account_auth_interceptor.py,sha256=o_D6-al3TgLRUAX2OZhzLlYF_LXDsK5dLkjbi082JNU,3131
|
13
14
|
flwr/cli/config_utils.py,sha256=o75PJzgCTl9FdFo_I9OjCB02-ykK0VWZdhIAeR0A8QA,9130
|
14
15
|
flwr/cli/constant.py,sha256=LtxufmhkEqNWQ9doWbbbkUKa12vN_RK_Of5u0So-GHA,1729
|
15
16
|
flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
|
16
17
|
flwr/cli/install.py,sha256=Jr883qR7qssVpUr3hEOEcLK-dfW67Rsve3lZchjA9RU,8180
|
17
18
|
flwr/cli/log.py,sha256=n_fcoECKIkY3MTOfXhB8AjOG1LSQW_GSPY-2qc7rW9Q,6553
|
18
19
|
flwr/cli/login/__init__.py,sha256=B1SXKU3HCQhWfFDMJhlC7FOl8UsvH4mxysxeBnrfyUE,800
|
19
|
-
flwr/cli/login/login.py,sha256=
|
20
|
+
flwr/cli/login/login.py,sha256=5Fv0VwpyHNUaqNZzcGMkoafpUpzCbXRqL_NUrFbIbzg,4748
|
20
21
|
flwr/cli/ls.py,sha256=3YK7cpoImJ7PbjlP_JgYRQWz1GymX2q7Reu-mKJEpao,10957
|
21
22
|
flwr/cli/new/__init__.py,sha256=QA1E2QtzPvFCjLTUHnFnJbufuFiGyT_0Y53Wpbvg1F0,790
|
22
23
|
flwr/cli/new/new.py,sha256=nIuUrQSGDjI4kqnymlq-rOT0RU3AHwZrat3abqHhCwM,10598
|
@@ -85,12 +86,13 @@ flwr/cli/pull.py,sha256=dHiMe6x8w8yRoFNKpjA-eiPD6eFiHz4Vah5HZrqNpuo,3364
|
|
85
86
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
86
87
|
flwr/cli/run/run.py,sha256=ECa0kup9dn15O70H74QdgUsEaeErbzDqVX_U0zZO5IM,8173
|
87
88
|
flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
|
88
|
-
flwr/cli/
|
89
|
-
flwr/
|
89
|
+
flwr/cli/supernode/__init__.py,sha256=DVrTcyCg9NFll6glPLAAA6WPi7boxu6pFY_PRqIyHMk,893
|
90
|
+
flwr/cli/supernode/create.py,sha256=MloB7Rr-CE_37jH5lFoM8OsaSPUzWt0TSSB_GMwND5E,1959
|
91
|
+
flwr/cli/supernode/delete.py,sha256=_oCfBnoeUFPLEq_1EAqQp_CHEdzIEP2N_vHZsFTgWn0,1958
|
92
|
+
flwr/cli/supernode/ls.py,sha256=j850KQEMpS0rdpL8m9icx7DlRMDRtns6I_iTwUudC_0,1801
|
93
|
+
flwr/cli/utils.py,sha256=stngRVUJluuSZssHI4XC-jy_z_pVXKVUMmc6JDruhEk,14387
|
94
|
+
flwr/client/__init__.py,sha256=Q0MIF442vLIGSkcwHKq_sIfECQynLARJrumAscq2Q6E,1241
|
90
95
|
flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
|
91
|
-
flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
92
|
-
flwr/client/clientapp/__init__.py,sha256=Zw9qP5nHFnJ9K1dcR4cdY0fRqN-FaMYFSHJFXoFpUvo,711
|
93
|
-
flwr/client/clientapp/utils.py,sha256=LsiW1OL2VPcjom3xN29pgBQC0UrttQ-xWL_GF1fkKDo,4344
|
94
96
|
flwr/client/dpfedavg_numpy_client.py,sha256=3hul067cT2E9jBhzp7bFnFAZ_D2nWcIUEdHYE05FpzU,7404
|
95
97
|
flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
|
96
98
|
flwr/client/grpc_adapter_client/connection.py,sha256=JGv02EjSOAG1E5BRUD4lwXc1LLiYJ0OhInvp31qx1cU,4404
|
@@ -113,16 +115,18 @@ flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMy
|
|
113
115
|
flwr/client/rest_client/connection.py,sha256=fyiS1aXTv71jWczx7mSco94LYJTBXgTF-p2PnAk3CL8,15784
|
114
116
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
115
117
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
116
|
-
flwr/clientapp/__init__.py,sha256=
|
118
|
+
flwr/clientapp/__init__.py,sha256=dsXH29kvCk1meJj9UYMCIak8zehuuhVp0uDJ2COU_1c,829
|
119
|
+
flwr/clientapp/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
117
120
|
flwr/clientapp/mod/__init__.py,sha256=w18mDPUmjlm5P_er2GJ7l6Zbh8qyiHfMKoVqXxaTxdE,1024
|
118
121
|
flwr/clientapp/mod/centraldp_mods.py,sha256=bL2NMxbin9nj2OYSHbuOvIPk0rKH6xyAxG-pbtP9ISY,8954
|
119
122
|
flwr/clientapp/mod/localdp_mod.py,sha256=L3kQK3kjc-vwlhJcBwFIK6EiwBYlpHQkv4jiR7K9abQ,5642
|
120
123
|
flwr/clientapp/typing.py,sha256=x1GvXWy112RqZh27liJqz-yZ7SSCOwiOSmAQsUxk9MY,853
|
124
|
+
flwr/clientapp/utils.py,sha256=K_cqX4PvrifMHi_wKpwnwXQqmjKX_FEfv6Ji85B9ce0,4347
|
121
125
|
flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
122
126
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
123
127
|
flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
|
124
128
|
flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
|
125
|
-
flwr/common/constant.py,sha256=
|
129
|
+
flwr/common/constant.py,sha256=JUKiqlY-yWgsd9PW-ATKW6F0iwMDALxWQOKbZw0vXF8,9177
|
126
130
|
flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
|
127
131
|
flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
|
128
132
|
flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHERM-EoE,6148
|
@@ -148,7 +152,7 @@ flwr/common/pyproject.py,sha256=2SU6yJW7059SbMXgzjOdK1GZRWO6AixDH7BmdxbMvHI,1386
|
|
148
152
|
flwr/common/record/__init__.py,sha256=cNGccdDoxttqgnUgyKRIqLWULjW-NaSmOufVxtXq-sw,1197
|
149
153
|
flwr/common/record/array.py,sha256=6ybCfUZ13zI_CZKETUAVhIwlmbEGj4k6JazvVX5rOPw,15038
|
150
154
|
flwr/common/record/arraychunk.py,sha256=gU5h6uP7H_06Z14wNixtwH2FvepQkl9FpALXg9qcbhM,1936
|
151
|
-
flwr/common/record/arrayrecord.py,sha256=
|
155
|
+
flwr/common/record/arrayrecord.py,sha256=HpNM9NmOoGhjuo5CfxrrjL3uJevpXZLkyq_wPhJW1No,18278
|
152
156
|
flwr/common/record/configrecord.py,sha256=G7U0q39kB0Kyi0zMxFmPxcVemL9NgwVS1qjvI4BRQuU,9763
|
153
157
|
flwr/common/record/conversion_utils.py,sha256=wbNCzy7oAqaA3-arhls_EqRZYXRC4YrWIoE-Gy82fJ0,1191
|
154
158
|
flwr/common/record/metricrecord.py,sha256=KOyJjJbvFV6IwBPbgm92FZ_0_hXpMHuwfCi1rh5Zddk,8954
|
@@ -167,11 +171,11 @@ flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wO
|
|
167
171
|
flwr/common/serde.py,sha256=dx66gumR1BpwK45qDwvDLd_05VoKfzkUzWZ7zuZi1-0,21960
|
168
172
|
flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
|
169
173
|
flwr/common/telemetry.py,sha256=xfx3KLFQKy0Qx8P7MAsOQxr5J3sEAQF5Kr5J-4jPz-o,8859
|
170
|
-
flwr/common/typing.py,sha256=
|
174
|
+
flwr/common/typing.py,sha256=o1xw8v2bjG9PwdGjerKsnvepeQQNgWDGHN9clNpAD0g,6951
|
171
175
|
flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
|
172
176
|
flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
|
173
177
|
flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
|
174
|
-
flwr/compat/client/app.py,sha256=
|
178
|
+
flwr/compat/client/app.py,sha256=d-BlxXzkabQq8f0w82k_pQf1hSuze7rIWbZFfjm6sUI,27129
|
175
179
|
flwr/compat/client/grpc_client/__init__.py,sha256=MDOckOODn-FJnkkFEfb2JO-2G97wrBr_TTqht-LhOcY,735
|
176
180
|
flwr/compat/client/grpc_client/connection.py,sha256=xAyvcTVr7bkwUfR5P3D_LKlZYiyySpt5sEwORA1h8Gc,9189
|
177
181
|
flwr/compat/common/__init__.py,sha256=OMnKw4ad0qYMSIA9LZRa2gOkhSOXwAZCpAHnBQE_hFc,746
|
@@ -187,10 +191,10 @@ flwr/proto/clientappio_pb2.py,sha256=vJjzwWydhg7LruK8cvRAeVQeHPsJztgdIW9nyiPBZF0
|
|
187
191
|
flwr/proto/clientappio_pb2.pyi,sha256=XbFvpZvvrS7QcH5AFXfpRGl4hQvhd3QdKO6x0oTlCCU,165
|
188
192
|
flwr/proto/clientappio_pb2_grpc.py,sha256=iobNROP0qvn5zddx7k-uIi_dJWP3T_BRp_kbKq086i8,17550
|
189
193
|
flwr/proto/clientappio_pb2_grpc.pyi,sha256=Ytf1O1ktKB0Vsuc3AWLIErGjIJYokzKYzi2uA7mdMeg,4785
|
190
|
-
flwr/proto/control_pb2.py,sha256
|
191
|
-
flwr/proto/control_pb2.pyi,sha256=
|
192
|
-
flwr/proto/control_pb2_grpc.py,sha256=
|
193
|
-
flwr/proto/control_pb2_grpc.pyi,sha256=
|
194
|
+
flwr/proto/control_pb2.py,sha256=-0Ltxf1gj_EhmVboj7o-FQWO6RA-mRV_ZRtKuxHoZQA,7741
|
195
|
+
flwr/proto/control_pb2.pyi,sha256=6npJDwh0VxNrsJPSTVfrko0TexQeLvGUWW2B77jrmjI,13375
|
196
|
+
flwr/proto/control_pb2_grpc.py,sha256=Of6tnetwnzvJfJWEXhuTFszz4T_IJbdLJD9uRXBdG04,17182
|
197
|
+
flwr/proto/control_pb2_grpc.pyi,sha256=9z_MRrexz0o3_owST8SvhCjQIIAn-SwMWKIihPHzqdM,4801
|
194
198
|
flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
|
195
199
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
196
200
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
@@ -219,8 +223,8 @@ flwr/proto/message_pb2.py,sha256=giymevXYEUdpIO-3A0XKsmRabXW1xSz0sIo5oOlbQ8Y,519
|
|
219
223
|
flwr/proto/message_pb2.pyi,sha256=EzXZHy2mtabofrd_ZgKSI6M4QH-soIaRZIZBPwBGPv0,11260
|
220
224
|
flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
221
225
|
flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
222
|
-
flwr/proto/node_pb2.py,sha256=
|
223
|
-
flwr/proto/node_pb2.pyi,sha256=
|
226
|
+
flwr/proto/node_pb2.py,sha256=gvFzmkEBB4Prp9y27RZKDoy1O5r56GqN-wpCdjoW5BA,1508
|
227
|
+
flwr/proto/node_pb2.pyi,sha256=THEURTmlD-23XOULcu2AH6Mvy7pl2N9eWUSntCutO8o,2060
|
224
228
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
225
229
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
226
230
|
flwr/proto/recorddict_pb2.py,sha256=eVkcnxMTFa3rvknRNiFuJ8z8xxPqgw7bV04aFiTe1j4,5290
|
@@ -245,7 +249,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
245
249
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
246
250
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
247
251
|
flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
|
248
|
-
flwr/server/app.py,sha256=
|
252
|
+
flwr/server/app.py,sha256=lun0ahGP1LhA2XY7g30YIbumeFHiiwEPJoQT1cRqLHU,30278
|
249
253
|
flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
|
250
254
|
flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
|
251
255
|
flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
|
@@ -309,9 +313,9 @@ flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316
|
|
309
313
|
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=mxWKwGpgHPqd7cGFqd2ASnR-KZduIzLfT-d2yiNCqQ0,9257
|
310
314
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
|
311
315
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
|
312
|
-
flwr/server/superlink/fleet/vce/backend/backend.py,sha256
|
313
|
-
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=
|
314
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
316
|
+
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=cSrHZ5SjCCvy4vI0pgsyjtx3cDMuMQve8KcKkK-dWWo,2196
|
317
|
+
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=cBZYTmfiAsb1HmVUmOQXYLU-UJmJTFWkj1wW4RYRDuc,7218
|
318
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=Xd3k77J37ReyaumImUJ3szXUoMJNvuZ4qQKGraLeCXY,12942
|
315
319
|
flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
|
316
320
|
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=eNjjQp6dJ_Qz54fYeOZ9XFebbB_k9syhBB6N2rXRTsA,27891
|
317
321
|
flwr/server/superlink/linkstate/linkstate.py,sha256=TCLM9wZa2XGHs55B3LP9j5-WtUPhBjOUdMKQJELG2oY,13287
|
@@ -362,10 +366,10 @@ flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1
|
|
362
366
|
flwr/simulation/app.py,sha256=b_bDyZFwBf2zpKs37Vmd5cFJSzDRE0fL-8uqA0UkAv4,10393
|
363
367
|
flwr/simulation/legacy_app.py,sha256=nMISQqW0otJL1-2Kfd94O6BLlGS2IEmEPKTM2WGKrIs,15861
|
364
368
|
flwr/simulation/ray_transport/__init__.py,sha256=ogd-0AMv2U-wBZ1r3sHWaDIOIrVqr88Xi6C8o4Dviy0,734
|
365
|
-
flwr/simulation/ray_transport/ray_actor.py,sha256=
|
366
|
-
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=
|
369
|
+
flwr/simulation/ray_transport/ray_actor.py,sha256=z8XB_Pq9k5FrEUaBFpU_Oi0ATpSr5YCGBvnAGjb91nM,19150
|
370
|
+
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=eiQ75U-w82HDS728drEejo4ueJL-ZVLs8bZxuLcWKxU,7509
|
367
371
|
flwr/simulation/ray_transport/utils.py,sha256=KrexpWYCF-dAF3UHc9yDbPQWO-ahMT-BbD8nURLgiHk,2393
|
368
|
-
flwr/simulation/run_simulation.py,sha256=
|
372
|
+
flwr/simulation/run_simulation.py,sha256=FjWnBtJtVlrFMsLpvyBdSw9wUikHcpgIBGsU5m-WKUo,20669
|
369
373
|
flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
|
370
374
|
flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
|
371
375
|
flwr/supercore/app_utils.py,sha256=K76Zt6R670b1hUmxOsNc1WUCVYvF7lejXPcCO9K0Q0g,1753
|
@@ -400,15 +404,16 @@ flwr/supercore/utils.py,sha256=ebuHMbeA8eXisX0oMPqBK3hk7uVnIE_yiqWVz8YbkpQ,1324
|
|
400
404
|
flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
401
405
|
flwr/superlink/artifact_provider/__init__.py,sha256=pgZEcVPKRE874LSu3cgy0HbwSJBIpVy_HxQOmne4PAs,810
|
402
406
|
flwr/superlink/artifact_provider/artifact_provider.py,sha256=Gnlg2M2SOqCruji2B0U3ov68NJWKin9scmnWJTiSnNA,1267
|
403
|
-
flwr/superlink/auth_plugin/__init__.py,sha256=
|
404
|
-
flwr/superlink/auth_plugin/auth_plugin.py,sha256=
|
407
|
+
flwr/superlink/auth_plugin/__init__.py,sha256=ApYBHnDmtv5gVrnxdFq97zC58O1icqHogK2Dz6o8DVI,1000
|
408
|
+
flwr/superlink/auth_plugin/auth_plugin.py,sha256=mKaR2HanhKHmVrcvGqTUv47ut458QgqVU6enU4myB7Y,3038
|
409
|
+
flwr/superlink/auth_plugin/noop_auth_plugin.py,sha256=esHw8pO0ugfDS8zpfKhnpZdqj4pk3Vnu8p7J-wzNbpY,3040
|
405
410
|
flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
|
406
411
|
flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
|
407
|
-
flwr/superlink/servicer/control/
|
408
|
-
flwr/superlink/servicer/control/
|
412
|
+
flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=y0G0O3O0Da3FzZduBC1eK72J4lZocNPeBVMY__r1dL8,6247
|
413
|
+
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=5uBl6VcJlUOgCF0d4kmsmJc1Rs1qxyouaZv0-uH2axs,5969
|
414
|
+
flwr/superlink/servicer/control/control_grpc.py,sha256=7kEAoK7vh3-ZyutgyZCV8ssj_i-0D6jduzLkAwrU7L8,4264
|
409
415
|
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
|
410
|
-
flwr/superlink/servicer/control/control_servicer.py,sha256=
|
411
|
-
flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=OpEP_vvY6H-anJHIOG6CRTNfl7FE_G-x2LchATDpilI,6235
|
416
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=N5C5vQ2NhghP4OoN0Naa_DN8x-jgjI7EdLhYIvKAyds,17119
|
412
417
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
413
418
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
414
419
|
flwr/supernode/cli/flower_supernode.py,sha256=7aBm0z03OU-npVd1onLCvUotyhSvlZLxAnFkGVMhZcw,8670
|
@@ -418,12 +423,12 @@ flwr/supernode/nodestate/in_memory_nodestate.py,sha256=rr_tg7YXhf_seYFipSB59TAfh
|
|
418
423
|
flwr/supernode/nodestate/nodestate.py,sha256=jCOewZyctecMxsM0-_-pQwef9P3O5QjnKCgCGyx2PK4,5047
|
419
424
|
flwr/supernode/nodestate/nodestate_factory.py,sha256=UYTDCcwK_baHUmkzkJDxL0UEqvtTfOMlQRrROMCd0Xo,1430
|
420
425
|
flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
|
421
|
-
flwr/supernode/runtime/run_clientapp.py,sha256=
|
426
|
+
flwr/supernode/runtime/run_clientapp.py,sha256=BuaAKTzRuFmNX-IJky3kJzoWMmZkz9joHodbz_wmgpA,8771
|
422
427
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
423
428
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
424
429
|
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
|
425
430
|
flwr/supernode/start_client_internal.py,sha256=Y9S1-QlO2WP6eo4JvWzIpfaCoh2aoE7bjEYyxNNnlyg,20777
|
426
|
-
flwr_nightly-1.23.0.
|
427
|
-
flwr_nightly-1.23.0.
|
428
|
-
flwr_nightly-1.23.0.
|
429
|
-
flwr_nightly-1.23.0.
|
431
|
+
flwr_nightly-1.23.0.dev20251002.dist-info/METADATA,sha256=0LElI814cf0s8LtkzqM7gwLl1f1xDlNVusF0emHh89c,14559
|
432
|
+
flwr_nightly-1.23.0.dev20251002.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
433
|
+
flwr_nightly-1.23.0.dev20251002.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
434
|
+
flwr_nightly-1.23.0.dev20251002.dist-info/RECORD,,
|
File without changes
|
{flwr_nightly-1.23.0.dev20250930.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|