flwr-nightly 1.12.0.dev20240918__py3-none-any.whl → 1.12.0.dev20241007__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/app.py +2 -0
- flwr/cli/log.py +234 -0
- flwr/cli/new/new.py +1 -1
- flwr/cli/new/templates/app/README.flowertune.md.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -0
- flwr/cli/run/run.py +17 -1
- flwr/client/grpc_rere_client/client_interceptor.py +3 -0
- flwr/client/grpc_rere_client/connection.py +3 -3
- flwr/client/grpc_rere_client/grpc_adapter.py +14 -3
- flwr/client/rest_client/connection.py +3 -3
- flwr/client/supernode/app.py +1 -0
- flwr/common/constant.py +9 -3
- flwr/common/message.py +32 -15
- flwr/common/secure_aggregation/secaggplus_utils.py +4 -4
- flwr/common/serde.py +22 -7
- flwr/proto/control_pb2.py +27 -0
- flwr/proto/control_pb2.pyi +7 -0
- flwr/proto/control_pb2_grpc.py +135 -0
- flwr/proto/control_pb2_grpc.pyi +53 -0
- flwr/proto/driver_pb2.py +15 -24
- flwr/proto/driver_pb2.pyi +0 -52
- flwr/proto/driver_pb2_grpc.py +6 -6
- flwr/proto/driver_pb2_grpc.pyi +4 -4
- flwr/proto/fab_pb2.py +8 -7
- flwr/proto/fab_pb2.pyi +7 -1
- flwr/proto/fleet_pb2.py +10 -10
- flwr/proto/fleet_pb2.pyi +6 -1
- flwr/proto/recordset_pb2.py +35 -33
- flwr/proto/recordset_pb2.pyi +40 -14
- flwr/proto/run_pb2.py +33 -9
- flwr/proto/run_pb2.pyi +150 -1
- flwr/proto/transport_pb2.py +8 -8
- flwr/proto/transport_pb2.pyi +9 -6
- flwr/server/run_serverapp.py +2 -2
- flwr/server/strategy/aggregate.py +22 -8
- flwr/server/superlink/driver/driver_servicer.py +2 -2
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +17 -2
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +4 -0
- flwr/server/superlink/state/in_memory_state.py +47 -2
- flwr/server/superlink/state/sqlite_state.py +73 -8
- flwr/server/utils/validator.py +6 -0
- flwr/superexec/deployment.py +3 -1
- flwr/superexec/exec_servicer.py +68 -3
- flwr/superexec/executor.py +2 -1
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/METADATA +4 -2
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/RECORD +49 -44
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/entry_points.txt +0 -0
flwr/proto/recordset_pb2.pyi
CHANGED
|
@@ -23,7 +23,7 @@ class DoubleList(google.protobuf.message.Message):
|
|
|
23
23
|
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
24
24
|
global___DoubleList = DoubleList
|
|
25
25
|
|
|
26
|
-
class
|
|
26
|
+
class SintList(google.protobuf.message.Message):
|
|
27
27
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
28
28
|
VALS_FIELD_NUMBER: builtins.int
|
|
29
29
|
@property
|
|
@@ -33,7 +33,19 @@ class Sint64List(google.protobuf.message.Message):
|
|
|
33
33
|
vals: typing.Optional[typing.Iterable[builtins.int]] = ...,
|
|
34
34
|
) -> None: ...
|
|
35
35
|
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
36
|
-
|
|
36
|
+
global___SintList = SintList
|
|
37
|
+
|
|
38
|
+
class UintList(google.protobuf.message.Message):
|
|
39
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
40
|
+
VALS_FIELD_NUMBER: builtins.int
|
|
41
|
+
@property
|
|
42
|
+
def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
|
|
43
|
+
def __init__(self,
|
|
44
|
+
*,
|
|
45
|
+
vals: typing.Optional[typing.Iterable[builtins.int]] = ...,
|
|
46
|
+
) -> None: ...
|
|
47
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
48
|
+
global___UintList = UintList
|
|
37
49
|
|
|
38
50
|
class BoolList(google.protobuf.message.Message):
|
|
39
51
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
@@ -96,39 +108,48 @@ class MetricsRecordValue(google.protobuf.message.Message):
|
|
|
96
108
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
97
109
|
DOUBLE_FIELD_NUMBER: builtins.int
|
|
98
110
|
SINT64_FIELD_NUMBER: builtins.int
|
|
111
|
+
UINT64_FIELD_NUMBER: builtins.int
|
|
99
112
|
DOUBLE_LIST_FIELD_NUMBER: builtins.int
|
|
100
|
-
|
|
113
|
+
SINT_LIST_FIELD_NUMBER: builtins.int
|
|
114
|
+
UINT_LIST_FIELD_NUMBER: builtins.int
|
|
101
115
|
double: builtins.float
|
|
102
116
|
"""Single element"""
|
|
103
117
|
|
|
104
118
|
sint64: builtins.int
|
|
119
|
+
uint64: builtins.int
|
|
105
120
|
@property
|
|
106
121
|
def double_list(self) -> global___DoubleList:
|
|
107
122
|
"""List types"""
|
|
108
123
|
pass
|
|
109
124
|
@property
|
|
110
|
-
def
|
|
125
|
+
def sint_list(self) -> global___SintList: ...
|
|
126
|
+
@property
|
|
127
|
+
def uint_list(self) -> global___UintList: ...
|
|
111
128
|
def __init__(self,
|
|
112
129
|
*,
|
|
113
130
|
double: builtins.float = ...,
|
|
114
131
|
sint64: builtins.int = ...,
|
|
132
|
+
uint64: builtins.int = ...,
|
|
115
133
|
double_list: typing.Optional[global___DoubleList] = ...,
|
|
116
|
-
|
|
134
|
+
sint_list: typing.Optional[global___SintList] = ...,
|
|
135
|
+
uint_list: typing.Optional[global___UintList] = ...,
|
|
117
136
|
) -> None: ...
|
|
118
|
-
def HasField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","
|
|
119
|
-
def ClearField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","
|
|
120
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","double_list","
|
|
137
|
+
def HasField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> builtins.bool: ...
|
|
138
|
+
def ClearField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> None: ...
|
|
139
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","uint64","double_list","sint_list","uint_list"]]: ...
|
|
121
140
|
global___MetricsRecordValue = MetricsRecordValue
|
|
122
141
|
|
|
123
142
|
class ConfigsRecordValue(google.protobuf.message.Message):
|
|
124
143
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
125
144
|
DOUBLE_FIELD_NUMBER: builtins.int
|
|
126
145
|
SINT64_FIELD_NUMBER: builtins.int
|
|
146
|
+
UINT64_FIELD_NUMBER: builtins.int
|
|
127
147
|
BOOL_FIELD_NUMBER: builtins.int
|
|
128
148
|
STRING_FIELD_NUMBER: builtins.int
|
|
129
149
|
BYTES_FIELD_NUMBER: builtins.int
|
|
130
150
|
DOUBLE_LIST_FIELD_NUMBER: builtins.int
|
|
131
|
-
|
|
151
|
+
SINT_LIST_FIELD_NUMBER: builtins.int
|
|
152
|
+
UINT_LIST_FIELD_NUMBER: builtins.int
|
|
132
153
|
BOOL_LIST_FIELD_NUMBER: builtins.int
|
|
133
154
|
STRING_LIST_FIELD_NUMBER: builtins.int
|
|
134
155
|
BYTES_LIST_FIELD_NUMBER: builtins.int
|
|
@@ -136,6 +157,7 @@ class ConfigsRecordValue(google.protobuf.message.Message):
|
|
|
136
157
|
"""Single element"""
|
|
137
158
|
|
|
138
159
|
sint64: builtins.int
|
|
160
|
+
uint64: builtins.int
|
|
139
161
|
bool: builtins.bool
|
|
140
162
|
string: typing.Text
|
|
141
163
|
bytes: builtins.bytes
|
|
@@ -144,7 +166,9 @@ class ConfigsRecordValue(google.protobuf.message.Message):
|
|
|
144
166
|
"""List types"""
|
|
145
167
|
pass
|
|
146
168
|
@property
|
|
147
|
-
def
|
|
169
|
+
def sint_list(self) -> global___SintList: ...
|
|
170
|
+
@property
|
|
171
|
+
def uint_list(self) -> global___UintList: ...
|
|
148
172
|
@property
|
|
149
173
|
def bool_list(self) -> global___BoolList: ...
|
|
150
174
|
@property
|
|
@@ -155,18 +179,20 @@ class ConfigsRecordValue(google.protobuf.message.Message):
|
|
|
155
179
|
*,
|
|
156
180
|
double: builtins.float = ...,
|
|
157
181
|
sint64: builtins.int = ...,
|
|
182
|
+
uint64: builtins.int = ...,
|
|
158
183
|
bool: builtins.bool = ...,
|
|
159
184
|
string: typing.Text = ...,
|
|
160
185
|
bytes: builtins.bytes = ...,
|
|
161
186
|
double_list: typing.Optional[global___DoubleList] = ...,
|
|
162
|
-
|
|
187
|
+
sint_list: typing.Optional[global___SintList] = ...,
|
|
188
|
+
uint_list: typing.Optional[global___UintList] = ...,
|
|
163
189
|
bool_list: typing.Optional[global___BoolList] = ...,
|
|
164
190
|
string_list: typing.Optional[global___StringList] = ...,
|
|
165
191
|
bytes_list: typing.Optional[global___BytesList] = ...,
|
|
166
192
|
) -> None: ...
|
|
167
|
-
def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","
|
|
168
|
-
def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","
|
|
169
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","bool","string","bytes","double_list","
|
|
193
|
+
def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","string",b"string","string_list",b"string_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> builtins.bool: ...
|
|
194
|
+
def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bool_list",b"bool_list","bytes",b"bytes","bytes_list",b"bytes_list","double",b"double","double_list",b"double_list","sint64",b"sint64","sint_list",b"sint_list","string",b"string","string_list",b"string_list","uint64",b"uint64","uint_list",b"uint_list","value",b"value"]) -> None: ...
|
|
195
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","uint64","bool","string","bytes","double_list","sint_list","uint_list","bool_list","string_list","bytes_list"]]: ...
|
|
170
196
|
global___ConfigsRecordValue = ConfigsRecordValue
|
|
171
197
|
|
|
172
198
|
class ParametersRecord(google.protobuf.message.Message):
|
flwr/proto/run_pb2.py
CHANGED
|
@@ -12,10 +12,12 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_sym_db = _symbol_database.Default()
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
16
|
+
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
15
17
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
16
18
|
|
|
17
19
|
|
|
18
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"\xeb\x01\n\x10\x43reateRunRequest\x12\x0e\n\x06\x66\x61\x62_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x02 \x01(\t\x12I\n\x0foverride_config\x18\x03 \x03(\x0b\x32\x30.flwr.proto.CreateRunRequest.OverrideConfigEntry\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"#\n\x11\x43reateRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"?\n\rGetRunRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"F\n\x13GetRunStatusRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0f\n\x07run_ids\x18\x02 \x03(\x04\"\xb1\x01\n\x14GetRunStatusResponse\x12L\n\x0frun_status_dict\x18\x01 \x03(\x0b\x32\x33.flwr.proto.GetRunStatusResponse.RunStatusDictEntry\x1aK\n\x12RunStatusDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus:\x02\x38\x01\x62\x06proto3')
|
|
19
21
|
|
|
20
22
|
_globals = globals()
|
|
21
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -24,12 +26,34 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
24
26
|
DESCRIPTOR._options = None
|
|
25
27
|
_globals['_RUN_OVERRIDECONFIGENTRY']._options = None
|
|
26
28
|
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
27
|
-
_globals['
|
|
28
|
-
_globals['
|
|
29
|
-
_globals['
|
|
30
|
-
_globals['
|
|
31
|
-
_globals['
|
|
32
|
-
_globals['
|
|
33
|
-
_globals['
|
|
34
|
-
_globals['
|
|
29
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._options = None
|
|
30
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
31
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._options = None
|
|
32
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_options = b'8\001'
|
|
33
|
+
_globals['_RUN']._serialized_start=110
|
|
34
|
+
_globals['_RUN']._serialized_end=323
|
|
35
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=250
|
|
36
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=323
|
|
37
|
+
_globals['_RUNSTATUS']._serialized_start=325
|
|
38
|
+
_globals['_RUNSTATUS']._serialized_end=389
|
|
39
|
+
_globals['_CREATERUNREQUEST']._serialized_start=392
|
|
40
|
+
_globals['_CREATERUNREQUEST']._serialized_end=627
|
|
41
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=250
|
|
42
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=323
|
|
43
|
+
_globals['_CREATERUNRESPONSE']._serialized_start=629
|
|
44
|
+
_globals['_CREATERUNRESPONSE']._serialized_end=664
|
|
45
|
+
_globals['_GETRUNREQUEST']._serialized_start=666
|
|
46
|
+
_globals['_GETRUNREQUEST']._serialized_end=729
|
|
47
|
+
_globals['_GETRUNRESPONSE']._serialized_start=731
|
|
48
|
+
_globals['_GETRUNRESPONSE']._serialized_end=777
|
|
49
|
+
_globals['_UPDATERUNSTATUSREQUEST']._serialized_start=779
|
|
50
|
+
_globals['_UPDATERUNSTATUSREQUEST']._serialized_end=862
|
|
51
|
+
_globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=864
|
|
52
|
+
_globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=889
|
|
53
|
+
_globals['_GETRUNSTATUSREQUEST']._serialized_start=891
|
|
54
|
+
_globals['_GETRUNSTATUSREQUEST']._serialized_end=961
|
|
55
|
+
_globals['_GETRUNSTATUSRESPONSE']._serialized_start=964
|
|
56
|
+
_globals['_GETRUNSTATUSRESPONSE']._serialized_end=1141
|
|
57
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=1066
|
|
58
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1141
|
|
35
59
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/run_pb2.pyi
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
+
import flwr.proto.fab_pb2
|
|
7
|
+
import flwr.proto.node_pb2
|
|
6
8
|
import flwr.proto.transport_pb2
|
|
7
9
|
import google.protobuf.descriptor
|
|
8
10
|
import google.protobuf.internal.containers
|
|
@@ -51,7 +53,69 @@ class Run(google.protobuf.message.Message):
|
|
|
51
53
|
def ClearField(self, field_name: typing_extensions.Literal["fab_hash",b"fab_hash","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config","run_id",b"run_id"]) -> None: ...
|
|
52
54
|
global___Run = Run
|
|
53
55
|
|
|
54
|
-
class
|
|
56
|
+
class RunStatus(google.protobuf.message.Message):
|
|
57
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
58
|
+
STATUS_FIELD_NUMBER: builtins.int
|
|
59
|
+
SUB_STATUS_FIELD_NUMBER: builtins.int
|
|
60
|
+
DETAILS_FIELD_NUMBER: builtins.int
|
|
61
|
+
status: typing.Text
|
|
62
|
+
""""starting", "running", "finished" """
|
|
63
|
+
|
|
64
|
+
sub_status: typing.Text
|
|
65
|
+
""""completed", "failed", "stopped" or "" (non-finished)"""
|
|
66
|
+
|
|
67
|
+
details: typing.Text
|
|
68
|
+
"""failure details"""
|
|
69
|
+
|
|
70
|
+
def __init__(self,
|
|
71
|
+
*,
|
|
72
|
+
status: typing.Text = ...,
|
|
73
|
+
sub_status: typing.Text = ...,
|
|
74
|
+
details: typing.Text = ...,
|
|
75
|
+
) -> None: ...
|
|
76
|
+
def ClearField(self, field_name: typing_extensions.Literal["details",b"details","status",b"status","sub_status",b"sub_status"]) -> None: ...
|
|
77
|
+
global___RunStatus = RunStatus
|
|
78
|
+
|
|
79
|
+
class CreateRunRequest(google.protobuf.message.Message):
|
|
80
|
+
"""CreateRun"""
|
|
81
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
82
|
+
class OverrideConfigEntry(google.protobuf.message.Message):
|
|
83
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
84
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
85
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
86
|
+
key: typing.Text
|
|
87
|
+
@property
|
|
88
|
+
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
|
|
89
|
+
def __init__(self,
|
|
90
|
+
*,
|
|
91
|
+
key: typing.Text = ...,
|
|
92
|
+
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
|
|
93
|
+
) -> None: ...
|
|
94
|
+
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
95
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
96
|
+
|
|
97
|
+
FAB_ID_FIELD_NUMBER: builtins.int
|
|
98
|
+
FAB_VERSION_FIELD_NUMBER: builtins.int
|
|
99
|
+
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
|
100
|
+
FAB_FIELD_NUMBER: builtins.int
|
|
101
|
+
fab_id: typing.Text
|
|
102
|
+
fab_version: typing.Text
|
|
103
|
+
@property
|
|
104
|
+
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
105
|
+
@property
|
|
106
|
+
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
|
107
|
+
def __init__(self,
|
|
108
|
+
*,
|
|
109
|
+
fab_id: typing.Text = ...,
|
|
110
|
+
fab_version: typing.Text = ...,
|
|
111
|
+
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
112
|
+
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
|
113
|
+
) -> None: ...
|
|
114
|
+
def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ...
|
|
115
|
+
def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ...
|
|
116
|
+
global___CreateRunRequest = CreateRunRequest
|
|
117
|
+
|
|
118
|
+
class CreateRunResponse(google.protobuf.message.Message):
|
|
55
119
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
56
120
|
RUN_ID_FIELD_NUMBER: builtins.int
|
|
57
121
|
run_id: builtins.int
|
|
@@ -60,6 +124,23 @@ class GetRunRequest(google.protobuf.message.Message):
|
|
|
60
124
|
run_id: builtins.int = ...,
|
|
61
125
|
) -> None: ...
|
|
62
126
|
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
|
|
127
|
+
global___CreateRunResponse = CreateRunResponse
|
|
128
|
+
|
|
129
|
+
class GetRunRequest(google.protobuf.message.Message):
|
|
130
|
+
"""GetRun"""
|
|
131
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
132
|
+
NODE_FIELD_NUMBER: builtins.int
|
|
133
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
|
134
|
+
@property
|
|
135
|
+
def node(self) -> flwr.proto.node_pb2.Node: ...
|
|
136
|
+
run_id: builtins.int
|
|
137
|
+
def __init__(self,
|
|
138
|
+
*,
|
|
139
|
+
node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
|
|
140
|
+
run_id: builtins.int = ...,
|
|
141
|
+
) -> None: ...
|
|
142
|
+
def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
|
|
143
|
+
def ClearField(self, field_name: typing_extensions.Literal["node",b"node","run_id",b"run_id"]) -> None: ...
|
|
63
144
|
global___GetRunRequest = GetRunRequest
|
|
64
145
|
|
|
65
146
|
class GetRunResponse(google.protobuf.message.Message):
|
|
@@ -74,3 +155,71 @@ class GetRunResponse(google.protobuf.message.Message):
|
|
|
74
155
|
def HasField(self, field_name: typing_extensions.Literal["run",b"run"]) -> builtins.bool: ...
|
|
75
156
|
def ClearField(self, field_name: typing_extensions.Literal["run",b"run"]) -> None: ...
|
|
76
157
|
global___GetRunResponse = GetRunResponse
|
|
158
|
+
|
|
159
|
+
class UpdateRunStatusRequest(google.protobuf.message.Message):
|
|
160
|
+
"""UpdateRunStatus"""
|
|
161
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
162
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
|
163
|
+
RUN_STATUS_FIELD_NUMBER: builtins.int
|
|
164
|
+
run_id: builtins.int
|
|
165
|
+
@property
|
|
166
|
+
def run_status(self) -> global___RunStatus: ...
|
|
167
|
+
def __init__(self,
|
|
168
|
+
*,
|
|
169
|
+
run_id: builtins.int = ...,
|
|
170
|
+
run_status: typing.Optional[global___RunStatus] = ...,
|
|
171
|
+
) -> None: ...
|
|
172
|
+
def HasField(self, field_name: typing_extensions.Literal["run_status",b"run_status"]) -> builtins.bool: ...
|
|
173
|
+
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id","run_status",b"run_status"]) -> None: ...
|
|
174
|
+
global___UpdateRunStatusRequest = UpdateRunStatusRequest
|
|
175
|
+
|
|
176
|
+
class UpdateRunStatusResponse(google.protobuf.message.Message):
|
|
177
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
178
|
+
def __init__(self,
|
|
179
|
+
) -> None: ...
|
|
180
|
+
global___UpdateRunStatusResponse = UpdateRunStatusResponse
|
|
181
|
+
|
|
182
|
+
class GetRunStatusRequest(google.protobuf.message.Message):
|
|
183
|
+
"""GetRunStatus"""
|
|
184
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
185
|
+
NODE_FIELD_NUMBER: builtins.int
|
|
186
|
+
RUN_IDS_FIELD_NUMBER: builtins.int
|
|
187
|
+
@property
|
|
188
|
+
def node(self) -> flwr.proto.node_pb2.Node: ...
|
|
189
|
+
@property
|
|
190
|
+
def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
|
|
191
|
+
def __init__(self,
|
|
192
|
+
*,
|
|
193
|
+
node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
|
|
194
|
+
run_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
|
|
195
|
+
) -> None: ...
|
|
196
|
+
def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
|
|
197
|
+
def ClearField(self, field_name: typing_extensions.Literal["node",b"node","run_ids",b"run_ids"]) -> None: ...
|
|
198
|
+
global___GetRunStatusRequest = GetRunStatusRequest
|
|
199
|
+
|
|
200
|
+
class GetRunStatusResponse(google.protobuf.message.Message):
|
|
201
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
202
|
+
class RunStatusDictEntry(google.protobuf.message.Message):
|
|
203
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
204
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
205
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
206
|
+
key: builtins.int
|
|
207
|
+
@property
|
|
208
|
+
def value(self) -> global___RunStatus: ...
|
|
209
|
+
def __init__(self,
|
|
210
|
+
*,
|
|
211
|
+
key: builtins.int = ...,
|
|
212
|
+
value: typing.Optional[global___RunStatus] = ...,
|
|
213
|
+
) -> None: ...
|
|
214
|
+
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
215
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
216
|
+
|
|
217
|
+
RUN_STATUS_DICT_FIELD_NUMBER: builtins.int
|
|
218
|
+
@property
|
|
219
|
+
def run_status_dict(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___RunStatus]: ...
|
|
220
|
+
def __init__(self,
|
|
221
|
+
*,
|
|
222
|
+
run_status_dict: typing.Optional[typing.Mapping[builtins.int, global___RunStatus]] = ...,
|
|
223
|
+
) -> None: ...
|
|
224
|
+
def ClearField(self, field_name: typing_extensions.Literal["run_status_dict",b"run_status_dict"]) -> None: ...
|
|
225
|
+
global___GetRunStatusResponse = GetRunStatusResponse
|
flwr/proto/transport_pb2.py
CHANGED
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lwr/proto/transport.proto\x12\nflwr.proto\"9\n\x06Status\x12\x1e\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x10.flwr.proto.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\"2\n\nParameters\x12\x0f\n\x07tensors\x18\x01 \x03(\x0c\x12\x13\n\x0btensor_type\x18\x02 \x01(\t\"\xba\x08\n\rServerMessage\x12?\n\rreconnect_ins\x18\x01 \x01(\x0b\x32&.flwr.proto.ServerMessage.ReconnectInsH\x00\x12H\n\x12get_properties_ins\x18\x02 \x01(\x0b\x32*.flwr.proto.ServerMessage.GetPropertiesInsH\x00\x12H\n\x12get_parameters_ins\x18\x03 \x01(\x0b\x32*.flwr.proto.ServerMessage.GetParametersInsH\x00\x12\x33\n\x07\x66it_ins\x18\x04 \x01(\x0b\x32 .flwr.proto.ServerMessage.FitInsH\x00\x12=\n\x0c\x65valuate_ins\x18\x05 \x01(\x0b\x32%.flwr.proto.ServerMessage.EvaluateInsH\x00\x1a\x1f\n\x0cReconnectIns\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x1a\x9d\x01\n\x10GetPropertiesIns\x12\x46\n\x06\x63onfig\x18\x01 \x03(\x0b\x32\x36.flwr.proto.ServerMessage.GetPropertiesIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x9d\x01\n\x10GetParametersIns\x12\x46\n\x06\x63onfig\x18\x01 \x03(\x0b\x32\x36.flwr.proto.ServerMessage.GetParametersIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xb5\x01\n\x06\x46itIns\x12*\n\nparameters\x18\x01 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12<\n\x06\x63onfig\x18\x02 \x03(\x0b\x32,.flwr.proto.ServerMessage.FitIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xbf\x01\n\x0b\x45valuateIns\x12*\n\nparameters\x18\x01 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12\x41\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x31.flwr.proto.ServerMessage.EvaluateIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x42\x05\n\x03msg\"\xa0\t\n\rClientMessage\x12\x41\n\x0e\x64isconnect_res\x18\x01 \x01(\x0b\x32\'.flwr.proto.ClientMessage.DisconnectResH\x00\x12H\n\x12get_properties_res\x18\x02 \x01(\x0b\x32*.flwr.proto.ClientMessage.GetPropertiesResH\x00\x12H\n\x12get_parameters_res\x18\x03 \x01(\x0b\x32*.flwr.proto.ClientMessage.GetParametersResH\x00\x12\x33\n\x07\x66it_res\x18\x04 \x01(\x0b\x32 .flwr.proto.ClientMessage.FitResH\x00\x12=\n\x0c\x65valuate_res\x18\x05 \x01(\x0b\x32%.flwr.proto.ClientMessage.EvaluateResH\x00\x1a\x33\n\rDisconnectRes\x12\"\n\x06reason\x18\x01 \x01(\x0e\x32\x12.flwr.proto.Reason\x1a\xcd\x01\n\x10GetPropertiesRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12N\n\nproperties\x18\x02 \x03(\x0b\x32:.flwr.proto.ClientMessage.GetPropertiesRes.PropertiesEntry\x1a\x45\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x62\n\x10GetParametersRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12*\n\nparameters\x18\x02 \x01(\x0b\x32\x16.flwr.proto.Parameters\x1a\xf2\x01\n\x06\x46itRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12*\n\nparameters\x18\x02 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12\x14\n\x0cnum_examples\x18\x03 \x01(\x03\x12>\n\x07metrics\x18\x04 \x03(\x0b\x32-.flwr.proto.ClientMessage.FitRes.MetricsEntry\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xde\x01\n\x0b\x45valuateRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12\x0c\n\x04loss\x18\x02 \x01(\x02\x12\x14\n\x0cnum_examples\x18\x03 \x01(\x03\x12\x43\n\x07metrics\x18\x04 \x03(\x0b\x32\x32.flwr.proto.ClientMessage.EvaluateRes.MetricsEntry\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x42\x05\n\x03msg\"
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lwr/proto/transport.proto\x12\nflwr.proto\"9\n\x06Status\x12\x1e\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x10.flwr.proto.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\"2\n\nParameters\x12\x0f\n\x07tensors\x18\x01 \x03(\x0c\x12\x13\n\x0btensor_type\x18\x02 \x01(\t\"\xba\x08\n\rServerMessage\x12?\n\rreconnect_ins\x18\x01 \x01(\x0b\x32&.flwr.proto.ServerMessage.ReconnectInsH\x00\x12H\n\x12get_properties_ins\x18\x02 \x01(\x0b\x32*.flwr.proto.ServerMessage.GetPropertiesInsH\x00\x12H\n\x12get_parameters_ins\x18\x03 \x01(\x0b\x32*.flwr.proto.ServerMessage.GetParametersInsH\x00\x12\x33\n\x07\x66it_ins\x18\x04 \x01(\x0b\x32 .flwr.proto.ServerMessage.FitInsH\x00\x12=\n\x0c\x65valuate_ins\x18\x05 \x01(\x0b\x32%.flwr.proto.ServerMessage.EvaluateInsH\x00\x1a\x1f\n\x0cReconnectIns\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x1a\x9d\x01\n\x10GetPropertiesIns\x12\x46\n\x06\x63onfig\x18\x01 \x03(\x0b\x32\x36.flwr.proto.ServerMessage.GetPropertiesIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x9d\x01\n\x10GetParametersIns\x12\x46\n\x06\x63onfig\x18\x01 \x03(\x0b\x32\x36.flwr.proto.ServerMessage.GetParametersIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xb5\x01\n\x06\x46itIns\x12*\n\nparameters\x18\x01 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12<\n\x06\x63onfig\x18\x02 \x03(\x0b\x32,.flwr.proto.ServerMessage.FitIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xbf\x01\n\x0b\x45valuateIns\x12*\n\nparameters\x18\x01 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12\x41\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\x31.flwr.proto.ServerMessage.EvaluateIns.ConfigEntry\x1a\x41\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x42\x05\n\x03msg\"\xa0\t\n\rClientMessage\x12\x41\n\x0e\x64isconnect_res\x18\x01 \x01(\x0b\x32\'.flwr.proto.ClientMessage.DisconnectResH\x00\x12H\n\x12get_properties_res\x18\x02 \x01(\x0b\x32*.flwr.proto.ClientMessage.GetPropertiesResH\x00\x12H\n\x12get_parameters_res\x18\x03 \x01(\x0b\x32*.flwr.proto.ClientMessage.GetParametersResH\x00\x12\x33\n\x07\x66it_res\x18\x04 \x01(\x0b\x32 .flwr.proto.ClientMessage.FitResH\x00\x12=\n\x0c\x65valuate_res\x18\x05 \x01(\x0b\x32%.flwr.proto.ClientMessage.EvaluateResH\x00\x1a\x33\n\rDisconnectRes\x12\"\n\x06reason\x18\x01 \x01(\x0e\x32\x12.flwr.proto.Reason\x1a\xcd\x01\n\x10GetPropertiesRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12N\n\nproperties\x18\x02 \x03(\x0b\x32:.flwr.proto.ClientMessage.GetPropertiesRes.PropertiesEntry\x1a\x45\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x62\n\x10GetParametersRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12*\n\nparameters\x18\x02 \x01(\x0b\x32\x16.flwr.proto.Parameters\x1a\xf2\x01\n\x06\x46itRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12*\n\nparameters\x18\x02 \x01(\x0b\x32\x16.flwr.proto.Parameters\x12\x14\n\x0cnum_examples\x18\x03 \x01(\x03\x12>\n\x07metrics\x18\x04 \x03(\x0b\x32-.flwr.proto.ClientMessage.FitRes.MetricsEntry\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\xde\x01\n\x0b\x45valuateRes\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.flwr.proto.Status\x12\x0c\n\x04loss\x18\x02 \x01(\x02\x12\x14\n\x0cnum_examples\x18\x03 \x01(\x03\x12\x43\n\x07metrics\x18\x04 \x03(\x0b\x32\x32.flwr.proto.ClientMessage.EvaluateRes.MetricsEntry\x1a\x42\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x42\x05\n\x03msg\"{\n\x06Scalar\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06uint64\x18\x06 \x01(\x04H\x00\x12\x10\n\x06sint64\x18\x08 \x01(\x12H\x00\x12\x0e\n\x04\x62ool\x18\r \x01(\x08H\x00\x12\x10\n\x06string\x18\x0e \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x0f \x01(\x0cH\x00\x42\x08\n\x06scalar*\x8d\x01\n\x04\x43ode\x12\x06\n\x02OK\x10\x00\x12\"\n\x1eGET_PROPERTIES_NOT_IMPLEMENTED\x10\x01\x12\"\n\x1eGET_PARAMETERS_NOT_IMPLEMENTED\x10\x02\x12\x17\n\x13\x46IT_NOT_IMPLEMENTED\x10\x03\x12\x1c\n\x18\x45VALUATE_NOT_IMPLEMENTED\x10\x04*[\n\x06Reason\x12\x0b\n\x07UNKNOWN\x10\x00\x12\r\n\tRECONNECT\x10\x01\x12\x16\n\x12POWER_DISCONNECTED\x10\x02\x12\x14\n\x10WIFI_UNAVAILABLE\x10\x03\x12\x07\n\x03\x41\x43K\x10\x04\x32S\n\rFlowerService\x12\x42\n\x04Join\x12\x19.flwr.proto.ClientMessage\x1a\x19.flwr.proto.ServerMessage\"\x00(\x01\x30\x01\x62\x06proto3')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -35,10 +35,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
35
35
|
_globals['_CLIENTMESSAGE_FITRES_METRICSENTRY']._serialized_options = b'8\001'
|
|
36
36
|
_globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._options = None
|
|
37
37
|
_globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._serialized_options = b'8\001'
|
|
38
|
-
_globals['_CODE']._serialized_start=
|
|
39
|
-
_globals['_CODE']._serialized_end=
|
|
40
|
-
_globals['_REASON']._serialized_start=
|
|
41
|
-
_globals['_REASON']._serialized_end=
|
|
38
|
+
_globals['_CODE']._serialized_start=2551
|
|
39
|
+
_globals['_CODE']._serialized_end=2692
|
|
40
|
+
_globals['_REASON']._serialized_start=2694
|
|
41
|
+
_globals['_REASON']._serialized_end=2785
|
|
42
42
|
_globals['_STATUS']._serialized_start=42
|
|
43
43
|
_globals['_STATUS']._serialized_end=99
|
|
44
44
|
_globals['_PARAMETERS']._serialized_start=101
|
|
@@ -82,7 +82,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
82
82
|
_globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._serialized_start=2125
|
|
83
83
|
_globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._serialized_end=2191
|
|
84
84
|
_globals['_SCALAR']._serialized_start=2425
|
|
85
|
-
_globals['_SCALAR']._serialized_end=
|
|
86
|
-
_globals['_FLOWERSERVICE']._serialized_start=
|
|
87
|
-
_globals['_FLOWERSERVICE']._serialized_end=
|
|
85
|
+
_globals['_SCALAR']._serialized_end=2548
|
|
86
|
+
_globals['_FLOWERSERVICE']._serialized_start=2787
|
|
87
|
+
_globals['_FLOWERSERVICE']._serialized_end=2870
|
|
88
88
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/transport_pb2.pyi
CHANGED
|
@@ -402,20 +402,22 @@ global___ClientMessage = ClientMessage
|
|
|
402
402
|
class Scalar(google.protobuf.message.Message):
|
|
403
403
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
404
404
|
DOUBLE_FIELD_NUMBER: builtins.int
|
|
405
|
+
UINT64_FIELD_NUMBER: builtins.int
|
|
405
406
|
SINT64_FIELD_NUMBER: builtins.int
|
|
406
407
|
BOOL_FIELD_NUMBER: builtins.int
|
|
407
408
|
STRING_FIELD_NUMBER: builtins.int
|
|
408
409
|
BYTES_FIELD_NUMBER: builtins.int
|
|
409
410
|
double: builtins.float
|
|
410
|
-
|
|
411
|
+
uint64: builtins.int
|
|
411
412
|
"""float float = 2;
|
|
412
413
|
int32 int32 = 3;
|
|
413
414
|
int64 int64 = 4;
|
|
414
415
|
uint32 uint32 = 5;
|
|
415
|
-
uint64 uint64 = 6;
|
|
416
|
-
sint32 sint32 = 7;
|
|
417
416
|
"""
|
|
418
417
|
|
|
418
|
+
sint64: builtins.int
|
|
419
|
+
"""sint32 sint32 = 7;"""
|
|
420
|
+
|
|
419
421
|
bool: builtins.bool
|
|
420
422
|
"""fixed32 fixed32 = 9;
|
|
421
423
|
fixed64 fixed64 = 10;
|
|
@@ -428,12 +430,13 @@ class Scalar(google.protobuf.message.Message):
|
|
|
428
430
|
def __init__(self,
|
|
429
431
|
*,
|
|
430
432
|
double: builtins.float = ...,
|
|
433
|
+
uint64: builtins.int = ...,
|
|
431
434
|
sint64: builtins.int = ...,
|
|
432
435
|
bool: builtins.bool = ...,
|
|
433
436
|
string: typing.Text = ...,
|
|
434
437
|
bytes: builtins.bytes = ...,
|
|
435
438
|
) -> None: ...
|
|
436
|
-
def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string"]) -> builtins.bool: ...
|
|
437
|
-
def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string"]) -> None: ...
|
|
438
|
-
def WhichOneof(self, oneof_group: typing_extensions.Literal["scalar",b"scalar"]) -> typing.Optional[typing_extensions.Literal["double","sint64","bool","string","bytes"]]: ...
|
|
439
|
+
def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string","uint64",b"uint64"]) -> builtins.bool: ...
|
|
440
|
+
def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string","uint64",b"uint64"]) -> None: ...
|
|
441
|
+
def WhichOneof(self, oneof_group: typing_extensions.Literal["scalar",b"scalar"]) -> typing.Optional[typing_extensions.Literal["double","uint64","sint64","bool","string","bytes"]]: ...
|
|
439
442
|
global___Scalar = Scalar
|
flwr/server/run_serverapp.py
CHANGED
|
@@ -35,11 +35,11 @@ from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS
|
|
|
35
35
|
from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
|
|
36
36
|
from flwr.common.object_ref import load_app
|
|
37
37
|
from flwr.common.typing import UserConfig
|
|
38
|
-
from flwr.proto.
|
|
38
|
+
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
39
|
+
from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
39
40
|
CreateRunRequest,
|
|
40
41
|
CreateRunResponse,
|
|
41
42
|
)
|
|
42
|
-
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
43
43
|
|
|
44
44
|
from .driver import Driver
|
|
45
45
|
from .driver.grpc_driver import GrpcDriver
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"""Aggregation functions for strategy implementations."""
|
|
16
16
|
# mypy: disallow_untyped_calls=False
|
|
17
17
|
|
|
18
|
-
from functools import reduce
|
|
19
|
-
from typing import Any, Callable
|
|
18
|
+
from functools import partial, reduce
|
|
19
|
+
from typing import Any, Callable, Union
|
|
20
20
|
|
|
21
21
|
import numpy as np
|
|
22
22
|
|
|
@@ -52,17 +52,31 @@ def aggregate_inplace(results: list[tuple[ClientProxy, FitRes]]) -> NDArrays:
|
|
|
52
52
|
fit_res.num_examples / num_examples_total for _, fit_res in results
|
|
53
53
|
]
|
|
54
54
|
|
|
55
|
+
def _try_inplace(
|
|
56
|
+
x: NDArray, y: Union[NDArray, float], np_binary_op: np.ufunc
|
|
57
|
+
) -> NDArray:
|
|
58
|
+
return ( # type: ignore[no-any-return]
|
|
59
|
+
np_binary_op(x, y, out=x)
|
|
60
|
+
if np.can_cast(y, x.dtype, casting="same_kind")
|
|
61
|
+
else np_binary_op(x, np.array(y, x.dtype), out=x)
|
|
62
|
+
)
|
|
63
|
+
|
|
55
64
|
# Let's do in-place aggregation
|
|
56
65
|
# Get first result, then add up each other
|
|
57
66
|
params = [
|
|
58
|
-
scaling_factors[0]
|
|
67
|
+
_try_inplace(x, scaling_factors[0], np_binary_op=np.multiply)
|
|
68
|
+
for x in parameters_to_ndarrays(results[0][1].parameters)
|
|
59
69
|
]
|
|
60
|
-
|
|
70
|
+
|
|
71
|
+
for i, (_, fit_res) in enumerate(results[1:], start=1):
|
|
61
72
|
res = (
|
|
62
|
-
scaling_factors[i
|
|
73
|
+
_try_inplace(x, scaling_factors[i], np_binary_op=np.multiply)
|
|
63
74
|
for x in parameters_to_ndarrays(fit_res.parameters)
|
|
64
75
|
)
|
|
65
|
-
params = [
|
|
76
|
+
params = [
|
|
77
|
+
reduce(partial(_try_inplace, np_binary_op=np.add), layer_updates)
|
|
78
|
+
for layer_updates in zip(params, res)
|
|
79
|
+
]
|
|
66
80
|
|
|
67
81
|
return params
|
|
68
82
|
|
|
@@ -128,7 +142,7 @@ def aggregate_bulyan(
|
|
|
128
142
|
|
|
129
143
|
Parameters
|
|
130
144
|
----------
|
|
131
|
-
results:
|
|
145
|
+
results: list[tuple[NDArrays, int]]
|
|
132
146
|
Weights and number of samples for each of the client.
|
|
133
147
|
num_malicious: int
|
|
134
148
|
The maximum number of malicious clients.
|
|
@@ -332,7 +346,7 @@ def _aggregate_n_closest_weights(
|
|
|
332
346
|
----------
|
|
333
347
|
reference_weights: NDArrays
|
|
334
348
|
The weights from which the distances will be computed
|
|
335
|
-
results:
|
|
349
|
+
results: list[tuple[NDArrays, int]]
|
|
336
350
|
The weights from models
|
|
337
351
|
beta_closest: int
|
|
338
352
|
The number of the closest distance weights that will be averaged
|
|
@@ -32,8 +32,6 @@ from flwr.common.serde import (
|
|
|
32
32
|
from flwr.common.typing import Fab
|
|
33
33
|
from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
|
|
34
34
|
from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
35
|
-
CreateRunRequest,
|
|
36
|
-
CreateRunResponse,
|
|
37
35
|
GetNodesRequest,
|
|
38
36
|
GetNodesResponse,
|
|
39
37
|
PullTaskResRequest,
|
|
@@ -44,6 +42,8 @@ from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
|
44
42
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
45
43
|
from flwr.proto.node_pb2 import Node # pylint: disable=E0611
|
|
46
44
|
from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
45
|
+
CreateRunRequest,
|
|
46
|
+
CreateRunResponse,
|
|
47
47
|
GetRunRequest,
|
|
48
48
|
GetRunResponse,
|
|
49
49
|
Run,
|
|
@@ -21,7 +21,15 @@ from typing import Callable, TypeVar
|
|
|
21
21
|
import grpc
|
|
22
22
|
from google.protobuf.message import Message as GrpcMessage
|
|
23
23
|
|
|
24
|
+
from flwr.common.constant import (
|
|
25
|
+
GRPC_ADAPTER_METADATA_FLOWER_PACKAGE_NAME_KEY,
|
|
26
|
+
GRPC_ADAPTER_METADATA_FLOWER_PACKAGE_VERSION_KEY,
|
|
27
|
+
GRPC_ADAPTER_METADATA_FLOWER_VERSION_KEY,
|
|
28
|
+
GRPC_ADAPTER_METADATA_MESSAGE_MODULE_KEY,
|
|
29
|
+
GRPC_ADAPTER_METADATA_MESSAGE_QUALNAME_KEY,
|
|
30
|
+
)
|
|
24
31
|
from flwr.common.logger import log
|
|
32
|
+
from flwr.common.version import package_name, package_version
|
|
25
33
|
from flwr.proto import grpcadapter_pb2_grpc # pylint: disable=E0611
|
|
26
34
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
27
35
|
from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
|
@@ -52,9 +60,16 @@ def _handle(
|
|
|
52
60
|
) -> MessageContainer:
|
|
53
61
|
req = request_type.FromString(msg_container.grpc_message_content)
|
|
54
62
|
res = handler(req)
|
|
63
|
+
res_cls = res.__class__
|
|
55
64
|
return MessageContainer(
|
|
56
|
-
metadata={
|
|
57
|
-
|
|
65
|
+
metadata={
|
|
66
|
+
GRPC_ADAPTER_METADATA_FLOWER_PACKAGE_NAME_KEY: package_name,
|
|
67
|
+
GRPC_ADAPTER_METADATA_FLOWER_PACKAGE_VERSION_KEY: package_version,
|
|
68
|
+
GRPC_ADAPTER_METADATA_FLOWER_VERSION_KEY: package_version,
|
|
69
|
+
GRPC_ADAPTER_METADATA_MESSAGE_MODULE_KEY: res_cls.__module__,
|
|
70
|
+
GRPC_ADAPTER_METADATA_MESSAGE_QUALNAME_KEY: res_cls.__qualname__,
|
|
71
|
+
},
|
|
72
|
+
grpc_message_name=res_cls.__qualname__,
|
|
58
73
|
grpc_message_content=res.SerializeToString(),
|
|
59
74
|
)
|
|
60
75
|
|
|
@@ -30,6 +30,7 @@ from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
|
|
30
30
|
generate_shared_key,
|
|
31
31
|
verify_hmac,
|
|
32
32
|
)
|
|
33
|
+
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
33
34
|
from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
|
34
35
|
CreateNodeRequest,
|
|
35
36
|
CreateNodeResponse,
|
|
@@ -56,6 +57,7 @@ Request = Union[
|
|
|
56
57
|
PushTaskResRequest,
|
|
57
58
|
GetRunRequest,
|
|
58
59
|
PingRequest,
|
|
60
|
+
GetFabRequest,
|
|
59
61
|
]
|
|
60
62
|
|
|
61
63
|
Response = Union[
|
|
@@ -65,6 +67,7 @@ Response = Union[
|
|
|
65
67
|
PushTaskResResponse,
|
|
66
68
|
GetRunResponse,
|
|
67
69
|
PingResponse,
|
|
70
|
+
GetFabResponse,
|
|
68
71
|
]
|
|
69
72
|
|
|
70
73
|
|
|
@@ -173,6 +176,7 @@ class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
173
176
|
PushTaskResRequest,
|
|
174
177
|
GetRunRequest,
|
|
175
178
|
PingRequest,
|
|
179
|
+
GetFabRequest,
|
|
176
180
|
],
|
|
177
181
|
) -> bool:
|
|
178
182
|
if node_id is None:
|