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,8 +1,24 @@
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.error_pb2
7
23
  import flwr.proto.node_pb2
8
24
  import flwr.proto.recorddict_pb2
@@ -11,12 +27,13 @@ import google.protobuf.descriptor
11
27
  import google.protobuf.internal.containers
12
28
  import google.protobuf.message
13
29
  import typing
14
- import typing_extensions
15
30
 
16
31
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
17
32
 
33
+ @typing.final
18
34
  class Message(google.protobuf.message.Message):
19
35
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
36
+
20
37
  METADATA_FIELD_NUMBER: builtins.int
21
38
  CONTENT_FIELD_NUMBER: builtins.int
22
39
  ERROR_FIELD_NUMBER: builtins.int
@@ -26,47 +43,57 @@ class Message(google.protobuf.message.Message):
26
43
  def content(self) -> flwr.proto.recorddict_pb2.RecordDict: ...
27
44
  @property
28
45
  def error(self) -> flwr.proto.error_pb2.Error: ...
29
- def __init__(self,
46
+ def __init__(
47
+ self,
30
48
  *,
31
- metadata: typing.Optional[global___Metadata] = ...,
32
- content: typing.Optional[flwr.proto.recorddict_pb2.RecordDict] = ...,
33
- error: typing.Optional[flwr.proto.error_pb2.Error] = ...,
34
- ) -> None: ...
35
- def HasField(self, field_name: typing_extensions.Literal["content",b"content","error",b"error","metadata",b"metadata"]) -> builtins.bool: ...
36
- def ClearField(self, field_name: typing_extensions.Literal["content",b"content","error",b"error","metadata",b"metadata"]) -> None: ...
49
+ metadata: global___Metadata | None = ...,
50
+ content: flwr.proto.recorddict_pb2.RecordDict | None = ...,
51
+ error: flwr.proto.error_pb2.Error | None = ...,
52
+ ) -> None: ...
53
+ def HasField(self, field_name: typing.Literal["content", b"content", "error", b"error", "metadata", b"metadata"]) -> builtins.bool: ...
54
+ def ClearField(self, field_name: typing.Literal["content", b"content", "error", b"error", "metadata", b"metadata"]) -> None: ...
55
+
37
56
  global___Message = Message
38
57
 
58
+ @typing.final
39
59
  class Context(google.protobuf.message.Message):
40
60
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
61
+
62
+ @typing.final
41
63
  class NodeConfigEntry(google.protobuf.message.Message):
42
64
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
65
+
43
66
  KEY_FIELD_NUMBER: builtins.int
44
67
  VALUE_FIELD_NUMBER: builtins.int
45
- key: typing.Text
68
+ key: builtins.str
46
69
  @property
47
70
  def value(self) -> flwr.proto.transport_pb2.Scalar: ...
48
- def __init__(self,
71
+ def __init__(
72
+ self,
49
73
  *,
50
- key: typing.Text = ...,
51
- value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
52
- ) -> None: ...
53
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
54
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
74
+ key: builtins.str = ...,
75
+ value: flwr.proto.transport_pb2.Scalar | None = ...,
76
+ ) -> None: ...
77
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
78
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
55
79
 
80
+ @typing.final
56
81
  class RunConfigEntry(google.protobuf.message.Message):
57
82
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
83
+
58
84
  KEY_FIELD_NUMBER: builtins.int
59
85
  VALUE_FIELD_NUMBER: builtins.int
60
- key: typing.Text
86
+ key: builtins.str
61
87
  @property
62
88
  def value(self) -> flwr.proto.transport_pb2.Scalar: ...
63
- def __init__(self,
89
+ def __init__(
90
+ self,
64
91
  *,
65
- key: typing.Text = ...,
66
- value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
67
- ) -> None: ...
68
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
69
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
92
+ key: builtins.str = ...,
93
+ value: flwr.proto.transport_pb2.Scalar | None = ...,
94
+ ) -> None: ...
95
+ def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
96
+ def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
70
97
 
71
98
  RUN_ID_FIELD_NUMBER: builtins.int
72
99
  NODE_ID_FIELD_NUMBER: builtins.int
@@ -76,25 +103,29 @@ class Context(google.protobuf.message.Message):
76
103
  run_id: builtins.int
77
104
  node_id: builtins.int
78
105
  @property
79
- def node_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
106
+ def node_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ...
80
107
  @property
81
108
  def state(self) -> flwr.proto.recorddict_pb2.RecordDict: ...
82
109
  @property
83
- def run_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
84
- def __init__(self,
110
+ def run_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ...
111
+ def __init__(
112
+ self,
85
113
  *,
86
114
  run_id: builtins.int = ...,
87
115
  node_id: builtins.int = ...,
88
- node_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
89
- state: typing.Optional[flwr.proto.recorddict_pb2.RecordDict] = ...,
90
- run_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
91
- ) -> None: ...
92
- def HasField(self, field_name: typing_extensions.Literal["state",b"state"]) -> builtins.bool: ...
93
- def ClearField(self, field_name: typing_extensions.Literal["node_config",b"node_config","node_id",b"node_id","run_config",b"run_config","run_id",b"run_id","state",b"state"]) -> None: ...
116
+ node_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ...,
117
+ state: flwr.proto.recorddict_pb2.RecordDict | None = ...,
118
+ run_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ...,
119
+ ) -> None: ...
120
+ def HasField(self, field_name: typing.Literal["state", b"state"]) -> builtins.bool: ...
121
+ def ClearField(self, field_name: typing.Literal["node_config", b"node_config", "node_id", b"node_id", "run_config", b"run_config", "run_id", b"run_id", "state", b"state"]) -> None: ...
122
+
94
123
  global___Context = Context
95
124
 
125
+ @typing.final
96
126
  class Metadata(google.protobuf.message.Message):
97
127
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
128
+
98
129
  RUN_ID_FIELD_NUMBER: builtins.int
99
130
  MESSAGE_ID_FIELD_NUMBER: builtins.int
100
131
  SRC_NODE_ID_FIELD_NUMBER: builtins.int
@@ -105,149 +136,186 @@ class Metadata(google.protobuf.message.Message):
105
136
  MESSAGE_TYPE_FIELD_NUMBER: builtins.int
106
137
  CREATED_AT_FIELD_NUMBER: builtins.int
107
138
  run_id: builtins.int
108
- message_id: typing.Text
139
+ message_id: builtins.str
109
140
  src_node_id: builtins.int
110
141
  dst_node_id: builtins.int
111
- reply_to_message_id: typing.Text
112
- group_id: typing.Text
142
+ reply_to_message_id: builtins.str
143
+ group_id: builtins.str
113
144
  ttl: builtins.float
114
- message_type: typing.Text
145
+ message_type: builtins.str
115
146
  created_at: builtins.float
116
- def __init__(self,
147
+ def __init__(
148
+ self,
117
149
  *,
118
150
  run_id: builtins.int = ...,
119
- message_id: typing.Text = ...,
151
+ message_id: builtins.str = ...,
120
152
  src_node_id: builtins.int = ...,
121
153
  dst_node_id: builtins.int = ...,
122
- reply_to_message_id: typing.Text = ...,
123
- group_id: typing.Text = ...,
154
+ reply_to_message_id: builtins.str = ...,
155
+ group_id: builtins.str = ...,
124
156
  ttl: builtins.float = ...,
125
- message_type: typing.Text = ...,
157
+ message_type: builtins.str = ...,
126
158
  created_at: builtins.float = ...,
127
- ) -> None: ...
128
- def ClearField(self, field_name: typing_extensions.Literal["created_at",b"created_at","dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","reply_to_message_id",b"reply_to_message_id","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> None: ...
159
+ ) -> None: ...
160
+ def ClearField(self, field_name: typing.Literal["created_at", b"created_at", "dst_node_id", b"dst_node_id", "group_id", b"group_id", "message_id", b"message_id", "message_type", b"message_type", "reply_to_message_id", b"reply_to_message_id", "run_id", b"run_id", "src_node_id", b"src_node_id", "ttl", b"ttl"]) -> None: ...
161
+
129
162
  global___Metadata = Metadata
130
163
 
164
+ @typing.final
131
165
  class ObjectIDs(google.protobuf.message.Message):
132
166
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
167
+
133
168
  OBJECT_IDS_FIELD_NUMBER: builtins.int
134
169
  @property
135
- def object_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
136
- def __init__(self,
170
+ def object_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
171
+ def __init__(
172
+ self,
137
173
  *,
138
- object_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
139
- ) -> None: ...
140
- def ClearField(self, field_name: typing_extensions.Literal["object_ids",b"object_ids"]) -> None: ...
174
+ object_ids: collections.abc.Iterable[builtins.str] | None = ...,
175
+ ) -> None: ...
176
+ def ClearField(self, field_name: typing.Literal["object_ids", b"object_ids"]) -> None: ...
177
+
141
178
  global___ObjectIDs = ObjectIDs
142
179
 
180
+ @typing.final
143
181
  class ObjectTree(google.protobuf.message.Message):
144
182
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
183
+
145
184
  OBJECT_ID_FIELD_NUMBER: builtins.int
146
185
  CHILDREN_FIELD_NUMBER: builtins.int
147
- object_id: typing.Text
186
+ object_id: builtins.str
148
187
  @property
149
188
  def children(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ObjectTree]: ...
150
- def __init__(self,
189
+ def __init__(
190
+ self,
151
191
  *,
152
- object_id: typing.Text = ...,
153
- children: typing.Optional[typing.Iterable[global___ObjectTree]] = ...,
154
- ) -> None: ...
155
- def ClearField(self, field_name: typing_extensions.Literal["children",b"children","object_id",b"object_id"]) -> None: ...
192
+ object_id: builtins.str = ...,
193
+ children: collections.abc.Iterable[global___ObjectTree] | None = ...,
194
+ ) -> None: ...
195
+ def ClearField(self, field_name: typing.Literal["children", b"children", "object_id", b"object_id"]) -> None: ...
196
+
156
197
  global___ObjectTree = ObjectTree
157
198
 
199
+ @typing.final
158
200
  class PushObjectRequest(google.protobuf.message.Message):
159
201
  """PushObject messages"""
202
+
160
203
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
204
+
161
205
  NODE_FIELD_NUMBER: builtins.int
162
206
  RUN_ID_FIELD_NUMBER: builtins.int
163
207
  OBJECT_ID_FIELD_NUMBER: builtins.int
164
208
  OBJECT_CONTENT_FIELD_NUMBER: builtins.int
165
- @property
166
- def node(self) -> flwr.proto.node_pb2.Node: ...
167
209
  run_id: builtins.int
168
- object_id: typing.Text
210
+ object_id: builtins.str
169
211
  object_content: builtins.bytes
170
- def __init__(self,
212
+ @property
213
+ def node(self) -> flwr.proto.node_pb2.Node: ...
214
+ def __init__(
215
+ self,
171
216
  *,
172
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
217
+ node: flwr.proto.node_pb2.Node | None = ...,
173
218
  run_id: builtins.int = ...,
174
- object_id: typing.Text = ...,
219
+ object_id: builtins.str = ...,
175
220
  object_content: builtins.bytes = ...,
176
- ) -> None: ...
177
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
178
- def ClearField(self, field_name: typing_extensions.Literal["node",b"node","object_content",b"object_content","object_id",b"object_id","run_id",b"run_id"]) -> None: ...
221
+ ) -> None: ...
222
+ def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
223
+ def ClearField(self, field_name: typing.Literal["node", b"node", "object_content", b"object_content", "object_id", b"object_id", "run_id", b"run_id"]) -> None: ...
224
+
179
225
  global___PushObjectRequest = PushObjectRequest
180
226
 
227
+ @typing.final
181
228
  class PushObjectResponse(google.protobuf.message.Message):
182
229
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
230
+
183
231
  STORED_FIELD_NUMBER: builtins.int
184
232
  stored: builtins.bool
185
- def __init__(self,
233
+ def __init__(
234
+ self,
186
235
  *,
187
236
  stored: builtins.bool = ...,
188
- ) -> None: ...
189
- def ClearField(self, field_name: typing_extensions.Literal["stored",b"stored"]) -> None: ...
237
+ ) -> None: ...
238
+ def ClearField(self, field_name: typing.Literal["stored", b"stored"]) -> None: ...
239
+
190
240
  global___PushObjectResponse = PushObjectResponse
191
241
 
242
+ @typing.final
192
243
  class PullObjectRequest(google.protobuf.message.Message):
193
244
  """PullObject messages"""
245
+
194
246
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
247
+
195
248
  NODE_FIELD_NUMBER: builtins.int
196
249
  RUN_ID_FIELD_NUMBER: builtins.int
197
250
  OBJECT_ID_FIELD_NUMBER: builtins.int
251
+ run_id: builtins.int
252
+ object_id: builtins.str
198
253
  @property
199
254
  def node(self) -> flwr.proto.node_pb2.Node: ...
200
- run_id: builtins.int
201
- object_id: typing.Text
202
- def __init__(self,
255
+ def __init__(
256
+ self,
203
257
  *,
204
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
258
+ node: flwr.proto.node_pb2.Node | None = ...,
205
259
  run_id: builtins.int = ...,
206
- object_id: typing.Text = ...,
207
- ) -> None: ...
208
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
209
- def ClearField(self, field_name: typing_extensions.Literal["node",b"node","object_id",b"object_id","run_id",b"run_id"]) -> None: ...
260
+ object_id: builtins.str = ...,
261
+ ) -> None: ...
262
+ def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
263
+ def ClearField(self, field_name: typing.Literal["node", b"node", "object_id", b"object_id", "run_id", b"run_id"]) -> None: ...
264
+
210
265
  global___PullObjectRequest = PullObjectRequest
211
266
 
267
+ @typing.final
212
268
  class PullObjectResponse(google.protobuf.message.Message):
213
269
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
270
+
214
271
  OBJECT_FOUND_FIELD_NUMBER: builtins.int
215
272
  OBJECT_AVAILABLE_FIELD_NUMBER: builtins.int
216
273
  OBJECT_CONTENT_FIELD_NUMBER: builtins.int
217
274
  object_found: builtins.bool
218
275
  object_available: builtins.bool
219
276
  object_content: builtins.bytes
220
- def __init__(self,
277
+ def __init__(
278
+ self,
221
279
  *,
222
280
  object_found: builtins.bool = ...,
223
281
  object_available: builtins.bool = ...,
224
282
  object_content: builtins.bytes = ...,
225
- ) -> None: ...
226
- def ClearField(self, field_name: typing_extensions.Literal["object_available",b"object_available","object_content",b"object_content","object_found",b"object_found"]) -> None: ...
283
+ ) -> None: ...
284
+ def ClearField(self, field_name: typing.Literal["object_available", b"object_available", "object_content", b"object_content", "object_found", b"object_found"]) -> None: ...
285
+
227
286
  global___PullObjectResponse = PullObjectResponse
228
287
 
288
+ @typing.final
229
289
  class ConfirmMessageReceivedRequest(google.protobuf.message.Message):
230
290
  """ConfirmMessageReceived messages"""
291
+
231
292
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
293
+
232
294
  NODE_FIELD_NUMBER: builtins.int
233
295
  RUN_ID_FIELD_NUMBER: builtins.int
234
296
  MESSAGE_OBJECT_ID_FIELD_NUMBER: builtins.int
297
+ run_id: builtins.int
298
+ message_object_id: builtins.str
235
299
  @property
236
300
  def node(self) -> flwr.proto.node_pb2.Node: ...
237
- run_id: builtins.int
238
- message_object_id: typing.Text
239
- def __init__(self,
301
+ def __init__(
302
+ self,
240
303
  *,
241
- node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
304
+ node: flwr.proto.node_pb2.Node | None = ...,
242
305
  run_id: builtins.int = ...,
243
- message_object_id: typing.Text = ...,
244
- ) -> None: ...
245
- def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
246
- def ClearField(self, field_name: typing_extensions.Literal["message_object_id",b"message_object_id","node",b"node","run_id",b"run_id"]) -> None: ...
306
+ message_object_id: builtins.str = ...,
307
+ ) -> None: ...
308
+ def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
309
+ def ClearField(self, field_name: typing.Literal["message_object_id", b"message_object_id", "node", b"node", "run_id", b"run_id"]) -> None: ...
310
+
247
311
  global___ConfirmMessageReceivedRequest = ConfirmMessageReceivedRequest
248
312
 
313
+ @typing.final
249
314
  class ConfirmMessageReceivedResponse(google.protobuf.message.Message):
250
315
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
251
- def __init__(self,
252
- ) -> None: ...
316
+
317
+ def __init__(
318
+ self,
319
+ ) -> None: ...
320
+
253
321
  global___ConfirmMessageReceivedResponse = ConfirmMessageReceivedResponse
@@ -1,4 +1,24 @@
1
1
  # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
2
  """Client and server classes corresponding to protobuf-defined services."""
3
3
  import grpc
4
+ import warnings
4
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/message_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
+ )
@@ -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
+ ...
flwr/proto/node_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/node.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/node.proto'
19
+ )
10
20
  # @@protoc_insertion_point(imports)
11
21
 
12
22
  _sym_db = _symbol_database.Default()
@@ -14,13 +24,15 @@ _sym_db = _symbol_database.Default()
14
24
 
15
25
 
16
26
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"\x17\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x62\x06proto3')
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"\x17\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\xe7\x02\n\x08NodeInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x11\n\towner_aid\x18\x02 \x01(\t\x12\x12\n\nowner_name\x18\x03 \x01(\t\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x15\n\rregistered_at\x18\x05 \x01(\t\x12\x1e\n\x11last_activated_at\x18\x06 \x01(\tH\x00\x88\x01\x01\x12 \n\x13last_deactivated_at\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x0funregistered_at\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0conline_until\x18\t \x01(\x01H\x03\x88\x01\x01\x12\x1a\n\x12heartbeat_interval\x18\n \x01(\x01\x12\x12\n\npublic_key\x18\x0b \x01(\x0c\x42\x14\n\x12_last_activated_atB\x16\n\x14_last_deactivated_atB\x12\n\x10_unregistered_atB\x0f\n\r_online_untilb\x06proto3')
18
28
 
19
29
  _globals = globals()
20
30
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
31
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.node_pb2', _globals)
22
- if _descriptor._USE_C_DESCRIPTORS == False:
23
- DESCRIPTOR._options = None
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
24
34
  _globals['_NODE']._serialized_start=37
25
35
  _globals['_NODE']._serialized_end=60
36
+ _globals['_NODEINFO']._serialized_start=63
37
+ _globals['_NODEINFO']._serialized_end=422
26
38
  # @@protoc_insertion_point(module_scope)
flwr/proto/node_pb2.pyi CHANGED
@@ -1,21 +1,94 @@
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
6
21
  import google.protobuf.descriptor
7
22
  import google.protobuf.message
8
- import typing_extensions
23
+ import typing
9
24
 
10
25
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
11
26
 
27
+ @typing.final
12
28
  class Node(google.protobuf.message.Message):
13
29
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
30
+
14
31
  NODE_ID_FIELD_NUMBER: builtins.int
15
32
  node_id: builtins.int
16
- def __init__(self,
33
+ def __init__(
34
+ self,
17
35
  *,
18
36
  node_id: builtins.int = ...,
19
- ) -> None: ...
20
- def ClearField(self, field_name: typing_extensions.Literal["node_id",b"node_id"]) -> None: ...
37
+ ) -> None: ...
38
+ def ClearField(self, field_name: typing.Literal["node_id", b"node_id"]) -> None: ...
39
+
21
40
  global___Node = Node
41
+
42
+ @typing.final
43
+ class NodeInfo(google.protobuf.message.Message):
44
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
45
+
46
+ NODE_ID_FIELD_NUMBER: builtins.int
47
+ OWNER_AID_FIELD_NUMBER: builtins.int
48
+ OWNER_NAME_FIELD_NUMBER: builtins.int
49
+ STATUS_FIELD_NUMBER: builtins.int
50
+ REGISTERED_AT_FIELD_NUMBER: builtins.int
51
+ LAST_ACTIVATED_AT_FIELD_NUMBER: builtins.int
52
+ LAST_DEACTIVATED_AT_FIELD_NUMBER: builtins.int
53
+ UNREGISTERED_AT_FIELD_NUMBER: builtins.int
54
+ ONLINE_UNTIL_FIELD_NUMBER: builtins.int
55
+ HEARTBEAT_INTERVAL_FIELD_NUMBER: builtins.int
56
+ PUBLIC_KEY_FIELD_NUMBER: builtins.int
57
+ node_id: builtins.int
58
+ owner_aid: builtins.str
59
+ owner_name: builtins.str
60
+ status: builtins.str
61
+ registered_at: builtins.str
62
+ last_activated_at: builtins.str
63
+ last_deactivated_at: builtins.str
64
+ unregistered_at: builtins.str
65
+ online_until: builtins.float
66
+ heartbeat_interval: builtins.float
67
+ public_key: builtins.bytes
68
+ def __init__(
69
+ self,
70
+ *,
71
+ node_id: builtins.int = ...,
72
+ owner_aid: builtins.str = ...,
73
+ owner_name: builtins.str = ...,
74
+ status: builtins.str = ...,
75
+ registered_at: builtins.str = ...,
76
+ last_activated_at: builtins.str | None = ...,
77
+ last_deactivated_at: builtins.str | None = ...,
78
+ unregistered_at: builtins.str | None = ...,
79
+ online_until: builtins.float | None = ...,
80
+ heartbeat_interval: builtins.float = ...,
81
+ public_key: builtins.bytes = ...,
82
+ ) -> None: ...
83
+ def HasField(self, field_name: typing.Literal["_last_activated_at", b"_last_activated_at", "_last_deactivated_at", b"_last_deactivated_at", "_online_until", b"_online_until", "_unregistered_at", b"_unregistered_at", "last_activated_at", b"last_activated_at", "last_deactivated_at", b"last_deactivated_at", "online_until", b"online_until", "unregistered_at", b"unregistered_at"]) -> builtins.bool: ...
84
+ def ClearField(self, field_name: typing.Literal["_last_activated_at", b"_last_activated_at", "_last_deactivated_at", b"_last_deactivated_at", "_online_until", b"_online_until", "_unregistered_at", b"_unregistered_at", "heartbeat_interval", b"heartbeat_interval", "last_activated_at", b"last_activated_at", "last_deactivated_at", b"last_deactivated_at", "node_id", b"node_id", "online_until", b"online_until", "owner_aid", b"owner_aid", "owner_name", b"owner_name", "public_key", b"public_key", "registered_at", b"registered_at", "status", b"status", "unregistered_at", b"unregistered_at"]) -> None: ...
85
+ @typing.overload
86
+ def WhichOneof(self, oneof_group: typing.Literal["_last_activated_at", b"_last_activated_at"]) -> typing.Literal["last_activated_at"] | None: ...
87
+ @typing.overload
88
+ def WhichOneof(self, oneof_group: typing.Literal["_last_deactivated_at", b"_last_deactivated_at"]) -> typing.Literal["last_deactivated_at"] | None: ...
89
+ @typing.overload
90
+ def WhichOneof(self, oneof_group: typing.Literal["_online_until", b"_online_until"]) -> typing.Literal["online_until"] | None: ...
91
+ @typing.overload
92
+ def WhichOneof(self, oneof_group: typing.Literal["_unregistered_at", b"_unregistered_at"]) -> typing.Literal["unregistered_at"] | None: ...
93
+
94
+ global___NodeInfo = NodeInfo
@@ -1,4 +1,24 @@
1
1
  # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
2
  """Client and server classes corresponding to protobuf-defined services."""
3
3
  import grpc
4
+ import warnings
4
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/node_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
+ )
@@ -1,4 +1,31 @@
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
+
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
+ ...