flwr-nightly 1.23.0.dev20251001__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.
Files changed (44) hide show
  1. flwr/cli/app.py +13 -0
  2. flwr/cli/auth_plugin/__init__.py +6 -3
  3. flwr/cli/auth_plugin/auth_plugin.py +23 -11
  4. flwr/cli/auth_plugin/noop_auth_plugin.py +58 -0
  5. flwr/cli/auth_plugin/oidc_cli_plugin.py +12 -22
  6. flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +4 -4
  7. flwr/cli/login/login.py +29 -9
  8. flwr/{client/clientapp → cli/supernode}/__init__.py +11 -1
  9. flwr/cli/supernode/create.py +58 -0
  10. flwr/cli/supernode/delete.py +58 -0
  11. flwr/cli/supernode/ls.py +51 -0
  12. flwr/cli/utils.py +29 -15
  13. flwr/client/__init__.py +2 -1
  14. flwr/clientapp/__init__.py +1 -2
  15. flwr/{client/clientapp → clientapp}/utils.py +1 -1
  16. flwr/common/constant.py +10 -4
  17. flwr/common/typing.py +5 -5
  18. flwr/compat/client/app.py +1 -1
  19. flwr/proto/control_pb2.py +48 -35
  20. flwr/proto/control_pb2.pyi +63 -0
  21. flwr/proto/control_pb2_grpc.py +102 -0
  22. flwr/proto/control_pb2_grpc.pyi +39 -0
  23. flwr/proto/node_pb2.py +3 -1
  24. flwr/proto/node_pb2.pyi +33 -0
  25. flwr/server/app.py +17 -10
  26. flwr/server/superlink/fleet/vce/backend/backend.py +1 -1
  27. flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -1
  28. flwr/server/superlink/fleet/vce/vce_api.py +2 -2
  29. flwr/simulation/ray_transport/ray_actor.py +1 -1
  30. flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
  31. flwr/simulation/run_simulation.py +1 -1
  32. flwr/superlink/auth_plugin/__init__.py +5 -2
  33. flwr/superlink/auth_plugin/auth_plugin.py +16 -12
  34. flwr/superlink/auth_plugin/noop_auth_plugin.py +87 -0
  35. flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +16 -16
  36. flwr/superlink/servicer/control/control_event_log_interceptor.py +1 -1
  37. flwr/superlink/servicer/control/control_grpc.py +6 -6
  38. flwr/superlink/servicer/control/control_servicer.py +45 -17
  39. flwr/supernode/runtime/run_clientapp.py +2 -2
  40. {flwr_nightly-1.23.0.dev20251001.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/METADATA +1 -1
  41. {flwr_nightly-1.23.0.dev20251001.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/RECORD +44 -39
  42. /flwr/{client → clientapp}/client_app.py +0 -0
  43. {flwr_nightly-1.23.0.dev20251001.dist-info → flwr_nightly-1.23.0.dev20251002.dist-info}/WHEEL +0 -0
  44. {flwr_nightly-1.23.0.dev20251001.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 ControlAuthPlugin
72
+ from flwr.superlink.auth_plugin import ControlAuthnPlugin
67
73
 
68
- from .control_user_auth_interceptor import shared_account_info
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[ControlAuthPlugin] = None,
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 user auth is enabled, check if `flwr_aid` matches the run's `flwr_aid`
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 user auth is enabled,
223
- # return run IDs for the authenticated user
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
- "️⛔️ User authentication is enabled, but `flwr_aid` is None",
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 user auth is enabled,
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 user auth is enabled, check if `flwr_aid` matches the run's `flwr_aid`
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 user auth is enabled, check if `flwr_aid` matches the run's `flwr_aid`
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
- NO_USER_AUTH_MESSAGE,
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
- NO_USER_AUTH_MESSAGE,
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 user auth is enabled
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
- "️⛔️ User authentication is enabled, but `flwr_aid` is None",
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
- "⛔️ User authentication is enabled, but the run is not associated "
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 user",
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.client.client_app import ClientApp, LoadClientAppError
27
- from flwr.client.clientapp.utils import get_load_client_app_fn
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.23.0.dev20251001
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
@@ -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=qYMZtPXzDXZpigmerRz4WF3lA3D0Y1lVufzgWB8Nd9A,1899
8
- flwr/cli/auth_plugin/__init__.py,sha256=mX36SjhM40ha17pYgItlH28v9OH2yMFQQgTn_fjbWCQ,1083
9
- flwr/cli/auth_plugin/auth_plugin.py,sha256=Gx8v-a8U_ziEUIGRpMSR9fuQQUezgtx0J2gC6_c-0qY,2783
10
- flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=JhcJC8Mz87j8Vb-2qmdkmB5Gu6FpAwtniuPw3jCvUrI,5392
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/cli_user_auth_interceptor.py,sha256=Swxue0nDLge6deB0dH08UFIVYkXo5RRadgyOYR87pIU,3119
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=RM1Jiv_VFm3oz4rTHSr3D87X90lW3WzErjBBU7WviWY,4309
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/utils.py,sha256=cFACbMrdtendtrabqCDCNwTJwe-K_K0iHQZhzywtZuY,13762
89
- flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
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=uoTjvIynfGvMhsmc7iYK-5qJ0AdKKjCbx7WTKc0KeSk,828
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=y3yKgr1UxAWveUkw29z8KM2hKsZJqhHUqPPhKQeef80,9045
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
@@ -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=B8z50fv8K0H4F5m8XRPBoWy-qqbNMyQXBAaaSuzfbnY,6936
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=EFJxHrnFC_MrTQM2BKIdVJzW8WMYxBBMUY-XhNwvwqM,27126
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=Sz7PTdb7YGBs2N-FX6GiOVueY9PN0cF85XbwBkK9_BE,6183
191
- flwr/proto/control_pb2.pyi,sha256=2OLPt6ztVcLzzISqfRqW4yrA-nawIPLwVDoTjBnSS5U,10592
192
- flwr/proto/control_pb2_grpc.py,sha256=R4ykPqGblqEpOdVskoSfMeS-pZdyMT3CMBQUtTzHbgQ,12282
193
- flwr/proto/control_pb2_grpc.pyi,sha256=7U9aOP4dYamnc4ZtTrEQEYYz0kFNI_fT88LRxwClA0U,3504
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=BzZfAWIX7lV62bZr9f7x16lUZcpg-EImxnwxQXgCbYg,1045
223
- flwr/proto/node_pb2.pyi,sha256=CPMeIPzUeI5-Csw9sHktV9UBH4GbqiGuYzGQQKftm6Q,616
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=9PzFAqiejOtkNK9qr03BbRDnuZ_1Ur1OjO0cTEvc97s,29954
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=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
313
- flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=K0QRDshgKHv7BSMpalLB4FDyLmNFis8Xqo7GSAziOXY,7215
314
- flwr/server/superlink/fleet/vce/vce_api.py,sha256=DYaXOfVUHxjKraxlfBlB7vxMmQZ_Swx2MVvBGnwu0I0,12946
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=JN3xTqFIr5Z750k92CcA_uavzOHhSWDwE2WCaecvpks,19147
366
- flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2kVUDrJe2ViOJEuB0v_Xb3XUwK9yKNwDwrYQXTJDdco,7506
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=LrM5iI0Rf_QqrnqvJ1muKxKFlrInA3I8-SF-uIIsPik,20666
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=9SMeLVii30XPOskdfeK3FPV8X_g1OGusJ2yemNq5uJU,861
404
- flwr/superlink/auth_plugin/auth_plugin.py,sha256=HKP0g5ewdwX-yQng9gNjuFg3DNEZChzYSamEU0u6Jf0,2995
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/control_event_log_interceptor.py,sha256=HauUd7Xq-b1TFZmZVl9wpBITfDttn8-1_KhlEq-HJ8M,5966
408
- flwr/superlink/servicer/control/control_grpc.py,sha256=rLsedGjMpR33-1cdS_8JnQAa23zcvmFFbfhBGXnl6Jg,4247
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=KAaZ88CaJ9-hLZnvYU8NS2fNs558dxPPmlfXXnL9AIE,16146
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=2vknOFxmexCv0vsIsymrtRcvvgmk1tHM5lnjmAL37Rg,8775
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.dev20251001.dist-info/METADATA,sha256=kCnHqytzLGb_96JBUJZ93X9yAf_axqmrCiH58t3_DIk,14559
427
- flwr_nightly-1.23.0.dev20251001.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
428
- flwr_nightly-1.23.0.dev20251001.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
429
- flwr_nightly-1.23.0.dev20251001.dist-info/RECORD,,
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