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.
@@ -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
- """List runs to launch
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
- """Get run details
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 PullAppInputs(self, request, context):
117
- """Pull Simulation inputs
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 PushAppOutputs(self, request, context):
124
- """Push Simulation outputs
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 UpdateRunStatus(self, request, context):
131
- """Update the status of a given run
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 PushLogs(self, request, context):
138
- """Push ServerApp logs
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 GetFederationOptions(self, request, context):
145
- """Get Federation Options
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 GetRunStatus(self, request, context):
152
- """Get Run Status
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 SendAppHeartbeat(self, request, context):
159
- """App heartbeat
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 PullAppInputs(request,
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/PullAppInputs',
325
- flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
326
- flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
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 PushAppOutputs(request,
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/PushAppOutputs',
352
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
353
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
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 UpdateRunStatus(request,
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/UpdateRunStatus',
379
- flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
380
- flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
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 PushLogs(request,
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/PushLogs',
406
- flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
407
- flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
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 GetFederationOptions(request,
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/GetFederationOptions',
433
- flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.SerializeToString,
434
- flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString,
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 GetRunStatus(request,
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/GetRunStatus',
460
- flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
461
- flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
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 SendAppHeartbeat(request,
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/SendAppHeartbeat',
487
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
488
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
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
- """List runs to launch"""
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
- """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
73
  PullAppInputs: grpc.UnaryUnaryMultiCallable[
58
74
  flwr.proto.appio_pb2.PullAppInputsRequest,
59
75
  flwr.proto.appio_pb2.PullAppInputsResponse,
60
76
  ]
61
- """Pull Simulation inputs"""
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
- """Get Federation Options"""
112
+ """///////////////////////////////////////////////////////////////////////////
113
+ Specific endpoints for SimulationIo
114
+ ///////////////////////////////////////////////////////////////////////////
86
115
 
87
- GetRunStatus: grpc.UnaryUnaryMultiCallable[
88
- flwr.proto.run_pb2.GetRunStatusRequest,
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
- """List runs to launch"""
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
- """Get run details"""
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
- """Pull Simulation inputs"""
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
- """Get Federation Options"""
147
-
148
- GetRunStatus: grpc.aio.UnaryUnaryMultiCallable[
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
- SendAppHeartbeat: grpc.aio.UnaryUnaryMultiCallable[
155
- flwr.proto.heartbeat_pb2.SendAppHeartbeatRequest,
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
- """List runs to launch"""
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
- """Get run details"""
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
- """Pull Simulation inputs"""
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
- """Get Federation Options"""
294
+ """///////////////////////////////////////////////////////////////////////////
295
+ Specific endpoints for SimulationIo
296
+ ///////////////////////////////////////////////////////////////////////////
224
297
 
225
- @abc.abstractmethod
226
- def GetRunStatus(
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(
@@ -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
- run_status_proto = run_status_to_proto(run_status)
158
- grid._stub.UpdateRunStatus(
159
- UpdateRunStatusRequest(run_id=run.run_id, run_status=run_status_proto)
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: