flwr-nightly 1.10.0.dev20240624__py3-none-any.whl → 1.10.0.dev20240722__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- flwr/cli/build.py +18 -4
- flwr/cli/config_utils.py +36 -14
- flwr/cli/install.py +17 -1
- flwr/cli/new/new.py +31 -20
- flwr/cli/new/templates/app/code/client.hf.py.tpl +11 -3
- flwr/cli/new/templates/app/code/client.jax.py.tpl +2 -1
- flwr/cli/new/templates/app/code/client.mlx.py.tpl +15 -10
- flwr/cli/new/templates/app/code/client.numpy.py.tpl +2 -1
- flwr/cli/new/templates/app/code/client.pytorch.py.tpl +12 -3
- flwr/cli/new/templates/app/code/client.sklearn.py.tpl +6 -3
- flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +13 -3
- flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +2 -2
- flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +1 -1
- flwr/cli/new/templates/app/code/server.hf.py.tpl +16 -11
- flwr/cli/new/templates/app/code/server.jax.py.tpl +15 -8
- flwr/cli/new/templates/app/code/server.mlx.py.tpl +11 -7
- flwr/cli/new/templates/app/code/server.numpy.py.tpl +15 -8
- flwr/cli/new/templates/app/code/server.pytorch.py.tpl +15 -13
- flwr/cli/new/templates/app/code/server.sklearn.py.tpl +16 -10
- flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +16 -13
- flwr/cli/new/templates/app/code/task.hf.py.tpl +2 -2
- flwr/cli/new/templates/app/code/task.mlx.py.tpl +2 -2
- flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +9 -12
- flwr/cli/new/templates/app/pyproject.hf.toml.tpl +17 -16
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +17 -11
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +17 -12
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +12 -12
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +13 -12
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +12 -12
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +15 -12
- flwr/cli/run/run.py +135 -51
- flwr/client/__init__.py +2 -0
- flwr/client/app.py +63 -26
- flwr/client/client_app.py +49 -4
- flwr/client/grpc_adapter_client/connection.py +3 -2
- flwr/client/grpc_client/connection.py +3 -2
- flwr/client/grpc_rere_client/connection.py +17 -6
- flwr/client/message_handler/message_handler.py +3 -4
- flwr/client/node_state.py +60 -10
- flwr/client/node_state_tests.py +4 -3
- flwr/client/rest_client/connection.py +19 -8
- flwr/client/supernode/app.py +60 -21
- flwr/client/typing.py +1 -0
- flwr/common/config.py +87 -2
- flwr/common/constant.py +6 -0
- flwr/common/context.py +26 -1
- flwr/common/logger.py +38 -0
- flwr/common/message.py +0 -17
- flwr/common/serde.py +45 -0
- flwr/common/telemetry.py +17 -0
- flwr/common/typing.py +5 -0
- flwr/proto/common_pb2.py +36 -0
- flwr/proto/common_pb2.pyi +121 -0
- flwr/proto/common_pb2_grpc.py +4 -0
- flwr/proto/common_pb2_grpc.pyi +4 -0
- flwr/proto/driver_pb2.py +24 -19
- flwr/proto/driver_pb2.pyi +21 -1
- flwr/proto/exec_pb2.py +16 -11
- flwr/proto/exec_pb2.pyi +22 -1
- flwr/proto/run_pb2.py +12 -7
- flwr/proto/run_pb2.pyi +22 -1
- flwr/proto/task_pb2.py +7 -8
- flwr/server/__init__.py +2 -0
- flwr/server/compat/legacy_context.py +5 -4
- flwr/server/driver/grpc_driver.py +82 -140
- flwr/server/run_serverapp.py +40 -15
- flwr/server/server_app.py +56 -10
- flwr/server/serverapp_components.py +52 -0
- flwr/server/superlink/driver/driver_servicer.py +18 -3
- flwr/server/superlink/fleet/message_handler/message_handler.py +13 -2
- flwr/server/superlink/fleet/vce/backend/backend.py +4 -4
- flwr/server/superlink/fleet/vce/backend/raybackend.py +10 -10
- flwr/server/superlink/fleet/vce/vce_api.py +149 -122
- flwr/server/superlink/state/in_memory_state.py +15 -7
- flwr/server/superlink/state/sqlite_state.py +27 -12
- flwr/server/superlink/state/state.py +7 -2
- flwr/server/superlink/state/utils.py +6 -0
- flwr/server/typing.py +2 -0
- flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +18 -2
- flwr/simulation/app.py +52 -36
- flwr/simulation/ray_transport/ray_actor.py +15 -19
- flwr/simulation/ray_transport/ray_client_proxy.py +33 -13
- flwr/simulation/run_simulation.py +237 -66
- flwr/superexec/app.py +14 -7
- flwr/superexec/deployment.py +186 -0
- flwr/superexec/exec_grpc.py +5 -1
- flwr/superexec/exec_servicer.py +4 -1
- flwr/superexec/executor.py +18 -0
- flwr/superexec/simulation.py +151 -0
- {flwr_nightly-1.10.0.dev20240624.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/METADATA +3 -2
- {flwr_nightly-1.10.0.dev20240624.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/RECORD +95 -88
- {flwr_nightly-1.10.0.dev20240624.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240624.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.10.0.dev20240624.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/entry_points.txt +0 -0
flwr/common/serde.py
CHANGED
|
@@ -671,3 +671,48 @@ def message_from_taskres(taskres: TaskRes) -> Message:
|
|
|
671
671
|
)
|
|
672
672
|
message.metadata.created_at = taskres.task.created_at
|
|
673
673
|
return message
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
# === User configs ===
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
def user_config_to_proto(user_config: typing.UserConfig) -> Any:
|
|
680
|
+
"""Serialize `UserConfig` to ProtoBuf."""
|
|
681
|
+
proto = {}
|
|
682
|
+
for key, value in user_config.items():
|
|
683
|
+
proto[key] = user_config_value_to_proto(value)
|
|
684
|
+
return proto
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
def user_config_from_proto(proto: Any) -> typing.UserConfig:
|
|
688
|
+
"""Deserialize `UserConfig` from ProtoBuf."""
|
|
689
|
+
metrics = {}
|
|
690
|
+
for key, value in proto.items():
|
|
691
|
+
metrics[key] = user_config_value_from_proto(value)
|
|
692
|
+
return metrics
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
def user_config_value_to_proto(user_config_value: typing.UserConfigValue) -> Scalar:
|
|
696
|
+
"""Serialize `UserConfigValue` to ProtoBuf."""
|
|
697
|
+
if isinstance(user_config_value, bool):
|
|
698
|
+
return Scalar(bool=user_config_value)
|
|
699
|
+
|
|
700
|
+
if isinstance(user_config_value, float):
|
|
701
|
+
return Scalar(double=user_config_value)
|
|
702
|
+
|
|
703
|
+
if isinstance(user_config_value, int):
|
|
704
|
+
return Scalar(sint64=user_config_value)
|
|
705
|
+
|
|
706
|
+
if isinstance(user_config_value, str):
|
|
707
|
+
return Scalar(string=user_config_value)
|
|
708
|
+
|
|
709
|
+
raise ValueError(
|
|
710
|
+
f"Accepted types: {bool, float, int, str} (but not {type(user_config_value)})"
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
def user_config_value_from_proto(scalar_msg: Scalar) -> typing.UserConfigValue:
|
|
715
|
+
"""Deserialize `UserConfigValue` from ProtoBuf."""
|
|
716
|
+
scalar_field = scalar_msg.WhichOneof("scalar")
|
|
717
|
+
scalar = getattr(scalar_msg, cast(str, scalar_field))
|
|
718
|
+
return cast(typing.UserConfigValue, scalar)
|
flwr/common/telemetry.py
CHANGED
|
@@ -64,6 +64,18 @@ def _get_home() -> Path:
|
|
|
64
64
|
return Path().home()
|
|
65
65
|
|
|
66
66
|
|
|
67
|
+
def _get_partner_id() -> str:
|
|
68
|
+
"""Get partner ID."""
|
|
69
|
+
partner_id = os.getenv("FLWR_TELEMETRY_PARTNER_ID")
|
|
70
|
+
if not partner_id:
|
|
71
|
+
return "unavailable"
|
|
72
|
+
try:
|
|
73
|
+
uuid.UUID(partner_id)
|
|
74
|
+
except ValueError:
|
|
75
|
+
partner_id = "invalid"
|
|
76
|
+
return partner_id
|
|
77
|
+
|
|
78
|
+
|
|
67
79
|
def _get_source_id() -> str:
|
|
68
80
|
"""Get existing or new source ID."""
|
|
69
81
|
source_id = "unavailable"
|
|
@@ -177,6 +189,7 @@ state: Dict[str, Union[Optional[str], Optional[ThreadPoolExecutor]]] = {
|
|
|
177
189
|
"executor": None,
|
|
178
190
|
"source": None,
|
|
179
191
|
"cluster": None,
|
|
192
|
+
"partner": None,
|
|
180
193
|
}
|
|
181
194
|
|
|
182
195
|
|
|
@@ -202,11 +215,15 @@ def create_event(event_type: EventType, event_details: Optional[Dict[str, Any]])
|
|
|
202
215
|
if state["cluster"] is None:
|
|
203
216
|
state["cluster"] = str(uuid.uuid4())
|
|
204
217
|
|
|
218
|
+
if state["partner"] is None:
|
|
219
|
+
state["partner"] = _get_partner_id()
|
|
220
|
+
|
|
205
221
|
if event_details is None:
|
|
206
222
|
event_details = {}
|
|
207
223
|
|
|
208
224
|
date = datetime.datetime.now(tz=datetime.timezone.utc).isoformat()
|
|
209
225
|
context = {
|
|
226
|
+
"partner": state["partner"],
|
|
210
227
|
"source": state["source"],
|
|
211
228
|
"cluster": state["cluster"],
|
|
212
229
|
"date": date,
|
flwr/common/typing.py
CHANGED
|
@@ -60,6 +60,10 @@ MetricsAggregationFn = Callable[[List[Tuple[int, Metrics]]], Metrics]
|
|
|
60
60
|
Config = Dict[str, Scalar]
|
|
61
61
|
Properties = Dict[str, Scalar]
|
|
62
62
|
|
|
63
|
+
# Value type for user configs
|
|
64
|
+
UserConfigValue = Union[bool, float, int, str]
|
|
65
|
+
UserConfig = Dict[str, UserConfigValue]
|
|
66
|
+
|
|
63
67
|
|
|
64
68
|
class Code(Enum):
|
|
65
69
|
"""Client status codes."""
|
|
@@ -194,3 +198,4 @@ class Run:
|
|
|
194
198
|
run_id: int
|
|
195
199
|
fab_id: str
|
|
196
200
|
fab_version: str
|
|
201
|
+
override_config: UserConfig
|
flwr/proto/common_pb2.py
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: flwr/proto/common.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.0
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/common.proto\x12\nflwr.proto\"\x1a\n\nDoubleList\x12\x0c\n\x04vals\x18\x01 \x03(\x01\"\x1a\n\nSint64List\x12\x0c\n\x04vals\x18\x01 \x03(\x12\"\x18\n\x08\x42oolList\x12\x0c\n\x04vals\x18\x01 \x03(\x08\"\x1a\n\nStringList\x12\x0c\n\x04vals\x18\x01 \x03(\t\"\x19\n\tBytesList\x12\x0c\n\x04vals\x18\x01 \x03(\x0c\"\xd9\x02\n\x12\x43onfigsRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12\x10\n\x06string\x18\x04 \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x05 \x01(\x0cH\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12-\n\x0bsint64_list\x18\x16 \x01(\x0b\x32\x16.flwr.proto.Sint64ListH\x00\x12)\n\tbool_list\x18\x17 \x01(\x0b\x32\x14.flwr.proto.BoolListH\x00\x12-\n\x0bstring_list\x18\x18 \x01(\x0b\x32\x16.flwr.proto.StringListH\x00\x12+\n\nbytes_list\x18\x19 \x01(\x0b\x32\x15.flwr.proto.BytesListH\x00\x42\x07\n\x05valueb\x06proto3')
|
|
18
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.common_pb2', _globals)
|
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
|
+
DESCRIPTOR._options = None
|
|
24
|
+
_globals['_DOUBLELIST']._serialized_start=39
|
|
25
|
+
_globals['_DOUBLELIST']._serialized_end=65
|
|
26
|
+
_globals['_SINT64LIST']._serialized_start=67
|
|
27
|
+
_globals['_SINT64LIST']._serialized_end=93
|
|
28
|
+
_globals['_BOOLLIST']._serialized_start=95
|
|
29
|
+
_globals['_BOOLLIST']._serialized_end=119
|
|
30
|
+
_globals['_STRINGLIST']._serialized_start=121
|
|
31
|
+
_globals['_STRINGLIST']._serialized_end=147
|
|
32
|
+
_globals['_BYTESLIST']._serialized_start=149
|
|
33
|
+
_globals['_BYTESLIST']._serialized_end=174
|
|
34
|
+
_globals['_CONFIGSRECORDVALUE']._serialized_start=177
|
|
35
|
+
_globals['_CONFIGSRECORDVALUE']._serialized_end=522
|
|
36
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"""
|
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
|
3
|
+
isort:skip_file
|
|
4
|
+
"""
|
|
5
|
+
import builtins
|
|
6
|
+
import google.protobuf.descriptor
|
|
7
|
+
import google.protobuf.internal.containers
|
|
8
|
+
import google.protobuf.message
|
|
9
|
+
import typing
|
|
10
|
+
import typing_extensions
|
|
11
|
+
|
|
12
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
13
|
+
|
|
14
|
+
class DoubleList(google.protobuf.message.Message):
|
|
15
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
16
|
+
VALS_FIELD_NUMBER: builtins.int
|
|
17
|
+
@property
|
|
18
|
+
def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
|
|
19
|
+
def __init__(self,
|
|
20
|
+
*,
|
|
21
|
+
vals: typing.Optional[typing.Iterable[builtins.float]] = ...,
|
|
22
|
+
) -> None: ...
|
|
23
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
24
|
+
global___DoubleList = DoubleList
|
|
25
|
+
|
|
26
|
+
class Sint64List(google.protobuf.message.Message):
|
|
27
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
28
|
+
VALS_FIELD_NUMBER: builtins.int
|
|
29
|
+
@property
|
|
30
|
+
def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
|
|
31
|
+
def __init__(self,
|
|
32
|
+
*,
|
|
33
|
+
vals: typing.Optional[typing.Iterable[builtins.int]] = ...,
|
|
34
|
+
) -> None: ...
|
|
35
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
36
|
+
global___Sint64List = Sint64List
|
|
37
|
+
|
|
38
|
+
class BoolList(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.bool]: ...
|
|
43
|
+
def __init__(self,
|
|
44
|
+
*,
|
|
45
|
+
vals: typing.Optional[typing.Iterable[builtins.bool]] = ...,
|
|
46
|
+
) -> None: ...
|
|
47
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
48
|
+
global___BoolList = BoolList
|
|
49
|
+
|
|
50
|
+
class StringList(google.protobuf.message.Message):
|
|
51
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
52
|
+
VALS_FIELD_NUMBER: builtins.int
|
|
53
|
+
@property
|
|
54
|
+
def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
|
55
|
+
def __init__(self,
|
|
56
|
+
*,
|
|
57
|
+
vals: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
|
58
|
+
) -> None: ...
|
|
59
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
60
|
+
global___StringList = StringList
|
|
61
|
+
|
|
62
|
+
class BytesList(google.protobuf.message.Message):
|
|
63
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
64
|
+
VALS_FIELD_NUMBER: builtins.int
|
|
65
|
+
@property
|
|
66
|
+
def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
|
|
67
|
+
def __init__(self,
|
|
68
|
+
*,
|
|
69
|
+
vals: typing.Optional[typing.Iterable[builtins.bytes]] = ...,
|
|
70
|
+
) -> None: ...
|
|
71
|
+
def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ...
|
|
72
|
+
global___BytesList = BytesList
|
|
73
|
+
|
|
74
|
+
class ConfigsRecordValue(google.protobuf.message.Message):
|
|
75
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
76
|
+
DOUBLE_FIELD_NUMBER: builtins.int
|
|
77
|
+
SINT64_FIELD_NUMBER: builtins.int
|
|
78
|
+
BOOL_FIELD_NUMBER: builtins.int
|
|
79
|
+
STRING_FIELD_NUMBER: builtins.int
|
|
80
|
+
BYTES_FIELD_NUMBER: builtins.int
|
|
81
|
+
DOUBLE_LIST_FIELD_NUMBER: builtins.int
|
|
82
|
+
SINT64_LIST_FIELD_NUMBER: builtins.int
|
|
83
|
+
BOOL_LIST_FIELD_NUMBER: builtins.int
|
|
84
|
+
STRING_LIST_FIELD_NUMBER: builtins.int
|
|
85
|
+
BYTES_LIST_FIELD_NUMBER: builtins.int
|
|
86
|
+
double: builtins.float
|
|
87
|
+
"""Single element"""
|
|
88
|
+
|
|
89
|
+
sint64: builtins.int
|
|
90
|
+
bool: builtins.bool
|
|
91
|
+
string: typing.Text
|
|
92
|
+
bytes: builtins.bytes
|
|
93
|
+
@property
|
|
94
|
+
def double_list(self) -> global___DoubleList:
|
|
95
|
+
"""List types"""
|
|
96
|
+
pass
|
|
97
|
+
@property
|
|
98
|
+
def sint64_list(self) -> global___Sint64List: ...
|
|
99
|
+
@property
|
|
100
|
+
def bool_list(self) -> global___BoolList: ...
|
|
101
|
+
@property
|
|
102
|
+
def string_list(self) -> global___StringList: ...
|
|
103
|
+
@property
|
|
104
|
+
def bytes_list(self) -> global___BytesList: ...
|
|
105
|
+
def __init__(self,
|
|
106
|
+
*,
|
|
107
|
+
double: builtins.float = ...,
|
|
108
|
+
sint64: builtins.int = ...,
|
|
109
|
+
bool: builtins.bool = ...,
|
|
110
|
+
string: typing.Text = ...,
|
|
111
|
+
bytes: builtins.bytes = ...,
|
|
112
|
+
double_list: typing.Optional[global___DoubleList] = ...,
|
|
113
|
+
sint64_list: typing.Optional[global___Sint64List] = ...,
|
|
114
|
+
bool_list: typing.Optional[global___BoolList] = ...,
|
|
115
|
+
string_list: typing.Optional[global___StringList] = ...,
|
|
116
|
+
bytes_list: typing.Optional[global___BytesList] = ...,
|
|
117
|
+
) -> None: ...
|
|
118
|
+
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: ...
|
|
119
|
+
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: ...
|
|
120
|
+
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"]]: ...
|
|
121
|
+
global___ConfigsRecordValue = ConfigsRecordValue
|
flwr/proto/driver_pb2.py
CHANGED
|
@@ -15,31 +15,36 @@ _sym_db = _symbol_database.Default()
|
|
|
15
15
|
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
16
16
|
from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2
|
|
17
17
|
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
18
|
+
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
18
19
|
|
|
19
20
|
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\"
|
|
21
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xcd\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\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(\x12\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"@\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"F\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes2\x84\x03\n\x06\x44river\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x62\x06proto3')
|
|
21
22
|
|
|
22
23
|
_globals = globals()
|
|
23
24
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
24
25
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.driver_pb2', _globals)
|
|
25
26
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
26
27
|
DESCRIPTOR._options = None
|
|
27
|
-
_globals['
|
|
28
|
-
_globals['
|
|
29
|
-
_globals['
|
|
30
|
-
_globals['
|
|
31
|
-
_globals['
|
|
32
|
-
_globals['
|
|
33
|
-
_globals['
|
|
34
|
-
_globals['
|
|
35
|
-
_globals['
|
|
36
|
-
_globals['
|
|
37
|
-
_globals['
|
|
38
|
-
_globals['
|
|
39
|
-
_globals['
|
|
40
|
-
_globals['
|
|
41
|
-
_globals['
|
|
42
|
-
_globals['
|
|
43
|
-
_globals['
|
|
44
|
-
_globals['
|
|
28
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._options = None
|
|
29
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
30
|
+
_globals['_CREATERUNREQUEST']._serialized_start=136
|
|
31
|
+
_globals['_CREATERUNREQUEST']._serialized_end=341
|
|
32
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=268
|
|
33
|
+
_globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=341
|
|
34
|
+
_globals['_CREATERUNRESPONSE']._serialized_start=343
|
|
35
|
+
_globals['_CREATERUNRESPONSE']._serialized_end=378
|
|
36
|
+
_globals['_GETNODESREQUEST']._serialized_start=380
|
|
37
|
+
_globals['_GETNODESREQUEST']._serialized_end=413
|
|
38
|
+
_globals['_GETNODESRESPONSE']._serialized_start=415
|
|
39
|
+
_globals['_GETNODESRESPONSE']._serialized_end=466
|
|
40
|
+
_globals['_PUSHTASKINSREQUEST']._serialized_start=468
|
|
41
|
+
_globals['_PUSHTASKINSREQUEST']._serialized_end=532
|
|
42
|
+
_globals['_PUSHTASKINSRESPONSE']._serialized_start=534
|
|
43
|
+
_globals['_PUSHTASKINSRESPONSE']._serialized_end=573
|
|
44
|
+
_globals['_PULLTASKRESREQUEST']._serialized_start=575
|
|
45
|
+
_globals['_PULLTASKRESREQUEST']._serialized_end=645
|
|
46
|
+
_globals['_PULLTASKRESRESPONSE']._serialized_start=647
|
|
47
|
+
_globals['_PULLTASKRESRESPONSE']._serialized_end=712
|
|
48
|
+
_globals['_DRIVER']._serialized_start=715
|
|
49
|
+
_globals['_DRIVER']._serialized_end=1103
|
|
45
50
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/driver_pb2.pyi
CHANGED
|
@@ -5,6 +5,7 @@ isort:skip_file
|
|
|
5
5
|
import builtins
|
|
6
6
|
import flwr.proto.node_pb2
|
|
7
7
|
import flwr.proto.task_pb2
|
|
8
|
+
import flwr.proto.transport_pb2
|
|
8
9
|
import google.protobuf.descriptor
|
|
9
10
|
import google.protobuf.internal.containers
|
|
10
11
|
import google.protobuf.message
|
|
@@ -16,16 +17,35 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
16
17
|
class CreateRunRequest(google.protobuf.message.Message):
|
|
17
18
|
"""CreateRun"""
|
|
18
19
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
20
|
+
class OverrideConfigEntry(google.protobuf.message.Message):
|
|
21
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
22
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
23
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
24
|
+
key: typing.Text
|
|
25
|
+
@property
|
|
26
|
+
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
|
|
27
|
+
def __init__(self,
|
|
28
|
+
*,
|
|
29
|
+
key: typing.Text = ...,
|
|
30
|
+
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
|
|
31
|
+
) -> None: ...
|
|
32
|
+
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
33
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
34
|
+
|
|
19
35
|
FAB_ID_FIELD_NUMBER: builtins.int
|
|
20
36
|
FAB_VERSION_FIELD_NUMBER: builtins.int
|
|
37
|
+
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
|
21
38
|
fab_id: typing.Text
|
|
22
39
|
fab_version: typing.Text
|
|
40
|
+
@property
|
|
41
|
+
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
23
42
|
def __init__(self,
|
|
24
43
|
*,
|
|
25
44
|
fab_id: typing.Text = ...,
|
|
26
45
|
fab_version: typing.Text = ...,
|
|
46
|
+
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
27
47
|
) -> None: ...
|
|
28
|
-
def ClearField(self, field_name: typing_extensions.Literal["fab_id",b"fab_id","fab_version",b"fab_version"]) -> None: ...
|
|
48
|
+
def ClearField(self, field_name: typing_extensions.Literal["fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ...
|
|
29
49
|
global___CreateRunRequest = CreateRunRequest
|
|
30
50
|
|
|
31
51
|
class CreateRunResponse(google.protobuf.message.Message):
|
flwr/proto/exec_pb2.py
CHANGED
|
@@ -12,23 +12,28 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_sym_db = _symbol_database.Default()
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\"
|
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xb8\x01\n\x0fStartRunRequest\x12\x10\n\x08\x66\x61\x62_file\x18\x01 \x01(\x0c\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\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\x10StartRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\"#\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\"(\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t2\xa0\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x62\x06proto3')
|
|
18
19
|
|
|
19
20
|
_globals = globals()
|
|
20
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
22
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.exec_pb2', _globals)
|
|
22
23
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
24
|
DESCRIPTOR._options = None
|
|
24
|
-
_globals['
|
|
25
|
-
_globals['
|
|
26
|
-
_globals['
|
|
27
|
-
_globals['
|
|
28
|
-
_globals['
|
|
29
|
-
_globals['
|
|
30
|
-
_globals['
|
|
31
|
-
_globals['
|
|
32
|
-
_globals['
|
|
33
|
-
_globals['
|
|
25
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
|
|
26
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
27
|
+
_globals['_STARTRUNREQUEST']._serialized_start=66
|
|
28
|
+
_globals['_STARTRUNREQUEST']._serialized_end=250
|
|
29
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=177
|
|
30
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=250
|
|
31
|
+
_globals['_STARTRUNRESPONSE']._serialized_start=252
|
|
32
|
+
_globals['_STARTRUNRESPONSE']._serialized_end=286
|
|
33
|
+
_globals['_STREAMLOGSREQUEST']._serialized_start=288
|
|
34
|
+
_globals['_STREAMLOGSREQUEST']._serialized_end=323
|
|
35
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_start=325
|
|
36
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_end=365
|
|
37
|
+
_globals['_EXEC']._serialized_start=368
|
|
38
|
+
_globals['_EXEC']._serialized_end=528
|
|
34
39
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/exec_pb2.pyi
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
+
import flwr.proto.transport_pb2
|
|
6
7
|
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.containers
|
|
7
9
|
import google.protobuf.message
|
|
8
10
|
import typing
|
|
9
11
|
import typing_extensions
|
|
@@ -12,13 +14,32 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
12
14
|
|
|
13
15
|
class StartRunRequest(google.protobuf.message.Message):
|
|
14
16
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
17
|
+
class OverrideConfigEntry(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
20
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
21
|
+
key: typing.Text
|
|
22
|
+
@property
|
|
23
|
+
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
|
|
24
|
+
def __init__(self,
|
|
25
|
+
*,
|
|
26
|
+
key: typing.Text = ...,
|
|
27
|
+
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
|
|
28
|
+
) -> None: ...
|
|
29
|
+
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
30
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
31
|
+
|
|
15
32
|
FAB_FILE_FIELD_NUMBER: builtins.int
|
|
33
|
+
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
|
16
34
|
fab_file: builtins.bytes
|
|
35
|
+
@property
|
|
36
|
+
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
17
37
|
def __init__(self,
|
|
18
38
|
*,
|
|
19
39
|
fab_file: builtins.bytes = ...,
|
|
40
|
+
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
20
41
|
) -> None: ...
|
|
21
|
-
def ClearField(self, field_name: typing_extensions.Literal["fab_file",b"fab_file"]) -> None: ...
|
|
42
|
+
def ClearField(self, field_name: typing_extensions.Literal["fab_file",b"fab_file","override_config",b"override_config"]) -> None: ...
|
|
22
43
|
global___StartRunRequest = StartRunRequest
|
|
23
44
|
|
|
24
45
|
class StartRunResponse(google.protobuf.message.Message):
|
flwr/proto/run_pb2.py
CHANGED
|
@@ -12,19 +12,24 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_sym_db = _symbol_database.Default()
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\"
|
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xc3\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\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\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(\x12\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Runb\x06proto3')
|
|
18
19
|
|
|
19
20
|
_globals = globals()
|
|
20
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
22
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.run_pb2', _globals)
|
|
22
23
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
24
|
DESCRIPTOR._options = None
|
|
24
|
-
_globals['
|
|
25
|
-
_globals['
|
|
26
|
-
_globals['
|
|
27
|
-
_globals['
|
|
28
|
-
_globals['
|
|
29
|
-
_globals['
|
|
25
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._options = None
|
|
26
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
27
|
+
_globals['_RUN']._serialized_start=65
|
|
28
|
+
_globals['_RUN']._serialized_end=260
|
|
29
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=187
|
|
30
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=260
|
|
31
|
+
_globals['_GETRUNREQUEST']._serialized_start=262
|
|
32
|
+
_globals['_GETRUNREQUEST']._serialized_end=293
|
|
33
|
+
_globals['_GETRUNRESPONSE']._serialized_start=295
|
|
34
|
+
_globals['_GETRUNRESPONSE']._serialized_end=341
|
|
30
35
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/run_pb2.pyi
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
+
import flwr.proto.transport_pb2
|
|
6
7
|
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.containers
|
|
7
9
|
import google.protobuf.message
|
|
8
10
|
import typing
|
|
9
11
|
import typing_extensions
|
|
@@ -12,19 +14,38 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
12
14
|
|
|
13
15
|
class Run(google.protobuf.message.Message):
|
|
14
16
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
17
|
+
class OverrideConfigEntry(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
20
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
21
|
+
key: typing.Text
|
|
22
|
+
@property
|
|
23
|
+
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
|
|
24
|
+
def __init__(self,
|
|
25
|
+
*,
|
|
26
|
+
key: typing.Text = ...,
|
|
27
|
+
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
|
|
28
|
+
) -> None: ...
|
|
29
|
+
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
30
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
31
|
+
|
|
15
32
|
RUN_ID_FIELD_NUMBER: builtins.int
|
|
16
33
|
FAB_ID_FIELD_NUMBER: builtins.int
|
|
17
34
|
FAB_VERSION_FIELD_NUMBER: builtins.int
|
|
35
|
+
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
|
18
36
|
run_id: builtins.int
|
|
19
37
|
fab_id: typing.Text
|
|
20
38
|
fab_version: typing.Text
|
|
39
|
+
@property
|
|
40
|
+
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
21
41
|
def __init__(self,
|
|
22
42
|
*,
|
|
23
43
|
run_id: builtins.int = ...,
|
|
24
44
|
fab_id: typing.Text = ...,
|
|
25
45
|
fab_version: typing.Text = ...,
|
|
46
|
+
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
26
47
|
) -> None: ...
|
|
27
|
-
def ClearField(self, field_name: typing_extensions.Literal["fab_id",b"fab_id","fab_version",b"fab_version","run_id",b"run_id"]) -> None: ...
|
|
48
|
+
def ClearField(self, field_name: typing_extensions.Literal["fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config","run_id",b"run_id"]) -> None: ...
|
|
28
49
|
global___Run = Run
|
|
29
50
|
|
|
30
51
|
class GetRunRequest(google.protobuf.message.Message):
|
flwr/proto/task_pb2.py
CHANGED
|
@@ -14,21 +14,20 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
16
16
|
from flwr.proto import recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
|
|
17
|
-
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
18
17
|
from flwr.proto import error_pb2 as flwr_dot_proto_dot_error__pb2
|
|
19
18
|
|
|
20
19
|
|
|
21
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/task.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/task.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x16\x66lwr/proto/error.proto\"\x89\x02\n\x04Task\x12\"\n\x08producer\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\"\n\x08\x63onsumer\x18\x02 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x12\n\ncreated_at\x18\x03 \x01(\x01\x12\x14\n\x0c\x64\x65livered_at\x18\x04 \x01(\t\x12\x11\n\tpushed_at\x18\x05 \x01(\x01\x12\x0b\n\x03ttl\x18\x06 \x01(\x01\x12\x10\n\x08\x61ncestry\x18\x07 \x03(\t\x12\x11\n\ttask_type\x18\x08 \x01(\t\x12(\n\trecordset\x18\t \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\n \x01(\x0b\x32\x11.flwr.proto.Error\"\\\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x12\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"\\\n\x07TaskRes\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x12\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Taskb\x06proto3')
|
|
22
21
|
|
|
23
22
|
_globals = globals()
|
|
24
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
25
24
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.task_pb2', _globals)
|
|
26
25
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
27
26
|
DESCRIPTOR._options = None
|
|
28
|
-
_globals['_TASK']._serialized_start=
|
|
29
|
-
_globals['_TASK']._serialized_end=
|
|
30
|
-
_globals['_TASKINS']._serialized_start=
|
|
31
|
-
_globals['_TASKINS']._serialized_end=
|
|
32
|
-
_globals['_TASKRES']._serialized_start=
|
|
33
|
-
_globals['_TASKRES']._serialized_end=
|
|
27
|
+
_globals['_TASK']._serialized_start=113
|
|
28
|
+
_globals['_TASK']._serialized_end=378
|
|
29
|
+
_globals['_TASKINS']._serialized_start=380
|
|
30
|
+
_globals['_TASKINS']._serialized_end=472
|
|
31
|
+
_globals['_TASKRES']._serialized_start=474
|
|
32
|
+
_globals['_TASKRES']._serialized_end=566
|
|
34
33
|
# @@protoc_insertion_point(module_scope)
|
flwr/server/__init__.py
CHANGED
|
@@ -28,6 +28,7 @@ from .run_serverapp import run_server_app as run_server_app
|
|
|
28
28
|
from .server import Server as Server
|
|
29
29
|
from .server_app import ServerApp as ServerApp
|
|
30
30
|
from .server_config import ServerConfig as ServerConfig
|
|
31
|
+
from .serverapp_components import ServerAppComponents as ServerAppComponents
|
|
31
32
|
|
|
32
33
|
__all__ = [
|
|
33
34
|
"ClientManager",
|
|
@@ -36,6 +37,7 @@ __all__ = [
|
|
|
36
37
|
"LegacyContext",
|
|
37
38
|
"Server",
|
|
38
39
|
"ServerApp",
|
|
40
|
+
"ServerAppComponents",
|
|
39
41
|
"ServerConfig",
|
|
40
42
|
"SimpleClientManager",
|
|
41
43
|
"run_server_app",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
from dataclasses import dataclass
|
|
19
19
|
from typing import Optional
|
|
20
20
|
|
|
21
|
-
from flwr.common import Context
|
|
21
|
+
from flwr.common import Context
|
|
22
22
|
|
|
23
23
|
from ..client_manager import ClientManager, SimpleClientManager
|
|
24
24
|
from ..history import History
|
|
@@ -35,9 +35,9 @@ class LegacyContext(Context):
|
|
|
35
35
|
client_manager: ClientManager
|
|
36
36
|
history: History
|
|
37
37
|
|
|
38
|
-
def __init__(
|
|
38
|
+
def __init__( # pylint: disable=too-many-arguments
|
|
39
39
|
self,
|
|
40
|
-
|
|
40
|
+
context: Context,
|
|
41
41
|
config: Optional[ServerConfig] = None,
|
|
42
42
|
strategy: Optional[Strategy] = None,
|
|
43
43
|
client_manager: Optional[ClientManager] = None,
|
|
@@ -52,4 +52,5 @@ class LegacyContext(Context):
|
|
|
52
52
|
self.strategy = strategy
|
|
53
53
|
self.client_manager = client_manager
|
|
54
54
|
self.history = History()
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
super().__init__(**vars(context))
|