flwr 1.22.0__py3-none-any.whl → 1.24.0__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 (301) hide show
  1. flwr/__init__.py +16 -5
  2. flwr/app/error.py +2 -2
  3. flwr/app/exception.py +3 -3
  4. flwr/cli/app.py +34 -1
  5. flwr/cli/app_cmd/__init__.py +23 -0
  6. flwr/cli/app_cmd/publish.py +285 -0
  7. flwr/cli/app_cmd/review.py +252 -0
  8. flwr/cli/auth_plugin/__init__.py +15 -6
  9. flwr/cli/auth_plugin/auth_plugin.py +94 -0
  10. flwr/cli/auth_plugin/noop_auth_plugin.py +101 -0
  11. flwr/cli/auth_plugin/oidc_cli_plugin.py +46 -32
  12. flwr/cli/build.py +166 -53
  13. flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +29 -11
  14. flwr/cli/config_utils.py +101 -13
  15. flwr/cli/federation/__init__.py +24 -0
  16. flwr/cli/federation/ls.py +140 -0
  17. flwr/cli/federation/show.py +317 -0
  18. flwr/cli/install.py +91 -13
  19. flwr/cli/log.py +54 -11
  20. flwr/cli/login/login.py +41 -27
  21. flwr/cli/ls.py +177 -133
  22. flwr/cli/new/new.py +175 -40
  23. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -0
  24. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  25. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  26. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  27. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  28. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  29. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  30. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +3 -3
  31. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +1 -1
  32. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  33. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +2 -2
  34. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +1 -1
  35. flwr/cli/pull.py +12 -7
  36. flwr/cli/run/run.py +82 -31
  37. flwr/cli/run_utils.py +130 -0
  38. flwr/cli/stop.py +27 -9
  39. flwr/cli/supernode/__init__.py +25 -0
  40. flwr/cli/supernode/ls.py +268 -0
  41. flwr/cli/supernode/register.py +190 -0
  42. flwr/cli/supernode/unregister.py +140 -0
  43. flwr/cli/utils.py +464 -81
  44. flwr/client/__init__.py +2 -1
  45. flwr/client/dpfedavg_numpy_client.py +4 -1
  46. flwr/client/grpc_adapter_client/connection.py +12 -15
  47. flwr/client/grpc_rere_client/connection.py +68 -41
  48. flwr/client/grpc_rere_client/grpc_adapter.py +34 -14
  49. flwr/client/grpc_rere_client/{client_interceptor.py → node_auth_client_interceptor.py} +5 -7
  50. flwr/client/message_handler/message_handler.py +2 -2
  51. flwr/client/mod/secure_aggregation/secaggplus_mod.py +10 -8
  52. flwr/client/numpy_client.py +1 -1
  53. flwr/client/rest_client/connection.py +94 -51
  54. flwr/client/run_info_store.py +4 -5
  55. flwr/client/typing.py +1 -1
  56. flwr/clientapp/__init__.py +1 -2
  57. flwr/{client → clientapp}/client_app.py +9 -10
  58. flwr/clientapp/mod/centraldp_mods.py +16 -17
  59. flwr/clientapp/mod/localdp_mod.py +8 -9
  60. flwr/clientapp/typing.py +1 -1
  61. flwr/{client/clientapp → clientapp}/utils.py +4 -4
  62. flwr/common/address.py +1 -2
  63. flwr/common/args.py +3 -4
  64. flwr/common/config.py +13 -16
  65. flwr/common/constant.py +56 -13
  66. flwr/common/differential_privacy.py +3 -4
  67. flwr/common/event_log_plugin/event_log_plugin.py +3 -4
  68. flwr/common/exit/exit.py +15 -2
  69. flwr/common/exit/exit_code.py +39 -10
  70. flwr/common/exit/exit_handler.py +6 -2
  71. flwr/common/exit/signal_handler.py +5 -5
  72. flwr/common/grpc.py +6 -6
  73. flwr/common/inflatable_protobuf_utils.py +1 -1
  74. flwr/common/inflatable_utils.py +48 -31
  75. flwr/common/logger.py +19 -19
  76. flwr/common/message.py +4 -4
  77. flwr/common/object_ref.py +7 -7
  78. flwr/common/record/array.py +6 -6
  79. flwr/common/record/arrayrecord.py +18 -21
  80. flwr/common/record/configrecord.py +3 -3
  81. flwr/common/record/recorddict.py +5 -5
  82. flwr/common/record/typeddict.py +9 -2
  83. flwr/common/recorddict_compat.py +7 -10
  84. flwr/common/retry_invoker.py +20 -20
  85. flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -89
  86. flwr/common/secure_aggregation/ndarrays_arithmetic.py +3 -3
  87. flwr/common/serde.py +9 -6
  88. flwr/common/serde_utils.py +2 -2
  89. flwr/common/telemetry.py +9 -5
  90. flwr/common/typing.py +59 -43
  91. flwr/compat/client/app.py +39 -38
  92. flwr/compat/client/grpc_client/connection.py +13 -13
  93. flwr/compat/server/app.py +5 -6
  94. flwr/proto/appio_pb2.py +13 -3
  95. flwr/proto/appio_pb2.pyi +134 -65
  96. flwr/proto/appio_pb2_grpc.py +20 -0
  97. flwr/proto/appio_pb2_grpc.pyi +27 -0
  98. flwr/proto/clientappio_pb2.py +17 -7
  99. flwr/proto/clientappio_pb2.pyi +15 -0
  100. flwr/proto/clientappio_pb2_grpc.py +206 -40
  101. flwr/proto/clientappio_pb2_grpc.pyi +168 -53
  102. flwr/proto/control_pb2.py +72 -40
  103. flwr/proto/control_pb2.pyi +319 -87
  104. flwr/proto/control_pb2_grpc.py +339 -28
  105. flwr/proto/control_pb2_grpc.pyi +209 -37
  106. flwr/proto/error_pb2.py +13 -3
  107. flwr/proto/error_pb2.pyi +24 -6
  108. flwr/proto/error_pb2_grpc.py +20 -0
  109. flwr/proto/error_pb2_grpc.pyi +27 -0
  110. flwr/proto/fab_pb2.py +24 -10
  111. flwr/proto/fab_pb2.pyi +68 -20
  112. flwr/proto/fab_pb2_grpc.py +20 -0
  113. flwr/proto/fab_pb2_grpc.pyi +27 -0
  114. flwr/proto/federation_pb2.py +38 -0
  115. flwr/proto/federation_pb2.pyi +56 -0
  116. flwr/proto/federation_pb2_grpc.py +24 -0
  117. flwr/proto/federation_pb2_grpc.pyi +31 -0
  118. flwr/proto/fleet_pb2.py +45 -27
  119. flwr/proto/fleet_pb2.pyi +186 -70
  120. flwr/proto/fleet_pb2_grpc.py +277 -66
  121. flwr/proto/fleet_pb2_grpc.pyi +201 -55
  122. flwr/proto/grpcadapter_pb2.py +14 -4
  123. flwr/proto/grpcadapter_pb2.pyi +38 -16
  124. flwr/proto/grpcadapter_pb2_grpc.py +35 -4
  125. flwr/proto/grpcadapter_pb2_grpc.pyi +38 -7
  126. flwr/proto/heartbeat_pb2.py +17 -7
  127. flwr/proto/heartbeat_pb2.pyi +51 -22
  128. flwr/proto/heartbeat_pb2_grpc.py +20 -0
  129. flwr/proto/heartbeat_pb2_grpc.pyi +27 -0
  130. flwr/proto/log_pb2.py +13 -3
  131. flwr/proto/log_pb2.pyi +34 -11
  132. flwr/proto/log_pb2_grpc.py +20 -0
  133. flwr/proto/log_pb2_grpc.pyi +27 -0
  134. flwr/proto/message_pb2.py +15 -5
  135. flwr/proto/message_pb2.pyi +154 -86
  136. flwr/proto/message_pb2_grpc.py +20 -0
  137. flwr/proto/message_pb2_grpc.pyi +27 -0
  138. flwr/proto/node_pb2.py +16 -4
  139. flwr/proto/node_pb2.pyi +77 -4
  140. flwr/proto/node_pb2_grpc.py +20 -0
  141. flwr/proto/node_pb2_grpc.pyi +27 -0
  142. flwr/proto/recorddict_pb2.py +13 -3
  143. flwr/proto/recorddict_pb2.pyi +184 -107
  144. flwr/proto/recorddict_pb2_grpc.py +20 -0
  145. flwr/proto/recorddict_pb2_grpc.pyi +27 -0
  146. flwr/proto/run_pb2.py +40 -31
  147. flwr/proto/run_pb2.pyi +149 -84
  148. flwr/proto/run_pb2_grpc.py +20 -0
  149. flwr/proto/run_pb2_grpc.pyi +27 -0
  150. flwr/proto/serverappio_pb2.py +13 -3
  151. flwr/proto/serverappio_pb2.pyi +32 -8
  152. flwr/proto/serverappio_pb2_grpc.py +246 -65
  153. flwr/proto/serverappio_pb2_grpc.pyi +221 -85
  154. flwr/proto/simulationio_pb2.py +16 -8
  155. flwr/proto/simulationio_pb2.pyi +15 -0
  156. flwr/proto/simulationio_pb2_grpc.py +162 -41
  157. flwr/proto/simulationio_pb2_grpc.pyi +149 -55
  158. flwr/proto/transport_pb2.py +20 -10
  159. flwr/proto/transport_pb2.pyi +249 -160
  160. flwr/proto/transport_pb2_grpc.py +35 -4
  161. flwr/proto/transport_pb2_grpc.pyi +38 -8
  162. flwr/server/app.py +173 -127
  163. flwr/server/client_manager.py +4 -5
  164. flwr/server/client_proxy.py +10 -11
  165. flwr/server/compat/app.py +4 -5
  166. flwr/server/compat/app_utils.py +2 -1
  167. flwr/server/compat/grid_client_proxy.py +10 -12
  168. flwr/server/compat/legacy_context.py +3 -4
  169. flwr/server/fleet_event_log_interceptor.py +2 -1
  170. flwr/server/grid/grid.py +2 -3
  171. flwr/server/grid/grpc_grid.py +10 -8
  172. flwr/server/grid/inmemory_grid.py +4 -4
  173. flwr/server/run_serverapp.py +2 -3
  174. flwr/server/server.py +34 -39
  175. flwr/server/server_app.py +7 -8
  176. flwr/server/server_config.py +1 -2
  177. flwr/server/serverapp/app.py +34 -28
  178. flwr/server/serverapp_components.py +4 -5
  179. flwr/server/strategy/aggregate.py +9 -8
  180. flwr/server/strategy/bulyan.py +13 -11
  181. flwr/server/strategy/dp_adaptive_clipping.py +16 -20
  182. flwr/server/strategy/dp_fixed_clipping.py +12 -17
  183. flwr/server/strategy/dpfedavg_adaptive.py +3 -4
  184. flwr/server/strategy/dpfedavg_fixed.py +6 -10
  185. flwr/server/strategy/fault_tolerant_fedavg.py +14 -13
  186. flwr/server/strategy/fedadagrad.py +18 -14
  187. flwr/server/strategy/fedadam.py +16 -14
  188. flwr/server/strategy/fedavg.py +16 -17
  189. flwr/server/strategy/fedavg_android.py +15 -15
  190. flwr/server/strategy/fedavgm.py +21 -18
  191. flwr/server/strategy/fedmedian.py +2 -3
  192. flwr/server/strategy/fedopt.py +11 -10
  193. flwr/server/strategy/fedprox.py +10 -9
  194. flwr/server/strategy/fedtrimmedavg.py +12 -11
  195. flwr/server/strategy/fedxgb_bagging.py +13 -11
  196. flwr/server/strategy/fedxgb_cyclic.py +6 -6
  197. flwr/server/strategy/fedxgb_nn_avg.py +4 -4
  198. flwr/server/strategy/fedyogi.py +16 -14
  199. flwr/server/strategy/krum.py +12 -11
  200. flwr/server/strategy/qfedavg.py +16 -15
  201. flwr/server/strategy/strategy.py +6 -9
  202. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +19 -8
  203. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -2
  204. flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +3 -4
  205. flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +10 -12
  206. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +1 -3
  207. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +136 -42
  208. flwr/server/superlink/fleet/grpc_rere/{server_interceptor.py → node_auth_server_interceptor.py} +28 -51
  209. flwr/server/superlink/fleet/message_handler/message_handler.py +100 -49
  210. flwr/server/superlink/fleet/rest_rere/rest_api.py +54 -33
  211. flwr/server/superlink/fleet/vce/backend/backend.py +2 -2
  212. flwr/server/superlink/fleet/vce/backend/raybackend.py +6 -6
  213. flwr/server/superlink/fleet/vce/vce_api.py +32 -13
  214. flwr/server/superlink/linkstate/in_memory_linkstate.py +266 -207
  215. flwr/server/superlink/linkstate/linkstate.py +161 -62
  216. flwr/server/superlink/linkstate/linkstate_factory.py +24 -6
  217. flwr/server/superlink/linkstate/sqlite_linkstate.py +698 -638
  218. flwr/server/superlink/linkstate/utils.py +9 -60
  219. flwr/server/superlink/serverappio/serverappio_grpc.py +1 -2
  220. flwr/server/superlink/serverappio/serverappio_servicer.py +28 -23
  221. flwr/server/superlink/simulation/simulationio_grpc.py +1 -2
  222. flwr/server/superlink/simulation/simulationio_servicer.py +19 -14
  223. flwr/server/superlink/utils.py +4 -6
  224. flwr/server/typing.py +1 -1
  225. flwr/server/utils/tensorboard.py +15 -8
  226. flwr/server/utils/validator.py +2 -3
  227. flwr/server/workflow/default_workflows.py +5 -5
  228. flwr/server/workflow/secure_aggregation/secagg_workflow.py +2 -4
  229. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +12 -10
  230. flwr/serverapp/strategy/bulyan.py +16 -15
  231. flwr/serverapp/strategy/dp_adaptive_clipping.py +12 -11
  232. flwr/serverapp/strategy/dp_fixed_clipping.py +11 -14
  233. flwr/serverapp/strategy/fedadagrad.py +10 -11
  234. flwr/serverapp/strategy/fedadam.py +10 -11
  235. flwr/serverapp/strategy/fedavg.py +9 -10
  236. flwr/serverapp/strategy/fedavgm.py +17 -16
  237. flwr/serverapp/strategy/fedmedian.py +2 -2
  238. flwr/serverapp/strategy/fedopt.py +10 -11
  239. flwr/serverapp/strategy/fedprox.py +7 -8
  240. flwr/serverapp/strategy/fedtrimmedavg.py +9 -9
  241. flwr/serverapp/strategy/fedxgb_bagging.py +3 -3
  242. flwr/serverapp/strategy/fedxgb_cyclic.py +9 -9
  243. flwr/serverapp/strategy/fedyogi.py +9 -11
  244. flwr/serverapp/strategy/krum.py +7 -7
  245. flwr/serverapp/strategy/multikrum.py +9 -9
  246. flwr/serverapp/strategy/qfedavg.py +17 -16
  247. flwr/serverapp/strategy/strategy.py +6 -9
  248. flwr/serverapp/strategy/strategy_utils.py +7 -8
  249. flwr/simulation/app.py +46 -42
  250. flwr/simulation/legacy_app.py +12 -12
  251. flwr/simulation/ray_transport/ray_actor.py +11 -12
  252. flwr/simulation/ray_transport/ray_client_proxy.py +12 -13
  253. flwr/simulation/run_simulation.py +44 -43
  254. flwr/simulation/simulationio_connection.py +4 -4
  255. flwr/supercore/cli/flower_superexec.py +3 -4
  256. flwr/supercore/constant.py +52 -0
  257. flwr/supercore/corestate/corestate.py +24 -3
  258. flwr/supercore/corestate/in_memory_corestate.py +138 -0
  259. flwr/supercore/corestate/sqlite_corestate.py +157 -0
  260. flwr/supercore/ffs/disk_ffs.py +1 -2
  261. flwr/supercore/ffs/ffs.py +1 -2
  262. flwr/supercore/ffs/ffs_factory.py +1 -2
  263. flwr/{common → supercore}/heartbeat.py +20 -25
  264. flwr/supercore/object_store/in_memory_object_store.py +1 -6
  265. flwr/supercore/object_store/object_store.py +1 -2
  266. flwr/supercore/object_store/object_store_factory.py +27 -8
  267. flwr/supercore/object_store/sqlite_object_store.py +253 -0
  268. flwr/{client/clientapp → supercore/primitives}/__init__.py +1 -1
  269. flwr/supercore/primitives/asymmetric.py +117 -0
  270. flwr/supercore/primitives/asymmetric_ed25519.py +175 -0
  271. flwr/supercore/sqlite_mixin.py +159 -0
  272. flwr/supercore/superexec/plugin/base_exec_plugin.py +1 -2
  273. flwr/supercore/superexec/plugin/exec_plugin.py +3 -3
  274. flwr/supercore/superexec/run_superexec.py +9 -13
  275. flwr/supercore/utils.py +20 -0
  276. flwr/superlink/artifact_provider/artifact_provider.py +1 -2
  277. flwr/{common → superlink}/auth_plugin/__init__.py +6 -6
  278. flwr/superlink/auth_plugin/auth_plugin.py +88 -0
  279. flwr/superlink/auth_plugin/noop_auth_plugin.py +84 -0
  280. flwr/superlink/federation/__init__.py +24 -0
  281. flwr/superlink/federation/federation_manager.py +64 -0
  282. flwr/superlink/federation/noop_federation_manager.py +71 -0
  283. flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +41 -32
  284. flwr/superlink/servicer/control/control_event_log_interceptor.py +7 -7
  285. flwr/superlink/servicer/control/control_grpc.py +18 -17
  286. flwr/superlink/servicer/control/control_license_interceptor.py +3 -3
  287. flwr/superlink/servicer/control/control_servicer.py +239 -63
  288. flwr/supernode/cli/flower_supernode.py +74 -26
  289. flwr/supernode/nodestate/in_memory_nodestate.py +60 -49
  290. flwr/supernode/nodestate/nodestate.py +7 -8
  291. flwr/supernode/nodestate/nodestate_factory.py +7 -4
  292. flwr/supernode/runtime/run_clientapp.py +43 -24
  293. flwr/supernode/servicer/clientappio/clientappio_servicer.py +40 -10
  294. flwr/supernode/start_client_internal.py +175 -51
  295. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/METADATA +8 -8
  296. flwr-1.24.0.dist-info/RECORD +454 -0
  297. flwr/common/auth_plugin/auth_plugin.py +0 -149
  298. flwr/supercore/object_store/utils.py +0 -43
  299. flwr-1.22.0.dist-info/RECORD +0 -428
  300. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/WHEEL +0 -0
  301. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1,27 @@
1
1
  """
2
2
  @generated by mypy-protobuf. Do not edit manually!
3
3
  isort:skip_file
4
+ Copyright 2024 Flower Labs GmbH. All Rights Reserved.
5
+
6
+ Licensed under the Apache License, Version 2.0 (the "License");
7
+ you may not use this file except in compliance with the License.
8
+ You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ ==============================================================================
4
18
  """
19
+
5
20
  import builtins
21
+ import collections.abc
6
22
  import flwr.proto.fab_pb2
23
+ import flwr.proto.federation_pb2
24
+ import flwr.proto.node_pb2
7
25
  import flwr.proto.recorddict_pb2
8
26
  import flwr.proto.run_pb2
9
27
  import flwr.proto.transport_pb2
@@ -11,226 +29,440 @@ import google.protobuf.descriptor
11
29
  import google.protobuf.internal.containers
12
30
  import google.protobuf.message
13
31
  import typing
14
- import typing_extensions
15
32
 
16
33
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
17
34
 
35
+ @typing.final
18
36
  class StartRunRequest(google.protobuf.message.Message):
19
37
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
38
+
39
+ @typing.final
20
40
  class OverrideConfigEntry(google.protobuf.message.Message):
21
41
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
42
+
22
43
  KEY_FIELD_NUMBER: builtins.int
23
44
  VALUE_FIELD_NUMBER: builtins.int
24
- key: typing.Text
45
+ key: builtins.str
25
46
  @property
26
47
  def value(self) -> flwr.proto.transport_pb2.Scalar: ...
27
- def __init__(self,
48
+ def __init__(
49
+ self,
28
50
  *,
29
- key: typing.Text = ...,
30
- value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
31
- ) -> None: ...
32
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
33
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
51
+ key: builtins.str = ...,
52
+ value: flwr.proto.transport_pb2.Scalar | None = ...,
53
+ ) -> None: ...
54
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
55
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
34
56
 
35
57
  FAB_FIELD_NUMBER: builtins.int
36
58
  OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
37
59
  FEDERATION_OPTIONS_FIELD_NUMBER: builtins.int
60
+ APP_SPEC_FIELD_NUMBER: builtins.int
61
+ FEDERATION_FIELD_NUMBER: builtins.int
62
+ app_spec: builtins.str
63
+ federation: builtins.str
38
64
  @property
39
65
  def fab(self) -> flwr.proto.fab_pb2.Fab: ...
40
66
  @property
41
- def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
67
+ def override_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ...
42
68
  @property
43
69
  def federation_options(self) -> flwr.proto.recorddict_pb2.ConfigRecord: ...
44
- def __init__(self,
70
+ def __init__(
71
+ self,
45
72
  *,
46
- fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
47
- override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
48
- federation_options: typing.Optional[flwr.proto.recorddict_pb2.ConfigRecord] = ...,
49
- ) -> None: ...
50
- def HasField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options"]) -> builtins.bool: ...
51
- def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options","override_config",b"override_config"]) -> None: ...
73
+ fab: flwr.proto.fab_pb2.Fab | None = ...,
74
+ override_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ...,
75
+ federation_options: flwr.proto.recorddict_pb2.ConfigRecord | None = ...,
76
+ app_spec: builtins.str = ...,
77
+ federation: builtins.str = ...,
78
+ ) -> None: ...
79
+ def HasField(self, field_name: typing.Literal["fab", b"fab", "federation_options", b"federation_options"]) -> builtins.bool: ...
80
+ def ClearField(self, field_name: typing.Literal["app_spec", b"app_spec", "fab", b"fab", "federation", b"federation", "federation_options", b"federation_options", "override_config", b"override_config"]) -> None: ...
81
+
52
82
  global___StartRunRequest = StartRunRequest
53
83
 
84
+ @typing.final
54
85
  class StartRunResponse(google.protobuf.message.Message):
55
86
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
87
+
56
88
  RUN_ID_FIELD_NUMBER: builtins.int
57
89
  run_id: builtins.int
58
- def __init__(self,
90
+ def __init__(
91
+ self,
59
92
  *,
60
- run_id: typing.Optional[builtins.int] = ...,
61
- ) -> None: ...
62
- def HasField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> builtins.bool: ...
63
- def ClearField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> None: ...
64
- def WhichOneof(self, oneof_group: typing_extensions.Literal["_run_id",b"_run_id"]) -> typing.Optional[typing_extensions.Literal["run_id"]]: ...
93
+ run_id: builtins.int | None = ...,
94
+ ) -> None: ...
95
+ def HasField(self, field_name: typing.Literal["_run_id", b"_run_id", "run_id", b"run_id"]) -> builtins.bool: ...
96
+ def ClearField(self, field_name: typing.Literal["_run_id", b"_run_id", "run_id", b"run_id"]) -> None: ...
97
+ def WhichOneof(self, oneof_group: typing.Literal["_run_id", b"_run_id"]) -> typing.Literal["run_id"] | None: ...
98
+
65
99
  global___StartRunResponse = StartRunResponse
66
100
 
101
+ @typing.final
67
102
  class StreamLogsRequest(google.protobuf.message.Message):
68
103
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
104
+
69
105
  RUN_ID_FIELD_NUMBER: builtins.int
70
106
  AFTER_TIMESTAMP_FIELD_NUMBER: builtins.int
71
107
  run_id: builtins.int
72
108
  after_timestamp: builtins.float
73
- def __init__(self,
109
+ def __init__(
110
+ self,
74
111
  *,
75
112
  run_id: builtins.int = ...,
76
113
  after_timestamp: builtins.float = ...,
77
- ) -> None: ...
78
- def ClearField(self, field_name: typing_extensions.Literal["after_timestamp",b"after_timestamp","run_id",b"run_id"]) -> None: ...
114
+ ) -> None: ...
115
+ def ClearField(self, field_name: typing.Literal["after_timestamp", b"after_timestamp", "run_id", b"run_id"]) -> None: ...
116
+
79
117
  global___StreamLogsRequest = StreamLogsRequest
80
118
 
119
+ @typing.final
81
120
  class StreamLogsResponse(google.protobuf.message.Message):
82
121
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
122
+
83
123
  LOG_OUTPUT_FIELD_NUMBER: builtins.int
84
124
  LATEST_TIMESTAMP_FIELD_NUMBER: builtins.int
85
- log_output: typing.Text
125
+ log_output: builtins.str
86
126
  latest_timestamp: builtins.float
87
- def __init__(self,
127
+ def __init__(
128
+ self,
88
129
  *,
89
- log_output: typing.Text = ...,
130
+ log_output: builtins.str = ...,
90
131
  latest_timestamp: builtins.float = ...,
91
- ) -> None: ...
92
- def ClearField(self, field_name: typing_extensions.Literal["latest_timestamp",b"latest_timestamp","log_output",b"log_output"]) -> None: ...
132
+ ) -> None: ...
133
+ def ClearField(self, field_name: typing.Literal["latest_timestamp", b"latest_timestamp", "log_output", b"log_output"]) -> None: ...
134
+
93
135
  global___StreamLogsResponse = StreamLogsResponse
94
136
 
137
+ @typing.final
95
138
  class ListRunsRequest(google.protobuf.message.Message):
96
139
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
140
+
97
141
  RUN_ID_FIELD_NUMBER: builtins.int
98
142
  run_id: builtins.int
99
- def __init__(self,
143
+ def __init__(
144
+ self,
100
145
  *,
101
- run_id: typing.Optional[builtins.int] = ...,
102
- ) -> None: ...
103
- def HasField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> builtins.bool: ...
104
- def ClearField(self, field_name: typing_extensions.Literal["_run_id",b"_run_id","run_id",b"run_id"]) -> None: ...
105
- def WhichOneof(self, oneof_group: typing_extensions.Literal["_run_id",b"_run_id"]) -> typing.Optional[typing_extensions.Literal["run_id"]]: ...
146
+ run_id: builtins.int | None = ...,
147
+ ) -> None: ...
148
+ def HasField(self, field_name: typing.Literal["_run_id", b"_run_id", "run_id", b"run_id"]) -> builtins.bool: ...
149
+ def ClearField(self, field_name: typing.Literal["_run_id", b"_run_id", "run_id", b"run_id"]) -> None: ...
150
+ def WhichOneof(self, oneof_group: typing.Literal["_run_id", b"_run_id"]) -> typing.Literal["run_id"] | None: ...
151
+
106
152
  global___ListRunsRequest = ListRunsRequest
107
153
 
154
+ @typing.final
108
155
  class ListRunsResponse(google.protobuf.message.Message):
109
156
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
157
+
158
+ @typing.final
110
159
  class RunDictEntry(google.protobuf.message.Message):
111
160
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
161
+
112
162
  KEY_FIELD_NUMBER: builtins.int
113
163
  VALUE_FIELD_NUMBER: builtins.int
114
164
  key: builtins.int
115
165
  @property
116
166
  def value(self) -> flwr.proto.run_pb2.Run: ...
117
- def __init__(self,
167
+ def __init__(
168
+ self,
118
169
  *,
119
170
  key: builtins.int = ...,
120
- value: typing.Optional[flwr.proto.run_pb2.Run] = ...,
121
- ) -> None: ...
122
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
123
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
171
+ value: flwr.proto.run_pb2.Run | None = ...,
172
+ ) -> None: ...
173
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
174
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
124
175
 
125
176
  RUN_DICT_FIELD_NUMBER: builtins.int
126
177
  NOW_FIELD_NUMBER: builtins.int
178
+ now: builtins.str
127
179
  @property
128
180
  def run_dict(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, flwr.proto.run_pb2.Run]: ...
129
- now: typing.Text
130
- def __init__(self,
181
+ def __init__(
182
+ self,
131
183
  *,
132
- run_dict: typing.Optional[typing.Mapping[builtins.int, flwr.proto.run_pb2.Run]] = ...,
133
- now: typing.Text = ...,
134
- ) -> None: ...
135
- def ClearField(self, field_name: typing_extensions.Literal["now",b"now","run_dict",b"run_dict"]) -> None: ...
184
+ run_dict: collections.abc.Mapping[builtins.int, flwr.proto.run_pb2.Run] | None = ...,
185
+ now: builtins.str = ...,
186
+ ) -> None: ...
187
+ def ClearField(self, field_name: typing.Literal["now", b"now", "run_dict", b"run_dict"]) -> None: ...
188
+
136
189
  global___ListRunsResponse = ListRunsResponse
137
190
 
191
+ @typing.final
138
192
  class GetLoginDetailsRequest(google.protobuf.message.Message):
139
193
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
140
- def __init__(self,
141
- ) -> None: ...
194
+
195
+ def __init__(
196
+ self,
197
+ ) -> None: ...
198
+
142
199
  global___GetLoginDetailsRequest = GetLoginDetailsRequest
143
200
 
201
+ @typing.final
144
202
  class GetLoginDetailsResponse(google.protobuf.message.Message):
145
203
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
146
- AUTH_TYPE_FIELD_NUMBER: builtins.int
204
+
205
+ AUTHN_TYPE_FIELD_NUMBER: builtins.int
147
206
  DEVICE_CODE_FIELD_NUMBER: builtins.int
148
207
  VERIFICATION_URI_COMPLETE_FIELD_NUMBER: builtins.int
149
208
  EXPIRES_IN_FIELD_NUMBER: builtins.int
150
209
  INTERVAL_FIELD_NUMBER: builtins.int
151
- auth_type: typing.Text
152
- device_code: typing.Text
153
- verification_uri_complete: typing.Text
210
+ authn_type: builtins.str
211
+ device_code: builtins.str
212
+ verification_uri_complete: builtins.str
154
213
  expires_in: builtins.int
155
214
  interval: builtins.int
156
- def __init__(self,
215
+ def __init__(
216
+ self,
157
217
  *,
158
- auth_type: typing.Text = ...,
159
- device_code: typing.Text = ...,
160
- verification_uri_complete: typing.Text = ...,
218
+ authn_type: builtins.str = ...,
219
+ device_code: builtins.str = ...,
220
+ verification_uri_complete: builtins.str = ...,
161
221
  expires_in: builtins.int = ...,
162
222
  interval: builtins.int = ...,
163
- ) -> None: ...
164
- def ClearField(self, field_name: typing_extensions.Literal["auth_type",b"auth_type","device_code",b"device_code","expires_in",b"expires_in","interval",b"interval","verification_uri_complete",b"verification_uri_complete"]) -> None: ...
223
+ ) -> None: ...
224
+ def ClearField(self, field_name: typing.Literal["authn_type", b"authn_type", "device_code", b"device_code", "expires_in", b"expires_in", "interval", b"interval", "verification_uri_complete", b"verification_uri_complete"]) -> None: ...
225
+
165
226
  global___GetLoginDetailsResponse = GetLoginDetailsResponse
166
227
 
228
+ @typing.final
167
229
  class GetAuthTokensRequest(google.protobuf.message.Message):
168
230
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
231
+
169
232
  DEVICE_CODE_FIELD_NUMBER: builtins.int
170
- device_code: typing.Text
171
- def __init__(self,
233
+ device_code: builtins.str
234
+ def __init__(
235
+ self,
172
236
  *,
173
- device_code: typing.Text = ...,
174
- ) -> None: ...
175
- def ClearField(self, field_name: typing_extensions.Literal["device_code",b"device_code"]) -> None: ...
237
+ device_code: builtins.str = ...,
238
+ ) -> None: ...
239
+ def ClearField(self, field_name: typing.Literal["device_code", b"device_code"]) -> None: ...
240
+
176
241
  global___GetAuthTokensRequest = GetAuthTokensRequest
177
242
 
243
+ @typing.final
178
244
  class GetAuthTokensResponse(google.protobuf.message.Message):
179
245
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
246
+
180
247
  ACCESS_TOKEN_FIELD_NUMBER: builtins.int
181
248
  REFRESH_TOKEN_FIELD_NUMBER: builtins.int
182
- access_token: typing.Text
183
- refresh_token: typing.Text
184
- def __init__(self,
249
+ access_token: builtins.str
250
+ refresh_token: builtins.str
251
+ def __init__(
252
+ self,
185
253
  *,
186
- access_token: typing.Text = ...,
187
- refresh_token: typing.Text = ...,
188
- ) -> None: ...
189
- def ClearField(self, field_name: typing_extensions.Literal["access_token",b"access_token","refresh_token",b"refresh_token"]) -> None: ...
254
+ access_token: builtins.str = ...,
255
+ refresh_token: builtins.str = ...,
256
+ ) -> None: ...
257
+ def ClearField(self, field_name: typing.Literal["access_token", b"access_token", "refresh_token", b"refresh_token"]) -> None: ...
258
+
190
259
  global___GetAuthTokensResponse = GetAuthTokensResponse
191
260
 
261
+ @typing.final
192
262
  class StopRunRequest(google.protobuf.message.Message):
193
263
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
264
+
194
265
  RUN_ID_FIELD_NUMBER: builtins.int
195
266
  run_id: builtins.int
196
- def __init__(self,
267
+ def __init__(
268
+ self,
197
269
  *,
198
270
  run_id: builtins.int = ...,
199
- ) -> None: ...
200
- def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
271
+ ) -> None: ...
272
+ def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ...
273
+
201
274
  global___StopRunRequest = StopRunRequest
202
275
 
276
+ @typing.final
203
277
  class StopRunResponse(google.protobuf.message.Message):
204
278
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
279
+
205
280
  SUCCESS_FIELD_NUMBER: builtins.int
206
281
  success: builtins.bool
207
- def __init__(self,
282
+ def __init__(
283
+ self,
208
284
  *,
209
285
  success: builtins.bool = ...,
210
- ) -> None: ...
211
- def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ...
286
+ ) -> None: ...
287
+ def ClearField(self, field_name: typing.Literal["success", b"success"]) -> None: ...
288
+
212
289
  global___StopRunResponse = StopRunResponse
213
290
 
291
+ @typing.final
214
292
  class PullArtifactsRequest(google.protobuf.message.Message):
215
293
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
294
+
216
295
  RUN_ID_FIELD_NUMBER: builtins.int
217
296
  run_id: builtins.int
218
- def __init__(self,
297
+ def __init__(
298
+ self,
219
299
  *,
220
300
  run_id: builtins.int = ...,
221
- ) -> None: ...
222
- def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
301
+ ) -> None: ...
302
+ def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ...
303
+
223
304
  global___PullArtifactsRequest = PullArtifactsRequest
224
305
 
306
+ @typing.final
225
307
  class PullArtifactsResponse(google.protobuf.message.Message):
226
308
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
309
+
227
310
  URL_FIELD_NUMBER: builtins.int
228
- url: typing.Text
229
- def __init__(self,
311
+ url: builtins.str
312
+ def __init__(
313
+ self,
230
314
  *,
231
- url: typing.Optional[typing.Text] = ...,
232
- ) -> None: ...
233
- def HasField(self, field_name: typing_extensions.Literal["_url",b"_url","url",b"url"]) -> builtins.bool: ...
234
- def ClearField(self, field_name: typing_extensions.Literal["_url",b"_url","url",b"url"]) -> None: ...
235
- def WhichOneof(self, oneof_group: typing_extensions.Literal["_url",b"_url"]) -> typing.Optional[typing_extensions.Literal["url"]]: ...
315
+ url: builtins.str | None = ...,
316
+ ) -> None: ...
317
+ def HasField(self, field_name: typing.Literal["_url", b"_url", "url", b"url"]) -> builtins.bool: ...
318
+ def ClearField(self, field_name: typing.Literal["_url", b"_url", "url", b"url"]) -> None: ...
319
+ def WhichOneof(self, oneof_group: typing.Literal["_url", b"_url"]) -> typing.Literal["url"] | None: ...
320
+
236
321
  global___PullArtifactsResponse = PullArtifactsResponse
322
+
323
+ @typing.final
324
+ class RegisterNodeRequest(google.protobuf.message.Message):
325
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
326
+
327
+ PUBLIC_KEY_FIELD_NUMBER: builtins.int
328
+ public_key: builtins.bytes
329
+ def __init__(
330
+ self,
331
+ *,
332
+ public_key: builtins.bytes = ...,
333
+ ) -> None: ...
334
+ def ClearField(self, field_name: typing.Literal["public_key", b"public_key"]) -> None: ...
335
+
336
+ global___RegisterNodeRequest = RegisterNodeRequest
337
+
338
+ @typing.final
339
+ class RegisterNodeResponse(google.protobuf.message.Message):
340
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
341
+
342
+ NODE_ID_FIELD_NUMBER: builtins.int
343
+ node_id: builtins.int
344
+ def __init__(
345
+ self,
346
+ *,
347
+ node_id: builtins.int | None = ...,
348
+ ) -> None: ...
349
+ def HasField(self, field_name: typing.Literal["_node_id", b"_node_id", "node_id", b"node_id"]) -> builtins.bool: ...
350
+ def ClearField(self, field_name: typing.Literal["_node_id", b"_node_id", "node_id", b"node_id"]) -> None: ...
351
+ def WhichOneof(self, oneof_group: typing.Literal["_node_id", b"_node_id"]) -> typing.Literal["node_id"] | None: ...
352
+
353
+ global___RegisterNodeResponse = RegisterNodeResponse
354
+
355
+ @typing.final
356
+ class UnregisterNodeRequest(google.protobuf.message.Message):
357
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
358
+
359
+ NODE_ID_FIELD_NUMBER: builtins.int
360
+ node_id: builtins.int
361
+ def __init__(
362
+ self,
363
+ *,
364
+ node_id: builtins.int = ...,
365
+ ) -> None: ...
366
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
367
+
368
+ global___UnregisterNodeRequest = UnregisterNodeRequest
369
+
370
+ @typing.final
371
+ class UnregisterNodeResponse(google.protobuf.message.Message):
372
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
373
+
374
+ def __init__(
375
+ self,
376
+ ) -> None: ...
377
+
378
+ global___UnregisterNodeResponse = UnregisterNodeResponse
379
+
380
+ @typing.final
381
+ class ListNodesRequest(google.protobuf.message.Message):
382
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
383
+
384
+ def __init__(
385
+ self,
386
+ ) -> None: ...
387
+
388
+ global___ListNodesRequest = ListNodesRequest
389
+
390
+ @typing.final
391
+ class ListNodesResponse(google.protobuf.message.Message):
392
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
393
+
394
+ NODES_INFO_FIELD_NUMBER: builtins.int
395
+ NOW_FIELD_NUMBER: builtins.int
396
+ now: builtins.str
397
+ @property
398
+ def nodes_info(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.node_pb2.NodeInfo]: ...
399
+ def __init__(
400
+ self,
401
+ *,
402
+ nodes_info: collections.abc.Iterable[flwr.proto.node_pb2.NodeInfo] | None = ...,
403
+ now: builtins.str = ...,
404
+ ) -> None: ...
405
+ def ClearField(self, field_name: typing.Literal["nodes_info", b"nodes_info", "now", b"now"]) -> None: ...
406
+
407
+ global___ListNodesResponse = ListNodesResponse
408
+
409
+ @typing.final
410
+ class ListFederationsRequest(google.protobuf.message.Message):
411
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
412
+
413
+ def __init__(
414
+ self,
415
+ ) -> None: ...
416
+
417
+ global___ListFederationsRequest = ListFederationsRequest
418
+
419
+ @typing.final
420
+ class ListFederationsResponse(google.protobuf.message.Message):
421
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
422
+
423
+ FEDERATIONS_FIELD_NUMBER: builtins.int
424
+ @property
425
+ def federations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.federation_pb2.Federation]: ...
426
+ def __init__(
427
+ self,
428
+ *,
429
+ federations: collections.abc.Iterable[flwr.proto.federation_pb2.Federation] | None = ...,
430
+ ) -> None: ...
431
+ def ClearField(self, field_name: typing.Literal["federations", b"federations"]) -> None: ...
432
+
433
+ global___ListFederationsResponse = ListFederationsResponse
434
+
435
+ @typing.final
436
+ class ShowFederationRequest(google.protobuf.message.Message):
437
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
438
+
439
+ FEDERATION_NAME_FIELD_NUMBER: builtins.int
440
+ federation_name: builtins.str
441
+ def __init__(
442
+ self,
443
+ *,
444
+ federation_name: builtins.str = ...,
445
+ ) -> None: ...
446
+ def ClearField(self, field_name: typing.Literal["federation_name", b"federation_name"]) -> None: ...
447
+
448
+ global___ShowFederationRequest = ShowFederationRequest
449
+
450
+ @typing.final
451
+ class ShowFederationResponse(google.protobuf.message.Message):
452
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
453
+
454
+ FEDERATION_FIELD_NUMBER: builtins.int
455
+ NOW_FIELD_NUMBER: builtins.int
456
+ now: builtins.str
457
+ @property
458
+ def federation(self) -> flwr.proto.federation_pb2.Federation: ...
459
+ def __init__(
460
+ self,
461
+ *,
462
+ federation: flwr.proto.federation_pb2.Federation | None = ...,
463
+ now: builtins.str = ...,
464
+ ) -> None: ...
465
+ def HasField(self, field_name: typing.Literal["federation", b"federation"]) -> builtins.bool: ...
466
+ def ClearField(self, field_name: typing.Literal["federation", b"federation", "now", b"now"]) -> None: ...
467
+
468
+ global___ShowFederationResponse = ShowFederationResponse