flwr-nightly 1.21.0.dev20250802__py3-none-any.whl → 1.21.0.dev20250805__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/auth_plugin/oidc_cli_plugin.py +4 -4
- flwr/cli/cli_user_auth_interceptor.py +1 -1
- flwr/cli/config_utils.py +2 -2
- flwr/cli/log.py +9 -9
- flwr/cli/login/login.py +3 -3
- flwr/cli/ls.py +5 -5
- flwr/cli/run/run.py +7 -7
- flwr/cli/stop.py +7 -4
- flwr/cli/utils.py +1 -1
- flwr/common/auth_plugin/__init__.py +4 -4
- flwr/common/auth_plugin/auth_plugin.py +7 -7
- flwr/common/constant.py +4 -4
- flwr/common/event_log_plugin/event_log_plugin.py +1 -1
- flwr/common/exit/exit_code.py +5 -0
- flwr/proto/control_pb2.py +62 -0
- flwr/proto/{exec_pb2_grpc.py → control_pb2_grpc.py} +54 -54
- flwr/proto/{exec_pb2_grpc.pyi → control_pb2_grpc.pyi} +28 -28
- flwr/server/app.py +69 -35
- flwr/superlink/executor/__init__.py +1 -1
- flwr/superlink/servicer/{exec → control}/__init__.py +3 -3
- flwr/superlink/servicer/{exec/exec_event_log_interceptor.py → control/control_event_log_interceptor.py} +7 -7
- flwr/superlink/servicer/{exec/exec_grpc.py → control/control_grpc.py} +22 -22
- flwr/superlink/servicer/{exec/exec_license_interceptor.py → control/control_license_interceptor.py} +6 -6
- flwr/superlink/servicer/{exec/exec_servicer.py → control/control_servicer.py} +16 -16
- flwr/superlink/servicer/{exec/exec_user_auth_interceptor.py → control/control_user_auth_interceptor.py} +10 -10
- {flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/METADATA +1 -1
- {flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/RECORD +30 -30
- flwr/proto/exec_pb2.py +0 -62
- /flwr/proto/{exec_pb2.pyi → control_pb2.pyi} +0 -0
- {flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/entry_points.txt +0 -0
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""
|
15
|
+
"""Control API server."""
|
16
16
|
|
17
17
|
|
18
18
|
from logging import INFO
|
@@ -21,23 +21,23 @@ 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
|
24
|
+
from flwr.common.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
|
25
25
|
from flwr.common.event_log_plugin import EventLogWriterPlugin
|
26
26
|
from flwr.common.exit import ExitCode, flwr_exit
|
27
27
|
from flwr.common.grpc import generic_create_grpc_server
|
28
28
|
from flwr.common.logger import log
|
29
29
|
from flwr.common.typing import UserConfig
|
30
|
-
from flwr.proto.
|
30
|
+
from flwr.proto.control_pb2_grpc import add_ControlServicer_to_server
|
31
31
|
from flwr.server.superlink.linkstate import LinkStateFactory
|
32
32
|
from flwr.supercore.ffs import FfsFactory
|
33
33
|
from flwr.supercore.license_plugin import LicensePlugin
|
34
34
|
from flwr.supercore.object_store import ObjectStoreFactory
|
35
35
|
|
36
36
|
from ...executor import Executor
|
37
|
-
from .
|
38
|
-
from .
|
39
|
-
from .
|
40
|
-
from .
|
37
|
+
from .control_event_log_interceptor import ControlEventLogInterceptor
|
38
|
+
from .control_license_interceptor import ControlLicenseInterceptor
|
39
|
+
from .control_servicer import ControlServicer
|
40
|
+
from .control_user_auth_interceptor import ControlUserAuthInterceptor
|
41
41
|
|
42
42
|
try:
|
43
43
|
from flwr.ee import get_license_plugin
|
@@ -48,7 +48,7 @@ except ImportError:
|
|
48
48
|
|
49
49
|
|
50
50
|
# pylint: disable-next=too-many-arguments,too-many-positional-arguments,too-many-locals
|
51
|
-
def
|
51
|
+
def run_control_api_grpc(
|
52
52
|
address: str,
|
53
53
|
executor: Executor,
|
54
54
|
state_factory: LinkStateFactory,
|
@@ -56,18 +56,18 @@ def run_exec_api_grpc(
|
|
56
56
|
objectstore_factory: ObjectStoreFactory,
|
57
57
|
certificates: Optional[tuple[bytes, bytes, bytes]],
|
58
58
|
config: UserConfig,
|
59
|
-
auth_plugin: Optional[
|
60
|
-
authz_plugin: Optional[
|
59
|
+
auth_plugin: Optional[ControlAuthPlugin] = None,
|
60
|
+
authz_plugin: Optional[ControlAuthzPlugin] = None,
|
61
61
|
event_log_plugin: Optional[EventLogWriterPlugin] = None,
|
62
62
|
) -> grpc.Server:
|
63
|
-
"""Run
|
63
|
+
"""Run Control API (gRPC, request-response)."""
|
64
64
|
executor.set_config(config)
|
65
65
|
|
66
66
|
license_plugin: Optional[LicensePlugin] = get_license_plugin()
|
67
67
|
if license_plugin and not license_plugin.check_license():
|
68
68
|
flwr_exit(ExitCode.SUPERLINK_LICENSE_INVALID)
|
69
69
|
|
70
|
-
|
70
|
+
control_servicer: grpc.Server = ControlServicer(
|
71
71
|
linkstate_factory=state_factory,
|
72
72
|
ffs_factory=ffs_factory,
|
73
73
|
objectstore_factory=objectstore_factory,
|
@@ -76,16 +76,16 @@ def run_exec_api_grpc(
|
|
76
76
|
)
|
77
77
|
interceptors: list[grpc.ServerInterceptor] = []
|
78
78
|
if license_plugin is not None:
|
79
|
-
interceptors.append(
|
79
|
+
interceptors.append(ControlLicenseInterceptor(license_plugin))
|
80
80
|
if auth_plugin is not None and authz_plugin is not None:
|
81
|
-
interceptors.append(
|
81
|
+
interceptors.append(ControlUserAuthInterceptor(auth_plugin, authz_plugin))
|
82
82
|
# Event log interceptor must be added after user auth interceptor
|
83
83
|
if event_log_plugin is not None:
|
84
|
-
interceptors.append(
|
84
|
+
interceptors.append(ControlEventLogInterceptor(event_log_plugin))
|
85
85
|
log(INFO, "Flower event logging enabled")
|
86
|
-
|
87
|
-
|
88
|
-
servicer_and_add_fn=(
|
86
|
+
control_add_servicer_to_server_fn = add_ControlServicer_to_server
|
87
|
+
control_grpc_server = generic_create_grpc_server(
|
88
|
+
servicer_and_add_fn=(control_servicer, control_add_servicer_to_server_fn),
|
89
89
|
server_address=address,
|
90
90
|
max_message_length=GRPC_MAX_MESSAGE_LENGTH,
|
91
91
|
certificates=certificates,
|
@@ -93,14 +93,14 @@ def run_exec_api_grpc(
|
|
93
93
|
)
|
94
94
|
|
95
95
|
if auth_plugin is None:
|
96
|
-
log(INFO, "Flower Deployment Engine: Starting
|
96
|
+
log(INFO, "Flower Deployment Engine: Starting Control API on %s", address)
|
97
97
|
else:
|
98
98
|
log(
|
99
99
|
INFO,
|
100
|
-
"Flower Deployment Engine: Starting
|
100
|
+
"Flower Deployment Engine: Starting Control API with user "
|
101
101
|
"authentication on %s",
|
102
102
|
address,
|
103
103
|
)
|
104
|
-
|
104
|
+
control_grpc_server.start()
|
105
105
|
|
106
|
-
return
|
106
|
+
return control_grpc_server
|
flwr/superlink/servicer/{exec/exec_license_interceptor.py → control/control_license_interceptor.py}
RENAMED
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""Flower
|
15
|
+
"""Flower Control API license interceptor."""
|
16
16
|
|
17
17
|
|
18
18
|
from collections.abc import Iterator
|
@@ -24,8 +24,8 @@ from google.protobuf.message import Message as GrpcMessage
|
|
24
24
|
from flwr.supercore.license_plugin import LicensePlugin
|
25
25
|
|
26
26
|
|
27
|
-
class
|
28
|
-
"""
|
27
|
+
class ControlLicenseInterceptor(grpc.ServerInterceptor): # type: ignore
|
28
|
+
"""Control API interceptor for license checking."""
|
29
29
|
|
30
30
|
def __init__(self, license_plugin: LicensePlugin) -> None:
|
31
31
|
"""Initialize the interceptor with a license plugin."""
|
@@ -42,12 +42,12 @@ class ExecLicenseInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
42
42
|
Continue RPC call if license check is enabled and passes, else, terminate RPC
|
43
43
|
call by setting context to abort.
|
44
44
|
"""
|
45
|
-
# Only apply to
|
46
|
-
if not handler_call_details.method.startswith("/flwr.proto.
|
45
|
+
# Only apply to Control service
|
46
|
+
if not handler_call_details.method.startswith("/flwr.proto.Control/"):
|
47
47
|
return continuation(handler_call_details)
|
48
48
|
|
49
49
|
# One of the method handlers in
|
50
|
-
# `flwr.superlink.servicer.
|
50
|
+
# `flwr.superlink.servicer.control.ControlServicer`
|
51
51
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|
52
52
|
return self._generic_license_unary_method_handler(method_handler)
|
53
53
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""
|
15
|
+
"""Control API servicer."""
|
16
16
|
|
17
17
|
|
18
18
|
import time
|
@@ -23,7 +23,7 @@ from typing import Any, Optional, cast
|
|
23
23
|
import grpc
|
24
24
|
|
25
25
|
from flwr.common import now
|
26
|
-
from flwr.common.auth_plugin import
|
26
|
+
from flwr.common.auth_plugin import ControlAuthPlugin
|
27
27
|
from flwr.common.constant import (
|
28
28
|
FAB_MAX_SIZE,
|
29
29
|
LOG_STREAM_INTERVAL,
|
@@ -38,8 +38,8 @@ from flwr.common.serde import (
|
|
38
38
|
user_config_from_proto,
|
39
39
|
)
|
40
40
|
from flwr.common.typing import Run, RunStatus
|
41
|
-
from flwr.proto import
|
42
|
-
from flwr.proto.
|
41
|
+
from flwr.proto import control_pb2_grpc # pylint: disable=E0611
|
42
|
+
from flwr.proto.control_pb2 import ( # pylint: disable=E0611
|
43
43
|
GetAuthTokensRequest,
|
44
44
|
GetAuthTokensResponse,
|
45
45
|
GetLoginDetailsRequest,
|
@@ -58,11 +58,11 @@ from flwr.supercore.ffs import FfsFactory
|
|
58
58
|
from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
|
59
59
|
|
60
60
|
from ...executor.executor import Executor
|
61
|
-
from .
|
61
|
+
from .control_user_auth_interceptor import shared_account_info
|
62
62
|
|
63
63
|
|
64
|
-
class
|
65
|
-
"""
|
64
|
+
class ControlServicer(control_pb2_grpc.ControlServicer):
|
65
|
+
"""Control API servicer."""
|
66
66
|
|
67
67
|
def __init__( # pylint: disable=R0913, R0917
|
68
68
|
self,
|
@@ -70,7 +70,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
70
70
|
ffs_factory: FfsFactory,
|
71
71
|
objectstore_factory: ObjectStoreFactory,
|
72
72
|
executor: Executor,
|
73
|
-
auth_plugin: Optional[
|
73
|
+
auth_plugin: Optional[ControlAuthPlugin] = None,
|
74
74
|
) -> None:
|
75
75
|
self.linkstate_factory = linkstate_factory
|
76
76
|
self.ffs_factory = ffs_factory
|
@@ -83,7 +83,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
83
83
|
self, request: StartRunRequest, context: grpc.ServicerContext
|
84
84
|
) -> StartRunResponse:
|
85
85
|
"""Create run ID."""
|
86
|
-
log(INFO, "
|
86
|
+
log(INFO, "ControlServicer.StartRun")
|
87
87
|
|
88
88
|
if len(request.fab.content) > FAB_MAX_SIZE:
|
89
89
|
log(
|
@@ -111,7 +111,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
111
111
|
self, request: StreamLogsRequest, context: grpc.ServicerContext
|
112
112
|
) -> Generator[StreamLogsResponse, Any, None]:
|
113
113
|
"""Get logs."""
|
114
|
-
log(INFO, "
|
114
|
+
log(INFO, "ControlServicer.StreamLogs")
|
115
115
|
state = self.linkstate_factory.state()
|
116
116
|
|
117
117
|
# Retrieve run ID and run
|
@@ -158,7 +158,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
158
158
|
self, request: ListRunsRequest, context: grpc.ServicerContext
|
159
159
|
) -> ListRunsResponse:
|
160
160
|
"""Handle `flwr ls` command."""
|
161
|
-
log(INFO, "
|
161
|
+
log(INFO, "ControlServicer.List")
|
162
162
|
state = self.linkstate_factory.state()
|
163
163
|
|
164
164
|
# Build a set of run IDs for `flwr ls --runs`
|
@@ -204,7 +204,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
204
204
|
self, request: StopRunRequest, context: grpc.ServicerContext
|
205
205
|
) -> StopRunResponse:
|
206
206
|
"""Stop a given run ID."""
|
207
|
-
log(INFO, "
|
207
|
+
log(INFO, "ControlServicer.StopRun")
|
208
208
|
state = self.linkstate_factory.state()
|
209
209
|
|
210
210
|
# Retrieve run ID and run
|
@@ -249,11 +249,11 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
249
249
|
self, request: GetLoginDetailsRequest, context: grpc.ServicerContext
|
250
250
|
) -> GetLoginDetailsResponse:
|
251
251
|
"""Start login."""
|
252
|
-
log(INFO, "
|
252
|
+
log(INFO, "ControlServicer.GetLoginDetails")
|
253
253
|
if self.auth_plugin is None:
|
254
254
|
context.abort(
|
255
255
|
grpc.StatusCode.UNIMPLEMENTED,
|
256
|
-
"
|
256
|
+
"ControlServicer initialized without user authentication",
|
257
257
|
)
|
258
258
|
raise grpc.RpcError() # This line is unreachable
|
259
259
|
|
@@ -276,11 +276,11 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
276
276
|
self, request: GetAuthTokensRequest, context: grpc.ServicerContext
|
277
277
|
) -> GetAuthTokensResponse:
|
278
278
|
"""Get auth token."""
|
279
|
-
log(INFO, "
|
279
|
+
log(INFO, "ControlServicer.GetAuthTokens")
|
280
280
|
if self.auth_plugin is None:
|
281
281
|
context.abort(
|
282
282
|
grpc.StatusCode.UNIMPLEMENTED,
|
283
|
-
"
|
283
|
+
"ControlServicer initialized without user authentication",
|
284
284
|
)
|
285
285
|
raise grpc.RpcError() # This line is unreachable
|
286
286
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""Flower
|
15
|
+
"""Flower Control API interceptor."""
|
16
16
|
|
17
17
|
|
18
18
|
import contextvars
|
@@ -20,9 +20,9 @@ from typing import Any, Callable, Union
|
|
20
20
|
|
21
21
|
import grpc
|
22
22
|
|
23
|
-
from flwr.common.auth_plugin import
|
23
|
+
from flwr.common.auth_plugin import ControlAuthPlugin, ControlAuthzPlugin
|
24
24
|
from flwr.common.typing import AccountInfo
|
25
|
-
from flwr.proto.
|
25
|
+
from flwr.proto.control_pb2 import ( # pylint: disable=E0611
|
26
26
|
GetAuthTokensRequest,
|
27
27
|
GetAuthTokensResponse,
|
28
28
|
GetLoginDetailsRequest,
|
@@ -50,13 +50,13 @@ shared_account_info: contextvars.ContextVar[AccountInfo] = contextvars.ContextVa
|
|
50
50
|
)
|
51
51
|
|
52
52
|
|
53
|
-
class
|
54
|
-
"""
|
53
|
+
class ControlUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
|
54
|
+
"""Control API interceptor for user authentication."""
|
55
55
|
|
56
56
|
def __init__(
|
57
57
|
self,
|
58
|
-
auth_plugin:
|
59
|
-
authz_plugin:
|
58
|
+
auth_plugin: ControlAuthPlugin,
|
59
|
+
authz_plugin: ControlAuthzPlugin,
|
60
60
|
):
|
61
61
|
self.auth_plugin = auth_plugin
|
62
62
|
self.authz_plugin = authz_plugin
|
@@ -72,12 +72,12 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
72
72
|
by validating auth metadata sent by the user. Continue RPC call if user is
|
73
73
|
authenticated, else, terminate RPC call by setting context to abort.
|
74
74
|
"""
|
75
|
-
# Only apply to
|
76
|
-
if not handler_call_details.method.startswith("/flwr.proto.
|
75
|
+
# Only apply to Control service
|
76
|
+
if not handler_call_details.method.startswith("/flwr.proto.Control/"):
|
77
77
|
return continuation(handler_call_details)
|
78
78
|
|
79
79
|
# One of the method handlers in
|
80
|
-
# `flwr.superlink.servicer.
|
80
|
+
# `flwr.superlink.servicer.control.ControlServicer`
|
81
81
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|
82
82
|
return self._generic_auth_unary_method_handler(method_handler)
|
83
83
|
|
{flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.21.0.
|
3
|
+
Version: 1.21.0.dev20250805
|
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.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/RECORD
RENAMED
@@ -5,17 +5,17 @@ flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
|
|
5
5
|
flwr/cli/__init__.py,sha256=EfMGmHoobET6P2blBt_eOByXL8299MgFfB7XNdaPQ6I,720
|
6
6
|
flwr/cli/app.py,sha256=AKCP45Dkbpvdil_4Ir9S93L3HP3iUOnHmcZjscoM8uU,1856
|
7
7
|
flwr/cli/auth_plugin/__init__.py,sha256=FyaoqPzcxlBTFfJ2sBRC5USwQLmAhFr5KuBwfMO4bmo,1052
|
8
|
-
flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=
|
8
|
+
flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=kQteGRB9-DmC7K5F9TBmUc8ndSBR7WyT27ygWUUuX_g,5402
|
9
9
|
flwr/cli/build.py,sha256=hE54Q_eMdWLpVKSVC2aQaUxVaiUlWnAosGNvIPSEg6Y,7284
|
10
|
-
flwr/cli/cli_user_auth_interceptor.py,sha256
|
11
|
-
flwr/cli/config_utils.py,sha256=
|
10
|
+
flwr/cli/cli_user_auth_interceptor.py,sha256=O4S8tbA1-rgBNe5YMGACDqmY7v2SJoxyibRhshrzXu4,3129
|
11
|
+
flwr/cli/config_utils.py,sha256=83Q_UWLBZs1l4TCVYK_LsBk2fh_geRNktgawJIgP-l4,9129
|
12
12
|
flwr/cli/constant.py,sha256=g7Ad7o3DJDkJNrWS0T3SSJETWSTkkVJWGpLM8zlbpcY,1289
|
13
13
|
flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
|
14
14
|
flwr/cli/install.py,sha256=Jr883qR7qssVpUr3hEOEcLK-dfW67Rsve3lZchjA9RU,8180
|
15
|
-
flwr/cli/log.py,sha256=
|
15
|
+
flwr/cli/log.py,sha256=n_fcoECKIkY3MTOfXhB8AjOG1LSQW_GSPY-2qc7rW9Q,6553
|
16
16
|
flwr/cli/login/__init__.py,sha256=B1SXKU3HCQhWfFDMJhlC7FOl8UsvH4mxysxeBnrfyUE,800
|
17
|
-
flwr/cli/login/login.py,sha256=
|
18
|
-
flwr/cli/ls.py,sha256=
|
17
|
+
flwr/cli/login/login.py,sha256=RM1Jiv_VFm3oz4rTHSr3D87X90lW3WzErjBBU7WviWY,4309
|
18
|
+
flwr/cli/ls.py,sha256=3YK7cpoImJ7PbjlP_JgYRQWz1GymX2q7Reu-mKJEpao,10957
|
19
19
|
flwr/cli/new/__init__.py,sha256=QA1E2QtzPvFCjLTUHnFnJbufuFiGyT_0Y53Wpbvg1F0,790
|
20
20
|
flwr/cli/new/new.py,sha256=Y8m4t8SmI_myr1tAcncHPE1_-y-dpn6BwKIVW1wj8xk,10071
|
21
21
|
flwr/cli/new/templates/__init__.py,sha256=FpjWCfIySU2DB4kh0HOXLAjlZNNFDTVU4w3HoE2TzcI,725
|
@@ -71,9 +71,9 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=bu65oSrM85fP_H0-RlM
|
|
71
71
|
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=mAEPeBfGyrINgRuP6-nX_KJNTQjC4E5N1Nrcddxiffs,1484
|
72
72
|
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=mK8wOWqoQOVxZG6-OVwA2ChmKxexC7TfQV0ztPE4BWY,1508
|
73
73
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
74
|
-
flwr/cli/run/run.py,sha256=
|
75
|
-
flwr/cli/stop.py,sha256=
|
76
|
-
flwr/cli/utils.py,sha256=
|
74
|
+
flwr/cli/run/run.py,sha256=A469slN-qunLu1-jCFGSsgJD2SIn0b_0RdRQ5C5MbDU,8502
|
75
|
+
flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
|
76
|
+
flwr/cli/utils.py,sha256=fkyiWXWfXo5fS_sACw8Rg9wweq3RQ7XvEUEAa_caqkE,12349
|
77
77
|
flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
|
78
78
|
flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
|
79
79
|
flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
@@ -105,20 +105,20 @@ flwr/clientapp/__init__.py,sha256=zGW4z49Ojzoi1hDiRC7kyhLjijUilc6fqHhtM_ATRVA,71
|
|
105
105
|
flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
106
106
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
107
107
|
flwr/common/args.py,sha256=XFQ5PU0lU7NS1QCiKhhESHVeL8KSjcD3x8h4P3e5qlM,5298
|
108
|
-
flwr/common/auth_plugin/__init__.py,sha256=
|
109
|
-
flwr/common/auth_plugin/auth_plugin.py,sha256=
|
108
|
+
flwr/common/auth_plugin/__init__.py,sha256=DktrRcGZrRarLf7Jb_UlHtOyLp9_-kEplyq6PS5-vOA,988
|
109
|
+
flwr/common/auth_plugin/auth_plugin.py,sha256=mM7SuphO4OsVAVJR1GErYVgYT83ZjxDzS_gha12bT9E,4855
|
110
110
|
flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
|
111
|
-
flwr/common/constant.py,sha256=
|
111
|
+
flwr/common/constant.py,sha256=IMjx9E9iwQrbBuzsXtu0u-baFGENcWoyxU0caIvtSx0,8250
|
112
112
|
flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
|
113
113
|
flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
|
114
114
|
flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHERM-EoE,6148
|
115
115
|
flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxFk-P7pviFguy9KvQ0,1074
|
116
116
|
flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
|
117
117
|
flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
|
118
|
-
flwr/common/event_log_plugin/event_log_plugin.py,sha256=
|
118
|
+
flwr/common/event_log_plugin/event_log_plugin.py,sha256=4SkVa1Ic-sPlICJShBuggXmXDcQtWQ1KDby4kthFNF0,2064
|
119
119
|
flwr/common/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
|
120
120
|
flwr/common/exit/exit.py,sha256=mJgbqMlVlwAgYtq-Vedj53wO4VxcDcy_P-GzqGK-1GQ,3452
|
121
|
-
flwr/common/exit/exit_code.py,sha256=
|
121
|
+
flwr/common/exit/exit_code.py,sha256=qYyLmab5tVfI_ZDdlH-WO7NsOf1jS8WriLXV-BEgWHg,4333
|
122
122
|
flwr/common/exit_handlers.py,sha256=IaqJ60fXZuu7McaRYnoYKtlbH9t4Yl9goNExKqtmQbs,4304
|
123
123
|
flwr/common/grpc.py,sha256=y70hUFvXkIf3l03xOhlb7qhS6W1UJZRSZqCdB0ir0v8,10381
|
124
124
|
flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
|
@@ -172,14 +172,14 @@ flwr/proto/clientappio_pb2.py,sha256=3b87t4_AFgeDopgpYhhOVBrdh1HG74W2HC-y0C0q_eY
|
|
172
172
|
flwr/proto/clientappio_pb2.pyi,sha256=gA-WU5lCYxhMciAUiCg__DrAzHPtytqRLyflpToWHqc,2033
|
173
173
|
flwr/proto/clientappio_pb2_grpc.py,sha256=CrB1caDEuPxgjQxDEozLyApzNMqzD8z1pWg310xCTGU,17856
|
174
174
|
flwr/proto/clientappio_pb2_grpc.pyi,sha256=FkS3ZcsU1iUuoS7ji84o8L5D9u-e5vsVR7O-ESqD5LI,4939
|
175
|
+
flwr/proto/control_pb2.py,sha256=Jd_KT0Vi2GRf1rHDERxAsNmQxjLsNEmpqNLYdZ1kFCk,5684
|
176
|
+
flwr/proto/control_pb2.pyi,sha256=oEQH84BwhgaiD5zIseGH_UujuMk2SVCe5R75msEga-8,9478
|
177
|
+
flwr/proto/control_pb2_grpc.py,sha256=AweEk-n77uEwV1DX1lc55mhNlSfDEqsDHHWeouyTOVc,10610
|
178
|
+
flwr/proto/control_pb2_grpc.pyi,sha256=8bROIwDXNlPzbpaBcxTwIzKXGTP18dvU8xBVKrfe80s,3001
|
175
179
|
flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
|
176
180
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
177
181
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
178
182
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
179
|
-
flwr/proto/exec_pb2.py,sha256=vsGjwZnpaNUFOAzllVtWAXhpUbHTzcKc1LsalQSicRA,5666
|
180
|
-
flwr/proto/exec_pb2.pyi,sha256=oEQH84BwhgaiD5zIseGH_UujuMk2SVCe5R75msEga-8,9478
|
181
|
-
flwr/proto/exec_pb2_grpc.py,sha256=-bdLqjsqQxK9R8LIiZaKlLKH2NmjR50EaGKTPPTwFhI,10445
|
182
|
-
flwr/proto/exec_pb2_grpc.pyi,sha256=M5k-FzeLWxal7zt28LJfzMWWRxmNknTC2BzHRRMa1sQ,2914
|
183
183
|
flwr/proto/fab_pb2.py,sha256=2Nu0WaWxDZ8TbutMtctjdcGM7OtXiyP4kmCgg5o7Jjw,1627
|
184
184
|
flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
|
185
185
|
flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
@@ -230,7 +230,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
230
230
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
231
231
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
232
232
|
flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
|
233
|
-
flwr/server/app.py,sha256=
|
233
|
+
flwr/server/app.py,sha256=_STQz3zw9EBb5oMBuGUQ7bK-euoHRt2NJ6FwYUb8-Kk,30902
|
234
234
|
flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
|
235
235
|
flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
|
236
236
|
flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
|
@@ -351,18 +351,18 @@ flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,71
|
|
351
351
|
flwr/superexec/deployment.py,sha256=CEgWfkN_lH6Vci03RjwKLENw2z6kxNvUdVEErPbqYDY,830
|
352
352
|
flwr/superexec/simulation.py,sha256=wR3ERp_UdWJCkkLdJD7Rk5uVpWJtOqHuyhbq7Sm2tGE,830
|
353
353
|
flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
354
|
-
flwr/superlink/executor/__init__.py,sha256=
|
354
|
+
flwr/superlink/executor/__init__.py,sha256=0efHPvuqEKvEmwsUc5sp5bqKX4asL3yioJ_ObwKePBU,961
|
355
355
|
flwr/superlink/executor/app.py,sha256=AALlkJKgGTeGOARf8G6TBEmO_WdOpmL4dHYpcGWX-Hc,1474
|
356
356
|
flwr/superlink/executor/deployment.py,sha256=whB1k_DE37SqplisFt0nu190BtoqPKRX9Xz86fqm3FU,6765
|
357
357
|
flwr/superlink/executor/executor.py,sha256=LaErHRJvNggjWV6FI6eajgKfnwOvSv2UqzFH253yDro,3265
|
358
358
|
flwr/superlink/executor/simulation.py,sha256=fLy18Bdsfxpxu41vAtBzTy1QLl0iJAdW7UmicBUnRJQ,4124
|
359
359
|
flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
|
360
|
-
flwr/superlink/servicer/
|
361
|
-
flwr/superlink/servicer/
|
362
|
-
flwr/superlink/servicer/
|
363
|
-
flwr/superlink/servicer/
|
364
|
-
flwr/superlink/servicer/
|
365
|
-
flwr/superlink/servicer/
|
360
|
+
flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
|
361
|
+
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=HauUd7Xq-b1TFZmZVl9wpBITfDttn8-1_KhlEq-HJ8M,5966
|
362
|
+
flwr/superlink/servicer/control/control_grpc.py,sha256=g6Ihgt25R1H1t-e4BwmVPvy8ooJR7dsNTvxpJawgx7E,4198
|
363
|
+
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
|
364
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=Za_u9T5EFanrTu-aCc6hfgPzMKp2k6GyLuN0uYW5gsw,12553
|
365
|
+
flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
|
366
366
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
367
367
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
368
368
|
flwr/supernode/cli/flower_supernode.py,sha256=fAkk9zGhoP8Sv05EkdXRiCtirTAzWkSZBqRoaDdgflk,8529
|
@@ -379,7 +379,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
|
|
379
379
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
380
380
|
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=ClPoKco7Tjj_cxRPhZlQSrOvcGa8sJwGs26LUNZnI3Y,10608
|
381
381
|
flwr/supernode/start_client_internal.py,sha256=iqJR8WbCW-8RQIRNwARZYoxhnlaAo5KnluCOEfRoLWM,21020
|
382
|
-
flwr_nightly-1.21.0.
|
383
|
-
flwr_nightly-1.21.0.
|
384
|
-
flwr_nightly-1.21.0.
|
385
|
-
flwr_nightly-1.21.0.
|
382
|
+
flwr_nightly-1.21.0.dev20250805.dist-info/METADATA,sha256=xg10fVg_5H2EM-cTHhx2YfrzC1s2mGqBpBhl8UcGUSI,15966
|
383
|
+
flwr_nightly-1.21.0.dev20250805.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
384
|
+
flwr_nightly-1.21.0.dev20250805.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
|
385
|
+
flwr_nightly-1.21.0.dev20250805.dist-info/RECORD,,
|
flwr/proto/exec_pb2.py
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
-
# source: flwr/proto/exec.proto
|
4
|
-
# Protobuf Python Version: 4.25.1
|
5
|
-
"""Generated protocol buffer code."""
|
6
|
-
from google.protobuf import descriptor as _descriptor
|
7
|
-
from google.protobuf import descriptor_pool as _descriptor_pool
|
8
|
-
from google.protobuf import symbol_database as _symbol_database
|
9
|
-
from google.protobuf.internal import builder as _builder
|
10
|
-
# @@protoc_insertion_point(imports)
|
11
|
-
|
12
|
-
_sym_db = _symbol_database.Default()
|
13
|
-
|
14
|
-
|
15
|
-
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
16
|
-
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
17
|
-
from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
|
18
|
-
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
19
|
-
|
20
|
-
|
21
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x14\x66lwr/proto/run.proto\"\xfa\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x18.flwr.proto.ConfigRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\"\x18\n\x16GetLoginDetailsRequest\"\x8a\x01\n\x17GetLoginDetailsResponse\x12\x11\n\tauth_type\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65vice_code\x18\x02 \x01(\t\x12!\n\x19verification_uri_complete\x18\x03 \x01(\t\x12\x12\n\nexpires_in\x18\x04 \x01(\x03\x12\x10\n\x08interval\x18\x05 \x01(\x03\"+\n\x14GetAuthTokensRequest\x12\x13\n\x0b\x64\x65vice_code\x18\x01 \x01(\t\"D\n\x15GetAuthTokensResponse\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x15\n\rrefresh_token\x18\x02 \x01(\t\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xe5\x03\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x12\\\n\x0fGetLoginDetails\x12\".flwr.proto.GetLoginDetailsRequest\x1a#.flwr.proto.GetLoginDetailsResponse\"\x00\x12V\n\rGetAuthTokens\x12 .flwr.proto.GetAuthTokensRequest\x1a!.flwr.proto.GetAuthTokensResponse\"\x00\x62\x06proto3')
|
22
|
-
|
23
|
-
_globals = globals()
|
24
|
-
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
25
|
-
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.exec_pb2', _globals)
|
26
|
-
if _descriptor._USE_C_DESCRIPTORS == False:
|
27
|
-
DESCRIPTOR._options = None
|
28
|
-
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
|
29
|
-
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
30
|
-
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None
|
31
|
-
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
|
32
|
-
_globals['_STARTRUNREQUEST']._serialized_start=139
|
33
|
-
_globals['_STARTRUNREQUEST']._serialized_end=389
|
34
|
-
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=316
|
35
|
-
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=389
|
36
|
-
_globals['_STARTRUNRESPONSE']._serialized_start=391
|
37
|
-
_globals['_STARTRUNRESPONSE']._serialized_end=441
|
38
|
-
_globals['_STREAMLOGSREQUEST']._serialized_start=443
|
39
|
-
_globals['_STREAMLOGSREQUEST']._serialized_end=503
|
40
|
-
_globals['_STREAMLOGSRESPONSE']._serialized_start=505
|
41
|
-
_globals['_STREAMLOGSRESPONSE']._serialized_end=571
|
42
|
-
_globals['_LISTRUNSREQUEST']._serialized_start=573
|
43
|
-
_globals['_LISTRUNSREQUEST']._serialized_end=622
|
44
|
-
_globals['_LISTRUNSRESPONSE']._serialized_start=625
|
45
|
-
_globals['_LISTRUNSRESPONSE']._serialized_end=782
|
46
|
-
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=719
|
47
|
-
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=782
|
48
|
-
_globals['_GETLOGINDETAILSREQUEST']._serialized_start=784
|
49
|
-
_globals['_GETLOGINDETAILSREQUEST']._serialized_end=808
|
50
|
-
_globals['_GETLOGINDETAILSRESPONSE']._serialized_start=811
|
51
|
-
_globals['_GETLOGINDETAILSRESPONSE']._serialized_end=949
|
52
|
-
_globals['_GETAUTHTOKENSREQUEST']._serialized_start=951
|
53
|
-
_globals['_GETAUTHTOKENSREQUEST']._serialized_end=994
|
54
|
-
_globals['_GETAUTHTOKENSRESPONSE']._serialized_start=996
|
55
|
-
_globals['_GETAUTHTOKENSRESPONSE']._serialized_end=1064
|
56
|
-
_globals['_STOPRUNREQUEST']._serialized_start=1066
|
57
|
-
_globals['_STOPRUNREQUEST']._serialized_end=1098
|
58
|
-
_globals['_STOPRUNRESPONSE']._serialized_start=1100
|
59
|
-
_globals['_STOPRUNRESPONSE']._serialized_end=1134
|
60
|
-
_globals['_EXEC']._serialized_start=1137
|
61
|
-
_globals['_EXEC']._serialized_end=1622
|
62
|
-
# @@protoc_insertion_point(module_scope)
|
File without changes
|
{flwr_nightly-1.21.0.dev20250802.dist-info → flwr_nightly-1.21.0.dev20250805.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|