flwr 1.19.0__py3-none-any.whl → 1.20.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flwr/cli/build.py +15 -5
- flwr/cli/new/new.py +12 -4
- flwr/cli/new/templates/app/README.flowertune.md.tpl +2 -0
- flwr/cli/new/templates/app/README.md.tpl +5 -0
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +14 -3
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +13 -1
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +21 -2
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +18 -1
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +19 -2
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +18 -1
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +20 -3
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +18 -1
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +18 -1
- flwr/cli/run/run.py +45 -38
- flwr/cli/utils.py +12 -5
- flwr/client/grpc_adapter_client/connection.py +11 -4
- flwr/client/grpc_rere_client/connection.py +92 -117
- flwr/client/rest_client/connection.py +131 -164
- flwr/common/constant.py +3 -1
- flwr/common/exit/exit_code.py +16 -1
- flwr/common/grpc.py +12 -1
- flwr/common/{inflatable_grpc_utils.py → inflatable_protobuf_utils.py} +52 -10
- flwr/common/inflatable_utils.py +191 -24
- flwr/common/record/array.py +101 -22
- flwr/common/record/arraychunk.py +59 -0
- flwr/common/serde.py +0 -28
- flwr/compat/client/app.py +14 -31
- flwr/proto/appio_pb2.py +43 -0
- flwr/proto/appio_pb2.pyi +151 -0
- flwr/proto/appio_pb2_grpc.py +4 -0
- flwr/proto/appio_pb2_grpc.pyi +4 -0
- flwr/proto/clientappio_pb2.py +12 -19
- flwr/proto/clientappio_pb2.pyi +23 -101
- flwr/proto/clientappio_pb2_grpc.py +269 -28
- flwr/proto/clientappio_pb2_grpc.pyi +114 -20
- flwr/proto/fleet_pb2.py +12 -20
- flwr/proto/fleet_pb2.pyi +6 -36
- flwr/proto/serverappio_pb2.py +8 -31
- flwr/proto/serverappio_pb2.pyi +0 -152
- flwr/proto/serverappio_pb2_grpc.py +39 -38
- flwr/proto/serverappio_pb2_grpc.pyi +21 -20
- flwr/server/app.py +1 -1
- flwr/server/fleet_event_log_interceptor.py +4 -0
- flwr/server/grid/grpc_grid.py +91 -54
- flwr/server/serverapp/app.py +27 -17
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +8 -0
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +1 -1
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -5
- flwr/server/superlink/fleet/message_handler/message_handler.py +10 -16
- flwr/server/superlink/fleet/rest_rere/rest_api.py +1 -2
- flwr/server/superlink/serverappio/serverappio_grpc.py +1 -1
- flwr/server/superlink/serverappio/serverappio_servicer.py +35 -43
- flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
- flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
- flwr/server/superlink/utils.py +0 -35
- flwr/simulation/app.py +8 -0
- flwr/simulation/run_simulation.py +17 -0
- flwr/{server/superlink → supercore}/ffs/disk_ffs.py +1 -1
- flwr/supercore/grpc_health/__init__.py +22 -0
- flwr/supercore/grpc_health/simple_health_servicer.py +38 -0
- flwr/supercore/license_plugin/__init__.py +22 -0
- flwr/supercore/license_plugin/license_plugin.py +26 -0
- flwr/supercore/object_store/in_memory_object_store.py +31 -31
- flwr/supercore/object_store/object_store.py +20 -42
- flwr/supercore/object_store/utils.py +43 -0
- flwr/supercore/scheduler/__init__.py +22 -0
- flwr/supercore/scheduler/plugin.py +71 -0
- flwr/supercore/utils.py +32 -0
- flwr/superexec/deployment.py +1 -2
- flwr/superexec/exec_event_log_interceptor.py +4 -0
- flwr/superexec/exec_grpc.py +18 -2
- flwr/superexec/exec_license_interceptor.py +82 -0
- flwr/superexec/exec_servicer.py +10 -1
- flwr/superexec/exec_user_auth_interceptor.py +10 -2
- flwr/superexec/executor.py +1 -1
- flwr/superexec/simulation.py +1 -2
- flwr/supernode/cli/flower_supernode.py +0 -7
- flwr/supernode/cli/flwr_clientapp.py +10 -3
- flwr/supernode/nodestate/in_memory_nodestate.py +11 -2
- flwr/supernode/nodestate/nodestate.py +15 -0
- flwr/supernode/runtime/run_clientapp.py +110 -33
- flwr/supernode/scheduler/__init__.py +22 -0
- flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py +49 -0
- flwr/supernode/servicer/clientappio/__init__.py +1 -3
- flwr/supernode/servicer/clientappio/clientappio_servicer.py +223 -164
- flwr/supernode/start_client_internal.py +202 -104
- {flwr-1.19.0.dist-info → flwr-1.20.0.dist-info}/METADATA +2 -1
- {flwr-1.19.0.dist-info → flwr-1.20.0.dist-info}/RECORD +93 -78
- flwr/common/inflatable_rest_utils.py +0 -99
- /flwr/{server/superlink → supercore}/ffs/__init__.py +0 -0
- /flwr/{server/superlink → supercore}/ffs/ffs.py +0 -0
- /flwr/{server/superlink → supercore}/ffs/ffs_factory.py +0 -0
- {flwr-1.19.0.dist-info → flwr-1.20.0.dist-info}/WHEEL +0 -0
- {flwr-1.19.0.dist-info → flwr-1.20.0.dist-info}/entry_points.txt +0 -0
flwr/proto/fleet_pb2.pyi
CHANGED
|
@@ -78,38 +78,23 @@ global___PullMessagesRequest = PullMessagesRequest
|
|
|
78
78
|
|
|
79
79
|
class PullMessagesResponse(google.protobuf.message.Message):
|
|
80
80
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
81
|
-
class ObjectsToPullEntry(google.protobuf.message.Message):
|
|
82
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
83
|
-
KEY_FIELD_NUMBER: builtins.int
|
|
84
|
-
VALUE_FIELD_NUMBER: builtins.int
|
|
85
|
-
key: typing.Text
|
|
86
|
-
@property
|
|
87
|
-
def value(self) -> flwr.proto.message_pb2.ObjectIDs: ...
|
|
88
|
-
def __init__(self,
|
|
89
|
-
*,
|
|
90
|
-
key: typing.Text = ...,
|
|
91
|
-
value: typing.Optional[flwr.proto.message_pb2.ObjectIDs] = ...,
|
|
92
|
-
) -> None: ...
|
|
93
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
94
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
95
|
-
|
|
96
81
|
RECONNECT_FIELD_NUMBER: builtins.int
|
|
97
82
|
MESSAGES_LIST_FIELD_NUMBER: builtins.int
|
|
98
|
-
|
|
83
|
+
MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
|
|
99
84
|
@property
|
|
100
85
|
def reconnect(self) -> global___Reconnect: ...
|
|
101
86
|
@property
|
|
102
87
|
def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
|
|
103
88
|
@property
|
|
104
|
-
def
|
|
89
|
+
def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
|
|
105
90
|
def __init__(self,
|
|
106
91
|
*,
|
|
107
92
|
reconnect: typing.Optional[global___Reconnect] = ...,
|
|
108
93
|
messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
|
|
109
|
-
|
|
94
|
+
message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
|
|
110
95
|
) -> None: ...
|
|
111
96
|
def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
|
|
112
|
-
def ClearField(self, field_name: typing_extensions.Literal["
|
|
97
|
+
def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","reconnect",b"reconnect"]) -> None: ...
|
|
113
98
|
global___PullMessagesResponse = PullMessagesResponse
|
|
114
99
|
|
|
115
100
|
class PushMessagesRequest(google.protobuf.message.Message):
|
|
@@ -149,21 +134,6 @@ class PushMessagesResponse(google.protobuf.message.Message):
|
|
|
149
134
|
) -> None: ...
|
|
150
135
|
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
151
136
|
|
|
152
|
-
class ObjectsToPushEntry(google.protobuf.message.Message):
|
|
153
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
154
|
-
KEY_FIELD_NUMBER: builtins.int
|
|
155
|
-
VALUE_FIELD_NUMBER: builtins.int
|
|
156
|
-
key: typing.Text
|
|
157
|
-
@property
|
|
158
|
-
def value(self) -> flwr.proto.message_pb2.ObjectIDs: ...
|
|
159
|
-
def __init__(self,
|
|
160
|
-
*,
|
|
161
|
-
key: typing.Text = ...,
|
|
162
|
-
value: typing.Optional[flwr.proto.message_pb2.ObjectIDs] = ...,
|
|
163
|
-
) -> None: ...
|
|
164
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
165
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
166
|
-
|
|
167
137
|
RECONNECT_FIELD_NUMBER: builtins.int
|
|
168
138
|
RESULTS_FIELD_NUMBER: builtins.int
|
|
169
139
|
OBJECTS_TO_PUSH_FIELD_NUMBER: builtins.int
|
|
@@ -172,12 +142,12 @@ class PushMessagesResponse(google.protobuf.message.Message):
|
|
|
172
142
|
@property
|
|
173
143
|
def results(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, builtins.int]: ...
|
|
174
144
|
@property
|
|
175
|
-
def objects_to_push(self) -> google.protobuf.internal.containers.
|
|
145
|
+
def objects_to_push(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
|
176
146
|
def __init__(self,
|
|
177
147
|
*,
|
|
178
148
|
reconnect: typing.Optional[global___Reconnect] = ...,
|
|
179
149
|
results: typing.Optional[typing.Mapping[typing.Text, builtins.int]] = ...,
|
|
180
|
-
objects_to_push: typing.Optional[typing.
|
|
150
|
+
objects_to_push: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
|
181
151
|
) -> None: ...
|
|
182
152
|
def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
|
|
183
153
|
def ClearField(self, field_name: typing_extensions.Literal["objects_to_push",b"objects_to_push","reconnect",b"reconnect","results",b"results"]) -> None: ...
|
flwr/proto/serverappio_pb2.py
CHANGED
|
@@ -18,43 +18,20 @@ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
|
18
18
|
from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
|
|
19
19
|
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
20
20
|
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
21
|
+
from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
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\"!\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.
|
|
24
|
+
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\xb3\t\n\x0bServerAppIo\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\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\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\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\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
|
|
24
25
|
|
|
25
26
|
_globals = globals()
|
|
26
27
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
27
28
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.serverappio_pb2', _globals)
|
|
28
29
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
29
30
|
DESCRIPTOR._options = None
|
|
30
|
-
_globals['
|
|
31
|
-
_globals['
|
|
32
|
-
_globals['
|
|
33
|
-
_globals['
|
|
34
|
-
_globals['
|
|
35
|
-
_globals['
|
|
36
|
-
_globals['_GETNODESRESPONSE']._serialized_start=222
|
|
37
|
-
_globals['_GETNODESRESPONSE']._serialized_end=273
|
|
38
|
-
_globals['_PUSHINSMESSAGESREQUEST']._serialized_start=276
|
|
39
|
-
_globals['_PUSHINSMESSAGESREQUEST']._serialized_end=414
|
|
40
|
-
_globals['_PUSHINSMESSAGESRESPONSE']._serialized_start=417
|
|
41
|
-
_globals['_PUSHINSMESSAGESRESPONSE']._serialized_end=621
|
|
42
|
-
_globals['_PUSHINSMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._serialized_start=546
|
|
43
|
-
_globals['_PUSHINSMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._serialized_end=621
|
|
44
|
-
_globals['_PULLRESMESSAGESREQUEST']._serialized_start=623
|
|
45
|
-
_globals['_PULLRESMESSAGESREQUEST']._serialized_end=684
|
|
46
|
-
_globals['_PULLRESMESSAGESRESPONSE']._serialized_start=687
|
|
47
|
-
_globals['_PULLRESMESSAGESRESPONSE']._serialized_end=914
|
|
48
|
-
_globals['_PULLRESMESSAGESRESPONSE_OBJECTSTOPULLENTRY']._serialized_start=839
|
|
49
|
-
_globals['_PULLRESMESSAGESRESPONSE_OBJECTSTOPULLENTRY']._serialized_end=914
|
|
50
|
-
_globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_start=916
|
|
51
|
-
_globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_end=944
|
|
52
|
-
_globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_start=946
|
|
53
|
-
_globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_end=1073
|
|
54
|
-
_globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_start=1075
|
|
55
|
-
_globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_end=1158
|
|
56
|
-
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=1160
|
|
57
|
-
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=1190
|
|
58
|
-
_globals['_SERVERAPPIO']._serialized_start=1193
|
|
59
|
-
_globals['_SERVERAPPIO']._serialized_end=2432
|
|
31
|
+
_globals['_GETNODESREQUEST']._serialized_start=211
|
|
32
|
+
_globals['_GETNODESREQUEST']._serialized_end=244
|
|
33
|
+
_globals['_GETNODESRESPONSE']._serialized_start=246
|
|
34
|
+
_globals['_GETNODESRESPONSE']._serialized_end=297
|
|
35
|
+
_globals['_SERVERAPPIO']._serialized_start=300
|
|
36
|
+
_globals['_SERVERAPPIO']._serialized_end=1503
|
|
60
37
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/serverappio_pb2.pyi
CHANGED
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
-
import flwr.proto.fab_pb2
|
|
7
|
-
import flwr.proto.message_pb2
|
|
8
6
|
import flwr.proto.node_pb2
|
|
9
|
-
import flwr.proto.run_pb2
|
|
10
7
|
import google.protobuf.descriptor
|
|
11
8
|
import google.protobuf.internal.containers
|
|
12
9
|
import google.protobuf.message
|
|
@@ -38,152 +35,3 @@ class GetNodesResponse(google.protobuf.message.Message):
|
|
|
38
35
|
) -> None: ...
|
|
39
36
|
def ClearField(self, field_name: typing_extensions.Literal["nodes",b"nodes"]) -> None: ...
|
|
40
37
|
global___GetNodesResponse = GetNodesResponse
|
|
41
|
-
|
|
42
|
-
class PushInsMessagesRequest(google.protobuf.message.Message):
|
|
43
|
-
"""PushMessages messages"""
|
|
44
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
45
|
-
MESSAGES_LIST_FIELD_NUMBER: builtins.int
|
|
46
|
-
RUN_ID_FIELD_NUMBER: builtins.int
|
|
47
|
-
MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
|
|
48
|
-
@property
|
|
49
|
-
def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
|
|
50
|
-
run_id: builtins.int
|
|
51
|
-
@property
|
|
52
|
-
def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
|
|
53
|
-
def __init__(self,
|
|
54
|
-
*,
|
|
55
|
-
messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
|
|
56
|
-
run_id: builtins.int = ...,
|
|
57
|
-
message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
|
|
58
|
-
) -> None: ...
|
|
59
|
-
def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","run_id",b"run_id"]) -> None: ...
|
|
60
|
-
global___PushInsMessagesRequest = PushInsMessagesRequest
|
|
61
|
-
|
|
62
|
-
class PushInsMessagesResponse(google.protobuf.message.Message):
|
|
63
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
64
|
-
class ObjectsToPushEntry(google.protobuf.message.Message):
|
|
65
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
66
|
-
KEY_FIELD_NUMBER: builtins.int
|
|
67
|
-
VALUE_FIELD_NUMBER: builtins.int
|
|
68
|
-
key: typing.Text
|
|
69
|
-
@property
|
|
70
|
-
def value(self) -> flwr.proto.message_pb2.ObjectIDs: ...
|
|
71
|
-
def __init__(self,
|
|
72
|
-
*,
|
|
73
|
-
key: typing.Text = ...,
|
|
74
|
-
value: typing.Optional[flwr.proto.message_pb2.ObjectIDs] = ...,
|
|
75
|
-
) -> None: ...
|
|
76
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
77
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
78
|
-
|
|
79
|
-
MESSAGE_IDS_FIELD_NUMBER: builtins.int
|
|
80
|
-
OBJECTS_TO_PUSH_FIELD_NUMBER: builtins.int
|
|
81
|
-
@property
|
|
82
|
-
def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
|
83
|
-
@property
|
|
84
|
-
def objects_to_push(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.message_pb2.ObjectIDs]: ...
|
|
85
|
-
def __init__(self,
|
|
86
|
-
*,
|
|
87
|
-
message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
|
88
|
-
objects_to_push: typing.Optional[typing.Mapping[typing.Text, flwr.proto.message_pb2.ObjectIDs]] = ...,
|
|
89
|
-
) -> None: ...
|
|
90
|
-
def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","objects_to_push",b"objects_to_push"]) -> None: ...
|
|
91
|
-
global___PushInsMessagesResponse = PushInsMessagesResponse
|
|
92
|
-
|
|
93
|
-
class PullResMessagesRequest(google.protobuf.message.Message):
|
|
94
|
-
"""PullMessages messages"""
|
|
95
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
96
|
-
MESSAGE_IDS_FIELD_NUMBER: builtins.int
|
|
97
|
-
RUN_ID_FIELD_NUMBER: builtins.int
|
|
98
|
-
@property
|
|
99
|
-
def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
|
100
|
-
run_id: builtins.int
|
|
101
|
-
def __init__(self,
|
|
102
|
-
*,
|
|
103
|
-
message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
|
104
|
-
run_id: builtins.int = ...,
|
|
105
|
-
) -> None: ...
|
|
106
|
-
def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","run_id",b"run_id"]) -> None: ...
|
|
107
|
-
global___PullResMessagesRequest = PullResMessagesRequest
|
|
108
|
-
|
|
109
|
-
class PullResMessagesResponse(google.protobuf.message.Message):
|
|
110
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
111
|
-
class ObjectsToPullEntry(google.protobuf.message.Message):
|
|
112
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
113
|
-
KEY_FIELD_NUMBER: builtins.int
|
|
114
|
-
VALUE_FIELD_NUMBER: builtins.int
|
|
115
|
-
key: typing.Text
|
|
116
|
-
@property
|
|
117
|
-
def value(self) -> flwr.proto.message_pb2.ObjectIDs: ...
|
|
118
|
-
def __init__(self,
|
|
119
|
-
*,
|
|
120
|
-
key: typing.Text = ...,
|
|
121
|
-
value: typing.Optional[flwr.proto.message_pb2.ObjectIDs] = ...,
|
|
122
|
-
) -> None: ...
|
|
123
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
124
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
125
|
-
|
|
126
|
-
MESSAGES_LIST_FIELD_NUMBER: builtins.int
|
|
127
|
-
OBJECTS_TO_PULL_FIELD_NUMBER: builtins.int
|
|
128
|
-
@property
|
|
129
|
-
def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
|
|
130
|
-
@property
|
|
131
|
-
def objects_to_pull(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.message_pb2.ObjectIDs]: ...
|
|
132
|
-
def __init__(self,
|
|
133
|
-
*,
|
|
134
|
-
messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
|
|
135
|
-
objects_to_pull: typing.Optional[typing.Mapping[typing.Text, flwr.proto.message_pb2.ObjectIDs]] = ...,
|
|
136
|
-
) -> None: ...
|
|
137
|
-
def ClearField(self, field_name: typing_extensions.Literal["messages_list",b"messages_list","objects_to_pull",b"objects_to_pull"]) -> None: ...
|
|
138
|
-
global___PullResMessagesResponse = PullResMessagesResponse
|
|
139
|
-
|
|
140
|
-
class PullServerAppInputsRequest(google.protobuf.message.Message):
|
|
141
|
-
"""PullServerAppInputs messages"""
|
|
142
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
143
|
-
def __init__(self,
|
|
144
|
-
) -> None: ...
|
|
145
|
-
global___PullServerAppInputsRequest = PullServerAppInputsRequest
|
|
146
|
-
|
|
147
|
-
class PullServerAppInputsResponse(google.protobuf.message.Message):
|
|
148
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
149
|
-
CONTEXT_FIELD_NUMBER: builtins.int
|
|
150
|
-
RUN_FIELD_NUMBER: builtins.int
|
|
151
|
-
FAB_FIELD_NUMBER: builtins.int
|
|
152
|
-
@property
|
|
153
|
-
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
154
|
-
@property
|
|
155
|
-
def run(self) -> flwr.proto.run_pb2.Run: ...
|
|
156
|
-
@property
|
|
157
|
-
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
|
158
|
-
def __init__(self,
|
|
159
|
-
*,
|
|
160
|
-
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
161
|
-
run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
|
|
162
|
-
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
|
163
|
-
) -> None: ...
|
|
164
|
-
def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
|
|
165
|
-
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
|
|
166
|
-
global___PullServerAppInputsResponse = PullServerAppInputsResponse
|
|
167
|
-
|
|
168
|
-
class PushServerAppOutputsRequest(google.protobuf.message.Message):
|
|
169
|
-
"""PushServerAppOutputs messages"""
|
|
170
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
171
|
-
RUN_ID_FIELD_NUMBER: builtins.int
|
|
172
|
-
CONTEXT_FIELD_NUMBER: builtins.int
|
|
173
|
-
run_id: builtins.int
|
|
174
|
-
@property
|
|
175
|
-
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
176
|
-
def __init__(self,
|
|
177
|
-
*,
|
|
178
|
-
run_id: builtins.int = ...,
|
|
179
|
-
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
180
|
-
) -> None: ...
|
|
181
|
-
def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
|
|
182
|
-
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
|
|
183
|
-
global___PushServerAppOutputsRequest = PushServerAppOutputsRequest
|
|
184
|
-
|
|
185
|
-
class PushServerAppOutputsResponse(google.protobuf.message.Message):
|
|
186
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
187
|
-
def __init__(self,
|
|
188
|
-
) -> None: ...
|
|
189
|
-
global___PushServerAppOutputsResponse = PushServerAppOutputsResponse
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
3
|
import grpc
|
|
4
4
|
|
|
5
|
+
from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
|
|
5
6
|
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
6
7
|
from flwr.proto import heartbeat_pb2 as flwr_dot_proto_dot_heartbeat__pb2
|
|
7
8
|
from flwr.proto import log_pb2 as flwr_dot_proto_dot_log__pb2
|
|
@@ -26,13 +27,13 @@ class ServerAppIoStub(object):
|
|
|
26
27
|
)
|
|
27
28
|
self.PushMessages = channel.unary_unary(
|
|
28
29
|
'/flwr.proto.ServerAppIo/PushMessages',
|
|
29
|
-
request_serializer=
|
|
30
|
-
response_deserializer=
|
|
30
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
|
|
31
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
|
|
31
32
|
)
|
|
32
33
|
self.PullMessages = channel.unary_unary(
|
|
33
34
|
'/flwr.proto.ServerAppIo/PullMessages',
|
|
34
|
-
request_serializer=
|
|
35
|
-
response_deserializer=
|
|
35
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
|
|
36
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
|
|
36
37
|
)
|
|
37
38
|
self.GetRun = channel.unary_unary(
|
|
38
39
|
'/flwr.proto.ServerAppIo/GetRun',
|
|
@@ -44,15 +45,15 @@ class ServerAppIoStub(object):
|
|
|
44
45
|
request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
|
|
45
46
|
response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
|
|
46
47
|
)
|
|
47
|
-
self.
|
|
48
|
-
'/flwr.proto.ServerAppIo/
|
|
49
|
-
request_serializer=
|
|
50
|
-
response_deserializer=
|
|
48
|
+
self.PullAppInputs = channel.unary_unary(
|
|
49
|
+
'/flwr.proto.ServerAppIo/PullAppInputs',
|
|
50
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
51
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
|
|
51
52
|
)
|
|
52
|
-
self.
|
|
53
|
-
'/flwr.proto.ServerAppIo/
|
|
54
|
-
request_serializer=
|
|
55
|
-
response_deserializer=
|
|
53
|
+
self.PushAppOutputs = channel.unary_unary(
|
|
54
|
+
'/flwr.proto.ServerAppIo/PushAppOutputs',
|
|
55
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
56
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
56
57
|
)
|
|
57
58
|
self.UpdateRunStatus = channel.unary_unary(
|
|
58
59
|
'/flwr.proto.ServerAppIo/UpdateRunStatus',
|
|
@@ -129,14 +130,14 @@ class ServerAppIoServicer(object):
|
|
|
129
130
|
context.set_details('Method not implemented!')
|
|
130
131
|
raise NotImplementedError('Method not implemented!')
|
|
131
132
|
|
|
132
|
-
def
|
|
133
|
+
def PullAppInputs(self, request, context):
|
|
133
134
|
"""Pull ServerApp inputs
|
|
134
135
|
"""
|
|
135
136
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
136
137
|
context.set_details('Method not implemented!')
|
|
137
138
|
raise NotImplementedError('Method not implemented!')
|
|
138
139
|
|
|
139
|
-
def
|
|
140
|
+
def PushAppOutputs(self, request, context):
|
|
140
141
|
"""Push ServerApp outputs
|
|
141
142
|
"""
|
|
142
143
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
@@ -202,13 +203,13 @@ def add_ServerAppIoServicer_to_server(servicer, server):
|
|
|
202
203
|
),
|
|
203
204
|
'PushMessages': grpc.unary_unary_rpc_method_handler(
|
|
204
205
|
servicer.PushMessages,
|
|
205
|
-
request_deserializer=
|
|
206
|
-
response_serializer=
|
|
206
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.FromString,
|
|
207
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.SerializeToString,
|
|
207
208
|
),
|
|
208
209
|
'PullMessages': grpc.unary_unary_rpc_method_handler(
|
|
209
210
|
servicer.PullMessages,
|
|
210
|
-
request_deserializer=
|
|
211
|
-
response_serializer=
|
|
211
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
|
|
212
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
|
|
212
213
|
),
|
|
213
214
|
'GetRun': grpc.unary_unary_rpc_method_handler(
|
|
214
215
|
servicer.GetRun,
|
|
@@ -220,15 +221,15 @@ def add_ServerAppIoServicer_to_server(servicer, server):
|
|
|
220
221
|
request_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.FromString,
|
|
221
222
|
response_serializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.SerializeToString,
|
|
222
223
|
),
|
|
223
|
-
'
|
|
224
|
-
servicer.
|
|
225
|
-
request_deserializer=
|
|
226
|
-
response_serializer=
|
|
224
|
+
'PullAppInputs': grpc.unary_unary_rpc_method_handler(
|
|
225
|
+
servicer.PullAppInputs,
|
|
226
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
|
|
227
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
|
|
227
228
|
),
|
|
228
|
-
'
|
|
229
|
-
servicer.
|
|
230
|
-
request_deserializer=
|
|
231
|
-
response_serializer=
|
|
229
|
+
'PushAppOutputs': grpc.unary_unary_rpc_method_handler(
|
|
230
|
+
servicer.PushAppOutputs,
|
|
231
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
|
|
232
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
|
|
232
233
|
),
|
|
233
234
|
'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
|
|
234
235
|
servicer.UpdateRunStatus,
|
|
@@ -304,8 +305,8 @@ class ServerAppIo(object):
|
|
|
304
305
|
timeout=None,
|
|
305
306
|
metadata=None):
|
|
306
307
|
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/PushMessages',
|
|
307
|
-
|
|
308
|
-
|
|
308
|
+
flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
|
|
309
|
+
flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
|
|
309
310
|
options, channel_credentials,
|
|
310
311
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
311
312
|
|
|
@@ -321,8 +322,8 @@ class ServerAppIo(object):
|
|
|
321
322
|
timeout=None,
|
|
322
323
|
metadata=None):
|
|
323
324
|
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/PullMessages',
|
|
324
|
-
|
|
325
|
-
|
|
325
|
+
flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
|
|
326
|
+
flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
|
|
326
327
|
options, channel_credentials,
|
|
327
328
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
328
329
|
|
|
@@ -361,7 +362,7 @@ class ServerAppIo(object):
|
|
|
361
362
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
362
363
|
|
|
363
364
|
@staticmethod
|
|
364
|
-
def
|
|
365
|
+
def PullAppInputs(request,
|
|
365
366
|
target,
|
|
366
367
|
options=(),
|
|
367
368
|
channel_credentials=None,
|
|
@@ -371,14 +372,14 @@ class ServerAppIo(object):
|
|
|
371
372
|
wait_for_ready=None,
|
|
372
373
|
timeout=None,
|
|
373
374
|
metadata=None):
|
|
374
|
-
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/
|
|
375
|
-
|
|
376
|
-
|
|
375
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/PullAppInputs',
|
|
376
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
377
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
|
|
377
378
|
options, channel_credentials,
|
|
378
379
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
379
380
|
|
|
380
381
|
@staticmethod
|
|
381
|
-
def
|
|
382
|
+
def PushAppOutputs(request,
|
|
382
383
|
target,
|
|
383
384
|
options=(),
|
|
384
385
|
channel_credentials=None,
|
|
@@ -388,9 +389,9 @@ class ServerAppIo(object):
|
|
|
388
389
|
wait_for_ready=None,
|
|
389
390
|
timeout=None,
|
|
390
391
|
metadata=None):
|
|
391
|
-
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/
|
|
392
|
-
|
|
393
|
-
|
|
392
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/PushAppOutputs',
|
|
393
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
394
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
394
395
|
options, channel_credentials,
|
|
395
396
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
396
397
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import abc
|
|
6
|
+
import flwr.proto.appio_pb2
|
|
6
7
|
import flwr.proto.fab_pb2
|
|
7
8
|
import flwr.proto.heartbeat_pb2
|
|
8
9
|
import flwr.proto.log_pb2
|
|
@@ -19,13 +20,13 @@ class ServerAppIoStub:
|
|
|
19
20
|
"""Return a set of nodes"""
|
|
20
21
|
|
|
21
22
|
PushMessages: grpc.UnaryUnaryMultiCallable[
|
|
22
|
-
flwr.proto.
|
|
23
|
-
flwr.proto.
|
|
23
|
+
flwr.proto.appio_pb2.PushAppMessagesRequest,
|
|
24
|
+
flwr.proto.appio_pb2.PushAppMessagesResponse]
|
|
24
25
|
"""Create one or more messages"""
|
|
25
26
|
|
|
26
27
|
PullMessages: grpc.UnaryUnaryMultiCallable[
|
|
27
|
-
flwr.proto.
|
|
28
|
-
flwr.proto.
|
|
28
|
+
flwr.proto.appio_pb2.PullAppMessagesRequest,
|
|
29
|
+
flwr.proto.appio_pb2.PullAppMessagesResponse]
|
|
29
30
|
"""Get message results"""
|
|
30
31
|
|
|
31
32
|
GetRun: grpc.UnaryUnaryMultiCallable[
|
|
@@ -38,14 +39,14 @@ class ServerAppIoStub:
|
|
|
38
39
|
flwr.proto.fab_pb2.GetFabResponse]
|
|
39
40
|
"""Get FAB"""
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
flwr.proto.
|
|
43
|
-
flwr.proto.
|
|
42
|
+
PullAppInputs: grpc.UnaryUnaryMultiCallable[
|
|
43
|
+
flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
44
|
+
flwr.proto.appio_pb2.PullAppInputsResponse]
|
|
44
45
|
"""Pull ServerApp inputs"""
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
flwr.proto.
|
|
48
|
-
flwr.proto.
|
|
47
|
+
PushAppOutputs: grpc.UnaryUnaryMultiCallable[
|
|
48
|
+
flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
49
|
+
flwr.proto.appio_pb2.PushAppOutputsResponse]
|
|
49
50
|
"""Push ServerApp outputs"""
|
|
50
51
|
|
|
51
52
|
UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
|
|
@@ -95,17 +96,17 @@ class ServerAppIoServicer(metaclass=abc.ABCMeta):
|
|
|
95
96
|
|
|
96
97
|
@abc.abstractmethod
|
|
97
98
|
def PushMessages(self,
|
|
98
|
-
request: flwr.proto.
|
|
99
|
+
request: flwr.proto.appio_pb2.PushAppMessagesRequest,
|
|
99
100
|
context: grpc.ServicerContext,
|
|
100
|
-
) -> flwr.proto.
|
|
101
|
+
) -> flwr.proto.appio_pb2.PushAppMessagesResponse:
|
|
101
102
|
"""Create one or more messages"""
|
|
102
103
|
pass
|
|
103
104
|
|
|
104
105
|
@abc.abstractmethod
|
|
105
106
|
def PullMessages(self,
|
|
106
|
-
request: flwr.proto.
|
|
107
|
+
request: flwr.proto.appio_pb2.PullAppMessagesRequest,
|
|
107
108
|
context: grpc.ServicerContext,
|
|
108
|
-
) -> flwr.proto.
|
|
109
|
+
) -> flwr.proto.appio_pb2.PullAppMessagesResponse:
|
|
109
110
|
"""Get message results"""
|
|
110
111
|
pass
|
|
111
112
|
|
|
@@ -126,18 +127,18 @@ class ServerAppIoServicer(metaclass=abc.ABCMeta):
|
|
|
126
127
|
pass
|
|
127
128
|
|
|
128
129
|
@abc.abstractmethod
|
|
129
|
-
def
|
|
130
|
-
request: flwr.proto.
|
|
130
|
+
def PullAppInputs(self,
|
|
131
|
+
request: flwr.proto.appio_pb2.PullAppInputsRequest,
|
|
131
132
|
context: grpc.ServicerContext,
|
|
132
|
-
) -> flwr.proto.
|
|
133
|
+
) -> flwr.proto.appio_pb2.PullAppInputsResponse:
|
|
133
134
|
"""Pull ServerApp inputs"""
|
|
134
135
|
pass
|
|
135
136
|
|
|
136
137
|
@abc.abstractmethod
|
|
137
|
-
def
|
|
138
|
-
request: flwr.proto.
|
|
138
|
+
def PushAppOutputs(self,
|
|
139
|
+
request: flwr.proto.appio_pb2.PushAppOutputsRequest,
|
|
139
140
|
context: grpc.ServicerContext,
|
|
140
|
-
) -> flwr.proto.
|
|
141
|
+
) -> flwr.proto.appio_pb2.PushAppOutputsResponse:
|
|
141
142
|
"""Push ServerApp outputs"""
|
|
142
143
|
pass
|
|
143
144
|
|
flwr/server/app.py
CHANGED
|
@@ -71,11 +71,11 @@ from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
|
|
|
71
71
|
from flwr.server.fleet_event_log_interceptor import FleetEventLogInterceptor
|
|
72
72
|
from flwr.server.serverapp.app import flwr_serverapp
|
|
73
73
|
from flwr.simulation.app import flwr_simulation
|
|
74
|
+
from flwr.supercore.ffs import FfsFactory
|
|
74
75
|
from flwr.supercore.object_store import ObjectStoreFactory
|
|
75
76
|
from flwr.superexec.app import load_executor
|
|
76
77
|
from flwr.superexec.exec_grpc import run_exec_api_grpc
|
|
77
78
|
|
|
78
|
-
from .superlink.ffs.ffs_factory import FfsFactory
|
|
79
79
|
from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
|
|
80
80
|
from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
|
|
81
81
|
from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
|
|
@@ -41,6 +41,10 @@ class FleetEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
41
41
|
if event logger is enabled on the SuperLink, else, terminate RPC call by setting
|
|
42
42
|
context to abort.
|
|
43
43
|
"""
|
|
44
|
+
# Only apply to Fleet service
|
|
45
|
+
if not handler_call_details.method.startswith("/flwr.proto.Fleet/"):
|
|
46
|
+
return continuation(handler_call_details)
|
|
47
|
+
|
|
44
48
|
# One of the method handlers in
|
|
45
49
|
# `flwr.server.superlink.fleet.grpc_rere.fleet_servicer.FleetServicer`
|
|
46
50
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|