flwr-nightly 1.26.0.dev20260129__py3-none-any.whl → 1.26.0.dev20260201__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/build.py +1 -1
- flwr/cli/config_migration.py +2 -2
- flwr/cli/install.py +1 -1
- flwr/cli/run/run.py +21 -4
- flwr/cli/supernode/register.py +1 -2
- flwr/cli/utils.py +2 -1
- flwr/client/grpc_rere_client/connection.py +1 -1
- flwr/common/args.py +4 -4
- flwr/common/config.py +2 -2
- flwr/common/exit/exit.py +3 -3
- flwr/common/logger.py +1 -1
- flwr/proto/clientappio_pb2.py +1 -1
- flwr/proto/clientappio_pb2_grpc.py +106 -90
- flwr/proto/clientappio_pb2_grpc.pyi +145 -85
- flwr/proto/serverappio_pb2.py +1 -1
- flwr/proto/serverappio_pb2_grpc.py +168 -148
- flwr/proto/serverappio_pb2_grpc.pyi +209 -134
- flwr/proto/simulationio_pb2.py +1 -1
- flwr/proto/simulationio_pb2_grpc.py +80 -64
- flwr/proto/simulationio_pb2_grpc.pyi +109 -49
- flwr/server/app.py +1 -1
- flwr/server/serverapp/app.py +11 -4
- flwr/server/superlink/linkstate/linkstate_factory.py +12 -4
- flwr/supercore/ffs/disk_ffs.py +1 -1
- flwr/supercore/object_store/object_store_factory.py +10 -2
- flwr/supercore/sql_mixin.py +8 -2
- flwr/supernode/cli/flower_supernode.py +2 -1
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/METADATA +2 -2
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/RECORD +31 -31
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/entry_points.txt +0 -0
|
@@ -52,6 +52,11 @@ class SimulationIoStub(object):
|
|
|
52
52
|
request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
|
|
53
53
|
response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
|
|
54
54
|
_registered_method=True)
|
|
55
|
+
self.SendAppHeartbeat = channel.unary_unary(
|
|
56
|
+
'/flwr.proto.SimulationIo/SendAppHeartbeat',
|
|
57
|
+
request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
|
|
58
|
+
response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
|
|
59
|
+
_registered_method=True)
|
|
55
60
|
self.PullAppInputs = channel.unary_unary(
|
|
56
61
|
'/flwr.proto.SimulationIo/PullAppInputs',
|
|
57
62
|
request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
@@ -62,6 +67,11 @@ class SimulationIoStub(object):
|
|
|
62
67
|
request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
63
68
|
response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
64
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)
|
|
65
75
|
self.UpdateRunStatus = channel.unary_unary(
|
|
66
76
|
'/flwr.proto.SimulationIo/UpdateRunStatus',
|
|
67
77
|
request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
|
|
@@ -77,23 +87,17 @@ class SimulationIoStub(object):
|
|
|
77
87
|
request_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.SerializeToString,
|
|
78
88
|
response_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString,
|
|
79
89
|
_registered_method=True)
|
|
80
|
-
self.GetRunStatus = channel.unary_unary(
|
|
81
|
-
'/flwr.proto.SimulationIo/GetRunStatus',
|
|
82
|
-
request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
|
|
83
|
-
response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
|
|
84
|
-
_registered_method=True)
|
|
85
|
-
self.SendAppHeartbeat = channel.unary_unary(
|
|
86
|
-
'/flwr.proto.SimulationIo/SendAppHeartbeat',
|
|
87
|
-
request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
|
|
88
|
-
response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
|
|
89
|
-
_registered_method=True)
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
class SimulationIoServicer(object):
|
|
93
93
|
"""Missing associated documentation comment in .proto file."""
|
|
94
94
|
|
|
95
95
|
def ListAppsToLaunch(self, request, context):
|
|
96
|
-
"""
|
|
96
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
97
|
+
General *AppIo endpoints for SuperExec processes
|
|
98
|
+
///////////////////////////////////////////////////////////////////////////
|
|
99
|
+
|
|
100
|
+
List runs to launch
|
|
97
101
|
"""
|
|
98
102
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
99
103
|
context.set_details('Method not implemented!')
|
|
@@ -107,56 +111,68 @@ class SimulationIoServicer(object):
|
|
|
107
111
|
raise NotImplementedError('Method not implemented!')
|
|
108
112
|
|
|
109
113
|
def GetRun(self, request, context):
|
|
110
|
-
"""
|
|
114
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
115
|
+
General *AppIo endpoints for App Executor processes
|
|
116
|
+
///////////////////////////////////////////////////////////////////////////
|
|
117
|
+
|
|
118
|
+
Get run details
|
|
111
119
|
"""
|
|
112
120
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
113
121
|
context.set_details('Method not implemented!')
|
|
114
122
|
raise NotImplementedError('Method not implemented!')
|
|
115
123
|
|
|
116
|
-
def
|
|
117
|
-
"""
|
|
124
|
+
def SendAppHeartbeat(self, request, context):
|
|
125
|
+
"""App heartbeat
|
|
118
126
|
"""
|
|
119
127
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
120
128
|
context.set_details('Method not implemented!')
|
|
121
129
|
raise NotImplementedError('Method not implemented!')
|
|
122
130
|
|
|
123
|
-
def
|
|
124
|
-
"""
|
|
131
|
+
def PullAppInputs(self, request, context):
|
|
132
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
133
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
134
|
+
///////////////////////////////////////////////////////////////////////////
|
|
135
|
+
|
|
136
|
+
Pull Simulation inputs
|
|
125
137
|
"""
|
|
126
138
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
127
139
|
context.set_details('Method not implemented!')
|
|
128
140
|
raise NotImplementedError('Method not implemented!')
|
|
129
141
|
|
|
130
|
-
def
|
|
131
|
-
"""
|
|
142
|
+
def PushAppOutputs(self, request, context):
|
|
143
|
+
"""Push Simulation outputs
|
|
132
144
|
"""
|
|
133
145
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
134
146
|
context.set_details('Method not implemented!')
|
|
135
147
|
raise NotImplementedError('Method not implemented!')
|
|
136
148
|
|
|
137
|
-
def
|
|
138
|
-
"""
|
|
149
|
+
def GetRunStatus(self, request, context):
|
|
150
|
+
"""Get Run Status
|
|
139
151
|
"""
|
|
140
152
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
141
153
|
context.set_details('Method not implemented!')
|
|
142
154
|
raise NotImplementedError('Method not implemented!')
|
|
143
155
|
|
|
144
|
-
def
|
|
145
|
-
"""
|
|
156
|
+
def UpdateRunStatus(self, request, context):
|
|
157
|
+
"""Update the status of a given run
|
|
146
158
|
"""
|
|
147
159
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
148
160
|
context.set_details('Method not implemented!')
|
|
149
161
|
raise NotImplementedError('Method not implemented!')
|
|
150
162
|
|
|
151
|
-
def
|
|
152
|
-
"""
|
|
163
|
+
def PushLogs(self, request, context):
|
|
164
|
+
"""Push ServerApp logs
|
|
153
165
|
"""
|
|
154
166
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
155
167
|
context.set_details('Method not implemented!')
|
|
156
168
|
raise NotImplementedError('Method not implemented!')
|
|
157
169
|
|
|
158
|
-
def
|
|
159
|
-
"""
|
|
170
|
+
def GetFederationOptions(self, request, context):
|
|
171
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
172
|
+
Specific endpoints for SimulationIo
|
|
173
|
+
///////////////////////////////////////////////////////////////////////////
|
|
174
|
+
|
|
175
|
+
Get Federation Options
|
|
160
176
|
"""
|
|
161
177
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
162
178
|
context.set_details('Method not implemented!')
|
|
@@ -180,6 +196,11 @@ def add_SimulationIoServicer_to_server(servicer, server):
|
|
|
180
196
|
request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.FromString,
|
|
181
197
|
response_serializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.SerializeToString,
|
|
182
198
|
),
|
|
199
|
+
'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
|
|
200
|
+
servicer.SendAppHeartbeat,
|
|
201
|
+
request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
|
|
202
|
+
response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.SerializeToString,
|
|
203
|
+
),
|
|
183
204
|
'PullAppInputs': grpc.unary_unary_rpc_method_handler(
|
|
184
205
|
servicer.PullAppInputs,
|
|
185
206
|
request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
|
|
@@ -190,6 +211,11 @@ def add_SimulationIoServicer_to_server(servicer, server):
|
|
|
190
211
|
request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
|
|
191
212
|
response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
|
|
192
213
|
),
|
|
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
|
+
),
|
|
193
219
|
'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
|
|
194
220
|
servicer.UpdateRunStatus,
|
|
195
221
|
request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
|
|
@@ -205,16 +231,6 @@ def add_SimulationIoServicer_to_server(servicer, server):
|
|
|
205
231
|
request_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.FromString,
|
|
206
232
|
response_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.SerializeToString,
|
|
207
233
|
),
|
|
208
|
-
'GetRunStatus': grpc.unary_unary_rpc_method_handler(
|
|
209
|
-
servicer.GetRunStatus,
|
|
210
|
-
request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
|
|
211
|
-
response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
|
|
212
|
-
),
|
|
213
|
-
'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
|
|
214
|
-
servicer.SendAppHeartbeat,
|
|
215
|
-
request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
|
|
216
|
-
response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.SerializeToString,
|
|
217
|
-
),
|
|
218
234
|
}
|
|
219
235
|
generic_handler = grpc.method_handlers_generic_handler(
|
|
220
236
|
'flwr.proto.SimulationIo', rpc_method_handlers)
|
|
@@ -308,7 +324,7 @@ class SimulationIo(object):
|
|
|
308
324
|
_registered_method=True)
|
|
309
325
|
|
|
310
326
|
@staticmethod
|
|
311
|
-
def
|
|
327
|
+
def SendAppHeartbeat(request,
|
|
312
328
|
target,
|
|
313
329
|
options=(),
|
|
314
330
|
channel_credentials=None,
|
|
@@ -321,9 +337,9 @@ class SimulationIo(object):
|
|
|
321
337
|
return grpc.experimental.unary_unary(
|
|
322
338
|
request,
|
|
323
339
|
target,
|
|
324
|
-
'/flwr.proto.SimulationIo/
|
|
325
|
-
|
|
326
|
-
|
|
340
|
+
'/flwr.proto.SimulationIo/SendAppHeartbeat',
|
|
341
|
+
flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
|
|
342
|
+
flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
|
|
327
343
|
options,
|
|
328
344
|
channel_credentials,
|
|
329
345
|
insecure,
|
|
@@ -335,7 +351,7 @@ class SimulationIo(object):
|
|
|
335
351
|
_registered_method=True)
|
|
336
352
|
|
|
337
353
|
@staticmethod
|
|
338
|
-
def
|
|
354
|
+
def PullAppInputs(request,
|
|
339
355
|
target,
|
|
340
356
|
options=(),
|
|
341
357
|
channel_credentials=None,
|
|
@@ -348,9 +364,9 @@ class SimulationIo(object):
|
|
|
348
364
|
return grpc.experimental.unary_unary(
|
|
349
365
|
request,
|
|
350
366
|
target,
|
|
351
|
-
'/flwr.proto.SimulationIo/
|
|
352
|
-
flwr_dot_proto_dot_appio__pb2.
|
|
353
|
-
flwr_dot_proto_dot_appio__pb2.
|
|
367
|
+
'/flwr.proto.SimulationIo/PullAppInputs',
|
|
368
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
369
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
|
|
354
370
|
options,
|
|
355
371
|
channel_credentials,
|
|
356
372
|
insecure,
|
|
@@ -362,7 +378,7 @@ class SimulationIo(object):
|
|
|
362
378
|
_registered_method=True)
|
|
363
379
|
|
|
364
380
|
@staticmethod
|
|
365
|
-
def
|
|
381
|
+
def PushAppOutputs(request,
|
|
366
382
|
target,
|
|
367
383
|
options=(),
|
|
368
384
|
channel_credentials=None,
|
|
@@ -375,9 +391,9 @@ class SimulationIo(object):
|
|
|
375
391
|
return grpc.experimental.unary_unary(
|
|
376
392
|
request,
|
|
377
393
|
target,
|
|
378
|
-
'/flwr.proto.SimulationIo/
|
|
379
|
-
|
|
380
|
-
|
|
394
|
+
'/flwr.proto.SimulationIo/PushAppOutputs',
|
|
395
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
396
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
381
397
|
options,
|
|
382
398
|
channel_credentials,
|
|
383
399
|
insecure,
|
|
@@ -389,7 +405,7 @@ class SimulationIo(object):
|
|
|
389
405
|
_registered_method=True)
|
|
390
406
|
|
|
391
407
|
@staticmethod
|
|
392
|
-
def
|
|
408
|
+
def GetRunStatus(request,
|
|
393
409
|
target,
|
|
394
410
|
options=(),
|
|
395
411
|
channel_credentials=None,
|
|
@@ -402,9 +418,9 @@ class SimulationIo(object):
|
|
|
402
418
|
return grpc.experimental.unary_unary(
|
|
403
419
|
request,
|
|
404
420
|
target,
|
|
405
|
-
'/flwr.proto.SimulationIo/
|
|
406
|
-
|
|
407
|
-
|
|
421
|
+
'/flwr.proto.SimulationIo/GetRunStatus',
|
|
422
|
+
flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
|
|
423
|
+
flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
|
|
408
424
|
options,
|
|
409
425
|
channel_credentials,
|
|
410
426
|
insecure,
|
|
@@ -416,7 +432,7 @@ class SimulationIo(object):
|
|
|
416
432
|
_registered_method=True)
|
|
417
433
|
|
|
418
434
|
@staticmethod
|
|
419
|
-
def
|
|
435
|
+
def UpdateRunStatus(request,
|
|
420
436
|
target,
|
|
421
437
|
options=(),
|
|
422
438
|
channel_credentials=None,
|
|
@@ -429,9 +445,9 @@ class SimulationIo(object):
|
|
|
429
445
|
return grpc.experimental.unary_unary(
|
|
430
446
|
request,
|
|
431
447
|
target,
|
|
432
|
-
'/flwr.proto.SimulationIo/
|
|
433
|
-
flwr_dot_proto_dot_run__pb2.
|
|
434
|
-
flwr_dot_proto_dot_run__pb2.
|
|
448
|
+
'/flwr.proto.SimulationIo/UpdateRunStatus',
|
|
449
|
+
flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
|
|
450
|
+
flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
|
|
435
451
|
options,
|
|
436
452
|
channel_credentials,
|
|
437
453
|
insecure,
|
|
@@ -443,7 +459,7 @@ class SimulationIo(object):
|
|
|
443
459
|
_registered_method=True)
|
|
444
460
|
|
|
445
461
|
@staticmethod
|
|
446
|
-
def
|
|
462
|
+
def PushLogs(request,
|
|
447
463
|
target,
|
|
448
464
|
options=(),
|
|
449
465
|
channel_credentials=None,
|
|
@@ -456,9 +472,9 @@ class SimulationIo(object):
|
|
|
456
472
|
return grpc.experimental.unary_unary(
|
|
457
473
|
request,
|
|
458
474
|
target,
|
|
459
|
-
'/flwr.proto.SimulationIo/
|
|
460
|
-
|
|
461
|
-
|
|
475
|
+
'/flwr.proto.SimulationIo/PushLogs',
|
|
476
|
+
flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
|
|
477
|
+
flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
|
|
462
478
|
options,
|
|
463
479
|
channel_credentials,
|
|
464
480
|
insecure,
|
|
@@ -470,7 +486,7 @@ class SimulationIo(object):
|
|
|
470
486
|
_registered_method=True)
|
|
471
487
|
|
|
472
488
|
@staticmethod
|
|
473
|
-
def
|
|
489
|
+
def GetFederationOptions(request,
|
|
474
490
|
target,
|
|
475
491
|
options=(),
|
|
476
492
|
channel_credentials=None,
|
|
@@ -483,9 +499,9 @@ class SimulationIo(object):
|
|
|
483
499
|
return grpc.experimental.unary_unary(
|
|
484
500
|
request,
|
|
485
501
|
target,
|
|
486
|
-
'/flwr.proto.SimulationIo/
|
|
487
|
-
|
|
488
|
-
|
|
502
|
+
'/flwr.proto.SimulationIo/GetFederationOptions',
|
|
503
|
+
flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.SerializeToString,
|
|
504
|
+
flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString,
|
|
489
505
|
options,
|
|
490
506
|
channel_credentials,
|
|
491
507
|
insecure,
|
|
@@ -40,7 +40,12 @@ class SimulationIoStub:
|
|
|
40
40
|
flwr.proto.appio_pb2.ListAppsToLaunchRequest,
|
|
41
41
|
flwr.proto.appio_pb2.ListAppsToLaunchResponse,
|
|
42
42
|
]
|
|
43
|
-
"""
|
|
43
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
44
|
+
General *AppIo endpoints for SuperExec processes
|
|
45
|
+
///////////////////////////////////////////////////////////////////////////
|
|
46
|
+
|
|
47
|
+
List runs to launch
|
|
48
|
+
"""
|
|
44
49
|
|
|
45
50
|
RequestToken: grpc.UnaryUnaryMultiCallable[
|
|
46
51
|
flwr.proto.appio_pb2.RequestTokenRequest,
|
|
@@ -52,13 +57,29 @@ class SimulationIoStub:
|
|
|
52
57
|
flwr.proto.run_pb2.GetRunRequest,
|
|
53
58
|
flwr.proto.run_pb2.GetRunResponse,
|
|
54
59
|
]
|
|
55
|
-
"""
|
|
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
73
|
PullAppInputs: grpc.UnaryUnaryMultiCallable[
|
|
58
74
|
flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
59
75
|
flwr.proto.appio_pb2.PullAppInputsResponse,
|
|
60
76
|
]
|
|
61
|
-
"""
|
|
77
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
78
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
79
|
+
///////////////////////////////////////////////////////////////////////////
|
|
80
|
+
|
|
81
|
+
Pull Simulation inputs
|
|
82
|
+
"""
|
|
62
83
|
|
|
63
84
|
PushAppOutputs: grpc.UnaryUnaryMultiCallable[
|
|
64
85
|
flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
@@ -66,6 +87,12 @@ class SimulationIoStub:
|
|
|
66
87
|
]
|
|
67
88
|
"""Push Simulation outputs"""
|
|
68
89
|
|
|
90
|
+
GetRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
91
|
+
flwr.proto.run_pb2.GetRunStatusRequest,
|
|
92
|
+
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
93
|
+
]
|
|
94
|
+
"""Get Run Status"""
|
|
95
|
+
|
|
69
96
|
UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
70
97
|
flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
71
98
|
flwr.proto.run_pb2.UpdateRunStatusResponse,
|
|
@@ -82,26 +109,24 @@ class SimulationIoStub:
|
|
|
82
109
|
flwr.proto.run_pb2.GetFederationOptionsRequest,
|
|
83
110
|
flwr.proto.run_pb2.GetFederationOptionsResponse,
|
|
84
111
|
]
|
|
85
|
-
"""
|
|
112
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
113
|
+
Specific endpoints for SimulationIo
|
|
114
|
+
///////////////////////////////////////////////////////////////////////////
|
|
86
115
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
90
|
-
]
|
|
91
|
-
"""Get Run Status"""
|
|
92
|
-
|
|
93
|
-
SendAppHeartbeat: grpc.UnaryUnaryMultiCallable[
|
|
94
|
-
flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
|
|
95
|
-
flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
|
|
96
|
-
]
|
|
97
|
-
"""App heartbeat"""
|
|
116
|
+
Get Federation Options
|
|
117
|
+
"""
|
|
98
118
|
|
|
99
119
|
class SimulationIoAsyncStub:
|
|
100
120
|
ListAppsToLaunch: grpc.aio.UnaryUnaryMultiCallable[
|
|
101
121
|
flwr.proto.appio_pb2.ListAppsToLaunchRequest,
|
|
102
122
|
flwr.proto.appio_pb2.ListAppsToLaunchResponse,
|
|
103
123
|
]
|
|
104
|
-
"""
|
|
124
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
125
|
+
General *AppIo endpoints for SuperExec processes
|
|
126
|
+
///////////////////////////////////////////////////////////////////////////
|
|
127
|
+
|
|
128
|
+
List runs to launch
|
|
129
|
+
"""
|
|
105
130
|
|
|
106
131
|
RequestToken: grpc.aio.UnaryUnaryMultiCallable[
|
|
107
132
|
flwr.proto.appio_pb2.RequestTokenRequest,
|
|
@@ -113,13 +138,29 @@ class SimulationIoAsyncStub:
|
|
|
113
138
|
flwr.proto.run_pb2.GetRunRequest,
|
|
114
139
|
flwr.proto.run_pb2.GetRunResponse,
|
|
115
140
|
]
|
|
116
|
-
"""
|
|
141
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
142
|
+
General *AppIo endpoints for App Executor processes
|
|
143
|
+
///////////////////////////////////////////////////////////////////////////
|
|
144
|
+
|
|
145
|
+
Get run details
|
|
146
|
+
"""
|
|
147
|
+
|
|
148
|
+
SendAppHeartbeat: grpc.aio.UnaryUnaryMultiCallable[
|
|
149
|
+
flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
|
|
150
|
+
flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
|
|
151
|
+
]
|
|
152
|
+
"""App heartbeat"""
|
|
117
153
|
|
|
118
154
|
PullAppInputs: grpc.aio.UnaryUnaryMultiCallable[
|
|
119
155
|
flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
120
156
|
flwr.proto.appio_pb2.PullAppInputsResponse,
|
|
121
157
|
]
|
|
122
|
-
"""
|
|
158
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
159
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
160
|
+
///////////////////////////////////////////////////////////////////////////
|
|
161
|
+
|
|
162
|
+
Pull Simulation inputs
|
|
163
|
+
"""
|
|
123
164
|
|
|
124
165
|
PushAppOutputs: grpc.aio.UnaryUnaryMultiCallable[
|
|
125
166
|
flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
@@ -127,6 +168,12 @@ class SimulationIoAsyncStub:
|
|
|
127
168
|
]
|
|
128
169
|
"""Push Simulation outputs"""
|
|
129
170
|
|
|
171
|
+
GetRunStatus: grpc.aio.UnaryUnaryMultiCallable[
|
|
172
|
+
flwr.proto.run_pb2.GetRunStatusRequest,
|
|
173
|
+
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
174
|
+
]
|
|
175
|
+
"""Get Run Status"""
|
|
176
|
+
|
|
130
177
|
UpdateRunStatus: grpc.aio.UnaryUnaryMultiCallable[
|
|
131
178
|
flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
132
179
|
flwr.proto.run_pb2.UpdateRunStatusResponse,
|
|
@@ -143,19 +190,12 @@ class SimulationIoAsyncStub:
|
|
|
143
190
|
flwr.proto.run_pb2.GetFederationOptionsRequest,
|
|
144
191
|
flwr.proto.run_pb2.GetFederationOptionsResponse,
|
|
145
192
|
]
|
|
146
|
-
"""
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
flwr.proto.run_pb2.GetRunStatusRequest,
|
|
150
|
-
flwr.proto.run_pb2.GetRunStatusResponse,
|
|
151
|
-
]
|
|
152
|
-
"""Get Run Status"""
|
|
193
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
194
|
+
Specific endpoints for SimulationIo
|
|
195
|
+
///////////////////////////////////////////////////////////////////////////
|
|
153
196
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse,
|
|
157
|
-
]
|
|
158
|
-
"""App heartbeat"""
|
|
197
|
+
Get Federation Options
|
|
198
|
+
"""
|
|
159
199
|
|
|
160
200
|
class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
161
201
|
@abc.abstractmethod
|
|
@@ -164,7 +204,12 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
164
204
|
request: flwr.proto.appio_pb2.ListAppsToLaunchRequest,
|
|
165
205
|
context: _ServicerContext,
|
|
166
206
|
) -> typing.Union[flwr.proto.appio_pb2.ListAppsToLaunchResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.ListAppsToLaunchResponse]]:
|
|
167
|
-
"""
|
|
207
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
208
|
+
General *AppIo endpoints for SuperExec processes
|
|
209
|
+
///////////////////////////////////////////////////////////////////////////
|
|
210
|
+
|
|
211
|
+
List runs to launch
|
|
212
|
+
"""
|
|
168
213
|
|
|
169
214
|
@abc.abstractmethod
|
|
170
215
|
def RequestToken(
|
|
@@ -180,7 +225,20 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
180
225
|
request: flwr.proto.run_pb2.GetRunRequest,
|
|
181
226
|
context: _ServicerContext,
|
|
182
227
|
) -> typing.Union[flwr.proto.run_pb2.GetRunResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunResponse]]:
|
|
183
|
-
"""
|
|
228
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
229
|
+
General *AppIo endpoints for App Executor processes
|
|
230
|
+
///////////////////////////////////////////////////////////////////////////
|
|
231
|
+
|
|
232
|
+
Get run details
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
@abc.abstractmethod
|
|
236
|
+
def SendAppHeartbeat(
|
|
237
|
+
self,
|
|
238
|
+
request: flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
|
|
239
|
+
context: _ServicerContext,
|
|
240
|
+
) -> typing.Union[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse, collections.abc.Awaitable[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse]]:
|
|
241
|
+
"""App heartbeat"""
|
|
184
242
|
|
|
185
243
|
@abc.abstractmethod
|
|
186
244
|
def PullAppInputs(
|
|
@@ -188,7 +246,12 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
188
246
|
request: flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
189
247
|
context: _ServicerContext,
|
|
190
248
|
) -> typing.Union[flwr.proto.appio_pb2.PullAppInputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PullAppInputsResponse]]:
|
|
191
|
-
"""
|
|
249
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
250
|
+
Specific endpoints shared by ServerAppIo and SimulationIo
|
|
251
|
+
///////////////////////////////////////////////////////////////////////////
|
|
252
|
+
|
|
253
|
+
Pull Simulation inputs
|
|
254
|
+
"""
|
|
192
255
|
|
|
193
256
|
@abc.abstractmethod
|
|
194
257
|
def PushAppOutputs(
|
|
@@ -198,6 +261,14 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
198
261
|
) -> typing.Union[flwr.proto.appio_pb2.PushAppOutputsResponse, collections.abc.Awaitable[flwr.proto.appio_pb2.PushAppOutputsResponse]]:
|
|
199
262
|
"""Push Simulation outputs"""
|
|
200
263
|
|
|
264
|
+
@abc.abstractmethod
|
|
265
|
+
def GetRunStatus(
|
|
266
|
+
self,
|
|
267
|
+
request: flwr.proto.run_pb2.GetRunStatusRequest,
|
|
268
|
+
context: _ServicerContext,
|
|
269
|
+
) -> typing.Union[flwr.proto.run_pb2.GetRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunStatusResponse]]:
|
|
270
|
+
"""Get Run Status"""
|
|
271
|
+
|
|
201
272
|
@abc.abstractmethod
|
|
202
273
|
def UpdateRunStatus(
|
|
203
274
|
self,
|
|
@@ -220,22 +291,11 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
|
220
291
|
request: flwr.proto.run_pb2.GetFederationOptionsRequest,
|
|
221
292
|
context: _ServicerContext,
|
|
222
293
|
) -> typing.Union[flwr.proto.run_pb2.GetFederationOptionsResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetFederationOptionsResponse]]:
|
|
223
|
-
"""
|
|
294
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
295
|
+
Specific endpoints for SimulationIo
|
|
296
|
+
///////////////////////////////////////////////////////////////////////////
|
|
224
297
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
self,
|
|
228
|
-
request: flwr.proto.run_pb2.GetRunStatusRequest,
|
|
229
|
-
context: _ServicerContext,
|
|
230
|
-
) -> typing.Union[flwr.proto.run_pb2.GetRunStatusResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunStatusResponse]]:
|
|
231
|
-
"""Get Run Status"""
|
|
232
|
-
|
|
233
|
-
@abc.abstractmethod
|
|
234
|
-
def SendAppHeartbeat(
|
|
235
|
-
self,
|
|
236
|
-
request: flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
|
|
237
|
-
context: _ServicerContext,
|
|
238
|
-
) -> typing.Union[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse, collections.abc.Awaitable[flwr.proto.heartbeat_pb2.SendAppHeartbeatResponse]]:
|
|
239
|
-
"""App heartbeat"""
|
|
298
|
+
Get Federation Options
|
|
299
|
+
"""
|
|
240
300
|
|
|
241
301
|
def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
|
flwr/server/app.py
CHANGED
|
@@ -485,7 +485,7 @@ def _load_control_auth_plugins(
|
|
|
485
485
|
}
|
|
486
486
|
# Load YAML file
|
|
487
487
|
else:
|
|
488
|
-
with Path(config_path).open("r", encoding="utf-8") as file:
|
|
488
|
+
with Path(config_path).expanduser().open("r", encoding="utf-8") as file:
|
|
489
489
|
config = yaml.safe_load(file)
|
|
490
490
|
|
|
491
491
|
def _load_plugin(
|
flwr/server/serverapp/app.py
CHANGED
|
@@ -144,6 +144,10 @@ def run_serverapp( # pylint: disable=R0913, R0914, R0915, R0917, W0212
|
|
|
144
144
|
exit_code = ExitCode.SUCCESS
|
|
145
145
|
|
|
146
146
|
def on_exit() -> None:
|
|
147
|
+
# Set Grpc max retries to 1 to avoid blocking on exit
|
|
148
|
+
if grid:
|
|
149
|
+
grid._retry_invoker.max_tries = 1
|
|
150
|
+
|
|
147
151
|
# Stop heartbeat sender
|
|
148
152
|
if heartbeat_sender and heartbeat_sender.is_running:
|
|
149
153
|
heartbeat_sender.stop()
|
|
@@ -154,10 +158,13 @@ def run_serverapp( # pylint: disable=R0913, R0914, R0915, R0917, W0212
|
|
|
154
158
|
|
|
155
159
|
# Update run status
|
|
156
160
|
if run and run_status and grid:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
try:
|
|
162
|
+
req = UpdateRunStatusRequest(
|
|
163
|
+
run_id=run.run_id, run_status=run_status_to_proto(run_status)
|
|
164
|
+
)
|
|
165
|
+
grid._stub.UpdateRunStatus(req)
|
|
166
|
+
except grpc.RpcError:
|
|
167
|
+
pass
|
|
161
168
|
|
|
162
169
|
# Close the Grpc connection
|
|
163
170
|
if grid:
|