flwr-nightly 1.13.0.dev20241021__py3-none-any.whl → 1.13.0.dev20241106__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.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- flwr/cli/build.py +2 -2
- flwr/cli/config_utils.py +97 -0
- flwr/cli/log.py +63 -97
- flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -0
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- flwr/cli/run/run.py +18 -83
- flwr/client/app.py +13 -14
- flwr/client/clientapp/app.py +1 -2
- flwr/client/{node_state.py → run_info_store.py} +4 -3
- flwr/client/supernode/app.py +6 -8
- flwr/common/constant.py +39 -4
- flwr/common/context.py +9 -4
- flwr/common/date.py +3 -3
- flwr/common/logger.py +103 -0
- flwr/common/serde.py +24 -0
- flwr/common/telemetry.py +0 -6
- flwr/common/typing.py +9 -0
- flwr/proto/exec_pb2.py +6 -6
- flwr/proto/exec_pb2.pyi +8 -2
- flwr/proto/log_pb2.py +29 -0
- flwr/proto/log_pb2.pyi +39 -0
- flwr/proto/log_pb2_grpc.py +4 -0
- flwr/proto/log_pb2_grpc.pyi +4 -0
- flwr/proto/message_pb2.py +8 -8
- flwr/proto/message_pb2.pyi +4 -1
- flwr/proto/serverappio_pb2.py +52 -0
- flwr/proto/{driver_pb2.pyi → serverappio_pb2.pyi} +54 -0
- flwr/proto/serverappio_pb2_grpc.py +376 -0
- flwr/proto/serverappio_pb2_grpc.pyi +147 -0
- flwr/proto/simulationio_pb2.py +38 -0
- flwr/proto/simulationio_pb2.pyi +65 -0
- flwr/proto/simulationio_pb2_grpc.py +171 -0
- flwr/proto/simulationio_pb2_grpc.pyi +68 -0
- flwr/server/app.py +247 -105
- flwr/server/driver/driver.py +15 -1
- flwr/server/driver/grpc_driver.py +26 -33
- flwr/server/driver/inmemory_driver.py +6 -14
- flwr/server/run_serverapp.py +29 -23
- flwr/server/{superlink/state → serverapp}/__init__.py +3 -9
- flwr/server/serverapp/app.py +270 -0
- flwr/server/strategy/fedadam.py +11 -1
- flwr/server/superlink/driver/__init__.py +1 -1
- flwr/server/superlink/driver/{driver_grpc.py → serverappio_grpc.py} +19 -16
- flwr/server/superlink/driver/{driver_servicer.py → serverappio_servicer.py} +125 -39
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +4 -2
- flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +4 -2
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -2
- flwr/server/superlink/fleet/message_handler/message_handler.py +7 -7
- flwr/server/superlink/fleet/rest_rere/rest_api.py +7 -7
- flwr/server/superlink/fleet/vce/vce_api.py +23 -23
- flwr/server/superlink/linkstate/__init__.py +28 -0
- flwr/server/superlink/{state/in_memory_state.py → linkstate/in_memory_linkstate.py} +180 -21
- flwr/server/superlink/{state/state.py → linkstate/linkstate.py} +144 -15
- flwr/server/superlink/{state/state_factory.py → linkstate/linkstate_factory.py} +9 -9
- flwr/server/superlink/{state/sqlite_state.py → linkstate/sqlite_linkstate.py} +300 -50
- flwr/server/superlink/{state → linkstate}/utils.py +84 -2
- flwr/server/superlink/simulation/__init__.py +15 -0
- flwr/server/superlink/simulation/simulationio_grpc.py +65 -0
- flwr/server/superlink/simulation/simulationio_servicer.py +132 -0
- flwr/simulation/__init__.py +2 -0
- flwr/simulation/app.py +1 -1
- flwr/simulation/ray_transport/ray_client_proxy.py +2 -2
- flwr/simulation/run_simulation.py +57 -131
- flwr/simulation/simulationio_connection.py +86 -0
- flwr/superexec/app.py +6 -134
- flwr/superexec/deployment.py +60 -65
- flwr/superexec/exec_grpc.py +15 -8
- flwr/superexec/exec_servicer.py +34 -63
- flwr/superexec/executor.py +22 -4
- flwr/superexec/simulation.py +13 -8
- {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/METADATA +1 -1
- {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/RECORD +77 -64
- {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/entry_points.txt +1 -0
- flwr/client/node_state_tests.py +0 -66
- flwr/proto/driver_pb2.py +0 -42
- flwr/proto/driver_pb2_grpc.py +0 -239
- flwr/proto/driver_pb2_grpc.pyi +0 -94
- {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
import builtins
|
|
6
|
+
import flwr.proto.fab_pb2
|
|
7
|
+
import flwr.proto.message_pb2
|
|
8
|
+
import flwr.proto.run_pb2
|
|
9
|
+
import google.protobuf.descriptor
|
|
10
|
+
import google.protobuf.message
|
|
11
|
+
import typing
|
|
12
|
+
import typing_extensions
|
|
13
|
+
|
|
14
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
15
|
+
|
|
16
|
+
class PullSimulationInputsRequest(google.protobuf.message.Message):
|
|
17
|
+
"""PullSimulationInputs messages"""
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
def __init__(self,
|
|
20
|
+
) -> None: ...
|
|
21
|
+
global___PullSimulationInputsRequest = PullSimulationInputsRequest
|
|
22
|
+
|
|
23
|
+
class PullSimulationInputsResponse(google.protobuf.message.Message):
|
|
24
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
25
|
+
CONTEXT_FIELD_NUMBER: builtins.int
|
|
26
|
+
RUN_FIELD_NUMBER: builtins.int
|
|
27
|
+
FAB_FIELD_NUMBER: builtins.int
|
|
28
|
+
@property
|
|
29
|
+
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
30
|
+
@property
|
|
31
|
+
def run(self) -> flwr.proto.run_pb2.Run: ...
|
|
32
|
+
@property
|
|
33
|
+
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
|
34
|
+
def __init__(self,
|
|
35
|
+
*,
|
|
36
|
+
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
37
|
+
run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
|
|
38
|
+
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
|
39
|
+
) -> None: ...
|
|
40
|
+
def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
|
|
41
|
+
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
|
|
42
|
+
global___PullSimulationInputsResponse = PullSimulationInputsResponse
|
|
43
|
+
|
|
44
|
+
class PushSimulationOutputsRequest(google.protobuf.message.Message):
|
|
45
|
+
"""PushSimulationOutputs messages"""
|
|
46
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
47
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
|
48
|
+
CONTEXT_FIELD_NUMBER: builtins.int
|
|
49
|
+
run_id: builtins.int
|
|
50
|
+
@property
|
|
51
|
+
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
52
|
+
def __init__(self,
|
|
53
|
+
*,
|
|
54
|
+
run_id: builtins.int = ...,
|
|
55
|
+
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
56
|
+
) -> None: ...
|
|
57
|
+
def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
|
|
58
|
+
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
|
|
59
|
+
global___PushSimulationOutputsRequest = PushSimulationOutputsRequest
|
|
60
|
+
|
|
61
|
+
class PushSimulationOutputsResponse(google.protobuf.message.Message):
|
|
62
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
63
|
+
def __init__(self,
|
|
64
|
+
) -> None: ...
|
|
65
|
+
global___PushSimulationOutputsResponse = PushSimulationOutputsResponse
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
|
+
import grpc
|
|
4
|
+
|
|
5
|
+
from flwr.proto import log_pb2 as flwr_dot_proto_dot_log__pb2
|
|
6
|
+
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
7
|
+
from flwr.proto import simulationio_pb2 as flwr_dot_proto_dot_simulationio__pb2
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SimulationIoStub(object):
|
|
11
|
+
"""Missing associated documentation comment in .proto file."""
|
|
12
|
+
|
|
13
|
+
def __init__(self, channel):
|
|
14
|
+
"""Constructor.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
channel: A grpc.Channel.
|
|
18
|
+
"""
|
|
19
|
+
self.PullSimulationInputs = channel.unary_unary(
|
|
20
|
+
'/flwr.proto.SimulationIo/PullSimulationInputs',
|
|
21
|
+
request_serializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.SerializeToString,
|
|
22
|
+
response_deserializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.FromString,
|
|
23
|
+
)
|
|
24
|
+
self.PushSimulationOutputs = channel.unary_unary(
|
|
25
|
+
'/flwr.proto.SimulationIo/PushSimulationOutputs',
|
|
26
|
+
request_serializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.SerializeToString,
|
|
27
|
+
response_deserializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.FromString,
|
|
28
|
+
)
|
|
29
|
+
self.UpdateRunStatus = channel.unary_unary(
|
|
30
|
+
'/flwr.proto.SimulationIo/UpdateRunStatus',
|
|
31
|
+
request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
|
|
32
|
+
response_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
|
|
33
|
+
)
|
|
34
|
+
self.PushLogs = channel.unary_unary(
|
|
35
|
+
'/flwr.proto.SimulationIo/PushLogs',
|
|
36
|
+
request_serializer=flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
|
|
37
|
+
response_deserializer=flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class SimulationIoServicer(object):
|
|
42
|
+
"""Missing associated documentation comment in .proto file."""
|
|
43
|
+
|
|
44
|
+
def PullSimulationInputs(self, request, context):
|
|
45
|
+
"""Pull Simulation inputs
|
|
46
|
+
"""
|
|
47
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
48
|
+
context.set_details('Method not implemented!')
|
|
49
|
+
raise NotImplementedError('Method not implemented!')
|
|
50
|
+
|
|
51
|
+
def PushSimulationOutputs(self, request, context):
|
|
52
|
+
"""Push Simulation outputs
|
|
53
|
+
"""
|
|
54
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
55
|
+
context.set_details('Method not implemented!')
|
|
56
|
+
raise NotImplementedError('Method not implemented!')
|
|
57
|
+
|
|
58
|
+
def UpdateRunStatus(self, request, context):
|
|
59
|
+
"""Update the status of a given run
|
|
60
|
+
"""
|
|
61
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
62
|
+
context.set_details('Method not implemented!')
|
|
63
|
+
raise NotImplementedError('Method not implemented!')
|
|
64
|
+
|
|
65
|
+
def PushLogs(self, request, context):
|
|
66
|
+
"""Push ServerApp logs
|
|
67
|
+
"""
|
|
68
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
69
|
+
context.set_details('Method not implemented!')
|
|
70
|
+
raise NotImplementedError('Method not implemented!')
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def add_SimulationIoServicer_to_server(servicer, server):
|
|
74
|
+
rpc_method_handlers = {
|
|
75
|
+
'PullSimulationInputs': grpc.unary_unary_rpc_method_handler(
|
|
76
|
+
servicer.PullSimulationInputs,
|
|
77
|
+
request_deserializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.FromString,
|
|
78
|
+
response_serializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.SerializeToString,
|
|
79
|
+
),
|
|
80
|
+
'PushSimulationOutputs': grpc.unary_unary_rpc_method_handler(
|
|
81
|
+
servicer.PushSimulationOutputs,
|
|
82
|
+
request_deserializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.FromString,
|
|
83
|
+
response_serializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.SerializeToString,
|
|
84
|
+
),
|
|
85
|
+
'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
|
|
86
|
+
servicer.UpdateRunStatus,
|
|
87
|
+
request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
|
|
88
|
+
response_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.SerializeToString,
|
|
89
|
+
),
|
|
90
|
+
'PushLogs': grpc.unary_unary_rpc_method_handler(
|
|
91
|
+
servicer.PushLogs,
|
|
92
|
+
request_deserializer=flwr_dot_proto_dot_log__pb2.PushLogsRequest.FromString,
|
|
93
|
+
response_serializer=flwr_dot_proto_dot_log__pb2.PushLogsResponse.SerializeToString,
|
|
94
|
+
),
|
|
95
|
+
}
|
|
96
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
|
97
|
+
'flwr.proto.SimulationIo', rpc_method_handlers)
|
|
98
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# This class is part of an EXPERIMENTAL API.
|
|
102
|
+
class SimulationIo(object):
|
|
103
|
+
"""Missing associated documentation comment in .proto file."""
|
|
104
|
+
|
|
105
|
+
@staticmethod
|
|
106
|
+
def PullSimulationInputs(request,
|
|
107
|
+
target,
|
|
108
|
+
options=(),
|
|
109
|
+
channel_credentials=None,
|
|
110
|
+
call_credentials=None,
|
|
111
|
+
insecure=False,
|
|
112
|
+
compression=None,
|
|
113
|
+
wait_for_ready=None,
|
|
114
|
+
timeout=None,
|
|
115
|
+
metadata=None):
|
|
116
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/PullSimulationInputs',
|
|
117
|
+
flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.SerializeToString,
|
|
118
|
+
flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.FromString,
|
|
119
|
+
options, channel_credentials,
|
|
120
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
121
|
+
|
|
122
|
+
@staticmethod
|
|
123
|
+
def PushSimulationOutputs(request,
|
|
124
|
+
target,
|
|
125
|
+
options=(),
|
|
126
|
+
channel_credentials=None,
|
|
127
|
+
call_credentials=None,
|
|
128
|
+
insecure=False,
|
|
129
|
+
compression=None,
|
|
130
|
+
wait_for_ready=None,
|
|
131
|
+
timeout=None,
|
|
132
|
+
metadata=None):
|
|
133
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/PushSimulationOutputs',
|
|
134
|
+
flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.SerializeToString,
|
|
135
|
+
flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.FromString,
|
|
136
|
+
options, channel_credentials,
|
|
137
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
138
|
+
|
|
139
|
+
@staticmethod
|
|
140
|
+
def UpdateRunStatus(request,
|
|
141
|
+
target,
|
|
142
|
+
options=(),
|
|
143
|
+
channel_credentials=None,
|
|
144
|
+
call_credentials=None,
|
|
145
|
+
insecure=False,
|
|
146
|
+
compression=None,
|
|
147
|
+
wait_for_ready=None,
|
|
148
|
+
timeout=None,
|
|
149
|
+
metadata=None):
|
|
150
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/UpdateRunStatus',
|
|
151
|
+
flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
|
|
152
|
+
flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
|
|
153
|
+
options, channel_credentials,
|
|
154
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
155
|
+
|
|
156
|
+
@staticmethod
|
|
157
|
+
def PushLogs(request,
|
|
158
|
+
target,
|
|
159
|
+
options=(),
|
|
160
|
+
channel_credentials=None,
|
|
161
|
+
call_credentials=None,
|
|
162
|
+
insecure=False,
|
|
163
|
+
compression=None,
|
|
164
|
+
wait_for_ready=None,
|
|
165
|
+
timeout=None,
|
|
166
|
+
metadata=None):
|
|
167
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/PushLogs',
|
|
168
|
+
flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
|
|
169
|
+
flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
|
|
170
|
+
options, channel_credentials,
|
|
171
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
import abc
|
|
6
|
+
import flwr.proto.log_pb2
|
|
7
|
+
import flwr.proto.run_pb2
|
|
8
|
+
import flwr.proto.simulationio_pb2
|
|
9
|
+
import grpc
|
|
10
|
+
|
|
11
|
+
class SimulationIoStub:
|
|
12
|
+
def __init__(self, channel: grpc.Channel) -> None: ...
|
|
13
|
+
PullSimulationInputs: grpc.UnaryUnaryMultiCallable[
|
|
14
|
+
flwr.proto.simulationio_pb2.PullSimulationInputsRequest,
|
|
15
|
+
flwr.proto.simulationio_pb2.PullSimulationInputsResponse]
|
|
16
|
+
"""Pull Simulation inputs"""
|
|
17
|
+
|
|
18
|
+
PushSimulationOutputs: grpc.UnaryUnaryMultiCallable[
|
|
19
|
+
flwr.proto.simulationio_pb2.PushSimulationOutputsRequest,
|
|
20
|
+
flwr.proto.simulationio_pb2.PushSimulationOutputsResponse]
|
|
21
|
+
"""Push Simulation outputs"""
|
|
22
|
+
|
|
23
|
+
UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
24
|
+
flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
25
|
+
flwr.proto.run_pb2.UpdateRunStatusResponse]
|
|
26
|
+
"""Update the status of a given run"""
|
|
27
|
+
|
|
28
|
+
PushLogs: grpc.UnaryUnaryMultiCallable[
|
|
29
|
+
flwr.proto.log_pb2.PushLogsRequest,
|
|
30
|
+
flwr.proto.log_pb2.PushLogsResponse]
|
|
31
|
+
"""Push ServerApp logs"""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class SimulationIoServicer(metaclass=abc.ABCMeta):
|
|
35
|
+
@abc.abstractmethod
|
|
36
|
+
def PullSimulationInputs(self,
|
|
37
|
+
request: flwr.proto.simulationio_pb2.PullSimulationInputsRequest,
|
|
38
|
+
context: grpc.ServicerContext,
|
|
39
|
+
) -> flwr.proto.simulationio_pb2.PullSimulationInputsResponse:
|
|
40
|
+
"""Pull Simulation inputs"""
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
@abc.abstractmethod
|
|
44
|
+
def PushSimulationOutputs(self,
|
|
45
|
+
request: flwr.proto.simulationio_pb2.PushSimulationOutputsRequest,
|
|
46
|
+
context: grpc.ServicerContext,
|
|
47
|
+
) -> flwr.proto.simulationio_pb2.PushSimulationOutputsResponse:
|
|
48
|
+
"""Push Simulation outputs"""
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
@abc.abstractmethod
|
|
52
|
+
def UpdateRunStatus(self,
|
|
53
|
+
request: flwr.proto.run_pb2.UpdateRunStatusRequest,
|
|
54
|
+
context: grpc.ServicerContext,
|
|
55
|
+
) -> flwr.proto.run_pb2.UpdateRunStatusResponse:
|
|
56
|
+
"""Update the status of a given run"""
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
@abc.abstractmethod
|
|
60
|
+
def PushLogs(self,
|
|
61
|
+
request: flwr.proto.log_pb2.PushLogsRequest,
|
|
62
|
+
context: grpc.ServicerContext,
|
|
63
|
+
) -> flwr.proto.log_pb2.PushLogsResponse:
|
|
64
|
+
"""Push ServerApp logs"""
|
|
65
|
+
pass
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: grpc.Server) -> None: ...
|