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,4 +1,31 @@
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
+
20
+ import abc
21
+ import collections.abc
22
+ import grpc
23
+ import grpc.aio
24
+ import typing
25
+
26
+ _T = typing.TypeVar("_T")
27
+
28
+ class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...
29
+
30
+ class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
31
+ ...
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: flwr/proto/federation.proto
5
+ # Protobuf Python Version: 5.29.0
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'flwr/proto/federation.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
26
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lwr/proto/federation.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x15\x66lwr/proto/node.proto\"s\n\nFederation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bmember_aids\x18\x02 \x03(\t\x12#\n\x05nodes\x18\x03 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x1d\n\x04runs\x18\x04 \x03(\x0b\x32\x0f.flwr.proto.Runb\x06proto3')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.federation_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ DESCRIPTOR._loaded_options = None
36
+ _globals['_FEDERATION']._serialized_start=88
37
+ _globals['_FEDERATION']._serialized_end=203
38
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,56 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
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
+ ==============================================================================
18
+ """
19
+
20
+ import builtins
21
+ import collections.abc
22
+ import flwr.proto.node_pb2
23
+ import flwr.proto.run_pb2
24
+ import google.protobuf.descriptor
25
+ import google.protobuf.internal.containers
26
+ import google.protobuf.message
27
+ import typing
28
+
29
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
30
+
31
+ @typing.final
32
+ class Federation(google.protobuf.message.Message):
33
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
34
+
35
+ NAME_FIELD_NUMBER: builtins.int
36
+ MEMBER_AIDS_FIELD_NUMBER: builtins.int
37
+ NODES_FIELD_NUMBER: builtins.int
38
+ RUNS_FIELD_NUMBER: builtins.int
39
+ name: builtins.str
40
+ @property
41
+ def member_aids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
42
+ @property
43
+ def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.node_pb2.NodeInfo]: ...
44
+ @property
45
+ def runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.run_pb2.Run]: ...
46
+ def __init__(
47
+ self,
48
+ *,
49
+ name: builtins.str = ...,
50
+ member_aids: collections.abc.Iterable[builtins.str] | None = ...,
51
+ nodes: collections.abc.Iterable[flwr.proto.node_pb2.NodeInfo] | None = ...,
52
+ runs: collections.abc.Iterable[flwr.proto.run_pb2.Run] | None = ...,
53
+ ) -> None: ...
54
+ def ClearField(self, field_name: typing.Literal["member_aids", b"member_aids", "name", b"name", "nodes", b"nodes", "runs", b"runs"]) -> None: ...
55
+
56
+ global___Federation = Federation
@@ -0,0 +1,24 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+
7
+ GRPC_GENERATED_VERSION = '1.70.0'
8
+ GRPC_VERSION = grpc.__version__
9
+ _version_not_supported = False
10
+
11
+ try:
12
+ from grpc._utilities import first_version_is_lower
13
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
14
+ except ImportError:
15
+ _version_not_supported = True
16
+
17
+ if _version_not_supported:
18
+ raise RuntimeError(
19
+ f'The grpc package installed is at version {GRPC_VERSION},'
20
+ + f' but the generated code in flwr/proto/federation_pb2_grpc.py depends on'
21
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
22
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
23
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
24
+ )
@@ -0,0 +1,31 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
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
+ ==============================================================================
18
+ """
19
+
20
+ import abc
21
+ import collections.abc
22
+ import grpc
23
+ import grpc.aio
24
+ import typing
25
+
26
+ _T = typing.TypeVar("_T")
27
+
28
+ class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...
29
+
30
+ class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
31
+ ...
flwr/proto/fleet_pb2.py CHANGED
@@ -1,12 +1,22 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
3
4
  # source: flwr/proto/fleet.proto
4
- # Protobuf Python Version: 4.25.1
5
+ # Protobuf Python Version: 5.29.0
5
6
  """Generated protocol buffer code."""
6
7
  from google.protobuf import descriptor as _descriptor
7
8
  from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
8
10
  from google.protobuf import symbol_database as _symbol_database
9
11
  from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'flwr/proto/fleet.proto'
19
+ )
10
20
  # @@protoc_insertion_point(imports)
11
21
 
12
22
  _sym_db = _symbol_database.Default()
@@ -19,35 +29,43 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
19
29
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
20
30
 
21
31
 
22
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x18\x66lwr/proto/message.proto\"/\n\x11\x43reateNodeRequest\x12\x1a\n\x12heartbeat_interval\x18\x01 \x01(\x01\"4\n\x12\x43reateNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"3\n\x11\x44\x65leteNodeRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"\x14\n\x12\x44\x65leteNodeResponse\"J\n\x13PullMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\"\xa2\x01\n\x14PullMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\x97\x01\n\x13PushMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\xc9\x01\n\x14PushMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12>\n\x07results\x18\x02 \x03(\x0b\x32-.flwr.proto.PushMessagesResponse.ResultsEntry\x12\x17\n\x0fobjects_to_push\x18\x03 \x03(\t\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\xca\x06\n\x05\x46leet\x12M\n\nCreateNode\x12\x1d.flwr.proto.CreateNodeRequest\x1a\x1e.flwr.proto.CreateNodeResponse\"\x00\x12M\n\nDeleteNode\x12\x1d.flwr.proto.DeleteNodeRequest\x1a\x1e.flwr.proto.DeleteNodeResponse\"\x00\x12\x62\n\x11SendNodeHeartbeat\x12$.flwr.proto.SendNodeHeartbeatRequest\x1a%.flwr.proto.SendNodeHeartbeatResponse\"\x00\x12S\n\x0cPullMessages\x12\x1f.flwr.proto.PullMessagesRequest\x1a .flwr.proto.PullMessagesResponse\"\x00\x12S\n\x0cPushMessages\x12\x1f.flwr.proto.PushMessagesRequest\x1a .flwr.proto.PushMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x18\x66lwr/proto/message.proto\".\n\x18RegisterNodeFleetRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\",\n\x19RegisterNodeFleetResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"E\n\x13\x41\x63tivateNodeRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x1a\n\x12heartbeat_interval\x18\x02 \x01(\x01\"\'\n\x14\x41\x63tivateNodeResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"(\n\x15\x44\x65\x61\x63tivateNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x18\n\x16\x44\x65\x61\x63tivateNodeResponse\"-\n\x1aUnregisterNodeFleetRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x1d\n\x1bUnregisterNodeFleetResponse\"J\n\x13PullMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\"\xa2\x01\n\x14PullMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\x97\x01\n\x13PushMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\xc9\x01\n\x14PushMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12>\n\x07results\x18\x02 \x03(\x0b\x32-.flwr.proto.PushMessagesResponse.ResultsEntry\x12\x17\n\x0fobjects_to_push\x18\x03 \x03(\t\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\xa0\x08\n\x05\x46leet\x12]\n\x0cRegisterNode\x12$.flwr.proto.RegisterNodeFleetRequest\x1a%.flwr.proto.RegisterNodeFleetResponse\"\x00\x12S\n\x0c\x41\x63tivateNode\x12\x1f.flwr.proto.ActivateNodeRequest\x1a .flwr.proto.ActivateNodeResponse\"\x00\x12Y\n\x0e\x44\x65\x61\x63tivateNode\x12!.flwr.proto.DeactivateNodeRequest\x1a\".flwr.proto.DeactivateNodeResponse\"\x00\x12\x63\n\x0eUnregisterNode\x12&.flwr.proto.UnregisterNodeFleetRequest\x1a\'.flwr.proto.UnregisterNodeFleetResponse\"\x00\x12\x62\n\x11SendNodeHeartbeat\x12$.flwr.proto.SendNodeHeartbeatRequest\x1a%.flwr.proto.SendNodeHeartbeatResponse\"\x00\x12S\n\x0cPullMessages\x12\x1f.flwr.proto.PullMessagesRequest\x1a .flwr.proto.PullMessagesResponse\"\x00\x12S\n\x0cPushMessages\x12\x1f.flwr.proto.PushMessagesRequest\x1a .flwr.proto.PushMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
23
33
 
24
34
  _globals = globals()
25
35
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
26
36
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fleet_pb2', _globals)
27
- if _descriptor._USE_C_DESCRIPTORS == False:
28
- DESCRIPTOR._options = None
29
- _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._options = None
37
+ if not _descriptor._USE_C_DESCRIPTORS:
38
+ DESCRIPTOR._loaded_options = None
39
+ _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._loaded_options = None
30
40
  _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_options = b'8\001'
31
- _globals['_CREATENODEREQUEST']._serialized_start=159
32
- _globals['_CREATENODEREQUEST']._serialized_end=206
33
- _globals['_CREATENODERESPONSE']._serialized_start=208
34
- _globals['_CREATENODERESPONSE']._serialized_end=260
35
- _globals['_DELETENODEREQUEST']._serialized_start=262
36
- _globals['_DELETENODEREQUEST']._serialized_end=313
37
- _globals['_DELETENODERESPONSE']._serialized_start=315
38
- _globals['_DELETENODERESPONSE']._serialized_end=335
39
- _globals['_PULLMESSAGESREQUEST']._serialized_start=337
40
- _globals['_PULLMESSAGESREQUEST']._serialized_end=411
41
- _globals['_PULLMESSAGESRESPONSE']._serialized_start=414
42
- _globals['_PULLMESSAGESRESPONSE']._serialized_end=576
43
- _globals['_PUSHMESSAGESREQUEST']._serialized_start=579
44
- _globals['_PUSHMESSAGESREQUEST']._serialized_end=730
45
- _globals['_PUSHMESSAGESRESPONSE']._serialized_start=733
46
- _globals['_PUSHMESSAGESRESPONSE']._serialized_end=934
47
- _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_start=888
48
- _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_end=934
49
- _globals['_RECONNECT']._serialized_start=936
50
- _globals['_RECONNECT']._serialized_end=966
51
- _globals['_FLEET']._serialized_start=969
52
- _globals['_FLEET']._serialized_end=1811
41
+ _globals['_REGISTERNODEFLEETREQUEST']._serialized_start=159
42
+ _globals['_REGISTERNODEFLEETREQUEST']._serialized_end=205
43
+ _globals['_REGISTERNODEFLEETRESPONSE']._serialized_start=207
44
+ _globals['_REGISTERNODEFLEETRESPONSE']._serialized_end=251
45
+ _globals['_ACTIVATENODEREQUEST']._serialized_start=253
46
+ _globals['_ACTIVATENODEREQUEST']._serialized_end=322
47
+ _globals['_ACTIVATENODERESPONSE']._serialized_start=324
48
+ _globals['_ACTIVATENODERESPONSE']._serialized_end=363
49
+ _globals['_DEACTIVATENODEREQUEST']._serialized_start=365
50
+ _globals['_DEACTIVATENODEREQUEST']._serialized_end=405
51
+ _globals['_DEACTIVATENODERESPONSE']._serialized_start=407
52
+ _globals['_DEACTIVATENODERESPONSE']._serialized_end=431
53
+ _globals['_UNREGISTERNODEFLEETREQUEST']._serialized_start=433
54
+ _globals['_UNREGISTERNODEFLEETREQUEST']._serialized_end=478
55
+ _globals['_UNREGISTERNODEFLEETRESPONSE']._serialized_start=480
56
+ _globals['_UNREGISTERNODEFLEETRESPONSE']._serialized_end=509
57
+ _globals['_PULLMESSAGESREQUEST']._serialized_start=511
58
+ _globals['_PULLMESSAGESREQUEST']._serialized_end=585
59
+ _globals['_PULLMESSAGESRESPONSE']._serialized_start=588
60
+ _globals['_PULLMESSAGESRESPONSE']._serialized_end=750
61
+ _globals['_PUSHMESSAGESREQUEST']._serialized_start=753
62
+ _globals['_PUSHMESSAGESREQUEST']._serialized_end=904
63
+ _globals['_PUSHMESSAGESRESPONSE']._serialized_start=907
64
+ _globals['_PUSHMESSAGESRESPONSE']._serialized_end=1108
65
+ _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_start=1062
66
+ _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_end=1108
67
+ _globals['_RECONNECT']._serialized_start=1110
68
+ _globals['_RECONNECT']._serialized_end=1140
69
+ _globals['_FLEET']._serialized_start=1143
70
+ _globals['_FLEET']._serialized_end=2199
53
71
  # @@protoc_insertion_point(module_scope)
flwr/proto/fleet_pb2.pyi CHANGED
@@ -1,83 +1,181 @@
1
1
  """
2
2
  @generated by mypy-protobuf. Do not edit manually!
3
3
  isort:skip_file
4
+ Copyright 2022 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.message_pb2
7
23
  import flwr.proto.node_pb2
8
24
  import google.protobuf.descriptor
9
25
  import google.protobuf.internal.containers
10
26
  import google.protobuf.message
11
27
  import typing
12
- import typing_extensions
13
28
 
14
29
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
30
 
16
- class CreateNodeRequest(google.protobuf.message.Message):
17
- """CreateNode messages"""
31
+ @typing.final
32
+ class RegisterNodeFleetRequest(google.protobuf.message.Message):
33
+ """RegisterNode messages (add prefix to avoid name clash)"""
34
+
35
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
36
+
37
+ PUBLIC_KEY_FIELD_NUMBER: builtins.int
38
+ public_key: builtins.bytes
39
+ def __init__(
40
+ self,
41
+ *,
42
+ public_key: builtins.bytes = ...,
43
+ ) -> None: ...
44
+ def ClearField(self, field_name: typing.Literal["public_key", b"public_key"]) -> None: ...
45
+
46
+ global___RegisterNodeFleetRequest = RegisterNodeFleetRequest
47
+
48
+ @typing.final
49
+ class RegisterNodeFleetResponse(google.protobuf.message.Message):
50
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
51
+
52
+ NODE_ID_FIELD_NUMBER: builtins.int
53
+ node_id: builtins.int
54
+ def __init__(
55
+ self,
56
+ *,
57
+ node_id: builtins.int = ...,
58
+ ) -> None: ...
59
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
60
+
61
+ global___RegisterNodeFleetResponse = RegisterNodeFleetResponse
62
+
63
+ @typing.final
64
+ class ActivateNodeRequest(google.protobuf.message.Message):
65
+ """ActivateNode messages"""
66
+
18
67
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
68
+
69
+ PUBLIC_KEY_FIELD_NUMBER: builtins.int
19
70
  HEARTBEAT_INTERVAL_FIELD_NUMBER: builtins.int
71
+ public_key: builtins.bytes
20
72
  heartbeat_interval: builtins.float
21
- def __init__(self,
73
+ def __init__(
74
+ self,
22
75
  *,
76
+ public_key: builtins.bytes = ...,
23
77
  heartbeat_interval: builtins.float = ...,
24
- ) -> None: ...
25
- def ClearField(self, field_name: typing_extensions.Literal["heartbeat_interval",b"heartbeat_interval"]) -> None: ...
26
- global___CreateNodeRequest = CreateNodeRequest
78
+ ) -> None: ...
79
+ def ClearField(self, field_name: typing.Literal["heartbeat_interval", b"heartbeat_interval", "public_key", b"public_key"]) -> None: ...
27
80
 
28
- class CreateNodeResponse(google.protobuf.message.Message):
81
+ global___ActivateNodeRequest = ActivateNodeRequest
82
+
83
+ @typing.final
84
+ class ActivateNodeResponse(google.protobuf.message.Message):
29
85
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
30
- NODE_FIELD_NUMBER: builtins.int
31
- @property
32
- def node(self) -> flwr.proto.node_pb2.Node: ...
33
- def __init__(self,
86
+
87
+ NODE_ID_FIELD_NUMBER: builtins.int
88
+ node_id: builtins.int
89
+ def __init__(
90
+ self,
34
91
  *,
35
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
36
- ) -> None: ...
37
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
38
- def ClearField(self, field_name: typing_extensions.Literal["node",b"node"]) -> None: ...
39
- global___CreateNodeResponse = CreateNodeResponse
92
+ node_id: builtins.int = ...,
93
+ ) -> None: ...
94
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
95
+
96
+ global___ActivateNodeResponse = ActivateNodeResponse
97
+
98
+ @typing.final
99
+ class DeactivateNodeRequest(google.protobuf.message.Message):
100
+ """DeactivateNode messages"""
40
101
 
41
- class DeleteNodeRequest(google.protobuf.message.Message):
42
- """DeleteNode messages"""
43
102
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
44
- NODE_FIELD_NUMBER: builtins.int
45
- @property
46
- def node(self) -> flwr.proto.node_pb2.Node: ...
47
- def __init__(self,
103
+
104
+ NODE_ID_FIELD_NUMBER: builtins.int
105
+ node_id: builtins.int
106
+ def __init__(
107
+ self,
48
108
  *,
49
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
50
- ) -> None: ...
51
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
52
- def ClearField(self, field_name: typing_extensions.Literal["node",b"node"]) -> None: ...
53
- global___DeleteNodeRequest = DeleteNodeRequest
109
+ node_id: builtins.int = ...,
110
+ ) -> None: ...
111
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
112
+
113
+ global___DeactivateNodeRequest = DeactivateNodeRequest
54
114
 
55
- class DeleteNodeResponse(google.protobuf.message.Message):
115
+ @typing.final
116
+ class DeactivateNodeResponse(google.protobuf.message.Message):
56
117
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
57
- def __init__(self,
58
- ) -> None: ...
59
- global___DeleteNodeResponse = DeleteNodeResponse
60
118
 
119
+ def __init__(
120
+ self,
121
+ ) -> None: ...
122
+
123
+ global___DeactivateNodeResponse = DeactivateNodeResponse
124
+
125
+ @typing.final
126
+ class UnregisterNodeFleetRequest(google.protobuf.message.Message):
127
+ """UnregisterNode messages (add prefix to avoid name clash)"""
128
+
129
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
130
+
131
+ NODE_ID_FIELD_NUMBER: builtins.int
132
+ node_id: builtins.int
133
+ def __init__(
134
+ self,
135
+ *,
136
+ node_id: builtins.int = ...,
137
+ ) -> None: ...
138
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
139
+
140
+ global___UnregisterNodeFleetRequest = UnregisterNodeFleetRequest
141
+
142
+ @typing.final
143
+ class UnregisterNodeFleetResponse(google.protobuf.message.Message):
144
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
145
+
146
+ def __init__(
147
+ self,
148
+ ) -> None: ...
149
+
150
+ global___UnregisterNodeFleetResponse = UnregisterNodeFleetResponse
151
+
152
+ @typing.final
61
153
  class PullMessagesRequest(google.protobuf.message.Message):
62
154
  """PullMessages messages"""
155
+
63
156
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
157
+
64
158
  NODE_FIELD_NUMBER: builtins.int
65
159
  MESSAGE_IDS_FIELD_NUMBER: builtins.int
66
160
  @property
67
161
  def node(self) -> flwr.proto.node_pb2.Node: ...
68
162
  @property
69
- def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
70
- def __init__(self,
163
+ def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
164
+ def __init__(
165
+ self,
71
166
  *,
72
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
73
- message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
74
- ) -> None: ...
75
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
76
- def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","node",b"node"]) -> None: ...
167
+ node: flwr.proto.node_pb2.Node | None = ...,
168
+ message_ids: collections.abc.Iterable[builtins.str] | None = ...,
169
+ ) -> None: ...
170
+ def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
171
+ def ClearField(self, field_name: typing.Literal["message_ids", b"message_ids", "node", b"node"]) -> None: ...
172
+
77
173
  global___PullMessagesRequest = PullMessagesRequest
78
174
 
175
+ @typing.final
79
176
  class PullMessagesResponse(google.protobuf.message.Message):
80
177
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
178
+
81
179
  RECONNECT_FIELD_NUMBER: builtins.int
82
180
  MESSAGES_LIST_FIELD_NUMBER: builtins.int
83
181
  MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
@@ -87,19 +185,24 @@ class PullMessagesResponse(google.protobuf.message.Message):
87
185
  def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
88
186
  @property
89
187
  def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
90
- def __init__(self,
188
+ def __init__(
189
+ self,
91
190
  *,
92
- reconnect: typing.Optional[global___Reconnect] = ...,
93
- messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
94
- message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
95
- ) -> None: ...
96
- def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
97
- def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","reconnect",b"reconnect"]) -> None: ...
191
+ reconnect: global___Reconnect | None = ...,
192
+ messages_list: collections.abc.Iterable[flwr.proto.message_pb2.Message] | None = ...,
193
+ message_object_trees: collections.abc.Iterable[flwr.proto.message_pb2.ObjectTree] | None = ...,
194
+ ) -> None: ...
195
+ def HasField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> builtins.bool: ...
196
+ def ClearField(self, field_name: typing.Literal["message_object_trees", b"message_object_trees", "messages_list", b"messages_list", "reconnect", b"reconnect"]) -> None: ...
197
+
98
198
  global___PullMessagesResponse = PullMessagesResponse
99
199
 
200
+ @typing.final
100
201
  class PushMessagesRequest(google.protobuf.message.Message):
101
202
  """PushMessages messages"""
203
+
102
204
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
205
+
103
206
  NODE_FIELD_NUMBER: builtins.int
104
207
  MESSAGES_LIST_FIELD_NUMBER: builtins.int
105
208
  MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
@@ -109,30 +212,37 @@ class PushMessagesRequest(google.protobuf.message.Message):
109
212
  def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
110
213
  @property
111
214
  def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
112
- def __init__(self,
215
+ def __init__(
216
+ self,
113
217
  *,
114
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
115
- messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
116
- message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
117
- ) -> None: ...
118
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
119
- def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","node",b"node"]) -> None: ...
218
+ node: flwr.proto.node_pb2.Node | None = ...,
219
+ messages_list: collections.abc.Iterable[flwr.proto.message_pb2.Message] | None = ...,
220
+ message_object_trees: collections.abc.Iterable[flwr.proto.message_pb2.ObjectTree] | None = ...,
221
+ ) -> None: ...
222
+ def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
223
+ def ClearField(self, field_name: typing.Literal["message_object_trees", b"message_object_trees", "messages_list", b"messages_list", "node", b"node"]) -> None: ...
224
+
120
225
  global___PushMessagesRequest = PushMessagesRequest
121
226
 
227
+ @typing.final
122
228
  class PushMessagesResponse(google.protobuf.message.Message):
123
229
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
230
+
231
+ @typing.final
124
232
  class ResultsEntry(google.protobuf.message.Message):
125
233
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
234
+
126
235
  KEY_FIELD_NUMBER: builtins.int
127
236
  VALUE_FIELD_NUMBER: builtins.int
128
- key: typing.Text
237
+ key: builtins.str
129
238
  value: builtins.int
130
- def __init__(self,
239
+ def __init__(
240
+ self,
131
241
  *,
132
- key: typing.Text = ...,
242
+ key: builtins.str = ...,
133
243
  value: builtins.int = ...,
134
- ) -> None: ...
135
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
244
+ ) -> None: ...
245
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
136
246
 
137
247
  RECONNECT_FIELD_NUMBER: builtins.int
138
248
  RESULTS_FIELD_NUMBER: builtins.int
@@ -140,26 +250,32 @@ class PushMessagesResponse(google.protobuf.message.Message):
140
250
  @property
141
251
  def reconnect(self) -> global___Reconnect: ...
142
252
  @property
143
- def results(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, builtins.int]: ...
253
+ def results(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]: ...
144
254
  @property
145
- def objects_to_push(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
146
- def __init__(self,
255
+ def objects_to_push(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
256
+ def __init__(
257
+ self,
147
258
  *,
148
- reconnect: typing.Optional[global___Reconnect] = ...,
149
- results: typing.Optional[typing.Mapping[typing.Text, builtins.int]] = ...,
150
- objects_to_push: typing.Optional[typing.Iterable[typing.Text]] = ...,
151
- ) -> None: ...
152
- def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
153
- def ClearField(self, field_name: typing_extensions.Literal["objects_to_push",b"objects_to_push","reconnect",b"reconnect","results",b"results"]) -> None: ...
259
+ reconnect: global___Reconnect | None = ...,
260
+ results: collections.abc.Mapping[builtins.str, builtins.int] | None = ...,
261
+ objects_to_push: collections.abc.Iterable[builtins.str] | None = ...,
262
+ ) -> None: ...
263
+ def HasField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> builtins.bool: ...
264
+ def ClearField(self, field_name: typing.Literal["objects_to_push", b"objects_to_push", "reconnect", b"reconnect", "results", b"results"]) -> None: ...
265
+
154
266
  global___PushMessagesResponse = PushMessagesResponse
155
267
 
268
+ @typing.final
156
269
  class Reconnect(google.protobuf.message.Message):
157
270
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
271
+
158
272
  RECONNECT_FIELD_NUMBER: builtins.int
159
273
  reconnect: builtins.int
160
- def __init__(self,
274
+ def __init__(
275
+ self,
161
276
  *,
162
277
  reconnect: builtins.int = ...,
163
- ) -> None: ...
164
- def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> None: ...
278
+ ) -> None: ...
279
+ def ClearField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> None: ...
280
+
165
281
  global___Reconnect = Reconnect