flwr-nightly 1.23.0.dev20250929__py3-none-any.whl → 1.23.0.dev20250930__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.
@@ -15,9 +15,9 @@
15
15
  """Flower user auth plugins."""
16
16
 
17
17
 
18
- from flwr.common.auth_plugin import CliAuthPlugin
19
18
  from flwr.common.constant import AuthType
20
19
 
20
+ from .auth_plugin import CliAuthPlugin
21
21
  from .oidc_cli_plugin import OidcCliPlugin
22
22
 
23
23
 
@@ -27,5 +27,7 @@ def get_cli_auth_plugins() -> dict[str, type[CliAuthPlugin]]:
27
27
 
28
28
 
29
29
  __all__ = [
30
+ "CliAuthPlugin",
31
+ "OidcCliPlugin",
30
32
  "get_cli_auth_plugins",
31
33
  ]
@@ -0,0 +1,83 @@
1
+ # Copyright 2025 Flower Labs GmbH. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Abstract classes for Flower User Auth Plugin."""
16
+
17
+
18
+ from abc import ABC, abstractmethod
19
+ from collections.abc import Sequence
20
+ from pathlib import Path
21
+ from typing import Optional, Union
22
+
23
+ from flwr.common.typing import UserAuthCredentials, UserAuthLoginDetails
24
+ from flwr.proto.control_pb2_grpc import ControlStub
25
+
26
+
27
+ class CliAuthPlugin(ABC):
28
+ """Abstract Flower Auth Plugin class for CLI.
29
+
30
+ Parameters
31
+ ----------
32
+ credentials_path : Path
33
+ Path to the user's authentication credentials file.
34
+ """
35
+
36
+ @staticmethod
37
+ @abstractmethod
38
+ def login(
39
+ login_details: UserAuthLoginDetails,
40
+ control_stub: ControlStub,
41
+ ) -> UserAuthCredentials:
42
+ """Authenticate the user and retrieve authentication credentials.
43
+
44
+ Parameters
45
+ ----------
46
+ login_details : UserAuthLoginDetails
47
+ An object containing the user's login details.
48
+ control_stub : ControlStub
49
+ A stub for executing RPC calls to the server.
50
+
51
+ Returns
52
+ -------
53
+ UserAuthCredentials
54
+ The authentication credentials obtained after login.
55
+ """
56
+
57
+ @abstractmethod
58
+ def __init__(self, credentials_path: Path):
59
+ """Abstract constructor."""
60
+
61
+ @abstractmethod
62
+ def store_tokens(self, credentials: UserAuthCredentials) -> None:
63
+ """Store authentication tokens to the `credentials_path`.
64
+
65
+ The credentials, including tokens, will be saved as a JSON file
66
+ at `credentials_path`.
67
+ """
68
+
69
+ @abstractmethod
70
+ def load_tokens(self) -> None:
71
+ """Load authentication tokens from the `credentials_path`."""
72
+
73
+ @abstractmethod
74
+ def write_tokens_to_metadata(
75
+ self, metadata: Sequence[tuple[str, Union[str, bytes]]]
76
+ ) -> Sequence[tuple[str, Union[str, bytes]]]:
77
+ """Write authentication tokens to the provided metadata."""
78
+
79
+ @abstractmethod
80
+ def read_tokens_from_metadata(
81
+ self, metadata: Sequence[tuple[str, Union[str, bytes]]]
82
+ ) -> Optional[UserAuthCredentials]:
83
+ """Read authentication tokens from the provided metadata."""
@@ -23,7 +23,6 @@ from typing import Any, Optional, Union
23
23
 
24
24
  import typer
25
25
 
26
- from flwr.common.auth_plugin import CliAuthPlugin
27
26
  from flwr.common.constant import (
28
27
  ACCESS_TOKEN_KEY,
29
28
  AUTH_TYPE_JSON_KEY,
@@ -37,6 +36,8 @@ from flwr.proto.control_pb2 import ( # pylint: disable=E0611
37
36
  )
38
37
  from flwr.proto.control_pb2_grpc import ControlStub
39
38
 
39
+ from .auth_plugin import CliAuthPlugin
40
+
40
41
 
41
42
  class OidcCliPlugin(CliAuthPlugin):
42
43
  """Flower OIDC auth plugin for CLI."""
@@ -19,12 +19,13 @@ from typing import Any, Callable, Union
19
19
 
20
20
  import grpc
21
21
 
22
- from flwr.common.auth_plugin import CliAuthPlugin
23
22
  from flwr.proto.control_pb2 import ( # pylint: disable=E0611
24
23
  StartRunRequest,
25
24
  StreamLogsRequest,
26
25
  )
27
26
 
27
+ from .auth_plugin import CliAuthPlugin
28
+
28
29
  Request = Union[
29
30
  StartRunRequest,
30
31
  StreamLogsRequest,
flwr/cli/utils.py CHANGED
@@ -26,8 +26,6 @@ from typing import Any, Callable, Optional, Union, cast
26
26
  import grpc
27
27
  import typer
28
28
 
29
- from flwr.cli.cli_user_auth_interceptor import CliUserAuthInterceptor
30
- from flwr.common.auth_plugin import CliAuthPlugin
31
29
  from flwr.common.constant import (
32
30
  AUTH_TYPE_JSON_KEY,
33
31
  CREDENTIALS_DIR,
@@ -43,7 +41,8 @@ from flwr.common.grpc import (
43
41
  on_channel_state_change,
44
42
  )
45
43
 
46
- from .auth_plugin import get_cli_auth_plugins
44
+ from .auth_plugin import CliAuthPlugin, get_cli_auth_plugins
45
+ from .cli_user_auth_interceptor import CliUserAuthInterceptor
47
46
  from .config_utils import validate_certificate_in_federation_config
48
47
 
49
48
 
flwr/server/app.py CHANGED
@@ -36,7 +36,6 @@ from cryptography.hazmat.primitives.serialization import load_ssh_public_key
36
36
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
37
37
  from flwr.common.address import parse_address
38
38
  from flwr.common.args import try_obtain_server_certificates
39
- from flwr.common.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
40
39
  from flwr.common.config import get_flwr_dir
41
40
  from flwr.common.constant import (
42
41
  AUTH_TYPE_YAML_KEY,
@@ -72,6 +71,7 @@ from flwr.supercore.ffs import FfsFactory
72
71
  from flwr.supercore.grpc_health import add_args_health, run_health_server_grpc_no_tls
73
72
  from flwr.supercore.object_store import ObjectStoreFactory
74
73
  from flwr.superlink.artifact_provider import ArtifactProvider
74
+ from flwr.superlink.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
75
75
  from flwr.superlink.servicer.control import run_control_api_grpc
76
76
 
77
77
  from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
@@ -12,15 +12,12 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Auth plugin components."""
15
+ """Account auth plugin for ControlServicer."""
16
16
 
17
17
 
18
- from .auth_plugin import CliAuthPlugin as CliAuthPlugin
19
- from .auth_plugin import ControlAuthPlugin as ControlAuthPlugin
20
- from .auth_plugin import ControlAuthzPlugin as ControlAuthzPlugin
18
+ from .auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
21
19
 
22
20
  __all__ = [
23
- "CliAuthPlugin",
24
21
  "ControlAuthPlugin",
25
22
  "ControlAuthzPlugin",
26
23
  ]
@@ -20,10 +20,7 @@ from collections.abc import Sequence
20
20
  from pathlib import Path
21
21
  from typing import Optional, Union
22
22
 
23
- from flwr.common.typing import AccountInfo
24
- from flwr.proto.control_pb2_grpc import ControlStub
25
-
26
- from ..typing import UserAuthCredentials, UserAuthLoginDetails
23
+ from flwr.common.typing import AccountInfo, UserAuthCredentials, UserAuthLoginDetails
27
24
 
28
25
 
29
26
  class ControlAuthPlugin(ABC):
@@ -88,62 +85,3 @@ class ControlAuthzPlugin(ABC): # pylint: disable=too-few-public-methods
88
85
  @abstractmethod
89
86
  def verify_user_authorization(self, account_info: AccountInfo) -> bool:
90
87
  """Verify user authorization request."""
91
-
92
-
93
- class CliAuthPlugin(ABC):
94
- """Abstract Flower Auth Plugin class for CLI.
95
-
96
- Parameters
97
- ----------
98
- credentials_path : Path
99
- Path to the user's authentication credentials file.
100
- """
101
-
102
- @staticmethod
103
- @abstractmethod
104
- def login(
105
- login_details: UserAuthLoginDetails,
106
- control_stub: ControlStub,
107
- ) -> UserAuthCredentials:
108
- """Authenticate the user and retrieve authentication credentials.
109
-
110
- Parameters
111
- ----------
112
- login_details : UserAuthLoginDetails
113
- An object containing the user's login details.
114
- control_stub : ControlStub
115
- A stub for executing RPC calls to the server.
116
-
117
- Returns
118
- -------
119
- UserAuthCredentials
120
- The authentication credentials obtained after login.
121
- """
122
-
123
- @abstractmethod
124
- def __init__(self, credentials_path: Path):
125
- """Abstract constructor."""
126
-
127
- @abstractmethod
128
- def store_tokens(self, credentials: UserAuthCredentials) -> None:
129
- """Store authentication tokens to the `credentials_path`.
130
-
131
- The credentials, including tokens, will be saved as a JSON file
132
- at `credentials_path`.
133
- """
134
-
135
- @abstractmethod
136
- def load_tokens(self) -> None:
137
- """Load authentication tokens from the `credentials_path`."""
138
-
139
- @abstractmethod
140
- def write_tokens_to_metadata(
141
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
142
- ) -> Sequence[tuple[str, Union[str, bytes]]]:
143
- """Write authentication tokens to the provided metadata."""
144
-
145
- @abstractmethod
146
- def read_tokens_from_metadata(
147
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
148
- ) -> Optional[UserAuthCredentials]:
149
- """Read authentication tokens from the provided metadata."""
@@ -21,7 +21,6 @@ from typing import Optional
21
21
  import grpc
22
22
 
23
23
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH
24
- from flwr.common.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
25
24
  from flwr.common.event_log_plugin import EventLogWriterPlugin
26
25
  from flwr.common.exit import ExitCode, flwr_exit
27
26
  from flwr.common.grpc import generic_create_grpc_server
@@ -32,6 +31,7 @@ from flwr.supercore.ffs import FfsFactory
32
31
  from flwr.supercore.license_plugin import LicensePlugin
33
32
  from flwr.supercore.object_store import ObjectStoreFactory
34
33
  from flwr.superlink.artifact_provider import ArtifactProvider
34
+ from flwr.superlink.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
35
35
 
36
36
  from .control_event_log_interceptor import ControlEventLogInterceptor
37
37
  from .control_license_interceptor import ControlLicenseInterceptor
@@ -25,7 +25,6 @@ import grpc
25
25
 
26
26
  from flwr.cli.config_utils import get_fab_metadata
27
27
  from flwr.common import Context, RecordDict, now
28
- from flwr.common.auth_plugin import ControlAuthPlugin
29
28
  from flwr.common.constant import (
30
29
  FAB_MAX_SIZE,
31
30
  LOG_STREAM_INTERVAL,
@@ -64,6 +63,7 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
64
63
  from flwr.supercore.ffs import FfsFactory
65
64
  from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
66
65
  from flwr.superlink.artifact_provider import ArtifactProvider
66
+ from flwr.superlink.auth_plugin import ControlAuthPlugin
67
67
 
68
68
  from .control_user_auth_interceptor import shared_account_info
69
69
 
@@ -20,7 +20,6 @@ from typing import Any, Callable, Union
20
20
 
21
21
  import grpc
22
22
 
23
- from flwr.common.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
24
23
  from flwr.common.typing import AccountInfo
25
24
  from flwr.proto.control_pb2 import ( # pylint: disable=E0611
26
25
  GetAuthTokensRequest,
@@ -32,6 +31,7 @@ from flwr.proto.control_pb2 import ( # pylint: disable=E0611
32
31
  StreamLogsRequest,
33
32
  StreamLogsResponse,
34
33
  )
34
+ from flwr.superlink.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
35
35
 
36
36
  Request = Union[
37
37
  StartRunRequest,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.23.0.dev20250929
3
+ Version: 1.23.0.dev20250930
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
@@ -5,10 +5,11 @@ 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
7
  flwr/cli/app.py,sha256=qYMZtPXzDXZpigmerRz4WF3lA3D0Y1lVufzgWB8Nd9A,1899
8
- flwr/cli/auth_plugin/__init__.py,sha256=FyaoqPzcxlBTFfJ2sBRC5USwQLmAhFr5KuBwfMO4bmo,1052
9
- flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=kQteGRB9-DmC7K5F9TBmUc8ndSBR7WyT27ygWUUuX_g,5402
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
10
11
  flwr/cli/build.py,sha256=hE54Q_eMdWLpVKSVC2aQaUxVaiUlWnAosGNvIPSEg6Y,7284
11
- flwr/cli/cli_user_auth_interceptor.py,sha256=O4S8tbA1-rgBNe5YMGACDqmY7v2SJoxyibRhshrzXu4,3129
12
+ flwr/cli/cli_user_auth_interceptor.py,sha256=Swxue0nDLge6deB0dH08UFIVYkXo5RRadgyOYR87pIU,3119
12
13
  flwr/cli/config_utils.py,sha256=o75PJzgCTl9FdFo_I9OjCB02-ykK0VWZdhIAeR0A8QA,9130
13
14
  flwr/cli/constant.py,sha256=LtxufmhkEqNWQ9doWbbbkUKa12vN_RK_Of5u0So-GHA,1729
14
15
  flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
@@ -84,7 +85,7 @@ flwr/cli/pull.py,sha256=dHiMe6x8w8yRoFNKpjA-eiPD6eFiHz4Vah5HZrqNpuo,3364
84
85
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
85
86
  flwr/cli/run/run.py,sha256=ECa0kup9dn15O70H74QdgUsEaeErbzDqVX_U0zZO5IM,8173
86
87
  flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
87
- flwr/cli/utils.py,sha256=sMctnDYHv-zu9FG67aV0vy_zs3gkkXclQicBD_67WWg,13805
88
+ flwr/cli/utils.py,sha256=cFACbMrdtendtrabqCDCNwTJwe-K_K0iHQZhzywtZuY,13762
88
89
  flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
89
90
  flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
90
91
  flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
@@ -120,8 +121,6 @@ flwr/clientapp/typing.py,sha256=x1GvXWy112RqZh27liJqz-yZ7SSCOwiOSmAQsUxk9MY,853
120
121
  flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
121
122
  flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
122
123
  flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
123
- flwr/common/auth_plugin/__init__.py,sha256=DktrRcGZrRarLf7Jb_UlHtOyLp9_-kEplyq6PS5-vOA,988
124
- flwr/common/auth_plugin/auth_plugin.py,sha256=mM7SuphO4OsVAVJR1GErYVgYT83ZjxDzS_gha12bT9E,4855
125
124
  flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
126
125
  flwr/common/constant.py,sha256=y3yKgr1UxAWveUkw29z8KM2hKsZJqhHUqPPhKQeef80,9045
127
126
  flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
@@ -246,7 +245,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
246
245
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
247
246
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
247
  flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
249
- flwr/server/app.py,sha256=SUWdNUcl-Sy8h2MiC8Etr50GDJuGq58Ekqtr5XQ-Xrg,29951
248
+ flwr/server/app.py,sha256=9PzFAqiejOtkNK9qr03BbRDnuZ_1Ur1OjO0cTEvc97s,29954
250
249
  flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
251
250
  flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
252
251
  flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
@@ -401,13 +400,15 @@ flwr/supercore/utils.py,sha256=ebuHMbeA8eXisX0oMPqBK3hk7uVnIE_yiqWVz8YbkpQ,1324
401
400
  flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
402
401
  flwr/superlink/artifact_provider/__init__.py,sha256=pgZEcVPKRE874LSu3cgy0HbwSJBIpVy_HxQOmne4PAs,810
403
402
  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
404
405
  flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
405
406
  flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
406
407
  flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=HauUd7Xq-b1TFZmZVl9wpBITfDttn8-1_KhlEq-HJ8M,5966
407
- flwr/superlink/servicer/control/control_grpc.py,sha256=BYm2QELbUAV_mHr0K-ZU726jjgoFXTo4M0-C6MXFzTg,4244
408
+ flwr/superlink/servicer/control/control_grpc.py,sha256=rLsedGjMpR33-1cdS_8JnQAa23zcvmFFbfhBGXnl6Jg,4247
408
409
  flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
409
- flwr/superlink/servicer/control/control_servicer.py,sha256=zY1ARksabr776eLQDy48wDmEx9t-VXTOnHq1h5Mt61U,16143
410
- flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
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
411
412
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
412
413
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
413
414
  flwr/supernode/cli/flower_supernode.py,sha256=7aBm0z03OU-npVd1onLCvUotyhSvlZLxAnFkGVMhZcw,8670
@@ -422,7 +423,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
422
423
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
423
424
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
424
425
  flwr/supernode/start_client_internal.py,sha256=Y9S1-QlO2WP6eo4JvWzIpfaCoh2aoE7bjEYyxNNnlyg,20777
425
- flwr_nightly-1.23.0.dev20250929.dist-info/METADATA,sha256=vuomPgbDlCCRbLQtWHDzsBnUYSvs9EXbLgnsoPh80Xs,14559
426
- flwr_nightly-1.23.0.dev20250929.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
427
- flwr_nightly-1.23.0.dev20250929.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
428
- flwr_nightly-1.23.0.dev20250929.dist-info/RECORD,,
426
+ flwr_nightly-1.23.0.dev20250930.dist-info/METADATA,sha256=kw_qmkljNHlyfreiBhq7FKC8ssgqjyJBZ2UyjuTtx7A,14559
427
+ flwr_nightly-1.23.0.dev20250930.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
428
+ flwr_nightly-1.23.0.dev20250930.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
429
+ flwr_nightly-1.23.0.dev20250930.dist-info/RECORD,,