flwr-nightly 1.26.0.dev20260202__py3-none-any.whl → 1.26.0.dev20260203__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.
flwr/cli/federation/ls.py CHANGED
@@ -126,9 +126,12 @@ def _to_table(federations: list[Federation]) -> Table:
126
126
  table.add_column(
127
127
  Text("Federation", justify="center"), style="bright_black", no_wrap=True
128
128
  )
129
+ table.add_column(
130
+ Text("Description", justify="center"), style="bright_black", no_wrap=True
131
+ )
129
132
 
130
133
  for federation in federations:
131
- table.add_row(federation.name)
134
+ table.add_row(federation.name, federation.description)
132
135
 
133
136
  return table
134
137
 
flwr/cli/utils.py CHANGED
@@ -100,6 +100,8 @@ def cli_output_handler(
100
100
  restore_output()
101
101
  print_json_error(captured_output.getvalue(), err)
102
102
  else:
103
+ if isinstance(err, typer.Exit):
104
+ raise # Allow typer.Exit to escape normally
103
105
  raise click.ClickException(str(err)) from None
104
106
  finally:
105
107
  if is_json:
flwr/common/typing.py CHANGED
@@ -343,6 +343,7 @@ class Federation:
343
343
  """Federation details."""
344
344
 
345
345
  name: str
346
+ description: str
346
347
  accounts: list[Account]
347
348
  nodes: list[NodeInfo]
348
349
  runs: list[Run]
@@ -26,7 +26,7 @@ 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\"#\n\x07\x41\x63\x63ount\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x85\x01\n\nFederation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x08\x61\x63\x63ounts\x18\x03 \x03(\x0b\x32\x13.flwr.proto.Account\x12#\n\x05nodes\x18\x04 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x1d\n\x04runs\x18\x05 \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)
@@ -36,5 +36,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
36
  _globals['_ACCOUNT']._serialized_start=88
37
37
  _globals['_ACCOUNT']._serialized_end=123
38
38
  _globals['_FEDERATION']._serialized_start=126
39
- _globals['_FEDERATION']._serialized_end=259
39
+ _globals['_FEDERATION']._serialized_end=301
40
40
  # @@protoc_insertion_point(module_scope)
@@ -51,24 +51,36 @@ class Federation(google.protobuf.message.Message):
51
51
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
52
52
 
53
53
  NAME_FIELD_NUMBER: builtins.int
54
- ACCOUNTS_FIELD_NUMBER: builtins.int
54
+ MEMBER_AIDS_FIELD_NUMBER: builtins.int
55
55
  NODES_FIELD_NUMBER: builtins.int
56
56
  RUNS_FIELD_NUMBER: builtins.int
57
+ DESCRIPTION_FIELD_NUMBER: builtins.int
58
+ ACCOUNTS_FIELD_NUMBER: builtins.int
57
59
  name: builtins.str
60
+ description: builtins.str
61
+ """Added in v1.26.0"""
58
62
  @property
59
- def accounts(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Account]: ...
63
+ def member_aids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
64
+ """Deprecated in v1.26.0"""
65
+
60
66
  @property
61
67
  def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.node_pb2.NodeInfo]: ...
62
68
  @property
63
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
+
64
74
  def __init__(
65
75
  self,
66
76
  *,
67
77
  name: builtins.str = ...,
68
- accounts: collections.abc.Iterable[global___Account] | None = ...,
78
+ member_aids: collections.abc.Iterable[builtins.str] | None = ...,
69
79
  nodes: collections.abc.Iterable[flwr.proto.node_pb2.NodeInfo] | None = ...,
70
80
  runs: collections.abc.Iterable[flwr.proto.run_pb2.Run] | None = ...,
81
+ description: builtins.str = ...,
82
+ accounts: collections.abc.Iterable[global___Account] | None = ...,
71
83
  ) -> None: ...
72
- def ClearField(self, field_name: typing.Literal["accounts", b"accounts", "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: ...
73
85
 
74
86
  global___Federation = Federation
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\"\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\"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,8 +36,6 @@ 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
40
  _globals['_RUN']._serialized_end=556
43
41
  _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=483
@@ -52,14 +50,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
52
50
  _globals['_UPDATERUNSTATUSREQUEST']._serialized_end=820
53
51
  _globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=822
54
52
  _globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=847
55
- _globals['_GETRUNSTATUSREQUEST']._serialized_start=849
56
- _globals['_GETRUNSTATUSREQUEST']._serialized_end=919
57
- _globals['_GETRUNSTATUSRESPONSE']._serialized_start=922
58
- _globals['_GETRUNSTATUSRESPONSE']._serialized_end=1099
59
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=1024
60
- _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1099
61
- _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_start=1101
62
- _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_end=1146
63
- _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_start=1148
64
- _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_end=1232
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)
flwr/proto/run_pb2.pyi CHANGED
@@ -202,63 +202,6 @@ class UpdateRunStatusResponse(google.protobuf.message.Message):
202
202
 
203
203
  global___UpdateRunStatusResponse = UpdateRunStatusResponse
204
204
 
205
- @typing.final
206
- class GetRunStatusRequest(google.protobuf.message.Message):
207
- """GetRunStatus"""
208
-
209
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
210
-
211
- NODE_FIELD_NUMBER: builtins.int
212
- RUN_IDS_FIELD_NUMBER: builtins.int
213
- @property
214
- def node(self) -> flwr.proto.node_pb2.Node: ...
215
- @property
216
- def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
217
- def __init__(
218
- self,
219
- *,
220
- node: flwr.proto.node_pb2.Node | None = ...,
221
- run_ids: collections.abc.Iterable[builtins.int] | None = ...,
222
- ) -> None: ...
223
- def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ...
224
- def ClearField(self, field_name: typing.Literal["node", b"node", "run_ids", b"run_ids"]) -> None: ...
225
-
226
- global___GetRunStatusRequest = GetRunStatusRequest
227
-
228
- @typing.final
229
- class GetRunStatusResponse(google.protobuf.message.Message):
230
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
231
-
232
- @typing.final
233
- class RunStatusDictEntry(google.protobuf.message.Message):
234
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
235
-
236
- KEY_FIELD_NUMBER: builtins.int
237
- VALUE_FIELD_NUMBER: builtins.int
238
- key: builtins.int
239
- @property
240
- def value(self) -> global___RunStatus: ...
241
- def __init__(
242
- self,
243
- *,
244
- key: builtins.int = ...,
245
- value: global___RunStatus | None = ...,
246
- ) -> None: ...
247
- def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ...
248
- def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
249
-
250
- RUN_STATUS_DICT_FIELD_NUMBER: builtins.int
251
- @property
252
- def run_status_dict(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___RunStatus]: ...
253
- def __init__(
254
- self,
255
- *,
256
- run_status_dict: collections.abc.Mapping[builtins.int, global___RunStatus] | None = ...,
257
- ) -> None: ...
258
- def ClearField(self, field_name: typing.Literal["run_status_dict", b"run_status_dict"]) -> None: ...
259
-
260
- global___GetRunStatusResponse = GetRunStatusResponse
261
-
262
205
  @typing.final
263
206
  class GetFederationOptionsRequest(google.protobuf.message.Message):
264
207
  """Get Federation Options associated with run"""
@@ -31,7 +31,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
31
31
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
32
32
 
33
33
 
34
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x16\x66lwr/proto/appio.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node2\xe9\n\n\x0bServerAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\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\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3')
34
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x16\x66lwr/proto/appio.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node2\x94\n\n\x0bServerAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\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\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3')
35
35
 
36
36
  _globals = globals()
37
37
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -43,5 +43,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
43
43
  _globals['_GETNODESRESPONSE']._serialized_start=246
44
44
  _globals['_GETNODESRESPONSE']._serialized_end=297
45
45
  _globals['_SERVERAPPIO']._serialized_start=300
46
- _globals['_SERVERAPPIO']._serialized_end=1685
46
+ _globals['_SERVERAPPIO']._serialized_end=1600
47
47
  # @@protoc_insertion_point(module_scope)
@@ -85,11 +85,6 @@ class ServerAppIoStub(object):
85
85
  request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
86
86
  response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
87
87
  _registered_method=True)
88
- self.GetRunStatus = channel.unary_unary(
89
- '/flwr.proto.ServerAppIo/GetRunStatus',
90
- request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
91
- response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
92
- _registered_method=True)
93
88
  self.UpdateRunStatus = channel.unary_unary(
94
89
  '/flwr.proto.ServerAppIo/UpdateRunStatus',
95
90
  request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
@@ -200,19 +195,12 @@ class ServerAppIoServicer(object):
200
195
  context.set_details('Method not implemented!')
201
196
  raise NotImplementedError('Method not implemented!')
202
197
 
203
- def GetRunStatus(self, request, context):
198
+ def UpdateRunStatus(self, request, context):
204
199
  """///////////////////////////////////////////////////////////////////////////
205
200
  Specific endpoints shared by ServerAppIo and SimulationIo
206
201
  ///////////////////////////////////////////////////////////////////////////
207
202
 
208
- Get the status of a given run
209
- """
210
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
211
- context.set_details('Method not implemented!')
212
- raise NotImplementedError('Method not implemented!')
213
-
214
- def UpdateRunStatus(self, request, context):
215
- """Update the status of a given run
203
+ Update the status of a given run
216
204
  """
217
205
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
218
206
  context.set_details('Method not implemented!')
@@ -305,11 +293,6 @@ def add_ServerAppIoServicer_to_server(servicer, server):
305
293
  request_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.FromString,
306
294
  response_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.SerializeToString,
307
295
  ),
308
- 'GetRunStatus': grpc.unary_unary_rpc_method_handler(
309
- servicer.GetRunStatus,
310
- request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
311
- response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
312
- ),
313
296
  'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
314
297
  servicer.UpdateRunStatus,
315
298
  request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
@@ -594,33 +577,6 @@ class ServerAppIo(object):
594
577
  metadata,
595
578
  _registered_method=True)
596
579
 
597
- @staticmethod
598
- def GetRunStatus(request,
599
- target,
600
- options=(),
601
- channel_credentials=None,
602
- call_credentials=None,
603
- insecure=False,
604
- compression=None,
605
- wait_for_ready=None,
606
- timeout=None,
607
- metadata=None):
608
- return grpc.experimental.unary_unary(
609
- request,
610
- target,
611
- '/flwr.proto.ServerAppIo/GetRunStatus',
612
- flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
613
- flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
614
- options,
615
- channel_credentials,
616
- insecure,
617
- call_credentials,
618
- compression,
619
- wait_for_ready,
620
- timeout,
621
- metadata,
622
- _registered_method=True)
623
-
624
580
  @staticmethod
625
581
  def UpdateRunStatus(request,
626
582
  target,
@@ -108,23 +108,17 @@ class ServerAppIoStub:
108
108
  ]
109
109
  """Confirm Message Received"""
110
110
 
111
- GetRunStatus: grpc.UnaryUnaryMultiCallable[
112
- flwr.proto.run_pb2.GetRunStatusRequest,
113
- flwr.proto.run_pb2.GetRunStatusResponse,
111
+ UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
112
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
113
+ flwr.proto.run_pb2.UpdateRunStatusResponse,
114
114
  ]
115
115
  """///////////////////////////////////////////////////////////////////////////
116
116
  Specific endpoints shared by ServerAppIo and SimulationIo
117
117
  ///////////////////////////////////////////////////////////////////////////
118
118
 
119
- Get the status of a given run
119
+ Update the status of a given run
120
120
  """
121
121
 
122
- UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
123
- flwr.proto.run_pb2.UpdateRunStatusRequest,
124
- flwr.proto.run_pb2.UpdateRunStatusResponse,
125
- ]
126
- """Update the status of a given run"""
127
-
128
122
  PushLogs: grpc.UnaryUnaryMultiCallable[
129
123
  flwr.proto.log_pb2.PushLogsRequest,
130
124
  flwr.proto.log_pb2.PushLogsResponse,
@@ -230,23 +224,17 @@ class ServerAppIoAsyncStub:
230
224
  ]
231
225
  """Confirm Message Received"""
232
226
 
233
- GetRunStatus: grpc.aio.UnaryUnaryMultiCallable[
234
- flwr.proto.run_pb2.GetRunStatusRequest,
235
- flwr.proto.run_pb2.GetRunStatusResponse,
227
+ UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
228
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
229
+ flwr.proto.run_pb2.UpdateRunStatusResponse,
236
230
  ]
237
231
  """///////////////////////////////////////////////////////////////////////////
238
232
  Specific endpoints shared by ServerAppIo and SimulationIo
239
233
  ///////////////////////////////////////////////////////////////////////////
240
234
 
241
- Get the status of a given run
235
+ Update the status of a given run
242
236
  """
243
237
 
244
- UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
245
- flwr.proto.run_pb2.UpdateRunStatusRequest,
246
- flwr.proto.run_pb2.UpdateRunStatusResponse,
247
- ]
248
- """Update the status of a given run"""
249
-
250
238
  PushLogs: grpc.aio.UnaryUnaryMultiCallable[
251
239
  flwr.proto.log_pb2.PushLogsRequest,
252
240
  flwr.proto.log_pb2.PushLogsResponse,
@@ -371,26 +359,18 @@ class ServerAppIoServicer(metaclass=abc.ABCMeta):
371
359
  """Confirm Message Received"""
372
360
 
373
361
  @abc.abstractmethod
374
- def GetRunStatus(
362
+ def UpdateRunStatus(
375
363
  self,
376
- request: flwr.proto.run_pb2.GetRunStatusRequest,
364
+ request: flwr.proto.run_pb2.UpdateRunStatusRequest,
377
365
  context: _ServicerContext,
378
- ) -> typing.Union[flwr.proto.run_pb2.GetRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunStatusResponse]]:
366
+ ) -> typing.Union[flwr.proto.run_pb2.UpdateRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.UpdateRunStatusResponse]]:
379
367
  """///////////////////////////////////////////////////////////////////////////
380
368
  Specific endpoints shared by ServerAppIo and SimulationIo
381
369
  ///////////////////////////////////////////////////////////////////////////
382
370
 
383
- Get the status of a given run
371
+ Update the status of a given run
384
372
  """
385
373
 
386
- @abc.abstractmethod
387
- def UpdateRunStatus(
388
- self,
389
- request: flwr.proto.run_pb2.UpdateRunStatusRequest,
390
- context: _ServicerContext,
391
- ) -> typing.Union[flwr.proto.run_pb2.UpdateRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.UpdateRunStatusResponse]]:
392
- """Update the status of a given run"""
393
-
394
374
  @abc.abstractmethod
395
375
  def PushLogs(
396
376
  self,
@@ -28,7 +28,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
28
28
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x16\x66lwr/proto/appio.proto2\x84\x07\n\x0cSimulationIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x62\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x16\x66lwr/proto/appio.proto2\xaf\x06\n\x0cSimulationIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x62\x06proto3')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,5 +36,5 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.simulationio_pb2
36
36
  if not _descriptor._USE_C_DESCRIPTORS:
37
37
  DESCRIPTOR._loaded_options = None
38
38
  _globals['_SIMULATIONIO']._serialized_start=142
39
- _globals['_SIMULATIONIO']._serialized_end=1042
39
+ _globals['_SIMULATIONIO']._serialized_end=957
40
40
  # @@protoc_insertion_point(module_scope)
@@ -67,11 +67,6 @@ class SimulationIoStub(object):
67
67
  request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
68
68
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
69
69
  _registered_method=True)
70
- self.GetRunStatus = channel.unary_unary(
71
- '/flwr.proto.SimulationIo/GetRunStatus',
72
- request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
73
- response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
74
- _registered_method=True)
75
70
  self.UpdateRunStatus = channel.unary_unary(
76
71
  '/flwr.proto.SimulationIo/UpdateRunStatus',
77
72
  request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
@@ -142,19 +137,12 @@ class SimulationIoServicer(object):
142
137
  context.set_details('Method not implemented!')
143
138
  raise NotImplementedError('Method not implemented!')
144
139
 
145
- def GetRunStatus(self, request, context):
140
+ def UpdateRunStatus(self, request, context):
146
141
  """///////////////////////////////////////////////////////////////////////////
147
142
  Specific endpoints shared by ServerAppIo and SimulationIo
148
143
  ///////////////////////////////////////////////////////////////////////////
149
144
 
150
- Get Run Status
151
- """
152
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
153
- context.set_details('Method not implemented!')
154
- raise NotImplementedError('Method not implemented!')
155
-
156
- def UpdateRunStatus(self, request, context):
157
- """Update the status of a given run
145
+ Update the status of a given run
158
146
  """
159
147
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
160
148
  context.set_details('Method not implemented!')
@@ -211,11 +199,6 @@ def add_SimulationIoServicer_to_server(servicer, server):
211
199
  request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
212
200
  response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
213
201
  ),
214
- 'GetRunStatus': grpc.unary_unary_rpc_method_handler(
215
- servicer.GetRunStatus,
216
- request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
217
- response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
218
- ),
219
202
  'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
220
203
  servicer.UpdateRunStatus,
221
204
  request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
@@ -404,33 +387,6 @@ class SimulationIo(object):
404
387
  metadata,
405
388
  _registered_method=True)
406
389
 
407
- @staticmethod
408
- def GetRunStatus(request,
409
- target,
410
- options=(),
411
- channel_credentials=None,
412
- call_credentials=None,
413
- insecure=False,
414
- compression=None,
415
- wait_for_ready=None,
416
- timeout=None,
417
- metadata=None):
418
- return grpc.experimental.unary_unary(
419
- request,
420
- target,
421
- '/flwr.proto.SimulationIo/GetRunStatus',
422
- flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
423
- flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
424
- options,
425
- channel_credentials,
426
- insecure,
427
- call_credentials,
428
- compression,
429
- wait_for_ready,
430
- timeout,
431
- metadata,
432
- _registered_method=True)
433
-
434
390
  @staticmethod
435
391
  def UpdateRunStatus(request,
436
392
  target,
@@ -82,23 +82,17 @@ class SimulationIoStub:
82
82
  ]
83
83
  """Push app outputs"""
84
84
 
85
- GetRunStatus: grpc.UnaryUnaryMultiCallable[
86
- flwr.proto.run_pb2.GetRunStatusRequest,
87
- flwr.proto.run_pb2.GetRunStatusResponse,
85
+ UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
86
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
87
+ flwr.proto.run_pb2.UpdateRunStatusResponse,
88
88
  ]
89
89
  """///////////////////////////////////////////////////////////////////////////
90
90
  Specific endpoints shared by ServerAppIo and SimulationIo
91
91
  ///////////////////////////////////////////////////////////////////////////
92
92
 
93
- Get Run Status
93
+ Update the status of a given run
94
94
  """
95
95
 
96
- UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
97
- flwr.proto.run_pb2.UpdateRunStatusRequest,
98
- flwr.proto.run_pb2.UpdateRunStatusResponse,
99
- ]
100
- """Update the status of a given run"""
101
-
102
96
  PushLogs: grpc.UnaryUnaryMultiCallable[
103
97
  flwr.proto.log_pb2.PushLogsRequest,
104
98
  flwr.proto.log_pb2.PushLogsResponse,
@@ -163,23 +157,17 @@ class SimulationIoAsyncStub:
163
157
  ]
164
158
  """Push app outputs"""
165
159
 
166
- GetRunStatus: grpc.aio.UnaryUnaryMultiCallable[
167
- flwr.proto.run_pb2.GetRunStatusRequest,
168
- flwr.proto.run_pb2.GetRunStatusResponse,
160
+ UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
161
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
162
+ flwr.proto.run_pb2.UpdateRunStatusResponse,
169
163
  ]
170
164
  """///////////////////////////////////////////////////////////////////////////
171
165
  Specific endpoints shared by ServerAppIo and SimulationIo
172
166
  ///////////////////////////////////////////////////////////////////////////
173
167
 
174
- Get Run Status
168
+ Update the status of a given run
175
169
  """
176
170
 
177
- UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
178
- flwr.proto.run_pb2.UpdateRunStatusRequest,
179
- flwr.proto.run_pb2.UpdateRunStatusResponse,
180
- ]
181
- """Update the status of a given run"""
182
-
183
171
  PushLogs: grpc.aio.UnaryUnaryMultiCallable[
184
172
  flwr.proto.log_pb2.PushLogsRequest,
185
173
  flwr.proto.log_pb2.PushLogsResponse,
@@ -257,26 +245,18 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
257
245
  """Push app outputs"""
258
246
 
259
247
  @abc.abstractmethod
260
- def GetRunStatus(
248
+ def UpdateRunStatus(
261
249
  self,
262
- request: flwr.proto.run_pb2.GetRunStatusRequest,
250
+ request: flwr.proto.run_pb2.UpdateRunStatusRequest,
263
251
  context: _ServicerContext,
264
- ) -> typing.Union[flwr.proto.run_pb2.GetRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunStatusResponse]]:
252
+ ) -> typing.Union[flwr.proto.run_pb2.UpdateRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.UpdateRunStatusResponse]]:
265
253
  """///////////////////////////////////////////////////////////////////////////
266
254
  Specific endpoints shared by ServerAppIo and SimulationIo
267
255
  ///////////////////////////////////////////////////////////////////////////
268
256
 
269
- Get Run Status
257
+ Update the status of a given run
270
258
  """
271
259
 
272
- @abc.abstractmethod
273
- def UpdateRunStatus(
274
- self,
275
- request: flwr.proto.run_pb2.UpdateRunStatusRequest,
276
- context: _ServicerContext,
277
- ) -> typing.Union[flwr.proto.run_pb2.UpdateRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.UpdateRunStatusResponse]]:
278
- """Update the status of a given run"""
279
-
280
260
  @abc.abstractmethod
281
261
  def PushLogs(
282
262
  self,
@@ -36,7 +36,6 @@ from flwr.common.serde import (
36
36
  message_from_proto,
37
37
  message_to_proto,
38
38
  run_status_from_proto,
39
- run_status_to_proto,
40
39
  run_to_proto,
41
40
  )
42
41
  from flwr.common.typing import Fab, RunStatus
@@ -76,8 +75,6 @@ from flwr.proto.node_pb2 import Node # pylint: disable=E0611
76
75
  from flwr.proto.run_pb2 import ( # pylint: disable=E0611
77
76
  GetRunRequest,
78
77
  GetRunResponse,
79
- GetRunStatusRequest,
80
- GetRunStatusResponse,
81
78
  UpdateRunStatusRequest,
82
79
  UpdateRunStatusResponse,
83
80
  )
@@ -434,21 +431,6 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
434
431
  state.add_serverapp_log(request.run_id, merged_logs)
435
432
  return PushLogsResponse()
436
433
 
437
- def GetRunStatus(
438
- self, request: GetRunStatusRequest, context: grpc.ServicerContext
439
- ) -> GetRunStatusResponse:
440
- """Get the status of a run."""
441
- log(DEBUG, "ServerAppIoServicer.GetRunStatus")
442
- state = self.state_factory.state()
443
-
444
- # Get run status from LinkState
445
- run_statuses = state.get_run_status(set(request.run_ids))
446
- run_status_dict = {
447
- run_id: run_status_to_proto(run_status)
448
- for run_id, run_status in run_statuses.items()
449
- }
450
- return GetRunStatusResponse(run_status_dict=run_status_dict)
451
-
452
434
  def SendAppHeartbeat(
453
435
  self, request: SendAppHeartbeatRequest, context: grpc.ServicerContext
454
436
  ) -> SendAppHeartbeatResponse:
@@ -29,7 +29,6 @@ from flwr.common.serde import (
29
29
  context_to_proto,
30
30
  fab_to_proto,
31
31
  run_status_from_proto,
32
- run_status_to_proto,
33
32
  run_to_proto,
34
33
  )
35
34
  from flwr.common.typing import Fab, RunStatus
@@ -57,8 +56,6 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
57
56
  GetFederationOptionsResponse,
58
57
  GetRunRequest,
59
58
  GetRunResponse,
60
- GetRunStatusRequest,
61
- GetRunStatusResponse,
62
59
  UpdateRunStatusRequest,
63
60
  UpdateRunStatusResponse,
64
61
  )
@@ -219,22 +216,6 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
219
216
  )
220
217
  return UpdateRunStatusResponse()
221
218
 
222
- def GetRunStatus(
223
- self, request: GetRunStatusRequest, context: ServicerContext
224
- ) -> GetRunStatusResponse:
225
- """Get status of requested runs."""
226
- log(DEBUG, "SimultionIoServicer.GetRunStatus")
227
- state = self.state_factory.state()
228
-
229
- statuses = state.get_run_status(set(request.run_ids))
230
-
231
- return GetRunStatusResponse(
232
- run_status_dict={
233
- run_id: run_status_to_proto(status)
234
- for run_id, status in statuses.items()
235
- }
236
- )
237
-
238
219
  def PushLogs(
239
220
  self, request: PushLogsRequest, context: grpc.ServicerContext
240
221
  ) -> PushLogsResponse:
@@ -59,6 +59,7 @@ MIME_MAP = {
59
59
 
60
60
  # Constants for federations
61
61
  NOOP_FEDERATION = f"@{NOOP_ACCOUNT_NAME}/default"
62
+ NOOP_FEDERATION_DESCRIPTION = "A federation for testing and development purposes."
62
63
 
63
64
  # Constants for exit handling
64
65
  FORCE_EXIT_TIMEOUT_SECONDS = 5 # Used in `flwr_exit` function
@@ -52,24 +52,24 @@ class SqlObjectStore(ObjectStore, SqlMixin):
52
52
 
53
53
  child_ids = [child.object_id for child in tree_node.children]
54
54
  with self.session():
55
+ # Insert new object if it doesn't exist (race-condition safe)
56
+ # RETURNING returns a row only if the insert succeeded
55
57
  rows = self.query(
56
- "SELECT object_id, is_available FROM objects "
57
- "WHERE object_id = :object_id",
58
- {"object_id": obj_id},
58
+ "INSERT INTO objects "
59
+ "(object_id, content, is_available, ref_count) "
60
+ "VALUES (:object_id, :content, :is_available, :ref_count) "
61
+ "ON CONFLICT (object_id) DO NOTHING "
62
+ "RETURNING object_id",
63
+ {
64
+ "object_id": obj_id,
65
+ "content": b"",
66
+ "is_available": 0,
67
+ "ref_count": 0,
68
+ },
59
69
  )
60
- if not rows:
61
- # Insert new object
62
- self.query(
63
- "INSERT INTO objects "
64
- "(object_id, content, is_available, ref_count) "
65
- "VALUES (:object_id, :content, :is_available, :ref_count)",
66
- {
67
- "object_id": obj_id,
68
- "content": b"",
69
- "is_available": 0,
70
- "ref_count": 0,
71
- },
72
- )
70
+
71
+ if rows:
72
+ # New object inserted: set up child relationships
73
73
  for cid in child_ids:
74
74
  self.query(
75
75
  "INSERT INTO object_children (parent_id, child_id) "
@@ -83,8 +83,12 @@ class SqlObjectStore(ObjectStore, SqlMixin):
83
83
  )
84
84
  new_objects.append(obj_id)
85
85
  else:
86
- # Add to the list of new objects if not available
87
- if not rows[0]["is_available"]:
86
+ # Object exists: check if unavailable
87
+ rows = self.query(
88
+ "SELECT is_available FROM objects WHERE object_id = :object_id",
89
+ {"object_id": obj_id},
90
+ )
91
+ if rows and not rows[0]["is_available"]:
88
92
  new_objects.append(obj_id)
89
93
 
90
94
  # Ensure run mapping
@@ -56,8 +56,8 @@ class FederationManager(ABC):
56
56
  """Given a node ID, check if it is in the federation."""
57
57
 
58
58
  @abstractmethod
59
- def get_federations(self, flwr_aid: str) -> list[str]:
60
- """Get federations of which the account is a member."""
59
+ def get_federations(self, flwr_aid: str) -> list[tuple[str, str]]:
60
+ """Get federations (name, description) of which the account is a member."""
61
61
 
62
62
  @abstractmethod
63
63
  def get_details(self, federation: str) -> Federation:
@@ -18,7 +18,7 @@
18
18
  from flwr.common.constant import NOOP_ACCOUNT_NAME, NOOP_FLWR_AID
19
19
  from flwr.common.typing import Federation
20
20
  from flwr.proto.federation_pb2 import Account # pylint: disable=E0611
21
- from flwr.supercore.constant import NOOP_FEDERATION
21
+ from flwr.supercore.constant import NOOP_FEDERATION, NOOP_FEDERATION_DESCRIPTION
22
22
 
23
23
  from .federation_manager import FederationManager
24
24
 
@@ -48,11 +48,11 @@ class NoOpFederationManager(FederationManager):
48
48
  raise ValueError(f"Federation '{federation}' does not exist.")
49
49
  return True
50
50
 
51
- def get_federations(self, flwr_aid: str) -> list[str]:
52
- """Get federations of which the account is a member."""
51
+ def get_federations(self, flwr_aid: str) -> list[tuple[str, str]]:
52
+ """Get federations (name, description) of which the account is a member."""
53
53
  if flwr_aid != NOOP_FLWR_AID:
54
54
  return []
55
- return [NOOP_FEDERATION]
55
+ return [(NOOP_FEDERATION, NOOP_FEDERATION_DESCRIPTION)]
56
56
 
57
57
  def get_details(self, federation: str) -> Federation:
58
58
  """Get details of the federation."""
@@ -66,6 +66,7 @@ class NoOpFederationManager(FederationManager):
66
66
  ]
67
67
  return Federation(
68
68
  name=NOOP_FEDERATION,
69
+ description=NOOP_FEDERATION_DESCRIPTION,
69
70
  accounts=[Account(id=NOOP_FLWR_AID, name=NOOP_ACCOUNT_NAME)],
70
71
  nodes=nodes,
71
72
  runs=runs,
@@ -536,9 +536,10 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
536
536
 
537
537
  # Get federations the account is a member of
538
538
  federations = state.federation_manager.get_federations(flwr_aid=flwr_aid)
539
-
540
539
  return ListFederationsResponse(
541
- federations=[Federation(name=fed) for fed in federations]
540
+ federations=[
541
+ Federation(name=fed[0], description=fed[1]) for fed in federations
542
+ ]
542
543
  )
543
544
 
544
545
  def ShowFederation(
@@ -558,7 +559,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
558
559
 
559
560
  # Ensure flwr_aid is a member of the requested federation
560
561
  federation = request.federation_name
561
- if federation not in federations:
562
+ if federation not in [fed[0] for fed in federations]:
562
563
  context.abort(
563
564
  grpc.StatusCode.FAILED_PRECONDITION,
564
565
  f"Federation '{federation}' does not exist or you are "
@@ -571,6 +572,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
571
572
  # Build Federation proto object
572
573
  federation_proto = Federation(
573
574
  name=federation,
575
+ member_aids=[acc.id for acc in details.accounts], # Deprecated in v1.26.0
574
576
  accounts=details.accounts,
575
577
  nodes=details.nodes,
576
578
  runs=[run_to_proto(run) for run in details.runs],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.26.0.dev20260202
3
+ Version: 1.26.0.dev20260203
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -23,7 +23,7 @@ flwr/cli/config_utils.py,sha256=LNmbPODWefsEtt4ov63BFtuTcK1Pb8Z-AHt1_haWWdA,7841
23
23
  flwr/cli/constant.py,sha256=MYLI7m9ntwWNkFgEEtKVo1JWX3umf_0EdqY8nJy-83Y,3525
24
24
  flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
25
25
  flwr/cli/federation/__init__.py,sha256=okxswL4fAjApI9gV_alU1lRkTUcQRbwlzvtUTLz61fE,793
26
- flwr/cli/federation/ls.py,sha256=VwoM0BrlcvQvE4oGqFol4sAI9JqtR32SYN5gzDfmVPY,10144
26
+ flwr/cli/federation/ls.py,sha256=k3FyGrH_xh_OdHqw5oj1S5RTKm8ZBqxeA4m6fEEoQx8,10278
27
27
  flwr/cli/flower_config.py,sha256=YQfuFGW52jf6EoAxWrXQYw6lmuH0j2qsZ0twHRLxx4k,15278
28
28
  flwr/cli/install.py,sha256=AKjJxDr_kBJirpqMg_EemlP23CfH5UF3h5IjtJQ_xPs,9124
29
29
  flwr/cli/log.py,sha256=BPA0dvGlXx5PrtURPua5fJyF7iVrb28K4fEY2Uth0EE,7317
@@ -42,7 +42,7 @@ flwr/cli/supernode/ls.py,sha256=mmpwIpwp5YZSdq3gDlv0h8QpKoMBgZWrMrvJm_ltiRw,7594
42
42
  flwr/cli/supernode/register.py,sha256=HzgJ1Q8Mlx7oJE-2kRLbIX2OrQP7wM0IeywirLqyz9Y,4724
43
43
  flwr/cli/supernode/unregister.py,sha256=ha8-oTXA4NW8xHLyQPHn-e0f7-9bF2QyjXxUD299O6s,2938
44
44
  flwr/cli/typing.py,sha256=xGAIv9mAVzs6UXapzu4i8bQ-MckzHMSihtLcnu5SWGU,7562
45
- flwr/cli/utils.py,sha256=JiKK7PqNHDUERdhaDPEHNcp2rELthS3GWGBPqwwM02c,17337
45
+ flwr/cli/utils.py,sha256=BTPz9p6X5_u6cZvr43pzfuT26t6XJnXPwUu-0Tp2yCk,17442
46
46
  flwr/client/__init__.py,sha256=xwkPJfdeWxIIfmiPE5vnmnY_JbTlErP0Qs9eBP6qRFg,1252
47
47
  flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
48
48
  flwr/client/dpfedavg_numpy_client.py,sha256=ELDHyEJcTB-FlLhHC-JXy8HuB3ZFHfT0HL3g1VSWY5w,7451
@@ -119,7 +119,7 @@ flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wO
119
119
  flwr/common/serde.py,sha256=FqqJqNqCk-DryCOgTGkabENvFeU2Q0LieLe0bt3qBbU,22342
120
120
  flwr/common/serde_utils.py,sha256=Vk49PnZWRgo0NrvBhFqH-Li7sMFVVgyrs3Ck7kHB-ZE,5820
121
121
  flwr/common/telemetry.py,sha256=7HNy5ytioJ3SbFtaKNucwYYC-IXEOXphitZbdHmSlfk,8924
122
- flwr/common/typing.py,sha256=KyyZXr6GM_jdKn8eNpRuBiBQaMBSTxApDL6qWOY3g8E,7367
122
+ flwr/common/typing.py,sha256=5wBdrZ2VFDlerywQyI_WTgrgPcZ68YGamok79Tg8U60,7388
123
123
  flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
124
124
  flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
125
125
  flwr/compat/client/app.py,sha256=oBOB-gYm0oqxtfAp58QZtv3dyUsPxjFm__f1_teenHU,27178
@@ -151,8 +151,8 @@ flwr/proto/fab_pb2.py,sha256=QDkVHGRGmugjQQUiN8A_okppZ5e2pJi5KipjnWmF6e4,2320
151
151
  flwr/proto/fab_pb2.pyi,sha256=PUUZ1FHeTwXxjVmTX14Vx5gmgRSFvoW_e5v_Z5qkT54,3948
152
152
  flwr/proto/fab_pb2_grpc.py,sha256=jmhCnnwSqBpZ0329XGUGARbcz5sHrr0WrXwccqzc3Vs,895
153
153
  flwr/proto/fab_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
154
- flwr/proto/federation_pb2.py,sha256=Kqspf1g8vDVvPzAjC0weEk1WONzFlqyFMAOWYxsrck4,1886
155
- flwr/proto/federation_pb2.pyi,sha256=powYnY1uobS10KD9RT0oRKAPYqGxIBAbZhdn59nA3YA,2695
154
+ flwr/proto/federation_pb2.py,sha256=strZ42K6S-50tuRVCqXqGcaLR6suXrGFT0SQOqNcpLQ,1974
155
+ flwr/proto/federation_pb2.pyi,sha256=mk1qfH85SURZWXGVpAzpPCgPTu3L4dlEefucG3lMyu8,3203
156
156
  flwr/proto/federation_pb2_grpc.py,sha256=HPErt9uXJPbY8jLtTNFr941z82uMm7cOx10hTHgcwZM,902
157
157
  flwr/proto/federation_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
158
158
  flwr/proto/fleet_pb2.py,sha256=HnxtM2pqVdn2xhl3e1NlLazpSMaGoUUEG9Nd17egxqU,6543
@@ -183,18 +183,18 @@ flwr/proto/recorddict_pb2.py,sha256=L2mNSyIVWA2dcI1xWI3gj0nktuDHYgxbbLuVRQKVU74,
183
183
  flwr/proto/recorddict_pb2.pyi,sha256=BYgVNk985Ww4dCXCjDGg1YU6q7MuMqbDa0usGVH3ktg,15208
184
184
  flwr/proto/recorddict_pb2_grpc.py,sha256=kw9_kXNcRe3y6j6HquG1P1MqccFFAogfi48djxbOLDE,902
185
185
  flwr/proto/recorddict_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
186
- flwr/proto/run_pb2.py,sha256=8tQDMyiBjw_-S6jiJpFd_-dDrMq9ZhyPyWwnmFu3qek,5101
187
- flwr/proto/run_pb2.pyi,sha256=t42qPzJTY1GVUUrkdIjdoPfAKlsXlUw9A8vBpwgbHsI,10852
186
+ flwr/proto/run_pb2.py,sha256=0HsPXXNxKq0uefBY3gJOBvu9gQGZ-FhKaGhJiAwMKgU,4146
187
+ flwr/proto/run_pb2.pyi,sha256=m6YeVUE2LnljsF_1FTpJWpxPEKw8RB_X1HuRFvijHG0,8689
188
188
  flwr/proto/run_pb2_grpc.py,sha256=l5u1Ww6JxVLVN784Z2OQbkQ-tAf5yYGh6QbNDc4F5II,895
189
189
  flwr/proto/run_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
190
- flwr/proto/serverappio_pb2.py,sha256=bxKnIXI_kawwqsOZm4E54OFZOTnOTTBu6LTxRvOqHfA,4045
190
+ flwr/proto/serverappio_pb2.py,sha256=g4NlMFE4F3u0FXSmNJNGOe2nFRAaRRH8oEak6FSqeX8,3940
191
191
  flwr/proto/serverappio_pb2.pyi,sha256=KpVM8B_O0M3RFJ-DtnNlQapJs4V-7pHcdEb2G3ECbhE,1998
192
- flwr/proto/serverappio_pb2_grpc.py,sha256=gV_xKQ34HPakn7tMf7q_tixinC6oGcNbUNpeX0O295s,32111
193
- flwr/proto/serverappio_pb2_grpc.pyi,sha256=gh_rj31Xt2qU7OOlCnG-PiRdcm34N7nfSLOHHBVFD1U,16274
194
- flwr/proto/simulationio_pb2.py,sha256=WZ7fqvwPdayfgH8UZPdkhQwMtEWcTm0t_h9a9srrSBQ,2787
192
+ flwr/proto/serverappio_pb2_grpc.py,sha256=CNLkE1rVU5TaJHC7XoWYwONyPcDwCq5t6sezceCZbIg,30319
193
+ flwr/proto/serverappio_pb2_grpc.pyi,sha256=-vpa_s5oGrT2aXE4zmIdDXXGxJ7ZSfcs8pIeOGvX7yE,15557
194
+ flwr/proto/simulationio_pb2.py,sha256=b7B2VXAwKcfgKPulDmOBQs0RvEWKnWbGuTwF4GvMnn8,2681
195
195
  flwr/proto/simulationio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
196
- flwr/proto/simulationio_pb2_grpc.py,sha256=w4m6I4c1Nda_UoQzKnkuiT86QZdMF0Tvpbsw59nMJt4,20980
197
- flwr/proto/simulationio_pb2_grpc.pyi,sha256=39OGkOU_ClHjr4Dmorhatn3ILwLIKxXQqp-LR0pYDB8,11286
196
+ flwr/proto/simulationio_pb2_grpc.py,sha256=JVJ_u2RR64amAnacdH6op6eOW7CT0RAzZbRBfqPLBQk,19201
197
+ flwr/proto/simulationio_pb2_grpc.pyi,sha256=SHge7XK0FJoPsZzXBrVeagBUlmpRzMAiXDMaYkjB3eI,10614
198
198
  flwr/proto/transport_pb2.py,sha256=xqDF2oI0PzAndH17O80SQkyOT_QF9m7CQ0166He7UDQ,10122
199
199
  flwr/proto/transport_pb2.pyi,sha256=A-AzbyDAyp4hzJCuC6MOA1NewkFmtuhPwFCjPKqQP0Q,22450
200
200
  flwr/proto/transport_pb2_grpc.py,sha256=jYsbV3KYdp4TaNfWxv3ljFEvB-Yjsa8MIPtTH-vVPPk,3600
@@ -276,10 +276,10 @@ flwr/server/superlink/linkstate/sql_linkstate.py,sha256=ziZvpEQBVV9GSxjHiS0fAyaY
276
276
  flwr/server/superlink/linkstate/utils.py,sha256=IA1mKKhGVBPoD61VXKFa8dZ_prnfuyWIuKAeeHPLmuE,16000
277
277
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
278
278
  flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=2NFPynJMpYpT9C98Fr4n0QrTTjWBWbeUzlHcc6pg2kY,2279
279
- flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=EF306zWTfb-h4bie9ZKTZSRdgfLdJQVZ0Vbj5fw4keM,20252
279
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=sEdA8lQzNEKMdpvvwzCsJJWHdlkPI1omCs6XyAWKES0,19586
280
280
  flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
281
281
  flwr/server/superlink/simulation/simulationio_grpc.py,sha256=fHFW8SOR4iyfBxQeYOXWwqUStGsv0P4EAIVkBk69BN4,2174
282
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=140iEJZ0lCw0bWNI4B6VSvMXGz0bVUeaCnDW-372_zw,10161
282
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=QghTkyaNrSR41HMwQPtWAqhv6kWqdoj44tuto1K5x6A,9558
283
283
  flwr/server/superlink/utils.py,sha256=pdeB9dm21e5D2Vuymme8069VWW5XuWZfi1LAm7nKjeQ,2400
284
284
  flwr/server/typing.py,sha256=qr04ihK3cARvw2Cz64axwzbdCbLtK8R5DDtlh5kWXEU,1020
285
285
  flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
@@ -328,7 +328,7 @@ flwr/supercore/address.py,sha256=SgM_pazKsw1Avo5nms0WWgIZFUGS349O0gOP7N3bFW4,331
328
328
  flwr/supercore/app_utils.py,sha256=P558DOr5a4UPyOdRCxbDQueQF-L-kSc6qzouPPuqj0U,1773
329
329
  flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
330
330
  flwr/supercore/cli/flower_superexec.py,sha256=IQIGzxgaeLNMNzGXGemfYK3lp8God5bTkXpVkbeP_ig,6109
331
- flwr/supercore/constant.py,sha256=dvYHbb6EtDMc46OTwScaE8E4kf_rG43QhDDs_I8Uwg4,2925
331
+ flwr/supercore/constant.py,sha256=Hn87UDdFZBhVq2kbGziPoV2veozYZlJ3R_Unjmr7ekY,3008
332
332
  flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
333
333
  flwr/supercore/corestate/corestate.py,sha256=EZg4gPXqVOXwS7t0tlPfedajoWj5T80oeDBNxpV2y2I,2874
334
334
  flwr/supercore/corestate/in_memory_corestate.py,sha256=9qa6RuRZfCp6vs-ARYdiZjCL31VOAAxw0a_VkBXR5zY,5116
@@ -351,7 +351,7 @@ flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mk
351
351
  flwr/supercore/object_store/in_memory_object_store.py,sha256=-DU6n1Ef3EmllHY9SzeXw57ftoU0mR_6or4NIDSZlcs,9322
352
352
  flwr/supercore/object_store/object_store.py,sha256=XLo-xe258TmCel9dNLCJepFjXaQtEi0wBqzU9YsyJVg,5221
353
353
  flwr/supercore/object_store/object_store_factory.py,sha256=RByhm8Ow6TxmklP1MTluaze3v5kw0O1CILrA7Y0nWMg,2604
354
- flwr/supercore/object_store/sql_object_store.py,sha256=ZBmyc3a_GXZFNaefDCxhrri-_BgcQPOj7OtUfrPcjKo,10130
354
+ flwr/supercore/object_store/sql_object_store.py,sha256=z0zqPNwkx7tay3vFJ2Bd1Ddv3nWXBB3zcK-LP8ZfsbI,10349
355
355
  flwr/supercore/primitives/__init__.py,sha256=Tx8GOjnmMo8Y74RsDGrMpfr-E0Nl8dcUDF784_ge6F8,745
356
356
  flwr/supercore/primitives/asymmetric.py,sha256=1643niHYj3uEbfPd06VuMHwN3tKVwg0uVyR3RhTdWIU,3778
357
357
  flwr/supercore/primitives/asymmetric_ed25519.py,sha256=eIhOTMibQW0FJX4MXdplHdL3HcfCiKuFu2mQ8GQTUz8,5025
@@ -385,15 +385,15 @@ flwr/superlink/auth_plugin/__init__.py,sha256=ApYBHnDmtv5gVrnxdFq97zC58O1icqHogK
385
385
  flwr/superlink/auth_plugin/auth_plugin.py,sha256=xLqAYFG7sjAhYgyeTvvEY6fSMjPRq0offmTDRYpIs78,2956
386
386
  flwr/superlink/auth_plugin/noop_auth_plugin.py,sha256=0MWjNXZdz6zGRfitlnZfVKu4sKVn0HhJvnp09c3xVUA,2962
387
387
  flwr/superlink/federation/__init__.py,sha256=A1pFFvkEQrHzvRAOstr2o7nphx3JbuJgkNRFKJ9qD3M,890
388
- flwr/superlink/federation/federation_manager.py,sha256=-Vu1v_WWhWK7wgKEQua24lw9a6iPxG89VI-jqLO5E4g,2322
389
- flwr/superlink/federation/noop_federation_manager.py,sha256=WzUudE_irDqapua2lNCDrLwSgerlxLNCrgLo8rYbU2o,3004
388
+ flwr/superlink/federation/federation_manager.py,sha256=vpVaW-WS-mGAazxh9fy9Xp3gLPQozRsUoJiloG5_tBI,2354
389
+ flwr/superlink/federation/noop_federation_manager.py,sha256=LuBDncifAvcn8KszumZBmsp7-9PIp_5iHiHoPLahlBE,3149
390
390
  flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
391
391
  flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
392
392
  flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=AJs7GE-fyUBLcUEUzB058TpFzC7gyDOL17THvYkJTn8,6529
393
393
  flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=r9LjF5VkrE1sZIcml-sO2uOPAwpvr6dj4tFchqoDcR4,5965
394
394
  flwr/superlink/servicer/control/control_grpc.py,sha256=AD7q2eo7RvXEhntcfVLgoKAR7AWfD_Z56Qw51wGLanY,4218
395
395
  flwr/superlink/servicer/control/control_license_interceptor.py,sha256=8d28soJ0mLLhpSGCpuY2YzgbX0vVO7Sqe2DcApEgILc,3336
396
- flwr/superlink/servicer/control/control_servicer.py,sha256=s9LgpbXUGU7DYwOvFUzNjgyKEWHyjPJQeUfp-XXUBWM,25523
396
+ flwr/superlink/servicer/control/control_servicer.py,sha256=7z4orYaoEO0Zm5JDtlvJ6TKBOO5cDy20ieloCZ0K8iU,25682
397
397
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
398
398
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
399
399
  flwr/supernode/cli/flower_supernode.py,sha256=LhciYbUwUfvkR4hiHxizERhQzpqZOAG9d6qVm6-V4jY,10891
@@ -408,7 +408,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
408
408
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
409
409
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=5TOp0SelGqiWzRHfhYpoKzUd7EuVTqt5_PXvnUy7_Ok,11615
410
410
  flwr/supernode/start_client_internal.py,sha256=3MkeDiWZr-SsvACuuAxJi8nYw6GYNKOO6q8b36E3R9k,26250
411
- flwr_nightly-1.26.0.dev20260202.dist-info/METADATA,sha256=8Sr3guZBXfUanQ4QBQgIZ7wW-E07pmguQGAUXwTPx1E,14447
412
- flwr_nightly-1.26.0.dev20260202.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
413
- flwr_nightly-1.26.0.dev20260202.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
414
- flwr_nightly-1.26.0.dev20260202.dist-info/RECORD,,
411
+ flwr_nightly-1.26.0.dev20260203.dist-info/METADATA,sha256=HtDC4Sl-9R0f1NwHCNuXm4dulzTEou5G11nh6ximGBw,14447
412
+ flwr_nightly-1.26.0.dev20260203.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
413
+ flwr_nightly-1.26.0.dev20260203.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
414
+ flwr_nightly-1.26.0.dev20260203.dist-info/RECORD,,