flwr 1.17.0__py3-none-any.whl → 1.19.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 (286) hide show
  1. flwr/__init__.py +1 -1
  2. flwr/app/__init__.py +15 -0
  3. flwr/app/error.py +68 -0
  4. flwr/app/metadata.py +223 -0
  5. flwr/cli/__init__.py +1 -1
  6. flwr/cli/app.py +21 -2
  7. flwr/cli/build.py +83 -58
  8. flwr/cli/cli_user_auth_interceptor.py +1 -1
  9. flwr/cli/config_utils.py +53 -17
  10. flwr/cli/example.py +1 -1
  11. flwr/cli/install.py +1 -1
  12. flwr/cli/log.py +4 -4
  13. flwr/cli/login/__init__.py +1 -1
  14. flwr/cli/login/login.py +15 -8
  15. flwr/cli/ls.py +16 -37
  16. flwr/cli/new/__init__.py +1 -1
  17. flwr/cli/new/new.py +4 -4
  18. flwr/cli/new/templates/__init__.py +1 -1
  19. flwr/cli/new/templates/app/__init__.py +1 -1
  20. flwr/cli/new/templates/app/code/__init__.py +1 -1
  21. flwr/cli/new/templates/app/code/client.baseline.py.tpl +1 -1
  22. flwr/cli/new/templates/app/code/flwr_tune/__init__.py +1 -1
  23. flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +4 -4
  24. flwr/cli/new/templates/app/code/model.baseline.py.tpl +1 -1
  25. flwr/cli/new/templates/app/code/server.baseline.py.tpl +2 -3
  26. flwr/cli/new/templates/app/code/task.sklearn.py.tpl +1 -1
  27. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +14 -17
  28. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +4 -4
  29. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  30. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  31. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  32. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  33. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
  34. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  35. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
  36. flwr/cli/run/__init__.py +1 -1
  37. flwr/cli/run/run.py +11 -19
  38. flwr/cli/stop.py +3 -3
  39. flwr/cli/utils.py +42 -17
  40. flwr/client/__init__.py +3 -3
  41. flwr/client/client.py +1 -1
  42. flwr/client/client_app.py +140 -138
  43. flwr/client/clientapp/__init__.py +1 -8
  44. flwr/client/clientapp/utils.py +1 -1
  45. flwr/client/dpfedavg_numpy_client.py +1 -1
  46. flwr/client/grpc_adapter_client/__init__.py +1 -1
  47. flwr/client/grpc_adapter_client/connection.py +5 -5
  48. flwr/client/grpc_rere_client/__init__.py +1 -1
  49. flwr/client/grpc_rere_client/client_interceptor.py +1 -1
  50. flwr/client/grpc_rere_client/connection.py +131 -61
  51. flwr/client/grpc_rere_client/grpc_adapter.py +35 -7
  52. flwr/client/message_handler/__init__.py +1 -1
  53. flwr/client/message_handler/message_handler.py +2 -2
  54. flwr/client/mod/__init__.py +1 -1
  55. flwr/client/mod/centraldp_mods.py +1 -1
  56. flwr/client/mod/comms_mods.py +39 -20
  57. flwr/client/mod/localdp_mod.py +6 -6
  58. flwr/client/mod/secure_aggregation/__init__.py +1 -1
  59. flwr/client/mod/secure_aggregation/secagg_mod.py +1 -1
  60. flwr/client/mod/secure_aggregation/secaggplus_mod.py +1 -1
  61. flwr/client/mod/utils.py +1 -1
  62. flwr/client/numpy_client.py +1 -1
  63. flwr/client/rest_client/__init__.py +1 -1
  64. flwr/client/rest_client/connection.py +174 -68
  65. flwr/client/run_info_store.py +1 -1
  66. flwr/client/typing.py +1 -1
  67. flwr/clientapp/__init__.py +15 -0
  68. flwr/common/__init__.py +3 -3
  69. flwr/common/address.py +1 -1
  70. flwr/common/args.py +1 -1
  71. flwr/common/auth_plugin/__init__.py +3 -1
  72. flwr/common/auth_plugin/auth_plugin.py +30 -4
  73. flwr/common/config.py +1 -1
  74. flwr/common/constant.py +37 -8
  75. flwr/common/context.py +1 -1
  76. flwr/common/date.py +1 -1
  77. flwr/common/differential_privacy.py +1 -1
  78. flwr/common/differential_privacy_constants.py +1 -1
  79. flwr/common/dp.py +1 -1
  80. flwr/common/event_log_plugin/event_log_plugin.py +3 -3
  81. flwr/common/exit/exit.py +6 -6
  82. flwr/common/exit_handlers.py +31 -1
  83. flwr/common/grpc.py +1 -1
  84. flwr/common/heartbeat.py +165 -0
  85. flwr/common/inflatable.py +290 -0
  86. flwr/common/inflatable_grpc_utils.py +99 -0
  87. flwr/common/inflatable_rest_utils.py +99 -0
  88. flwr/common/inflatable_utils.py +341 -0
  89. flwr/common/logger.py +1 -1
  90. flwr/common/message.py +137 -252
  91. flwr/common/object_ref.py +1 -1
  92. flwr/common/parameter.py +1 -1
  93. flwr/common/pyproject.py +1 -1
  94. flwr/common/record/__init__.py +3 -2
  95. flwr/common/record/array.py +323 -0
  96. flwr/common/record/arrayrecord.py +121 -243
  97. flwr/common/record/configrecord.py +71 -16
  98. flwr/common/record/conversion_utils.py +2 -2
  99. flwr/common/record/metricrecord.py +71 -20
  100. flwr/common/record/recorddict.py +207 -90
  101. flwr/common/record/typeddict.py +1 -1
  102. flwr/common/recorddict_compat.py +2 -2
  103. flwr/common/retry_invoker.py +15 -11
  104. flwr/common/secure_aggregation/__init__.py +1 -1
  105. flwr/common/secure_aggregation/crypto/__init__.py +1 -1
  106. flwr/common/secure_aggregation/crypto/shamir.py +52 -30
  107. flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -1
  108. flwr/common/secure_aggregation/ndarrays_arithmetic.py +1 -1
  109. flwr/common/secure_aggregation/quantization.py +1 -1
  110. flwr/common/secure_aggregation/secaggplus_constants.py +1 -1
  111. flwr/common/secure_aggregation/secaggplus_utils.py +1 -1
  112. flwr/common/serde.py +60 -184
  113. flwr/common/serde_utils.py +175 -0
  114. flwr/common/telemetry.py +2 -2
  115. flwr/common/typing.py +6 -4
  116. flwr/common/version.py +1 -1
  117. flwr/compat/__init__.py +15 -0
  118. flwr/compat/client/__init__.py +15 -0
  119. flwr/{client → compat/client}/app.py +71 -211
  120. flwr/{client → compat/client}/grpc_client/__init__.py +1 -1
  121. flwr/{client → compat/client}/grpc_client/connection.py +13 -13
  122. flwr/compat/common/__init__.py +15 -0
  123. flwr/compat/server/__init__.py +15 -0
  124. flwr/compat/server/app.py +174 -0
  125. flwr/compat/simulation/__init__.py +15 -0
  126. flwr/proto/__init__.py +1 -1
  127. flwr/proto/fleet_pb2.py +32 -27
  128. flwr/proto/fleet_pb2.pyi +49 -35
  129. flwr/proto/fleet_pb2_grpc.py +117 -13
  130. flwr/proto/fleet_pb2_grpc.pyi +47 -6
  131. flwr/proto/heartbeat_pb2.py +33 -0
  132. flwr/proto/heartbeat_pb2.pyi +66 -0
  133. flwr/proto/heartbeat_pb2_grpc.py +4 -0
  134. flwr/proto/heartbeat_pb2_grpc.pyi +4 -0
  135. flwr/proto/message_pb2.py +28 -11
  136. flwr/proto/message_pb2.pyi +125 -0
  137. flwr/proto/recorddict_pb2.py +16 -28
  138. flwr/proto/recorddict_pb2.pyi +46 -64
  139. flwr/proto/run_pb2.py +24 -32
  140. flwr/proto/run_pb2.pyi +4 -52
  141. flwr/proto/serverappio_pb2.py +32 -23
  142. flwr/proto/serverappio_pb2.pyi +45 -3
  143. flwr/proto/serverappio_pb2_grpc.py +138 -34
  144. flwr/proto/serverappio_pb2_grpc.pyi +54 -13
  145. flwr/proto/simulationio_pb2.py +12 -11
  146. flwr/proto/simulationio_pb2_grpc.py +35 -0
  147. flwr/proto/simulationio_pb2_grpc.pyi +14 -0
  148. flwr/server/__init__.py +2 -2
  149. flwr/server/app.py +69 -187
  150. flwr/server/client_manager.py +1 -1
  151. flwr/server/client_proxy.py +1 -1
  152. flwr/server/compat/__init__.py +1 -1
  153. flwr/server/compat/app.py +1 -1
  154. flwr/server/compat/app_utils.py +51 -29
  155. flwr/server/compat/legacy_context.py +1 -1
  156. flwr/server/criterion.py +1 -1
  157. flwr/server/fleet_event_log_interceptor.py +2 -2
  158. flwr/server/grid/grid.py +3 -3
  159. flwr/server/grid/grpc_grid.py +104 -34
  160. flwr/server/grid/inmemory_grid.py +5 -4
  161. flwr/server/history.py +1 -1
  162. flwr/server/run_serverapp.py +1 -1
  163. flwr/server/server.py +1 -1
  164. flwr/server/server_app.py +65 -58
  165. flwr/server/server_config.py +1 -1
  166. flwr/server/serverapp/__init__.py +1 -1
  167. flwr/server/serverapp/app.py +19 -1
  168. flwr/server/serverapp_components.py +1 -1
  169. flwr/server/strategy/__init__.py +1 -1
  170. flwr/server/strategy/aggregate.py +1 -1
  171. flwr/server/strategy/bulyan.py +2 -2
  172. flwr/server/strategy/dp_adaptive_clipping.py +17 -17
  173. flwr/server/strategy/dp_fixed_clipping.py +17 -17
  174. flwr/server/strategy/dpfedavg_adaptive.py +1 -1
  175. flwr/server/strategy/dpfedavg_fixed.py +1 -1
  176. flwr/server/strategy/fault_tolerant_fedavg.py +1 -1
  177. flwr/server/strategy/fedadagrad.py +1 -1
  178. flwr/server/strategy/fedadam.py +1 -1
  179. flwr/server/strategy/fedavg.py +1 -1
  180. flwr/server/strategy/fedavg_android.py +1 -1
  181. flwr/server/strategy/fedavgm.py +1 -1
  182. flwr/server/strategy/fedmedian.py +1 -1
  183. flwr/server/strategy/fedopt.py +1 -1
  184. flwr/server/strategy/fedprox.py +1 -1
  185. flwr/server/strategy/fedtrimmedavg.py +1 -1
  186. flwr/server/strategy/fedxgb_bagging.py +1 -1
  187. flwr/server/strategy/fedxgb_cyclic.py +1 -1
  188. flwr/server/strategy/fedxgb_nn_avg.py +3 -2
  189. flwr/server/strategy/fedyogi.py +1 -1
  190. flwr/server/strategy/krum.py +1 -1
  191. flwr/server/strategy/qfedavg.py +1 -1
  192. flwr/server/strategy/strategy.py +1 -1
  193. flwr/server/superlink/__init__.py +1 -1
  194. flwr/server/superlink/ffs/__init__.py +3 -1
  195. flwr/server/superlink/ffs/disk_ffs.py +1 -1
  196. flwr/server/superlink/ffs/ffs.py +1 -1
  197. flwr/server/superlink/ffs/ffs_factory.py +1 -1
  198. flwr/server/superlink/fleet/__init__.py +1 -1
  199. flwr/server/superlink/fleet/grpc_adapter/__init__.py +1 -1
  200. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +14 -4
  201. flwr/server/superlink/fleet/grpc_bidi/__init__.py +1 -1
  202. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -1
  203. flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +1 -1
  204. flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +1 -1
  205. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +13 -13
  206. flwr/server/superlink/fleet/grpc_rere/__init__.py +1 -1
  207. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +102 -8
  208. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +1 -1
  209. flwr/server/superlink/fleet/message_handler/__init__.py +1 -1
  210. flwr/server/superlink/fleet/message_handler/message_handler.py +136 -19
  211. flwr/server/superlink/fleet/rest_rere/__init__.py +1 -1
  212. flwr/server/superlink/fleet/rest_rere/rest_api.py +73 -12
  213. flwr/server/superlink/fleet/vce/__init__.py +1 -1
  214. flwr/server/superlink/fleet/vce/backend/__init__.py +1 -1
  215. flwr/server/superlink/fleet/vce/backend/backend.py +1 -1
  216. flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -1
  217. flwr/server/superlink/fleet/vce/vce_api.py +7 -4
  218. flwr/server/superlink/linkstate/__init__.py +1 -1
  219. flwr/server/superlink/linkstate/in_memory_linkstate.py +139 -44
  220. flwr/server/superlink/linkstate/linkstate.py +54 -21
  221. flwr/server/superlink/linkstate/linkstate_factory.py +1 -1
  222. flwr/server/superlink/linkstate/sqlite_linkstate.py +150 -56
  223. flwr/server/superlink/linkstate/utils.py +34 -30
  224. flwr/server/superlink/serverappio/serverappio_grpc.py +3 -0
  225. flwr/server/superlink/serverappio/serverappio_servicer.py +211 -57
  226. flwr/server/superlink/simulation/__init__.py +1 -1
  227. flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
  228. flwr/server/superlink/simulation/simulationio_servicer.py +26 -2
  229. flwr/server/superlink/utils.py +45 -3
  230. flwr/server/typing.py +1 -1
  231. flwr/server/utils/__init__.py +1 -1
  232. flwr/server/utils/tensorboard.py +1 -1
  233. flwr/server/utils/validator.py +3 -3
  234. flwr/server/workflow/__init__.py +1 -1
  235. flwr/server/workflow/constant.py +1 -1
  236. flwr/server/workflow/default_workflows.py +1 -1
  237. flwr/server/workflow/secure_aggregation/__init__.py +1 -1
  238. flwr/server/workflow/secure_aggregation/secagg_workflow.py +1 -1
  239. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +1 -1
  240. flwr/serverapp/__init__.py +15 -0
  241. flwr/simulation/__init__.py +1 -1
  242. flwr/simulation/app.py +18 -1
  243. flwr/simulation/legacy_app.py +1 -1
  244. flwr/simulation/ray_transport/__init__.py +1 -1
  245. flwr/simulation/ray_transport/ray_actor.py +1 -1
  246. flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
  247. flwr/simulation/ray_transport/utils.py +1 -1
  248. flwr/simulation/run_simulation.py +2 -2
  249. flwr/simulation/simulationio_connection.py +1 -1
  250. flwr/supercore/__init__.py +15 -0
  251. flwr/supercore/object_store/__init__.py +24 -0
  252. flwr/supercore/object_store/in_memory_object_store.py +229 -0
  253. flwr/supercore/object_store/object_store.py +192 -0
  254. flwr/supercore/object_store/object_store_factory.py +44 -0
  255. flwr/superexec/__init__.py +1 -1
  256. flwr/superexec/app.py +1 -1
  257. flwr/superexec/deployment.py +7 -3
  258. flwr/superexec/exec_event_log_interceptor.py +4 -4
  259. flwr/superexec/exec_grpc.py +8 -4
  260. flwr/superexec/exec_servicer.py +126 -24
  261. flwr/superexec/exec_user_auth_interceptor.py +38 -9
  262. flwr/superexec/executor.py +5 -1
  263. flwr/superexec/simulation.py +8 -2
  264. flwr/superlink/__init__.py +15 -0
  265. flwr/{client/supernode → supernode}/__init__.py +1 -8
  266. flwr/{client/nodestate/nodestate.py → supernode/cli/__init__.py} +8 -15
  267. flwr/{client/supernode/app.py → supernode/cli/flower_supernode.py} +4 -13
  268. flwr/supernode/cli/flwr_clientapp.py +81 -0
  269. flwr/{client → supernode}/nodestate/__init__.py +1 -1
  270. flwr/supernode/nodestate/in_memory_nodestate.py +190 -0
  271. flwr/supernode/nodestate/nodestate.py +212 -0
  272. flwr/{client → supernode}/nodestate/nodestate_factory.py +1 -1
  273. flwr/supernode/runtime/__init__.py +15 -0
  274. flwr/{client/clientapp/app.py → supernode/runtime/run_clientapp.py} +26 -57
  275. flwr/supernode/servicer/__init__.py +15 -0
  276. flwr/supernode/servicer/clientappio/__init__.py +24 -0
  277. flwr/{client/clientapp → supernode/servicer/clientappio}/clientappio_servicer.py +1 -1
  278. flwr/supernode/start_client_internal.py +491 -0
  279. {flwr-1.17.0.dist-info → flwr-1.19.0.dist-info}/METADATA +6 -5
  280. flwr-1.19.0.dist-info/RECORD +365 -0
  281. {flwr-1.17.0.dist-info → flwr-1.19.0.dist-info}/WHEEL +1 -1
  282. {flwr-1.17.0.dist-info → flwr-1.19.0.dist-info}/entry_points.txt +2 -2
  283. flwr/client/heartbeat.py +0 -74
  284. flwr/client/nodestate/in_memory_nodestate.py +0 -38
  285. flwr-1.17.0.dist-info/LICENSE +0 -202
  286. flwr-1.17.0.dist-info/RECORD +0 -333
@@ -4,6 +4,8 @@ import grpc
4
4
 
5
5
  from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
6
6
  from flwr.proto import fleet_pb2 as flwr_dot_proto_dot_fleet__pb2
7
+ from flwr.proto import heartbeat_pb2 as flwr_dot_proto_dot_heartbeat__pb2
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
 
9
11
 
@@ -26,10 +28,10 @@ class FleetStub(object):
26
28
  request_serializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeRequest.SerializeToString,
27
29
  response_deserializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeResponse.FromString,
28
30
  )
29
- self.Ping = channel.unary_unary(
30
- '/flwr.proto.Fleet/Ping',
31
- request_serializer=flwr_dot_proto_dot_fleet__pb2.PingRequest.SerializeToString,
32
- response_deserializer=flwr_dot_proto_dot_fleet__pb2.PingResponse.FromString,
31
+ self.SendNodeHeartbeat = channel.unary_unary(
32
+ '/flwr.proto.Fleet/SendNodeHeartbeat',
33
+ request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatRequest.SerializeToString,
34
+ response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatResponse.FromString,
33
35
  )
34
36
  self.PullMessages = channel.unary_unary(
35
37
  '/flwr.proto.Fleet/PullMessages',
@@ -51,6 +53,21 @@ class FleetStub(object):
51
53
  request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
52
54
  response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
53
55
  )
56
+ self.PushObject = channel.unary_unary(
57
+ '/flwr.proto.Fleet/PushObject',
58
+ request_serializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
59
+ response_deserializer=flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
60
+ )
61
+ self.PullObject = channel.unary_unary(
62
+ '/flwr.proto.Fleet/PullObject',
63
+ request_serializer=flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
64
+ response_deserializer=flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
65
+ )
66
+ self.ConfirmMessageReceived = channel.unary_unary(
67
+ '/flwr.proto.Fleet/ConfirmMessageReceived',
68
+ request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
69
+ response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
70
+ )
54
71
 
55
72
 
56
73
  class FleetServicer(object):
@@ -68,7 +85,7 @@ class FleetServicer(object):
68
85
  context.set_details('Method not implemented!')
69
86
  raise NotImplementedError('Method not implemented!')
70
87
 
71
- def Ping(self, request, context):
88
+ def SendNodeHeartbeat(self, request, context):
72
89
  """Missing associated documentation comment in .proto file."""
73
90
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
74
91
  context.set_details('Method not implemented!')
@@ -105,6 +122,27 @@ class FleetServicer(object):
105
122
  context.set_details('Method not implemented!')
106
123
  raise NotImplementedError('Method not implemented!')
107
124
 
125
+ def PushObject(self, request, context):
126
+ """Push Object
127
+ """
128
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
129
+ context.set_details('Method not implemented!')
130
+ raise NotImplementedError('Method not implemented!')
131
+
132
+ def PullObject(self, request, context):
133
+ """Pull Object
134
+ """
135
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
136
+ context.set_details('Method not implemented!')
137
+ raise NotImplementedError('Method not implemented!')
138
+
139
+ def ConfirmMessageReceived(self, request, context):
140
+ """Confirm Message Received
141
+ """
142
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
143
+ context.set_details('Method not implemented!')
144
+ raise NotImplementedError('Method not implemented!')
145
+
108
146
 
109
147
  def add_FleetServicer_to_server(servicer, server):
110
148
  rpc_method_handlers = {
@@ -118,10 +156,10 @@ def add_FleetServicer_to_server(servicer, server):
118
156
  request_deserializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeRequest.FromString,
119
157
  response_serializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeResponse.SerializeToString,
120
158
  ),
121
- 'Ping': grpc.unary_unary_rpc_method_handler(
122
- servicer.Ping,
123
- request_deserializer=flwr_dot_proto_dot_fleet__pb2.PingRequest.FromString,
124
- response_serializer=flwr_dot_proto_dot_fleet__pb2.PingResponse.SerializeToString,
159
+ 'SendNodeHeartbeat': grpc.unary_unary_rpc_method_handler(
160
+ servicer.SendNodeHeartbeat,
161
+ request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatRequest.FromString,
162
+ response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatResponse.SerializeToString,
125
163
  ),
126
164
  'PullMessages': grpc.unary_unary_rpc_method_handler(
127
165
  servicer.PullMessages,
@@ -143,6 +181,21 @@ def add_FleetServicer_to_server(servicer, server):
143
181
  request_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.FromString,
144
182
  response_serializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.SerializeToString,
145
183
  ),
184
+ 'PushObject': grpc.unary_unary_rpc_method_handler(
185
+ servicer.PushObject,
186
+ request_deserializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.FromString,
187
+ response_serializer=flwr_dot_proto_dot_message__pb2.PushObjectResponse.SerializeToString,
188
+ ),
189
+ 'PullObject': grpc.unary_unary_rpc_method_handler(
190
+ servicer.PullObject,
191
+ request_deserializer=flwr_dot_proto_dot_message__pb2.PullObjectRequest.FromString,
192
+ response_serializer=flwr_dot_proto_dot_message__pb2.PullObjectResponse.SerializeToString,
193
+ ),
194
+ 'ConfirmMessageReceived': grpc.unary_unary_rpc_method_handler(
195
+ servicer.ConfirmMessageReceived,
196
+ request_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.FromString,
197
+ response_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.SerializeToString,
198
+ ),
146
199
  }
147
200
  generic_handler = grpc.method_handlers_generic_handler(
148
201
  'flwr.proto.Fleet', rpc_method_handlers)
@@ -188,7 +241,7 @@ class Fleet(object):
188
241
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
189
242
 
190
243
  @staticmethod
191
- def Ping(request,
244
+ def SendNodeHeartbeat(request,
192
245
  target,
193
246
  options=(),
194
247
  channel_credentials=None,
@@ -198,9 +251,9 @@ class Fleet(object):
198
251
  wait_for_ready=None,
199
252
  timeout=None,
200
253
  metadata=None):
201
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/Ping',
202
- flwr_dot_proto_dot_fleet__pb2.PingRequest.SerializeToString,
203
- flwr_dot_proto_dot_fleet__pb2.PingResponse.FromString,
254
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/SendNodeHeartbeat',
255
+ flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatRequest.SerializeToString,
256
+ flwr_dot_proto_dot_heartbeat__pb2.SendNodeHeartbeatResponse.FromString,
204
257
  options, channel_credentials,
205
258
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
206
259
 
@@ -271,3 +324,54 @@ class Fleet(object):
271
324
  flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
272
325
  options, channel_credentials,
273
326
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
327
+
328
+ @staticmethod
329
+ def PushObject(request,
330
+ target,
331
+ options=(),
332
+ channel_credentials=None,
333
+ call_credentials=None,
334
+ insecure=False,
335
+ compression=None,
336
+ wait_for_ready=None,
337
+ timeout=None,
338
+ metadata=None):
339
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/PushObject',
340
+ flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
341
+ flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
342
+ options, channel_credentials,
343
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
344
+
345
+ @staticmethod
346
+ def PullObject(request,
347
+ target,
348
+ options=(),
349
+ channel_credentials=None,
350
+ call_credentials=None,
351
+ insecure=False,
352
+ compression=None,
353
+ wait_for_ready=None,
354
+ timeout=None,
355
+ metadata=None):
356
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/PullObject',
357
+ flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
358
+ flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
359
+ options, channel_credentials,
360
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
361
+
362
+ @staticmethod
363
+ def ConfirmMessageReceived(request,
364
+ target,
365
+ options=(),
366
+ channel_credentials=None,
367
+ call_credentials=None,
368
+ insecure=False,
369
+ compression=None,
370
+ wait_for_ready=None,
371
+ timeout=None,
372
+ metadata=None):
373
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/ConfirmMessageReceived',
374
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
375
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
376
+ options, channel_credentials,
377
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -5,6 +5,8 @@ isort:skip_file
5
5
  import abc
6
6
  import flwr.proto.fab_pb2
7
7
  import flwr.proto.fleet_pb2
8
+ import flwr.proto.heartbeat_pb2
9
+ import flwr.proto.message_pb2
8
10
  import flwr.proto.run_pb2
9
11
  import grpc
10
12
 
@@ -18,9 +20,9 @@ class FleetStub:
18
20
  flwr.proto.fleet_pb2.DeleteNodeRequest,
19
21
  flwr.proto.fleet_pb2.DeleteNodeResponse]
20
22
 
21
- Ping: grpc.UnaryUnaryMultiCallable[
22
- flwr.proto.fleet_pb2.PingRequest,
23
- flwr.proto.fleet_pb2.PingResponse]
23
+ SendNodeHeartbeat: grpc.UnaryUnaryMultiCallable[
24
+ flwr.proto.heartbeat_pb2.SendNodeHeartbeatRequest,
25
+ flwr.proto.heartbeat_pb2.SendNodeHeartbeatResponse]
24
26
 
25
27
  PullMessages: grpc.UnaryUnaryMultiCallable[
26
28
  flwr.proto.fleet_pb2.PullMessagesRequest,
@@ -47,6 +49,21 @@ class FleetStub:
47
49
  flwr.proto.fab_pb2.GetFabResponse]
48
50
  """Get FAB"""
49
51
 
52
+ PushObject: grpc.UnaryUnaryMultiCallable[
53
+ flwr.proto.message_pb2.PushObjectRequest,
54
+ flwr.proto.message_pb2.PushObjectResponse]
55
+ """Push Object"""
56
+
57
+ PullObject: grpc.UnaryUnaryMultiCallable[
58
+ flwr.proto.message_pb2.PullObjectRequest,
59
+ flwr.proto.message_pb2.PullObjectResponse]
60
+ """Pull Object"""
61
+
62
+ ConfirmMessageReceived: grpc.UnaryUnaryMultiCallable[
63
+ flwr.proto.message_pb2.ConfirmMessageReceivedRequest,
64
+ flwr.proto.message_pb2.ConfirmMessageReceivedResponse]
65
+ """Confirm Message Received"""
66
+
50
67
 
51
68
  class FleetServicer(metaclass=abc.ABCMeta):
52
69
  @abc.abstractmethod
@@ -62,10 +79,10 @@ class FleetServicer(metaclass=abc.ABCMeta):
62
79
  ) -> flwr.proto.fleet_pb2.DeleteNodeResponse: ...
63
80
 
64
81
  @abc.abstractmethod
65
- def Ping(self,
66
- request: flwr.proto.fleet_pb2.PingRequest,
82
+ def SendNodeHeartbeat(self,
83
+ request: flwr.proto.heartbeat_pb2.SendNodeHeartbeatRequest,
67
84
  context: grpc.ServicerContext,
68
- ) -> flwr.proto.fleet_pb2.PingResponse: ...
85
+ ) -> flwr.proto.heartbeat_pb2.SendNodeHeartbeatResponse: ...
69
86
 
70
87
  @abc.abstractmethod
71
88
  def PullMessages(self,
@@ -103,5 +120,29 @@ class FleetServicer(metaclass=abc.ABCMeta):
103
120
  """Get FAB"""
104
121
  pass
105
122
 
123
+ @abc.abstractmethod
124
+ def PushObject(self,
125
+ request: flwr.proto.message_pb2.PushObjectRequest,
126
+ context: grpc.ServicerContext,
127
+ ) -> flwr.proto.message_pb2.PushObjectResponse:
128
+ """Push Object"""
129
+ pass
130
+
131
+ @abc.abstractmethod
132
+ def PullObject(self,
133
+ request: flwr.proto.message_pb2.PullObjectRequest,
134
+ context: grpc.ServicerContext,
135
+ ) -> flwr.proto.message_pb2.PullObjectResponse:
136
+ """Pull Object"""
137
+ pass
138
+
139
+ @abc.abstractmethod
140
+ def ConfirmMessageReceived(self,
141
+ request: flwr.proto.message_pb2.ConfirmMessageReceivedRequest,
142
+ context: grpc.ServicerContext,
143
+ ) -> flwr.proto.message_pb2.ConfirmMessageReceivedResponse:
144
+ """Confirm Message Received"""
145
+ pass
146
+
106
147
 
107
148
  def add_FleetServicer_to_server(servicer: FleetServicer, server: grpc.Server) -> None: ...
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/heartbeat.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lwr/proto/heartbeat.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"V\n\x18SendNodeHeartbeatRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x1a\n\x12heartbeat_interval\x18\x02 \x01(\x01\",\n\x19SendNodeHeartbeatResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"E\n\x17SendAppHeartbeatRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x1a\n\x12heartbeat_interval\x18\x02 \x01(\x01\"+\n\x18SendAppHeartbeatResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x62\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.heartbeat_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ DESCRIPTOR._options = None
25
+ _globals['_SENDNODEHEARTBEATREQUEST']._serialized_start=65
26
+ _globals['_SENDNODEHEARTBEATREQUEST']._serialized_end=151
27
+ _globals['_SENDNODEHEARTBEATRESPONSE']._serialized_start=153
28
+ _globals['_SENDNODEHEARTBEATRESPONSE']._serialized_end=197
29
+ _globals['_SENDAPPHEARTBEATREQUEST']._serialized_start=199
30
+ _globals['_SENDAPPHEARTBEATREQUEST']._serialized_end=268
31
+ _globals['_SENDAPPHEARTBEATRESPONSE']._serialized_start=270
32
+ _globals['_SENDAPPHEARTBEATRESPONSE']._serialized_end=313
33
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,66 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import flwr.proto.node_pb2
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+ import typing_extensions
11
+
12
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
+
14
+ class SendNodeHeartbeatRequest(google.protobuf.message.Message):
15
+ """Node Heartbeat messages"""
16
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
17
+ NODE_FIELD_NUMBER: builtins.int
18
+ HEARTBEAT_INTERVAL_FIELD_NUMBER: builtins.int
19
+ @property
20
+ def node(self) -> flwr.proto.node_pb2.Node: ...
21
+ heartbeat_interval: builtins.float
22
+ def __init__(self,
23
+ *,
24
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
25
+ heartbeat_interval: builtins.float = ...,
26
+ ) -> None: ...
27
+ def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
28
+ def ClearField(self, field_name: typing_extensions.Literal["heartbeat_interval",b"heartbeat_interval","node",b"node"]) -> None: ...
29
+ global___SendNodeHeartbeatRequest = SendNodeHeartbeatRequest
30
+
31
+ class SendNodeHeartbeatResponse(google.protobuf.message.Message):
32
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
33
+ SUCCESS_FIELD_NUMBER: builtins.int
34
+ success: builtins.bool
35
+ def __init__(self,
36
+ *,
37
+ success: builtins.bool = ...,
38
+ ) -> None: ...
39
+ def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ...
40
+ global___SendNodeHeartbeatResponse = SendNodeHeartbeatResponse
41
+
42
+ class SendAppHeartbeatRequest(google.protobuf.message.Message):
43
+ """App Heartbeat messages"""
44
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
45
+ RUN_ID_FIELD_NUMBER: builtins.int
46
+ HEARTBEAT_INTERVAL_FIELD_NUMBER: builtins.int
47
+ run_id: builtins.int
48
+ heartbeat_interval: builtins.float
49
+ def __init__(self,
50
+ *,
51
+ run_id: builtins.int = ...,
52
+ heartbeat_interval: builtins.float = ...,
53
+ ) -> None: ...
54
+ def ClearField(self, field_name: typing_extensions.Literal["heartbeat_interval",b"heartbeat_interval","run_id",b"run_id"]) -> None: ...
55
+ global___SendAppHeartbeatRequest = SendAppHeartbeatRequest
56
+
57
+ class SendAppHeartbeatResponse(google.protobuf.message.Message):
58
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
59
+ SUCCESS_FIELD_NUMBER: builtins.int
60
+ success: builtins.bool
61
+ def __init__(self,
62
+ *,
63
+ success: builtins.bool = ...,
64
+ ) -> None: ...
65
+ def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ...
66
+ global___SendAppHeartbeatResponse = SendAppHeartbeatResponse
@@ -0,0 +1,4 @@
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
+
@@ -0,0 +1,4 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
flwr/proto/message_pb2.py CHANGED
@@ -15,9 +15,10 @@ _sym_db = _symbol_database.Default()
15
15
  from flwr.proto import error_pb2 as flwr_dot_proto_dot_error__pb2
16
16
  from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
17
17
  from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
18
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
18
19
 
19
20
 
20
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"|\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12\'\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xd0\x02\n\x07\x43ontext\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0f\n\x07node_id\x18\x02 \x01(\x04\x12\x38\n\x0bnode_config\x18\x03 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12%\n\x05state\x18\x04 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12\x36\n\nrun_config\x18\x05 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbe\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x04\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x04\x12\x1b\n\x13reply_to_message_id\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x15\x66lwr/proto/node.proto\"|\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12\'\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xd0\x02\n\x07\x43ontext\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0f\n\x07node_id\x18\x02 \x01(\x04\x12\x38\n\x0bnode_config\x18\x03 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12%\n\x05state\x18\x04 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12\x36\n\nrun_config\x18\x05 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbe\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x04\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x04\x12\x1b\n\x13reply_to_message_id\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\"\x1f\n\tObjectIDs\x12\x12\n\nobject_ids\x18\x01 \x03(\t\"I\n\nObjectTree\x12\x11\n\tobject_id\x18\x01 \x01(\t\x12(\n\x08\x63hildren\x18\x02 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"n\n\x11PushObjectRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12\x11\n\tobject_id\x18\x03 \x01(\t\x12\x16\n\x0eobject_content\x18\x04 \x01(\x0c\"$\n\x12PushObjectResponse\x12\x0e\n\x06stored\x18\x01 \x01(\x08\"V\n\x11PullObjectRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12\x11\n\tobject_id\x18\x03 \x01(\t\"\\\n\x12PullObjectResponse\x12\x14\n\x0cobject_found\x18\x01 \x01(\x08\x12\x18\n\x10object_available\x18\x02 \x01(\x08\x12\x16\n\x0eobject_content\x18\x03 \x01(\x0c\"j\n\x1d\x43onfirmMessageReceivedRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12\x19\n\x11message_object_id\x18\x03 \x01(\t\" \n\x1e\x43onfirmMessageReceivedResponseb\x06proto3')
21
22
 
22
23
  _globals = globals()
23
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -28,14 +29,30 @@ if _descriptor._USE_C_DESCRIPTORS == False:
28
29
  _globals['_CONTEXT_NODECONFIGENTRY']._serialized_options = b'8\001'
29
30
  _globals['_CONTEXT_RUNCONFIGENTRY']._options = None
30
31
  _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_options = b'8\001'
31
- _globals['_MESSAGE']._serialized_start=121
32
- _globals['_MESSAGE']._serialized_end=245
33
- _globals['_CONTEXT']._serialized_start=248
34
- _globals['_CONTEXT']._serialized_end=584
35
- _globals['_CONTEXT_NODECONFIGENTRY']._serialized_start=445
36
- _globals['_CONTEXT_NODECONFIGENTRY']._serialized_end=514
37
- _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=516
38
- _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=584
39
- _globals['_METADATA']._serialized_start=587
40
- _globals['_METADATA']._serialized_end=777
32
+ _globals['_MESSAGE']._serialized_start=144
33
+ _globals['_MESSAGE']._serialized_end=268
34
+ _globals['_CONTEXT']._serialized_start=271
35
+ _globals['_CONTEXT']._serialized_end=607
36
+ _globals['_CONTEXT_NODECONFIGENTRY']._serialized_start=468
37
+ _globals['_CONTEXT_NODECONFIGENTRY']._serialized_end=537
38
+ _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=539
39
+ _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=607
40
+ _globals['_METADATA']._serialized_start=610
41
+ _globals['_METADATA']._serialized_end=800
42
+ _globals['_OBJECTIDS']._serialized_start=802
43
+ _globals['_OBJECTIDS']._serialized_end=833
44
+ _globals['_OBJECTTREE']._serialized_start=835
45
+ _globals['_OBJECTTREE']._serialized_end=908
46
+ _globals['_PUSHOBJECTREQUEST']._serialized_start=910
47
+ _globals['_PUSHOBJECTREQUEST']._serialized_end=1020
48
+ _globals['_PUSHOBJECTRESPONSE']._serialized_start=1022
49
+ _globals['_PUSHOBJECTRESPONSE']._serialized_end=1058
50
+ _globals['_PULLOBJECTREQUEST']._serialized_start=1060
51
+ _globals['_PULLOBJECTREQUEST']._serialized_end=1146
52
+ _globals['_PULLOBJECTRESPONSE']._serialized_start=1148
53
+ _globals['_PULLOBJECTRESPONSE']._serialized_end=1240
54
+ _globals['_CONFIRMMESSAGERECEIVEDREQUEST']._serialized_start=1242
55
+ _globals['_CONFIRMMESSAGERECEIVEDREQUEST']._serialized_end=1348
56
+ _globals['_CONFIRMMESSAGERECEIVEDRESPONSE']._serialized_start=1350
57
+ _globals['_CONFIRMMESSAGERECEIVEDRESPONSE']._serialized_end=1382
41
58
  # @@protoc_insertion_point(module_scope)
@@ -4,6 +4,7 @@ isort:skip_file
4
4
  """
5
5
  import builtins
6
6
  import flwr.proto.error_pb2
7
+ import flwr.proto.node_pb2
7
8
  import flwr.proto.recorddict_pb2
8
9
  import flwr.proto.transport_pb2
9
10
  import google.protobuf.descriptor
@@ -126,3 +127,127 @@ class Metadata(google.protobuf.message.Message):
126
127
  ) -> None: ...
127
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: ...
128
129
  global___Metadata = Metadata
130
+
131
+ class ObjectIDs(google.protobuf.message.Message):
132
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
133
+ OBJECT_IDS_FIELD_NUMBER: builtins.int
134
+ @property
135
+ def object_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
136
+ def __init__(self,
137
+ *,
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: ...
141
+ global___ObjectIDs = ObjectIDs
142
+
143
+ class ObjectTree(google.protobuf.message.Message):
144
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
145
+ OBJECT_ID_FIELD_NUMBER: builtins.int
146
+ CHILDREN_FIELD_NUMBER: builtins.int
147
+ object_id: typing.Text
148
+ @property
149
+ def children(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ObjectTree]: ...
150
+ def __init__(self,
151
+ *,
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: ...
156
+ global___ObjectTree = ObjectTree
157
+
158
+ class PushObjectRequest(google.protobuf.message.Message):
159
+ """PushObject messages"""
160
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
161
+ NODE_FIELD_NUMBER: builtins.int
162
+ RUN_ID_FIELD_NUMBER: builtins.int
163
+ OBJECT_ID_FIELD_NUMBER: builtins.int
164
+ OBJECT_CONTENT_FIELD_NUMBER: builtins.int
165
+ @property
166
+ def node(self) -> flwr.proto.node_pb2.Node: ...
167
+ run_id: builtins.int
168
+ object_id: typing.Text
169
+ object_content: builtins.bytes
170
+ def __init__(self,
171
+ *,
172
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
173
+ run_id: builtins.int = ...,
174
+ object_id: typing.Text = ...,
175
+ 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: ...
179
+ global___PushObjectRequest = PushObjectRequest
180
+
181
+ class PushObjectResponse(google.protobuf.message.Message):
182
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
183
+ STORED_FIELD_NUMBER: builtins.int
184
+ stored: builtins.bool
185
+ def __init__(self,
186
+ *,
187
+ stored: builtins.bool = ...,
188
+ ) -> None: ...
189
+ def ClearField(self, field_name: typing_extensions.Literal["stored",b"stored"]) -> None: ...
190
+ global___PushObjectResponse = PushObjectResponse
191
+
192
+ class PullObjectRequest(google.protobuf.message.Message):
193
+ """PullObject messages"""
194
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
195
+ NODE_FIELD_NUMBER: builtins.int
196
+ RUN_ID_FIELD_NUMBER: builtins.int
197
+ OBJECT_ID_FIELD_NUMBER: builtins.int
198
+ @property
199
+ def node(self) -> flwr.proto.node_pb2.Node: ...
200
+ run_id: builtins.int
201
+ object_id: typing.Text
202
+ def __init__(self,
203
+ *,
204
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
205
+ 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: ...
210
+ global___PullObjectRequest = PullObjectRequest
211
+
212
+ class PullObjectResponse(google.protobuf.message.Message):
213
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
214
+ OBJECT_FOUND_FIELD_NUMBER: builtins.int
215
+ OBJECT_AVAILABLE_FIELD_NUMBER: builtins.int
216
+ OBJECT_CONTENT_FIELD_NUMBER: builtins.int
217
+ object_found: builtins.bool
218
+ object_available: builtins.bool
219
+ object_content: builtins.bytes
220
+ def __init__(self,
221
+ *,
222
+ object_found: builtins.bool = ...,
223
+ object_available: builtins.bool = ...,
224
+ 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: ...
227
+ global___PullObjectResponse = PullObjectResponse
228
+
229
+ class ConfirmMessageReceivedRequest(google.protobuf.message.Message):
230
+ """ConfirmMessageReceived messages"""
231
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
232
+ NODE_FIELD_NUMBER: builtins.int
233
+ RUN_ID_FIELD_NUMBER: builtins.int
234
+ MESSAGE_OBJECT_ID_FIELD_NUMBER: builtins.int
235
+ @property
236
+ def node(self) -> flwr.proto.node_pb2.Node: ...
237
+ run_id: builtins.int
238
+ message_object_id: typing.Text
239
+ def __init__(self,
240
+ *,
241
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
242
+ 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: ...
247
+ global___ConfirmMessageReceivedRequest = ConfirmMessageReceivedRequest
248
+
249
+ class ConfirmMessageReceivedResponse(google.protobuf.message.Message):
250
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
251
+ def __init__(self,
252
+ ) -> None: ...
253
+ global___ConfirmMessageReceivedResponse = ConfirmMessageReceivedResponse