flwr 1.24.0__py3-none-any.whl → 1.26.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 (204) hide show
  1. flwr/__init__.py +1 -1
  2. flwr/app/__init__.py +4 -1
  3. flwr/app/message_type.py +29 -0
  4. flwr/app/metadata.py +5 -2
  5. flwr/app/user_config.py +19 -0
  6. flwr/cli/app.py +37 -19
  7. flwr/cli/app_cmd/publish.py +25 -75
  8. flwr/cli/app_cmd/review.py +25 -66
  9. flwr/cli/auth_plugin/auth_plugin.py +5 -10
  10. flwr/cli/auth_plugin/noop_auth_plugin.py +1 -2
  11. flwr/cli/auth_plugin/oidc_cli_plugin.py +38 -38
  12. flwr/cli/build.py +15 -28
  13. flwr/cli/config/__init__.py +21 -0
  14. flwr/cli/config/ls.py +71 -0
  15. flwr/cli/config_migration.py +297 -0
  16. flwr/cli/config_utils.py +63 -156
  17. flwr/cli/constant.py +71 -0
  18. flwr/cli/federation/__init__.py +0 -2
  19. flwr/cli/federation/ls.py +256 -64
  20. flwr/cli/flower_config.py +429 -0
  21. flwr/cli/install.py +23 -62
  22. flwr/cli/log.py +23 -37
  23. flwr/cli/login/login.py +29 -63
  24. flwr/cli/ls.py +72 -61
  25. flwr/cli/new/new.py +98 -309
  26. flwr/cli/pull.py +19 -37
  27. flwr/cli/run/run.py +87 -100
  28. flwr/cli/run_utils.py +23 -5
  29. flwr/cli/stop.py +33 -74
  30. flwr/cli/supernode/ls.py +35 -62
  31. flwr/cli/supernode/register.py +31 -80
  32. flwr/cli/supernode/unregister.py +24 -70
  33. flwr/cli/typing.py +200 -0
  34. flwr/cli/utils.py +160 -412
  35. flwr/client/grpc_adapter_client/connection.py +2 -2
  36. flwr/client/grpc_rere_client/connection.py +9 -6
  37. flwr/client/grpc_rere_client/grpc_adapter.py +1 -1
  38. flwr/client/message_handler/message_handler.py +2 -1
  39. flwr/client/mod/centraldp_mods.py +1 -1
  40. flwr/client/mod/localdp_mod.py +1 -1
  41. flwr/client/mod/secure_aggregation/secaggplus_mod.py +1 -1
  42. flwr/client/rest_client/connection.py +6 -4
  43. flwr/client/run_info_store.py +2 -1
  44. flwr/clientapp/client_app.py +2 -1
  45. flwr/common/__init__.py +3 -2
  46. flwr/common/args.py +5 -5
  47. flwr/common/config.py +12 -17
  48. flwr/common/constant.py +3 -16
  49. flwr/common/context.py +2 -1
  50. flwr/common/exit/exit.py +4 -4
  51. flwr/common/exit/exit_code.py +6 -0
  52. flwr/common/grpc.py +2 -1
  53. flwr/common/logger.py +1 -1
  54. flwr/common/message.py +1 -1
  55. flwr/common/retry_invoker.py +13 -5
  56. flwr/common/secure_aggregation/ndarrays_arithmetic.py +5 -2
  57. flwr/common/serde.py +13 -5
  58. flwr/common/telemetry.py +1 -1
  59. flwr/common/typing.py +10 -3
  60. flwr/compat/client/app.py +6 -9
  61. flwr/compat/client/grpc_client/connection.py +2 -1
  62. flwr/compat/common/constant.py +29 -0
  63. flwr/compat/server/app.py +1 -1
  64. flwr/proto/clientappio_pb2.py +2 -2
  65. flwr/proto/clientappio_pb2_grpc.py +104 -88
  66. flwr/proto/clientappio_pb2_grpc.pyi +140 -80
  67. flwr/proto/federation_pb2.py +5 -3
  68. flwr/proto/federation_pb2.pyi +32 -2
  69. flwr/proto/fleet_pb2.py +10 -10
  70. flwr/proto/fleet_pb2.pyi +5 -1
  71. flwr/proto/run_pb2.py +18 -26
  72. flwr/proto/run_pb2.pyi +10 -58
  73. flwr/proto/serverappio_pb2.py +2 -2
  74. flwr/proto/serverappio_pb2_grpc.py +138 -207
  75. flwr/proto/serverappio_pb2_grpc.pyi +189 -155
  76. flwr/proto/simulationio_pb2.py +2 -2
  77. flwr/proto/simulationio_pb2_grpc.py +62 -90
  78. flwr/proto/simulationio_pb2_grpc.pyi +95 -55
  79. flwr/server/app.py +7 -13
  80. flwr/server/compat/grid_client_proxy.py +2 -1
  81. flwr/server/grid/grpc_grid.py +5 -5
  82. flwr/server/serverapp/app.py +11 -4
  83. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +1 -1
  84. flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +13 -12
  85. flwr/server/superlink/fleet/message_handler/message_handler.py +42 -2
  86. flwr/server/superlink/linkstate/__init__.py +2 -2
  87. flwr/server/superlink/linkstate/in_memory_linkstate.py +36 -10
  88. flwr/server/superlink/linkstate/linkstate.py +34 -21
  89. flwr/server/superlink/linkstate/linkstate_factory.py +16 -8
  90. flwr/server/superlink/linkstate/{sqlite_linkstate.py → sql_linkstate.py} +471 -516
  91. flwr/server/superlink/linkstate/utils.py +49 -2
  92. flwr/server/superlink/serverappio/serverappio_servicer.py +1 -33
  93. flwr/server/superlink/simulation/simulationio_servicer.py +0 -19
  94. flwr/server/utils/validator.py +1 -1
  95. flwr/server/workflow/default_workflows.py +2 -1
  96. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +1 -1
  97. flwr/serverapp/strategy/bulyan.py +7 -1
  98. flwr/serverapp/strategy/dp_fixed_clipping.py +9 -1
  99. flwr/serverapp/strategy/fedavg.py +1 -1
  100. flwr/serverapp/strategy/fedxgb_cyclic.py +1 -1
  101. flwr/simulation/ray_transport/ray_client_proxy.py +2 -6
  102. flwr/simulation/run_simulation.py +3 -12
  103. flwr/simulation/simulationio_connection.py +3 -3
  104. flwr/{common → supercore}/address.py +7 -33
  105. flwr/supercore/app_utils.py +2 -1
  106. flwr/supercore/constant.py +27 -2
  107. flwr/supercore/corestate/{sqlite_corestate.py → sql_corestate.py} +19 -23
  108. flwr/supercore/credential_store/__init__.py +33 -0
  109. flwr/supercore/credential_store/credential_store.py +34 -0
  110. flwr/supercore/credential_store/file_credential_store.py +76 -0
  111. flwr/{common → supercore}/date.py +0 -11
  112. flwr/supercore/ffs/disk_ffs.py +1 -1
  113. flwr/supercore/object_store/object_store_factory.py +14 -6
  114. flwr/supercore/object_store/{sqlite_object_store.py → sql_object_store.py} +115 -117
  115. flwr/supercore/sql_mixin.py +315 -0
  116. flwr/{cli/new/templates → supercore/state}/__init__.py +2 -2
  117. flwr/{cli/new/templates/app/code/flwr_tune → supercore/state/alembic}/__init__.py +2 -2
  118. flwr/supercore/state/alembic/env.py +103 -0
  119. flwr/supercore/state/alembic/script.py.mako +43 -0
  120. flwr/supercore/state/alembic/utils.py +239 -0
  121. flwr/{cli/new/templates/app → supercore/state/alembic/versions}/__init__.py +2 -2
  122. flwr/supercore/state/alembic/versions/rev_2026_01_28_initialize_migration_of_state_tables.py +200 -0
  123. flwr/supercore/state/schema/README.md +121 -0
  124. flwr/{cli/new/templates/app/code → supercore/state/schema}/__init__.py +2 -2
  125. flwr/supercore/state/schema/corestate_tables.py +36 -0
  126. flwr/supercore/state/schema/linkstate_tables.py +152 -0
  127. flwr/supercore/state/schema/objectstore_tables.py +90 -0
  128. flwr/supercore/superexec/run_superexec.py +2 -2
  129. flwr/supercore/utils.py +225 -0
  130. flwr/superlink/federation/federation_manager.py +2 -2
  131. flwr/superlink/federation/noop_federation_manager.py +8 -6
  132. flwr/superlink/servicer/control/control_grpc.py +2 -0
  133. flwr/superlink/servicer/control/control_servicer.py +106 -21
  134. flwr/supernode/cli/flower_supernode.py +2 -1
  135. flwr/supernode/nodestate/in_memory_nodestate.py +62 -1
  136. flwr/supernode/nodestate/nodestate.py +45 -0
  137. flwr/supernode/runtime/run_clientapp.py +14 -14
  138. flwr/supernode/servicer/clientappio/clientappio_servicer.py +13 -5
  139. flwr/supernode/start_client_internal.py +17 -10
  140. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/METADATA +8 -8
  141. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/RECORD +144 -184
  142. flwr/cli/federation/show.py +0 -317
  143. flwr/cli/new/templates/app/.gitignore.tpl +0 -163
  144. flwr/cli/new/templates/app/LICENSE.tpl +0 -202
  145. flwr/cli/new/templates/app/README.baseline.md.tpl +0 -127
  146. flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -68
  147. flwr/cli/new/templates/app/README.md.tpl +0 -37
  148. flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -1
  149. flwr/cli/new/templates/app/code/__init__.py.tpl +0 -1
  150. flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl +0 -1
  151. flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -75
  152. flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -93
  153. flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -71
  154. flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -102
  155. flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -46
  156. flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -80
  157. flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl +0 -55
  158. flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -108
  159. flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -82
  160. flwr/cli/new/templates/app/code/client.xgboost.py.tpl +0 -110
  161. flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -36
  162. flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -92
  163. flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -87
  164. flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -56
  165. flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -73
  166. flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -78
  167. flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -66
  168. flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -43
  169. flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -42
  170. flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -39
  171. flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -41
  172. flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -38
  173. flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -41
  174. flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl +0 -31
  175. flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -44
  176. flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -38
  177. flwr/cli/new/templates/app/code/server.xgboost.py.tpl +0 -56
  178. flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -1
  179. flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -98
  180. flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -57
  181. flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -102
  182. flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -7
  183. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -99
  184. flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl +0 -111
  185. flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -67
  186. flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -52
  187. flwr/cli/new/templates/app/code/task.xgboost.py.tpl +0 -67
  188. flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -1
  189. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -146
  190. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -80
  191. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -65
  192. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -52
  193. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -56
  194. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -49
  195. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -53
  196. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +0 -53
  197. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -52
  198. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -53
  199. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +0 -61
  200. flwr/common/pyproject.py +0 -42
  201. flwr/supercore/sqlite_mixin.py +0 -159
  202. /flwr/{common → supercore}/version.py +0 -0
  203. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/WHEEL +0 -0
  204. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/entry_points.txt +0 -0
@@ -40,7 +40,12 @@ class ClientAppIoStub:
40
40
  flwr.proto.appio_pb2.ListAppsToLaunchRequest,
41
41
  flwr.proto.appio_pb2.ListAppsToLaunchResponse,
42
42
  ]
43
- """Get run IDs with pending messages"""
43
+ """///////////////////////////////////////////////////////////////////////////
44
+ General *AppIo endpoints for SuperExec processes
45
+ ///////////////////////////////////////////////////////////////////////////
46
+
47
+ Get run IDs with pending messages
48
+ """
44
49
 
45
50
  RequestToken: grpc.UnaryUnaryMultiCallable[
46
51
  flwr.proto.appio_pb2.RequestTokenRequest,
@@ -52,43 +57,41 @@ class ClientAppIoStub:
52
57
  flwr.proto.run_pb2.GetRunRequest,
53
58
  flwr.proto.run_pb2.GetRunResponse,
54
59
  ]
55
- """Get run details"""
60
+ """///////////////////////////////////////////////////////////////////////////
61
+ General *AppIo endpoints for App Executor processes
62
+ ///////////////////////////////////////////////////////////////////////////
63
+
64
+ Get run details
65
+ """
66
+
67
+ SendAppHeartbeat: grpc.UnaryUnaryMultiCallable[
68
+ flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
69
+ flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
70
+ ]
71
+ """App heartbeat"""
56
72
 
57
- PullClientAppInputs: grpc.UnaryUnaryMultiCallable[
73
+ PullAppInputs: grpc.UnaryUnaryMultiCallable[
58
74
  flwr.proto.appio_pb2.PullAppInputsRequest,
59
75
  flwr.proto.appio_pb2.PullAppInputsResponse,
60
76
  ]
61
- """Pull client app inputs"""
77
+ """Pull app inputs"""
62
78
 
63
- PushClientAppOutputs: grpc.UnaryUnaryMultiCallable[
79
+ PushAppOutputs: grpc.UnaryUnaryMultiCallable[
64
80
  flwr.proto.appio_pb2.PushAppOutputsRequest,
65
81
  flwr.proto.appio_pb2.PushAppOutputsResponse,
66
82
  ]
67
- """Push client app outputs"""
68
-
69
- PushMessage: grpc.UnaryUnaryMultiCallable[
70
- flwr.proto.appio_pb2.PushAppMessagesRequest,
71
- flwr.proto.appio_pb2.PushAppMessagesResponse,
72
- ]
73
- """Push Message"""
74
-
75
- PullMessage: grpc.UnaryUnaryMultiCallable[
76
- flwr.proto.appio_pb2.PullAppMessagesRequest,
77
- flwr.proto.appio_pb2.PullAppMessagesResponse,
78
- ]
79
- """Pull Message"""
80
-
81
- SendAppHeartbeat: grpc.UnaryUnaryMultiCallable[
82
- flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
83
- flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
84
- ]
85
- """App heartbeat"""
83
+ """Push app outputs"""
86
84
 
87
85
  PushObject: grpc.UnaryUnaryMultiCallable[
88
86
  flwr.proto.message_pb2.PushObjectRequest,
89
87
  flwr.proto.message_pb2.PushObjectResponse,
90
88
  ]
91
- """Push Object"""
89
+ """///////////////////////////////////////////////////////////////////////////
90
+ Specific endpoints shared by ServerAppIo and ClientAppIo
91
+ ///////////////////////////////////////////////////////////////////////////
92
+
93
+ Push Object
94
+ """
92
95
 
93
96
  PullObject: grpc.UnaryUnaryMultiCallable[
94
97
  flwr.proto.message_pb2.PullObjectRequest,
@@ -102,12 +105,34 @@ class ClientAppIoStub:
102
105
  ]
103
106
  """Confirm Message Received"""
104
107
 
108
+ PushMessage: grpc.UnaryUnaryMultiCallable[
109
+ flwr.proto.appio_pb2.PushAppMessagesRequest,
110
+ flwr.proto.appio_pb2.PushAppMessagesResponse,
111
+ ]
112
+ """///////////////////////////////////////////////////////////////////////////
113
+ Specific endpoints for ClientAppIo
114
+ ///////////////////////////////////////////////////////////////////////////
115
+
116
+ Push Message
117
+ """
118
+
119
+ PullMessage: grpc.UnaryUnaryMultiCallable[
120
+ flwr.proto.appio_pb2.PullAppMessagesRequest,
121
+ flwr.proto.appio_pb2.PullAppMessagesResponse,
122
+ ]
123
+ """Pull Message"""
124
+
105
125
  class ClientAppIoAsyncStub:
106
126
  ListAppsToLaunch: grpc.aio.UnaryUnaryMultiCallable[
107
127
  flwr.proto.appio_pb2.ListAppsToLaunchRequest,
108
128
  flwr.proto.appio_pb2.ListAppsToLaunchResponse,
109
129
  ]
110
- """Get run IDs with pending messages"""
130
+ """///////////////////////////////////////////////////////////////////////////
131
+ General *AppIo endpoints for SuperExec processes
132
+ ///////////////////////////////////////////////////////////////////////////
133
+
134
+ Get run IDs with pending messages
135
+ """
111
136
 
112
137
  RequestToken: grpc.aio.UnaryUnaryMultiCallable[
113
138
  flwr.proto.appio_pb2.RequestTokenRequest,
@@ -119,43 +144,41 @@ class ClientAppIoAsyncStub:
119
144
  flwr.proto.run_pb2.GetRunRequest,
120
145
  flwr.proto.run_pb2.GetRunResponse,
121
146
  ]
122
- """Get run details"""
147
+ """///////////////////////////////////////////////////////////////////////////
148
+ General *AppIo endpoints for App Executor processes
149
+ ///////////////////////////////////////////////////////////////////////////
123
150
 
124
- PullClientAppInputs: grpc.aio.UnaryUnaryMultiCallable[
151
+ Get run details
152
+ """
153
+
154
+ SendAppHeartbeat: grpc.aio.UnaryUnaryMultiCallable[
155
+ flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
156
+ flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
157
+ ]
158
+ """App heartbeat"""
159
+
160
+ PullAppInputs: grpc.aio.UnaryUnaryMultiCallable[
125
161
  flwr.proto.appio_pb2.PullAppInputsRequest,
126
162
  flwr.proto.appio_pb2.PullAppInputsResponse,
127
163
  ]
128
- """Pull client app inputs"""
164
+ """Pull app inputs"""
129
165
 
130
- PushClientAppOutputs: grpc.aio.UnaryUnaryMultiCallable[
166
+ PushAppOutputs: grpc.aio.UnaryUnaryMultiCallable[
131
167
  flwr.proto.appio_pb2.PushAppOutputsRequest,
132
168
  flwr.proto.appio_pb2.PushAppOutputsResponse,
133
169
  ]
134
- """Push client app outputs"""
135
-
136
- PushMessage: grpc.aio.UnaryUnaryMultiCallable[
137
- flwr.proto.appio_pb2.PushAppMessagesRequest,
138
- flwr.proto.appio_pb2.PushAppMessagesResponse,
139
- ]
140
- """Push Message"""
141
-
142
- PullMessage: grpc.aio.UnaryUnaryMultiCallable[
143
- flwr.proto.appio_pb2.PullAppMessagesRequest,
144
- flwr.proto.appio_pb2.PullAppMessagesResponse,
145
- ]
146
- """Pull Message"""
147
-
148
- SendAppHeartbeat: grpc.aio.UnaryUnaryMultiCallable[
149
- flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
150
- flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
151
- ]
152
- """App heartbeat"""
170
+ """Push app outputs"""
153
171
 
154
172
  PushObject: grpc.aio.UnaryUnaryMultiCallable[
155
173
  flwr.proto.message_pb2.PushObjectRequest,
156
174
  flwr.proto.message_pb2.PushObjectResponse,
157
175
  ]
158
- """Push Object"""
176
+ """///////////////////////////////////////////////////////////////////////////
177
+ Specific endpoints shared by ServerAppIo and ClientAppIo
178
+ ///////////////////////////////////////////////////////////////////////////
179
+
180
+ Push Object
181
+ """
159
182
 
160
183
  PullObject: grpc.aio.UnaryUnaryMultiCallable[
161
184
  flwr.proto.message_pb2.PullObjectRequest,
@@ -169,6 +192,23 @@ class ClientAppIoAsyncStub:
169
192
  ]
170
193
  """Confirm Message Received"""
171
194
 
195
+ PushMessage: grpc.aio.UnaryUnaryMultiCallable[
196
+ flwr.proto.appio_pb2.PushAppMessagesRequest,
197
+ flwr.proto.appio_pb2.PushAppMessagesResponse,
198
+ ]
199
+ """///////////////////////////////////////////////////////////////////////////
200
+ Specific endpoints for ClientAppIo
201
+ ///////////////////////////////////////////////////////////////////////////
202
+
203
+ Push Message
204
+ """
205
+
206
+ PullMessage: grpc.aio.UnaryUnaryMultiCallable[
207
+ flwr.proto.appio_pb2.PullAppMessagesRequest,
208
+ flwr.proto.appio_pb2.PullAppMessagesResponse,
209
+ ]
210
+ """Pull Message"""
211
+
172
212
  class ClientAppIoServicer(metaclass=abc.ABCMeta):
173
213
  @abc.abstractmethod
174
214
  def ListAppsToLaunch(
@@ -176,7 +216,12 @@ class ClientAppIoServicer(metaclass=abc.ABCMeta):
176
216
  request: flwr.proto.appio_pb2.ListAppsToLaunchRequest,
177
217
  context: _ServicerContext,
178
218
  ) -> typing.Union[flwr.proto.appio_pb2.ListAppsToLaunchResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.ListAppsToLaunchResponse]]:
179
- """Get run IDs with pending messages"""
219
+ """///////////////////////////////////////////////////////////////////////////
220
+ General *AppIo endpoints for SuperExec processes
221
+ ///////////////////////////////////////////////////////////////////////////
222
+
223
+ Get run IDs with pending messages
224
+ """
180
225
 
181
226
  @abc.abstractmethod
182
227
  def RequestToken(
@@ -192,47 +237,36 @@ class ClientAppIoServicer(metaclass=abc.ABCMeta):
192
237
  request: flwr.proto.run_pb2.GetRunRequest,
193
238
  context: _ServicerContext,
194
239
  ) -> typing.Union[flwr.proto.run_pb2.GetRunResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunResponse]]:
195
- """Get run details"""
240
+ """///////////////////////////////////////////////////////////////////////////
241
+ General *AppIo endpoints for App Executor processes
242
+ ///////////////////////////////////////////////////////////////////////////
196
243
 
197
- @abc.abstractmethod
198
- def PullClientAppInputs(
199
- self,
200
- request: flwr.proto.appio_pb2.PullAppInputsRequest,
201
- context: _ServicerContext,
202
- ) -> typing.Union[flwr.proto.appio_pb2.PullAppInputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppInputsResponse]]:
203
- """Pull client app inputs"""
244
+ Get run details
245
+ """
204
246
 
205
247
  @abc.abstractmethod
206
- def PushClientAppOutputs(
207
- self,
208
- request: flwr.proto.appio_pb2.PushAppOutputsRequest,
209
- context: _ServicerContext,
210
- ) -> typing.Union[flwr.proto.appio_pb2.PushAppOutputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppOutputsResponse]]:
211
- """Push client app outputs"""
212
-
213
- @abc.abstractmethod
214
- def PushMessage(
248
+ def SendAppHeartbeat(
215
249
  self,
216
- request: flwr.proto.appio_pb2.PushAppMessagesRequest,
250
+ request: flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
217
251
  context: _ServicerContext,
218
- ) -> typing.Union[flwr.proto.appio_pb2.PushAppMessagesResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppMessagesResponse]]:
219
- """Push Message"""
252
+ ) -> typing.Union[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse, collections.abc.Awaitable[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse]]:
253
+ """App heartbeat"""
220
254
 
221
255
  @abc.abstractmethod
222
- def PullMessage(
256
+ def PullAppInputs(
223
257
  self,
224
- request: flwr.proto.appio_pb2.PullAppMessagesRequest,
258
+ request: flwr.proto.appio_pb2.PullAppInputsRequest,
225
259
  context: _ServicerContext,
226
- ) -> typing.Union[flwr.proto.appio_pb2.PullAppMessagesResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppMessagesResponse]]:
227
- """Pull Message"""
260
+ ) -> typing.Union[flwr.proto.appio_pb2.PullAppInputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppInputsResponse]]:
261
+ """Pull app inputs"""
228
262
 
229
263
  @abc.abstractmethod
230
- def SendAppHeartbeat(
264
+ def PushAppOutputs(
231
265
  self,
232
- request: flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
266
+ request: flwr.proto.appio_pb2.PushAppOutputsRequest,
233
267
  context: _ServicerContext,
234
- ) -> typing.Union[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse, collections.abc.Awaitable[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse]]:
235
- """App heartbeat"""
268
+ ) -> typing.Union[flwr.proto.appio_pb2.PushAppOutputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppOutputsResponse]]:
269
+ """Push app outputs"""
236
270
 
237
271
  @abc.abstractmethod
238
272
  def PushObject(
@@ -240,7 +274,12 @@ class ClientAppIoServicer(metaclass=abc.ABCMeta):
240
274
  request: flwr.proto.message_pb2.PushObjectRequest,
241
275
  context: _ServicerContext,
242
276
  ) -> typing.Union[flwr.proto.message_pb2.PushObjectResponse, collections.abc.Awaitable[flwr.proto.message_pb2.PushObjectResponse]]:
243
- """Push Object"""
277
+ """///////////////////////////////////////////////////////////////////////////
278
+ Specific endpoints shared by ServerAppIo and ClientAppIo
279
+ ///////////////////////////////////////////////////////////////////////////
280
+
281
+ Push Object
282
+ """
244
283
 
245
284
  @abc.abstractmethod
246
285
  def PullObject(
@@ -258,4 +297,25 @@ class ClientAppIoServicer(metaclass=abc.ABCMeta):
258
297
  ) -> typing.Union[flwr.proto.message_pb2.ConfirmMessageReceivedResponse, collections.abc.Awaitable[flwr.proto.message_pb2.ConfirmMessageReceivedResponse]]:
259
298
  """Confirm Message Received"""
260
299
 
300
+ @abc.abstractmethod
301
+ def PushMessage(
302
+ self,
303
+ request: flwr.proto.appio_pb2.PushAppMessagesRequest,
304
+ context: _ServicerContext,
305
+ ) -> typing.Union[flwr.proto.appio_pb2.PushAppMessagesResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppMessagesResponse]]:
306
+ """///////////////////////////////////////////////////////////////////////////
307
+ Specific endpoints for ClientAppIo
308
+ ///////////////////////////////////////////////////////////////////////////
309
+
310
+ Push Message
311
+ """
312
+
313
+ @abc.abstractmethod
314
+ def PullMessage(
315
+ self,
316
+ request: flwr.proto.appio_pb2.PullAppMessagesRequest,
317
+ context: _ServicerContext,
318
+ ) -> typing.Union[flwr.proto.appio_pb2.PullAppMessagesResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppMessagesResponse]]:
319
+ """Pull Message"""
320
+
261
321
  def add_ClientAppIoServicer_to_server(servicer: ClientAppIoServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
@@ -26,13 +26,15 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
26
26
  from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
27
27
 
28
28
 
29
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lwr/proto/federation.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x15\x66lwr/proto/node.proto\"s\n\nFederation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bmember_aids\x18\x02 \x03(\t\x12#\n\x05nodes\x18\x03 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x1d\n\x04runs\x18\x04 \x03(\x0b\x32\x0f.flwr.proto.Runb\x06proto3')
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lwr/proto/federation.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x15\x66lwr/proto/node.proto\"#\n\x07\x41\x63\x63ount\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xaf\x01\n\nFederation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0bmember_aids\x18\x02 \x03(\t\x12#\n\x05nodes\x18\x03 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x1d\n\x04runs\x18\x04 \x03(\x0b\x32\x0f.flwr.proto.Run\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12%\n\x08\x61\x63\x63ounts\x18\x06 \x03(\x0b\x32\x13.flwr.proto.Accountb\x06proto3')
30
30
 
31
31
  _globals = globals()
32
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
33
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.federation_pb2', _globals)
34
34
  if not _descriptor._USE_C_DESCRIPTORS:
35
35
  DESCRIPTOR._loaded_options = None
36
- _globals['_FEDERATION']._serialized_start=88
37
- _globals['_FEDERATION']._serialized_end=203
36
+ _globals['_ACCOUNT']._serialized_start=88
37
+ _globals['_ACCOUNT']._serialized_end=123
38
+ _globals['_FEDERATION']._serialized_start=126
39
+ _globals['_FEDERATION']._serialized_end=301
38
40
  # @@protoc_insertion_point(module_scope)
@@ -28,6 +28,24 @@ import typing
28
28
 
29
29
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
30
30
 
31
+ @typing.final
32
+ class Account(google.protobuf.message.Message):
33
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
34
+
35
+ ID_FIELD_NUMBER: builtins.int
36
+ NAME_FIELD_NUMBER: builtins.int
37
+ id: builtins.str
38
+ name: builtins.str
39
+ def __init__(
40
+ self,
41
+ *,
42
+ id: builtins.str = ...,
43
+ name: builtins.str = ...,
44
+ ) -> None: ...
45
+ def ClearField(self, field_name: typing.Literal["id", b"id", "name", b"name"]) -> None: ...
46
+
47
+ global___Account = Account
48
+
31
49
  @typing.final
32
50
  class Federation(google.protobuf.message.Message):
33
51
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -36,13 +54,23 @@ class Federation(google.protobuf.message.Message):
36
54
  MEMBER_AIDS_FIELD_NUMBER: builtins.int
37
55
  NODES_FIELD_NUMBER: builtins.int
38
56
  RUNS_FIELD_NUMBER: builtins.int
57
+ DESCRIPTION_FIELD_NUMBER: builtins.int
58
+ ACCOUNTS_FIELD_NUMBER: builtins.int
39
59
  name: builtins.str
60
+ description: builtins.str
61
+ """Added in v1.26.0"""
40
62
  @property
41
- def member_aids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
63
+ def member_aids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
64
+ """Deprecated in v1.26.0"""
65
+
42
66
  @property
43
67
  def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.node_pb2.NodeInfo]: ...
44
68
  @property
45
69
  def runs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.run_pb2.Run]: ...
70
+ @property
71
+ def accounts(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Account]:
72
+ """Added in v1.26.0"""
73
+
46
74
  def __init__(
47
75
  self,
48
76
  *,
@@ -50,7 +78,9 @@ class Federation(google.protobuf.message.Message):
50
78
  member_aids: collections.abc.Iterable[builtins.str] | None = ...,
51
79
  nodes: collections.abc.Iterable[flwr.proto.node_pb2.NodeInfo] | None = ...,
52
80
  runs: collections.abc.Iterable[flwr.proto.run_pb2.Run] | None = ...,
81
+ description: builtins.str = ...,
82
+ accounts: collections.abc.Iterable[global___Account] | None = ...,
53
83
  ) -> None: ...
54
- def ClearField(self, field_name: typing.Literal["member_aids", b"member_aids", "name", b"name", "nodes", b"nodes", "runs", b"runs"]) -> None: ...
84
+ def ClearField(self, field_name: typing.Literal["accounts", b"accounts", "description", b"description", "member_aids", b"member_aids", "name", b"name", "nodes", b"nodes", "runs", b"runs"]) -> None: ...
55
85
 
56
86
  global___Federation = Federation
flwr/proto/fleet_pb2.py CHANGED
@@ -29,7 +29,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
29
29
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
30
30
 
31
31
 
32
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x18\x66lwr/proto/message.proto\".\n\x18RegisterNodeFleetRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\",\n\x19RegisterNodeFleetResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"E\n\x13\x41\x63tivateNodeRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x1a\n\x12heartbeat_interval\x18\x02 \x01(\x01\"\'\n\x14\x41\x63tivateNodeResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"(\n\x15\x44\x65\x61\x63tivateNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x18\n\x16\x44\x65\x61\x63tivateNodeResponse\"-\n\x1aUnregisterNodeFleetRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x1d\n\x1bUnregisterNodeFleetResponse\"J\n\x13PullMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\"\xa2\x01\n\x14PullMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\x97\x01\n\x13PushMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\xc9\x01\n\x14PushMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12>\n\x07results\x18\x02 \x03(\x0b\x32-.flwr.proto.PushMessagesResponse.ResultsEntry\x12\x17\n\x0fobjects_to_push\x18\x03 \x03(\t\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\xa0\x08\n\x05\x46leet\x12]\n\x0cRegisterNode\x12$.flwr.proto.RegisterNodeFleetRequest\x1a%.flwr.proto.RegisterNodeFleetResponse\"\x00\x12S\n\x0c\x41\x63tivateNode\x12\x1f.flwr.proto.ActivateNodeRequest\x1a .flwr.proto.ActivateNodeResponse\"\x00\x12Y\n\x0e\x44\x65\x61\x63tivateNode\x12!.flwr.proto.DeactivateNodeRequest\x1a\".flwr.proto.DeactivateNodeResponse\"\x00\x12\x63\n\x0eUnregisterNode\x12&.flwr.proto.UnregisterNodeFleetRequest\x1a\'.flwr.proto.UnregisterNodeFleetResponse\"\x00\x12\x62\n\x11SendNodeHeartbeat\x12$.flwr.proto.SendNodeHeartbeatRequest\x1a%.flwr.proto.SendNodeHeartbeatResponse\"\x00\x12S\n\x0cPullMessages\x12\x1f.flwr.proto.PullMessagesRequest\x1a .flwr.proto.PullMessagesResponse\"\x00\x12S\n\x0cPushMessages\x12\x1f.flwr.proto.PushMessagesRequest\x1a .flwr.proto.PushMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x18\x66lwr/proto/message.proto\".\n\x18RegisterNodeFleetRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\",\n\x19RegisterNodeFleetResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"E\n\x13\x41\x63tivateNodeRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x1a\n\x12heartbeat_interval\x18\x02 \x01(\x01\"\'\n\x14\x41\x63tivateNodeResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"(\n\x15\x44\x65\x61\x63tivateNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x18\n\x16\x44\x65\x61\x63tivateNodeResponse\"-\n\x1aUnregisterNodeFleetRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x1d\n\x1bUnregisterNodeFleetResponse\"J\n\x13PullMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\"\xa2\x01\n\x14PullMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\xb7\x01\n\x13PushMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x03 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\x12\x1e\n\x16\x63lientapp_runtime_list\x18\x04 \x03(\x01\"\xc9\x01\n\x14PushMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12>\n\x07results\x18\x02 \x03(\x0b\x32-.flwr.proto.PushMessagesResponse.ResultsEntry\x12\x17\n\x0fobjects_to_push\x18\x03 \x03(\t\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\xa0\x08\n\x05\x46leet\x12]\n\x0cRegisterNode\x12$.flwr.proto.RegisterNodeFleetRequest\x1a%.flwr.proto.RegisterNodeFleetResponse\"\x00\x12S\n\x0c\x41\x63tivateNode\x12\x1f.flwr.proto.ActivateNodeRequest\x1a .flwr.proto.ActivateNodeResponse\"\x00\x12Y\n\x0e\x44\x65\x61\x63tivateNode\x12!.flwr.proto.DeactivateNodeRequest\x1a\".flwr.proto.DeactivateNodeResponse\"\x00\x12\x63\n\x0eUnregisterNode\x12&.flwr.proto.UnregisterNodeFleetRequest\x1a\'.flwr.proto.UnregisterNodeFleetResponse\"\x00\x12\x62\n\x11SendNodeHeartbeat\x12$.flwr.proto.SendNodeHeartbeatRequest\x1a%.flwr.proto.SendNodeHeartbeatResponse\"\x00\x12S\n\x0cPullMessages\x12\x1f.flwr.proto.PullMessagesRequest\x1a .flwr.proto.PullMessagesResponse\"\x00\x12S\n\x0cPushMessages\x12\x1f.flwr.proto.PushMessagesRequest\x1a .flwr.proto.PushMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
33
33
 
34
34
  _globals = globals()
35
35
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -59,13 +59,13 @@ if not _descriptor._USE_C_DESCRIPTORS:
59
59
  _globals['_PULLMESSAGESRESPONSE']._serialized_start=588
60
60
  _globals['_PULLMESSAGESRESPONSE']._serialized_end=750
61
61
  _globals['_PUSHMESSAGESREQUEST']._serialized_start=753
62
- _globals['_PUSHMESSAGESREQUEST']._serialized_end=904
63
- _globals['_PUSHMESSAGESRESPONSE']._serialized_start=907
64
- _globals['_PUSHMESSAGESRESPONSE']._serialized_end=1108
65
- _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_start=1062
66
- _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_end=1108
67
- _globals['_RECONNECT']._serialized_start=1110
68
- _globals['_RECONNECT']._serialized_end=1140
69
- _globals['_FLEET']._serialized_start=1143
70
- _globals['_FLEET']._serialized_end=2199
62
+ _globals['_PUSHMESSAGESREQUEST']._serialized_end=936
63
+ _globals['_PUSHMESSAGESRESPONSE']._serialized_start=939
64
+ _globals['_PUSHMESSAGESRESPONSE']._serialized_end=1140
65
+ _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_start=1094
66
+ _globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_end=1140
67
+ _globals['_RECONNECT']._serialized_start=1142
68
+ _globals['_RECONNECT']._serialized_end=1172
69
+ _globals['_FLEET']._serialized_start=1175
70
+ _globals['_FLEET']._serialized_end=2231
71
71
  # @@protoc_insertion_point(module_scope)
flwr/proto/fleet_pb2.pyi CHANGED
@@ -206,21 +206,25 @@ class PushMessagesRequest(google.protobuf.message.Message):
206
206
  NODE_FIELD_NUMBER: builtins.int
207
207
  MESSAGES_LIST_FIELD_NUMBER: builtins.int
208
208
  MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
209
+ CLIENTAPP_RUNTIME_LIST_FIELD_NUMBER: builtins.int
209
210
  @property
210
211
  def node(self) -> flwr.proto.node_pb2.Node: ...
211
212
  @property
212
213
  def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
213
214
  @property
214
215
  def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
216
+ @property
217
+ def clientapp_runtime_list(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
215
218
  def __init__(
216
219
  self,
217
220
  *,
218
221
  node: flwr.proto.node_pb2.Node | None = ...,
219
222
  messages_list: collections.abc.Iterable[flwr.proto.message_pb2.Message] | None = ...,
220
223
  message_object_trees: collections.abc.Iterable[flwr.proto.message_pb2.ObjectTree] | None = ...,
224
+ clientapp_runtime_list: collections.abc.Iterable[builtins.float] | None = ...,
221
225
  ) -> None: ...
222
226
  def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
223
- def ClearField(self, field_name: typing.Literal["message_object_trees", b"message_object_trees", "messages_list", b"messages_list", "node", b"node"]) -> None: ...
227
+ def ClearField(self, field_name: typing.Literal["clientapp_runtime_list", b"clientapp_runtime_list", "message_object_trees", b"message_object_trees", "messages_list", b"messages_list", "node", b"node"]) -> None: ...
224
228
 
225
229
  global___PushMessagesRequest = PushMessagesRequest
226
230
 
flwr/proto/run_pb2.py CHANGED
@@ -27,7 +27,7 @@ from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
27
27
  from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xf4\x02\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x12\x12\n\npending_at\x18\x06 \x01(\t\x12\x13\n\x0bstarting_at\x18\x07 \x01(\t\x12\x12\n\nrunning_at\x18\x08 \x01(\t\x12\x13\n\x0b\x66inished_at\x18\t \x01(\t\x12%\n\x06status\x18\n \x01(\x0b\x32\x15.flwr.proto.RunStatus\x12\x10\n\x08\x66lwr_aid\x18\x0b \x01(\t\x12\x12\n\nfederation\x18\x0c \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"?\n\rGetRunRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"F\n\x13GetRunStatusRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0f\n\x07run_ids\x18\x02 \x03(\x04\"\xb1\x01\n\x14GetRunStatusResponse\x12L\n\x0frun_status_dict\x18\x01 \x03(\x0b\x32\x33.flwr.proto.GetRunStatusResponse.RunStatusDictEntry\x1aK\n\x12RunStatusDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus:\x02\x38\x01\"-\n\x1bGetFederationOptionsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"T\n\x1cGetFederationOptionsResponse\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x01 \x01(\x0b\x32\x18.flwr.proto.ConfigRecordb\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xb7\x03\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x12\x12\n\npending_at\x18\x06 \x01(\t\x12\x13\n\x0bstarting_at\x18\x07 \x01(\t\x12\x12\n\nrunning_at\x18\x08 \x01(\t\x12\x13\n\x0b\x66inished_at\x18\t \x01(\t\x12%\n\x06status\x18\n \x01(\x0b\x32\x15.flwr.proto.RunStatus\x12\x10\n\x08\x66lwr_aid\x18\x0b \x01(\t\x12\x12\n\nfederation\x18\x0c \x01(\t\x12\x12\n\nbytes_sent\x18\r \x01(\x04\x12\x12\n\nbytes_recv\x18\x0e \x01(\x04\x12\x19\n\x11\x63lientapp_runtime\x18\x0f \x01(\x01\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"?\n\rGetRunRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"-\n\x1bGetFederationOptionsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"T\n\x1cGetFederationOptionsResponse\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x01 \x01(\x0b\x32\x18.flwr.proto.ConfigRecordb\x06proto3')
31
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,30 +36,22 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
36
  DESCRIPTOR._loaded_options = None
37
37
  _globals['_RUN_OVERRIDECONFIGENTRY']._loaded_options = None
38
38
  _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
39
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._loaded_options = None
40
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_options = b'8\001'
41
39
  _globals['_RUN']._serialized_start=117
42
- _globals['_RUN']._serialized_end=489
43
- _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=416
44
- _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=489
45
- _globals['_RUNSTATUS']._serialized_start=491
46
- _globals['_RUNSTATUS']._serialized_end=555
47
- _globals['_GETRUNREQUEST']._serialized_start=557
48
- _globals['_GETRUNREQUEST']._serialized_end=620
49
- _globals['_GETRUNRESPONSE']._serialized_start=622
50
- _globals['_GETRUNRESPONSE']._serialized_end=668
51
- _globals['_UPDATERUNSTATUSREQUEST']._serialized_start=670
52
- _globals['_UPDATERUNSTATUSREQUEST']._serialized_end=753
53
- _globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=755
54
- _globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=780
55
- _globals['_GETRUNSTATUSREQUEST']._serialized_start=782
56
- _globals['_GETRUNSTATUSREQUEST']._serialized_end=852
57
- _globals['_GETRUNSTATUSRESPONSE']._serialized_start=855
58
- _globals['_GETRUNSTATUSRESPONSE']._serialized_end=1032
59
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=957
60
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1032
61
- _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_start=1034
62
- _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_end=1079
63
- _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_start=1081
64
- _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_end=1165
40
+ _globals['_RUN']._serialized_end=556
41
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=483
42
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=556
43
+ _globals['_RUNSTATUS']._serialized_start=558
44
+ _globals['_RUNSTATUS']._serialized_end=622
45
+ _globals['_GETRUNREQUEST']._serialized_start=624
46
+ _globals['_GETRUNREQUEST']._serialized_end=687
47
+ _globals['_GETRUNRESPONSE']._serialized_start=689
48
+ _globals['_GETRUNRESPONSE']._serialized_end=735
49
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_start=737
50
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_end=820
51
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=822
52
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=847
53
+ _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_start=849
54
+ _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_end=894
55
+ _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_start=896
56
+ _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_end=980
65
57
  # @@protoc_insertion_point(module_scope)