flwr 1.23.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 (292) 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 +19 -0
  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/auth_plugin.py +4 -5
  9. flwr/cli/auth_plugin/noop_auth_plugin.py +54 -11
  10. flwr/cli/auth_plugin/oidc_cli_plugin.py +32 -9
  11. flwr/cli/build.py +60 -18
  12. flwr/cli/cli_account_auth_interceptor.py +24 -7
  13. flwr/cli/config_utils.py +101 -13
  14. flwr/cli/federation/__init__.py +24 -0
  15. flwr/cli/federation/ls.py +140 -0
  16. flwr/cli/federation/show.py +317 -0
  17. flwr/cli/install.py +91 -13
  18. flwr/cli/log.py +52 -9
  19. flwr/cli/login/login.py +7 -4
  20. flwr/cli/ls.py +170 -130
  21. flwr/cli/new/new.py +33 -50
  22. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -0
  23. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  24. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  25. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  26. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  27. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  28. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  29. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +3 -3
  30. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +1 -1
  31. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  32. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +2 -2
  33. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +1 -1
  34. flwr/cli/pull.py +10 -5
  35. flwr/cli/run/run.py +77 -30
  36. flwr/cli/run_utils.py +130 -0
  37. flwr/cli/stop.py +25 -7
  38. flwr/cli/supernode/ls.py +16 -8
  39. flwr/cli/supernode/register.py +9 -4
  40. flwr/cli/supernode/unregister.py +5 -3
  41. flwr/cli/utils.py +376 -16
  42. flwr/client/__init__.py +1 -1
  43. flwr/client/dpfedavg_numpy_client.py +4 -1
  44. flwr/client/grpc_adapter_client/connection.py +6 -7
  45. flwr/client/grpc_rere_client/connection.py +10 -11
  46. flwr/client/grpc_rere_client/grpc_adapter.py +6 -2
  47. flwr/client/grpc_rere_client/node_auth_client_interceptor.py +2 -1
  48. flwr/client/message_handler/message_handler.py +2 -2
  49. flwr/client/mod/secure_aggregation/secaggplus_mod.py +3 -3
  50. flwr/client/numpy_client.py +1 -1
  51. flwr/client/rest_client/connection.py +12 -14
  52. flwr/client/run_info_store.py +4 -5
  53. flwr/client/typing.py +1 -1
  54. flwr/clientapp/client_app.py +9 -10
  55. flwr/clientapp/mod/centraldp_mods.py +16 -17
  56. flwr/clientapp/mod/localdp_mod.py +8 -9
  57. flwr/clientapp/typing.py +1 -1
  58. flwr/clientapp/utils.py +3 -3
  59. flwr/common/address.py +1 -2
  60. flwr/common/args.py +3 -4
  61. flwr/common/config.py +13 -16
  62. flwr/common/constant.py +5 -2
  63. flwr/common/differential_privacy.py +3 -4
  64. flwr/common/event_log_plugin/event_log_plugin.py +3 -4
  65. flwr/common/exit/exit.py +15 -2
  66. flwr/common/exit/exit_code.py +19 -0
  67. flwr/common/exit/exit_handler.py +6 -2
  68. flwr/common/exit/signal_handler.py +5 -5
  69. flwr/common/grpc.py +6 -6
  70. flwr/common/inflatable_protobuf_utils.py +1 -1
  71. flwr/common/inflatable_utils.py +38 -21
  72. flwr/common/logger.py +19 -19
  73. flwr/common/message.py +4 -4
  74. flwr/common/object_ref.py +7 -7
  75. flwr/common/record/array.py +3 -3
  76. flwr/common/record/arrayrecord.py +18 -30
  77. flwr/common/record/configrecord.py +3 -3
  78. flwr/common/record/recorddict.py +5 -5
  79. flwr/common/record/typeddict.py +9 -2
  80. flwr/common/recorddict_compat.py +7 -10
  81. flwr/common/retry_invoker.py +20 -20
  82. flwr/common/secure_aggregation/ndarrays_arithmetic.py +3 -3
  83. flwr/common/serde.py +5 -4
  84. flwr/common/serde_utils.py +2 -2
  85. flwr/common/telemetry.py +9 -5
  86. flwr/common/typing.py +52 -37
  87. flwr/compat/client/app.py +38 -37
  88. flwr/compat/client/grpc_client/connection.py +11 -11
  89. flwr/compat/server/app.py +5 -6
  90. flwr/proto/appio_pb2.py +13 -3
  91. flwr/proto/appio_pb2.pyi +134 -65
  92. flwr/proto/appio_pb2_grpc.py +20 -0
  93. flwr/proto/appio_pb2_grpc.pyi +27 -0
  94. flwr/proto/clientappio_pb2.py +17 -7
  95. flwr/proto/clientappio_pb2.pyi +15 -0
  96. flwr/proto/clientappio_pb2_grpc.py +206 -40
  97. flwr/proto/clientappio_pb2_grpc.pyi +168 -53
  98. flwr/proto/control_pb2.py +71 -52
  99. flwr/proto/control_pb2.pyi +277 -111
  100. flwr/proto/control_pb2_grpc.py +249 -40
  101. flwr/proto/control_pb2_grpc.pyi +185 -52
  102. flwr/proto/error_pb2.py +13 -3
  103. flwr/proto/error_pb2.pyi +24 -6
  104. flwr/proto/error_pb2_grpc.py +20 -0
  105. flwr/proto/error_pb2_grpc.pyi +27 -0
  106. flwr/proto/fab_pb2.py +14 -4
  107. flwr/proto/fab_pb2.pyi +59 -31
  108. flwr/proto/fab_pb2_grpc.py +20 -0
  109. flwr/proto/fab_pb2_grpc.pyi +27 -0
  110. flwr/proto/federation_pb2.py +38 -0
  111. flwr/proto/federation_pb2.pyi +56 -0
  112. flwr/proto/federation_pb2_grpc.py +24 -0
  113. flwr/proto/federation_pb2_grpc.pyi +31 -0
  114. flwr/proto/fleet_pb2.py +14 -4
  115. flwr/proto/fleet_pb2.pyi +137 -61
  116. flwr/proto/fleet_pb2_grpc.py +189 -48
  117. flwr/proto/fleet_pb2_grpc.pyi +175 -61
  118. flwr/proto/grpcadapter_pb2.py +14 -4
  119. flwr/proto/grpcadapter_pb2.pyi +38 -16
  120. flwr/proto/grpcadapter_pb2_grpc.py +35 -4
  121. flwr/proto/grpcadapter_pb2_grpc.pyi +38 -7
  122. flwr/proto/heartbeat_pb2.py +17 -7
  123. flwr/proto/heartbeat_pb2.pyi +51 -22
  124. flwr/proto/heartbeat_pb2_grpc.py +20 -0
  125. flwr/proto/heartbeat_pb2_grpc.pyi +27 -0
  126. flwr/proto/log_pb2.py +13 -3
  127. flwr/proto/log_pb2.pyi +34 -11
  128. flwr/proto/log_pb2_grpc.py +20 -0
  129. flwr/proto/log_pb2_grpc.pyi +27 -0
  130. flwr/proto/message_pb2.py +15 -5
  131. flwr/proto/message_pb2.pyi +154 -86
  132. flwr/proto/message_pb2_grpc.py +20 -0
  133. flwr/proto/message_pb2_grpc.pyi +27 -0
  134. flwr/proto/node_pb2.py +15 -5
  135. flwr/proto/node_pb2.pyi +50 -25
  136. flwr/proto/node_pb2_grpc.py +20 -0
  137. flwr/proto/node_pb2_grpc.pyi +27 -0
  138. flwr/proto/recorddict_pb2.py +13 -3
  139. flwr/proto/recorddict_pb2.pyi +184 -107
  140. flwr/proto/recorddict_pb2_grpc.py +20 -0
  141. flwr/proto/recorddict_pb2_grpc.pyi +27 -0
  142. flwr/proto/run_pb2.py +40 -31
  143. flwr/proto/run_pb2.pyi +149 -84
  144. flwr/proto/run_pb2_grpc.py +20 -0
  145. flwr/proto/run_pb2_grpc.pyi +27 -0
  146. flwr/proto/serverappio_pb2.py +13 -3
  147. flwr/proto/serverappio_pb2.pyi +32 -8
  148. flwr/proto/serverappio_pb2_grpc.py +246 -65
  149. flwr/proto/serverappio_pb2_grpc.pyi +221 -85
  150. flwr/proto/simulationio_pb2.py +16 -8
  151. flwr/proto/simulationio_pb2.pyi +15 -0
  152. flwr/proto/simulationio_pb2_grpc.py +162 -41
  153. flwr/proto/simulationio_pb2_grpc.pyi +149 -55
  154. flwr/proto/transport_pb2.py +20 -10
  155. flwr/proto/transport_pb2.pyi +249 -160
  156. flwr/proto/transport_pb2_grpc.py +35 -4
  157. flwr/proto/transport_pb2_grpc.pyi +38 -8
  158. flwr/server/app.py +38 -17
  159. flwr/server/client_manager.py +4 -5
  160. flwr/server/client_proxy.py +10 -11
  161. flwr/server/compat/app.py +4 -5
  162. flwr/server/compat/app_utils.py +2 -1
  163. flwr/server/compat/grid_client_proxy.py +10 -12
  164. flwr/server/compat/legacy_context.py +3 -4
  165. flwr/server/fleet_event_log_interceptor.py +2 -1
  166. flwr/server/grid/grid.py +2 -3
  167. flwr/server/grid/grpc_grid.py +10 -8
  168. flwr/server/grid/inmemory_grid.py +4 -4
  169. flwr/server/run_serverapp.py +2 -3
  170. flwr/server/server.py +34 -39
  171. flwr/server/server_app.py +7 -8
  172. flwr/server/server_config.py +1 -2
  173. flwr/server/serverapp/app.py +34 -28
  174. flwr/server/serverapp_components.py +4 -5
  175. flwr/server/strategy/aggregate.py +9 -8
  176. flwr/server/strategy/bulyan.py +13 -11
  177. flwr/server/strategy/dp_adaptive_clipping.py +16 -20
  178. flwr/server/strategy/dp_fixed_clipping.py +12 -17
  179. flwr/server/strategy/dpfedavg_adaptive.py +3 -4
  180. flwr/server/strategy/dpfedavg_fixed.py +6 -10
  181. flwr/server/strategy/fault_tolerant_fedavg.py +14 -13
  182. flwr/server/strategy/fedadagrad.py +18 -14
  183. flwr/server/strategy/fedadam.py +16 -14
  184. flwr/server/strategy/fedavg.py +16 -17
  185. flwr/server/strategy/fedavg_android.py +15 -15
  186. flwr/server/strategy/fedavgm.py +21 -18
  187. flwr/server/strategy/fedmedian.py +2 -3
  188. flwr/server/strategy/fedopt.py +11 -10
  189. flwr/server/strategy/fedprox.py +10 -9
  190. flwr/server/strategy/fedtrimmedavg.py +12 -11
  191. flwr/server/strategy/fedxgb_bagging.py +13 -11
  192. flwr/server/strategy/fedxgb_cyclic.py +6 -6
  193. flwr/server/strategy/fedxgb_nn_avg.py +4 -4
  194. flwr/server/strategy/fedyogi.py +16 -14
  195. flwr/server/strategy/krum.py +12 -11
  196. flwr/server/strategy/qfedavg.py +16 -15
  197. flwr/server/strategy/strategy.py +6 -9
  198. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +2 -1
  199. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -2
  200. flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +3 -4
  201. flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +10 -12
  202. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +1 -3
  203. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +4 -4
  204. flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +3 -2
  205. flwr/server/superlink/fleet/message_handler/message_handler.py +34 -28
  206. flwr/server/superlink/fleet/rest_rere/rest_api.py +2 -2
  207. flwr/server/superlink/fleet/vce/backend/backend.py +1 -1
  208. flwr/server/superlink/fleet/vce/backend/raybackend.py +5 -5
  209. flwr/server/superlink/fleet/vce/vce_api.py +15 -9
  210. flwr/server/superlink/linkstate/in_memory_linkstate.py +115 -150
  211. flwr/server/superlink/linkstate/linkstate.py +59 -43
  212. flwr/server/superlink/linkstate/linkstate_factory.py +22 -5
  213. flwr/server/superlink/linkstate/sqlite_linkstate.py +447 -438
  214. flwr/server/superlink/linkstate/utils.py +6 -6
  215. flwr/server/superlink/serverappio/serverappio_grpc.py +1 -2
  216. flwr/server/superlink/serverappio/serverappio_servicer.py +26 -21
  217. flwr/server/superlink/simulation/simulationio_grpc.py +1 -2
  218. flwr/server/superlink/simulation/simulationio_servicer.py +18 -13
  219. flwr/server/superlink/utils.py +4 -6
  220. flwr/server/typing.py +1 -1
  221. flwr/server/utils/tensorboard.py +15 -8
  222. flwr/server/workflow/default_workflows.py +5 -5
  223. flwr/server/workflow/secure_aggregation/secagg_workflow.py +2 -4
  224. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +8 -8
  225. flwr/serverapp/strategy/bulyan.py +16 -15
  226. flwr/serverapp/strategy/dp_adaptive_clipping.py +12 -11
  227. flwr/serverapp/strategy/dp_fixed_clipping.py +11 -14
  228. flwr/serverapp/strategy/fedadagrad.py +10 -11
  229. flwr/serverapp/strategy/fedadam.py +10 -11
  230. flwr/serverapp/strategy/fedavg.py +9 -10
  231. flwr/serverapp/strategy/fedavgm.py +17 -16
  232. flwr/serverapp/strategy/fedmedian.py +2 -2
  233. flwr/serverapp/strategy/fedopt.py +10 -11
  234. flwr/serverapp/strategy/fedprox.py +7 -8
  235. flwr/serverapp/strategy/fedtrimmedavg.py +9 -9
  236. flwr/serverapp/strategy/fedxgb_bagging.py +3 -3
  237. flwr/serverapp/strategy/fedxgb_cyclic.py +9 -9
  238. flwr/serverapp/strategy/fedyogi.py +9 -11
  239. flwr/serverapp/strategy/krum.py +7 -7
  240. flwr/serverapp/strategy/multikrum.py +9 -9
  241. flwr/serverapp/strategy/qfedavg.py +17 -16
  242. flwr/serverapp/strategy/strategy.py +6 -9
  243. flwr/serverapp/strategy/strategy_utils.py +7 -8
  244. flwr/simulation/app.py +46 -42
  245. flwr/simulation/legacy_app.py +12 -12
  246. flwr/simulation/ray_transport/ray_actor.py +10 -11
  247. flwr/simulation/ray_transport/ray_client_proxy.py +11 -12
  248. flwr/simulation/run_simulation.py +43 -43
  249. flwr/simulation/simulationio_connection.py +4 -4
  250. flwr/supercore/cli/flower_superexec.py +3 -4
  251. flwr/supercore/constant.py +31 -1
  252. flwr/supercore/corestate/corestate.py +24 -3
  253. flwr/supercore/corestate/in_memory_corestate.py +138 -0
  254. flwr/supercore/corestate/sqlite_corestate.py +157 -0
  255. flwr/supercore/ffs/disk_ffs.py +1 -2
  256. flwr/supercore/ffs/ffs.py +1 -2
  257. flwr/supercore/ffs/ffs_factory.py +1 -2
  258. flwr/{common → supercore}/heartbeat.py +20 -25
  259. flwr/supercore/object_store/in_memory_object_store.py +1 -2
  260. flwr/supercore/object_store/object_store.py +1 -2
  261. flwr/supercore/object_store/object_store_factory.py +1 -2
  262. flwr/supercore/object_store/sqlite_object_store.py +8 -7
  263. flwr/supercore/primitives/asymmetric.py +1 -1
  264. flwr/supercore/primitives/asymmetric_ed25519.py +11 -1
  265. flwr/supercore/sqlite_mixin.py +37 -34
  266. flwr/supercore/superexec/plugin/base_exec_plugin.py +1 -2
  267. flwr/supercore/superexec/plugin/exec_plugin.py +3 -3
  268. flwr/supercore/superexec/run_superexec.py +9 -13
  269. flwr/superlink/artifact_provider/artifact_provider.py +1 -2
  270. flwr/superlink/auth_plugin/auth_plugin.py +6 -9
  271. flwr/superlink/auth_plugin/noop_auth_plugin.py +6 -9
  272. flwr/superlink/federation/__init__.py +24 -0
  273. flwr/superlink/federation/federation_manager.py +64 -0
  274. flwr/superlink/federation/noop_federation_manager.py +71 -0
  275. flwr/superlink/servicer/control/control_account_auth_interceptor.py +22 -13
  276. flwr/superlink/servicer/control/control_event_log_interceptor.py +7 -7
  277. flwr/superlink/servicer/control/control_grpc.py +5 -6
  278. flwr/superlink/servicer/control/control_license_interceptor.py +3 -3
  279. flwr/superlink/servicer/control/control_servicer.py +102 -18
  280. flwr/supernode/cli/flower_supernode.py +58 -3
  281. flwr/supernode/nodestate/in_memory_nodestate.py +60 -49
  282. flwr/supernode/nodestate/nodestate.py +7 -8
  283. flwr/supernode/nodestate/nodestate_factory.py +7 -4
  284. flwr/supernode/runtime/run_clientapp.py +41 -22
  285. flwr/supernode/servicer/clientappio/clientappio_servicer.py +40 -10
  286. flwr/supernode/start_client_internal.py +158 -42
  287. {flwr-1.23.0.dist-info → flwr-1.24.0.dist-info}/METADATA +8 -8
  288. flwr-1.24.0.dist-info/RECORD +454 -0
  289. flwr/supercore/object_store/utils.py +0 -43
  290. flwr-1.23.0.dist-info/RECORD +0 -439
  291. {flwr-1.23.0.dist-info → flwr-1.24.0.dist-info}/WHEEL +0 -0
  292. {flwr-1.23.0.dist-info → flwr-1.24.0.dist-info}/entry_points.txt +0 -0
@@ -1,30 +1,40 @@
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/clientappio.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/clientappio.proto'
19
+ )
10
20
  # @@protoc_insertion_point(imports)
11
21
 
12
22
  _sym_db = _symbol_database.Default()
13
23
 
14
24
 
15
- from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
25
+ from flwr.proto import heartbeat_pb2 as flwr_dot_proto_dot_heartbeat__pb2
16
26
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
17
27
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
18
28
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
19
29
 
20
30
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\x8a\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\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')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\xeb\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\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')
22
32
 
23
33
  _globals = globals()
24
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
25
35
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals)
26
- if _descriptor._USE_C_DESCRIPTORS == False:
27
- DESCRIPTOR._options = None
28
- _globals['_CLIENTAPPIO']._serialized_start=139
29
- _globals['_CLIENTAPPIO']._serialized_end=1045
36
+ if not _descriptor._USE_C_DESCRIPTORS:
37
+ DESCRIPTOR._loaded_options = None
38
+ _globals['_CLIENTAPPIO']._serialized_start=145
39
+ _globals['_CLIENTAPPIO']._serialized_end=1148
30
40
  # @@protoc_insertion_point(module_scope)
@@ -1,7 +1,22 @@
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 google.protobuf.descriptor
6
21
 
7
22
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
@@ -1,11 +1,32 @@
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
 
5
6
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
7
+ from flwr.proto import heartbeat_pb2 as flwr_dot_proto_dot_heartbeat__pb2
6
8
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
7
9
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
8
10
 
11
+ GRPC_GENERATED_VERSION = '1.70.0'
12
+ GRPC_VERSION = grpc.__version__
13
+ _version_not_supported = False
14
+
15
+ try:
16
+ from grpc._utilities import first_version_is_lower
17
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
18
+ except ImportError:
19
+ _version_not_supported = True
20
+
21
+ if _version_not_supported:
22
+ raise RuntimeError(
23
+ f'The grpc package installed is at version {GRPC_VERSION},'
24
+ + f' but the generated code in flwr/proto/clientappio_pb2_grpc.py depends on'
25
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
26
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
27
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
28
+ )
29
+
9
30
 
10
31
  class ClientAppIoStub(object):
11
32
  """Missing associated documentation comment in .proto file."""
@@ -20,52 +41,57 @@ class ClientAppIoStub(object):
20
41
  '/flwr.proto.ClientAppIo/ListAppsToLaunch',
21
42
  request_serializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
22
43
  response_deserializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
23
- )
44
+ _registered_method=True)
24
45
  self.RequestToken = channel.unary_unary(
25
46
  '/flwr.proto.ClientAppIo/RequestToken',
26
47
  request_serializer=flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
27
48
  response_deserializer=flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
28
- )
49
+ _registered_method=True)
29
50
  self.GetRun = channel.unary_unary(
30
51
  '/flwr.proto.ClientAppIo/GetRun',
31
52
  request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
32
53
  response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
33
- )
54
+ _registered_method=True)
34
55
  self.PullClientAppInputs = channel.unary_unary(
35
56
  '/flwr.proto.ClientAppIo/PullClientAppInputs',
36
57
  request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
37
58
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
38
- )
59
+ _registered_method=True)
39
60
  self.PushClientAppOutputs = channel.unary_unary(
40
61
  '/flwr.proto.ClientAppIo/PushClientAppOutputs',
41
62
  request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
42
63
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
43
- )
64
+ _registered_method=True)
44
65
  self.PushMessage = channel.unary_unary(
45
66
  '/flwr.proto.ClientAppIo/PushMessage',
46
67
  request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
47
68
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
48
- )
69
+ _registered_method=True)
49
70
  self.PullMessage = channel.unary_unary(
50
71
  '/flwr.proto.ClientAppIo/PullMessage',
51
72
  request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
52
73
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
53
- )
74
+ _registered_method=True)
75
+ self.SendAppHeartbeat = channel.unary_unary(
76
+ '/flwr.proto.ClientAppIo/SendAppHeartbeat',
77
+ request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
78
+ response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
79
+ _registered_method=True)
54
80
  self.PushObject = channel.unary_unary(
55
81
  '/flwr.proto.ClientAppIo/PushObject',
56
82
  request_serializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
57
83
  response_deserializer=flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
58
- )
84
+ _registered_method=True)
59
85
  self.PullObject = channel.unary_unary(
60
86
  '/flwr.proto.ClientAppIo/PullObject',
61
87
  request_serializer=flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
62
88
  response_deserializer=flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
63
- )
89
+ _registered_method=True)
64
90
  self.ConfirmMessageReceived = channel.unary_unary(
65
91
  '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
66
92
  request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
67
93
  response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
68
- )
94
+ _registered_method=True)
69
95
 
70
96
 
71
97
  class ClientAppIoServicer(object):
@@ -120,6 +146,13 @@ class ClientAppIoServicer(object):
120
146
  context.set_details('Method not implemented!')
121
147
  raise NotImplementedError('Method not implemented!')
122
148
 
149
+ def SendAppHeartbeat(self, request, context):
150
+ """App heartbeat
151
+ """
152
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
153
+ context.set_details('Method not implemented!')
154
+ raise NotImplementedError('Method not implemented!')
155
+
123
156
  def PushObject(self, request, context):
124
157
  """Push Object
125
158
  """
@@ -179,6 +212,11 @@ def add_ClientAppIoServicer_to_server(servicer, server):
179
212
  request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
180
213
  response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
181
214
  ),
215
+ 'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
216
+ servicer.SendAppHeartbeat,
217
+ request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
218
+ response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.SerializeToString,
219
+ ),
182
220
  'PushObject': grpc.unary_unary_rpc_method_handler(
183
221
  servicer.PushObject,
184
222
  request_deserializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.FromString,
@@ -198,6 +236,7 @@ def add_ClientAppIoServicer_to_server(servicer, server):
198
236
  generic_handler = grpc.method_handlers_generic_handler(
199
237
  'flwr.proto.ClientAppIo', rpc_method_handlers)
200
238
  server.add_generic_rpc_handlers((generic_handler,))
239
+ server.add_registered_method_handlers('flwr.proto.ClientAppIo', rpc_method_handlers)
201
240
 
202
241
 
203
242
  # This class is part of an EXPERIMENTAL API.
@@ -215,11 +254,21 @@ class ClientAppIo(object):
215
254
  wait_for_ready=None,
216
255
  timeout=None,
217
256
  metadata=None):
218
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/ListAppsToLaunch',
257
+ return grpc.experimental.unary_unary(
258
+ request,
259
+ target,
260
+ '/flwr.proto.ClientAppIo/ListAppsToLaunch',
219
261
  flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
220
262
  flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
221
- options, channel_credentials,
222
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
263
+ options,
264
+ channel_credentials,
265
+ insecure,
266
+ call_credentials,
267
+ compression,
268
+ wait_for_ready,
269
+ timeout,
270
+ metadata,
271
+ _registered_method=True)
223
272
 
224
273
  @staticmethod
225
274
  def RequestToken(request,
@@ -232,11 +281,21 @@ class ClientAppIo(object):
232
281
  wait_for_ready=None,
233
282
  timeout=None,
234
283
  metadata=None):
235
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/RequestToken',
284
+ return grpc.experimental.unary_unary(
285
+ request,
286
+ target,
287
+ '/flwr.proto.ClientAppIo/RequestToken',
236
288
  flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
237
289
  flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
238
- options, channel_credentials,
239
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
290
+ options,
291
+ channel_credentials,
292
+ insecure,
293
+ call_credentials,
294
+ compression,
295
+ wait_for_ready,
296
+ timeout,
297
+ metadata,
298
+ _registered_method=True)
240
299
 
241
300
  @staticmethod
242
301
  def GetRun(request,
@@ -249,11 +308,21 @@ class ClientAppIo(object):
249
308
  wait_for_ready=None,
250
309
  timeout=None,
251
310
  metadata=None):
252
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/GetRun',
311
+ return grpc.experimental.unary_unary(
312
+ request,
313
+ target,
314
+ '/flwr.proto.ClientAppIo/GetRun',
253
315
  flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
254
316
  flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
255
- options, channel_credentials,
256
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
317
+ options,
318
+ channel_credentials,
319
+ insecure,
320
+ call_credentials,
321
+ compression,
322
+ wait_for_ready,
323
+ timeout,
324
+ metadata,
325
+ _registered_method=True)
257
326
 
258
327
  @staticmethod
259
328
  def PullClientAppInputs(request,
@@ -266,11 +335,21 @@ class ClientAppIo(object):
266
335
  wait_for_ready=None,
267
336
  timeout=None,
268
337
  metadata=None):
269
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PullClientAppInputs',
338
+ return grpc.experimental.unary_unary(
339
+ request,
340
+ target,
341
+ '/flwr.proto.ClientAppIo/PullClientAppInputs',
270
342
  flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
271
343
  flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
272
- options, channel_credentials,
273
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
344
+ options,
345
+ channel_credentials,
346
+ insecure,
347
+ call_credentials,
348
+ compression,
349
+ wait_for_ready,
350
+ timeout,
351
+ metadata,
352
+ _registered_method=True)
274
353
 
275
354
  @staticmethod
276
355
  def PushClientAppOutputs(request,
@@ -283,11 +362,21 @@ class ClientAppIo(object):
283
362
  wait_for_ready=None,
284
363
  timeout=None,
285
364
  metadata=None):
286
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PushClientAppOutputs',
365
+ return grpc.experimental.unary_unary(
366
+ request,
367
+ target,
368
+ '/flwr.proto.ClientAppIo/PushClientAppOutputs',
287
369
  flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
288
370
  flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
289
- options, channel_credentials,
290
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
371
+ options,
372
+ channel_credentials,
373
+ insecure,
374
+ call_credentials,
375
+ compression,
376
+ wait_for_ready,
377
+ timeout,
378
+ metadata,
379
+ _registered_method=True)
291
380
 
292
381
  @staticmethod
293
382
  def PushMessage(request,
@@ -300,11 +389,21 @@ class ClientAppIo(object):
300
389
  wait_for_ready=None,
301
390
  timeout=None,
302
391
  metadata=None):
303
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PushMessage',
392
+ return grpc.experimental.unary_unary(
393
+ request,
394
+ target,
395
+ '/flwr.proto.ClientAppIo/PushMessage',
304
396
  flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
305
397
  flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
306
- options, channel_credentials,
307
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
398
+ options,
399
+ channel_credentials,
400
+ insecure,
401
+ call_credentials,
402
+ compression,
403
+ wait_for_ready,
404
+ timeout,
405
+ metadata,
406
+ _registered_method=True)
308
407
 
309
408
  @staticmethod
310
409
  def PullMessage(request,
@@ -317,11 +416,48 @@ class ClientAppIo(object):
317
416
  wait_for_ready=None,
318
417
  timeout=None,
319
418
  metadata=None):
320
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PullMessage',
419
+ return grpc.experimental.unary_unary(
420
+ request,
421
+ target,
422
+ '/flwr.proto.ClientAppIo/PullMessage',
321
423
  flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
322
424
  flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
323
- options, channel_credentials,
324
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
425
+ options,
426
+ channel_credentials,
427
+ insecure,
428
+ call_credentials,
429
+ compression,
430
+ wait_for_ready,
431
+ timeout,
432
+ metadata,
433
+ _registered_method=True)
434
+
435
+ @staticmethod
436
+ def SendAppHeartbeat(request,
437
+ target,
438
+ options=(),
439
+ channel_credentials=None,
440
+ call_credentials=None,
441
+ insecure=False,
442
+ compression=None,
443
+ wait_for_ready=None,
444
+ timeout=None,
445
+ metadata=None):
446
+ return grpc.experimental.unary_unary(
447
+ request,
448
+ target,
449
+ '/flwr.proto.ClientAppIo/SendAppHeartbeat',
450
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
451
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
452
+ options,
453
+ channel_credentials,
454
+ insecure,
455
+ call_credentials,
456
+ compression,
457
+ wait_for_ready,
458
+ timeout,
459
+ metadata,
460
+ _registered_method=True)
325
461
 
326
462
  @staticmethod
327
463
  def PushObject(request,
@@ -334,11 +470,21 @@ class ClientAppIo(object):
334
470
  wait_for_ready=None,
335
471
  timeout=None,
336
472
  metadata=None):
337
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PushObject',
473
+ return grpc.experimental.unary_unary(
474
+ request,
475
+ target,
476
+ '/flwr.proto.ClientAppIo/PushObject',
338
477
  flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
339
478
  flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
340
- options, channel_credentials,
341
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
479
+ options,
480
+ channel_credentials,
481
+ insecure,
482
+ call_credentials,
483
+ compression,
484
+ wait_for_ready,
485
+ timeout,
486
+ metadata,
487
+ _registered_method=True)
342
488
 
343
489
  @staticmethod
344
490
  def PullObject(request,
@@ -351,11 +497,21 @@ class ClientAppIo(object):
351
497
  wait_for_ready=None,
352
498
  timeout=None,
353
499
  metadata=None):
354
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PullObject',
500
+ return grpc.experimental.unary_unary(
501
+ request,
502
+ target,
503
+ '/flwr.proto.ClientAppIo/PullObject',
355
504
  flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
356
505
  flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
357
- options, channel_credentials,
358
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
506
+ options,
507
+ channel_credentials,
508
+ insecure,
509
+ call_credentials,
510
+ compression,
511
+ wait_for_ready,
512
+ timeout,
513
+ metadata,
514
+ _registered_method=True)
359
515
 
360
516
  @staticmethod
361
517
  def ConfirmMessageReceived(request,
@@ -368,8 +524,18 @@ class ClientAppIo(object):
368
524
  wait_for_ready=None,
369
525
  timeout=None,
370
526
  metadata=None):
371
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
527
+ return grpc.experimental.unary_unary(
528
+ request,
529
+ target,
530
+ '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
372
531
  flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
373
532
  flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
374
- options, channel_credentials,
375
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
533
+ options,
534
+ channel_credentials,
535
+ insecure,
536
+ call_credentials,
537
+ compression,
538
+ wait_for_ready,
539
+ timeout,
540
+ metadata,
541
+ _registered_method=True)