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.

Files changed (49) hide show
  1. flwr/cli/app.py +2 -0
  2. flwr/cli/log.py +234 -0
  3. flwr/cli/new/new.py +1 -1
  4. flwr/cli/new/templates/app/README.flowertune.md.tpl +1 -1
  5. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -0
  6. flwr/cli/run/run.py +17 -1
  7. flwr/client/grpc_rere_client/client_interceptor.py +3 -0
  8. flwr/client/grpc_rere_client/connection.py +3 -3
  9. flwr/client/grpc_rere_client/grpc_adapter.py +14 -3
  10. flwr/client/rest_client/connection.py +3 -3
  11. flwr/client/supernode/app.py +1 -0
  12. flwr/common/constant.py +9 -3
  13. flwr/common/message.py +32 -15
  14. flwr/common/secure_aggregation/secaggplus_utils.py +4 -4
  15. flwr/common/serde.py +22 -7
  16. flwr/proto/control_pb2.py +27 -0
  17. flwr/proto/control_pb2.pyi +7 -0
  18. flwr/proto/control_pb2_grpc.py +135 -0
  19. flwr/proto/control_pb2_grpc.pyi +53 -0
  20. flwr/proto/driver_pb2.py +15 -24
  21. flwr/proto/driver_pb2.pyi +0 -52
  22. flwr/proto/driver_pb2_grpc.py +6 -6
  23. flwr/proto/driver_pb2_grpc.pyi +4 -4
  24. flwr/proto/fab_pb2.py +8 -7
  25. flwr/proto/fab_pb2.pyi +7 -1
  26. flwr/proto/fleet_pb2.py +10 -10
  27. flwr/proto/fleet_pb2.pyi +6 -1
  28. flwr/proto/recordset_pb2.py +35 -33
  29. flwr/proto/recordset_pb2.pyi +40 -14
  30. flwr/proto/run_pb2.py +33 -9
  31. flwr/proto/run_pb2.pyi +150 -1
  32. flwr/proto/transport_pb2.py +8 -8
  33. flwr/proto/transport_pb2.pyi +9 -6
  34. flwr/server/run_serverapp.py +2 -2
  35. flwr/server/strategy/aggregate.py +22 -8
  36. flwr/server/superlink/driver/driver_servicer.py +2 -2
  37. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +17 -2
  38. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +4 -0
  39. flwr/server/superlink/state/in_memory_state.py +47 -2
  40. flwr/server/superlink/state/sqlite_state.py +73 -8
  41. flwr/server/utils/validator.py +6 -0
  42. flwr/superexec/deployment.py +3 -1
  43. flwr/superexec/exec_servicer.py +68 -3
  44. flwr/superexec/executor.py +2 -1
  45. {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/METADATA +4 -2
  46. {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/RECORD +49 -44
  47. {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/LICENSE +0 -0
  48. {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/WHEEL +0 -0
  49. {flwr_nightly-1.12.0.dev20240918.dist-info → flwr_nightly-1.12.0.dev20241007.dist-info}/entry_points.txt +0 -0
@@ -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 Sint64List(google.protobuf.message.Message):
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
- global___Sint64List = Sint64List
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
- SINT64_LIST_FIELD_NUMBER: builtins.int
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 sint64_list(self) -> global___Sint64List: ...
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
- sint64_list: typing.Optional[global___Sint64List] = ...,
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","sint64_list",b"sint64_list","value",b"value"]) -> builtins.bool: ...
119
- def ClearField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint64_list",b"sint64_list","value",b"value"]) -> None: ...
120
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","double_list","sint64_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
- SINT64_LIST_FIELD_NUMBER: builtins.int
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 sint64_list(self) -> global___Sint64List: ...
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
- sint64_list: typing.Optional[global___Sint64List] = ...,
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","sint64_list",b"sint64_list","string",b"string","string_list",b"string_list","value",b"value"]) -> builtins.bool: ...
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","sint64_list",b"sint64_list","string",b"string","string_list",b"string_list","value",b"value"]) -> None: ...
169
- def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","bool","string","bytes","double_list","sint64_list","bool_list","string_list","bytes_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\"\x1f\n\rGetRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Runb\x06proto3')
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['_RUN']._serialized_start=65
28
- _globals['_RUN']._serialized_end=278
29
- _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=205
30
- _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=278
31
- _globals['_GETRUNREQUEST']._serialized_start=280
32
- _globals['_GETRUNREQUEST']._serialized_end=311
33
- _globals['_GETRUNRESPONSE']._serialized_start=313
34
- _globals['_GETRUNRESPONSE']._serialized_end=359
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 GetRunRequest(google.protobuf.message.Message):
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
@@ -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\"i\n\x06Scalar\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\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')
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=2533
39
- _globals['_CODE']._serialized_end=2674
40
- _globals['_REASON']._serialized_start=2676
41
- _globals['_REASON']._serialized_end=2767
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=2530
86
- _globals['_FLOWERSERVICE']._serialized_start=2769
87
- _globals['_FLOWERSERVICE']._serialized_end=2852
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)
@@ -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
- sint64: builtins.int
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
@@ -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.driver_pb2 import ( # pylint: disable=E0611
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] * x for x in parameters_to_ndarrays(results[0][1].parameters)
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
- for i, (_, fit_res) in enumerate(results[1:]):
70
+
71
+ for i, (_, fit_res) in enumerate(results[1:], start=1):
61
72
  res = (
62
- scaling_factors[i + 1] * x
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 = [reduce(np.add, layer_updates) for layer_updates in zip(params, res)]
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: List[Tuple[NDArrays, int]]
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: List[Tuple[NDArrays, int]]
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
- grpc_message_name=res.__class__.__qualname__,
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: