flwr-nightly 1.10.0.dev20240707__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.

Files changed (92) hide show
  1. flwr/cli/build.py +16 -2
  2. flwr/cli/config_utils.py +36 -14
  3. flwr/cli/install.py +17 -1
  4. flwr/cli/new/new.py +31 -20
  5. flwr/cli/new/templates/app/code/client.hf.py.tpl +11 -3
  6. flwr/cli/new/templates/app/code/client.jax.py.tpl +2 -1
  7. flwr/cli/new/templates/app/code/client.mlx.py.tpl +15 -10
  8. flwr/cli/new/templates/app/code/client.numpy.py.tpl +2 -1
  9. flwr/cli/new/templates/app/code/client.pytorch.py.tpl +12 -3
  10. flwr/cli/new/templates/app/code/client.sklearn.py.tpl +6 -3
  11. flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +13 -3
  12. flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +2 -2
  13. flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +1 -1
  14. flwr/cli/new/templates/app/code/server.hf.py.tpl +16 -11
  15. flwr/cli/new/templates/app/code/server.jax.py.tpl +15 -8
  16. flwr/cli/new/templates/app/code/server.mlx.py.tpl +11 -7
  17. flwr/cli/new/templates/app/code/server.numpy.py.tpl +15 -8
  18. flwr/cli/new/templates/app/code/server.pytorch.py.tpl +15 -13
  19. flwr/cli/new/templates/app/code/server.sklearn.py.tpl +16 -10
  20. flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +16 -13
  21. flwr/cli/new/templates/app/code/task.hf.py.tpl +2 -2
  22. flwr/cli/new/templates/app/code/task.mlx.py.tpl +2 -2
  23. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -1
  24. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +9 -12
  25. flwr/cli/new/templates/app/pyproject.hf.toml.tpl +17 -16
  26. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +17 -11
  27. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +17 -12
  28. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +12 -12
  29. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +13 -12
  30. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +12 -12
  31. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +15 -12
  32. flwr/cli/run/run.py +128 -53
  33. flwr/client/app.py +56 -24
  34. flwr/client/client_app.py +28 -8
  35. flwr/client/grpc_adapter_client/connection.py +3 -2
  36. flwr/client/grpc_client/connection.py +3 -2
  37. flwr/client/grpc_rere_client/connection.py +17 -6
  38. flwr/client/message_handler/message_handler.py +1 -1
  39. flwr/client/node_state.py +59 -12
  40. flwr/client/node_state_tests.py +4 -3
  41. flwr/client/rest_client/connection.py +19 -8
  42. flwr/client/supernode/app.py +55 -24
  43. flwr/client/typing.py +2 -2
  44. flwr/common/config.py +87 -2
  45. flwr/common/constant.py +3 -0
  46. flwr/common/context.py +24 -9
  47. flwr/common/logger.py +25 -0
  48. flwr/common/serde.py +45 -0
  49. flwr/common/telemetry.py +17 -0
  50. flwr/common/typing.py +5 -0
  51. flwr/proto/common_pb2.py +36 -0
  52. flwr/proto/common_pb2.pyi +121 -0
  53. flwr/proto/common_pb2_grpc.py +4 -0
  54. flwr/proto/common_pb2_grpc.pyi +4 -0
  55. flwr/proto/driver_pb2.py +24 -19
  56. flwr/proto/driver_pb2.pyi +21 -1
  57. flwr/proto/exec_pb2.py +16 -11
  58. flwr/proto/exec_pb2.pyi +22 -1
  59. flwr/proto/run_pb2.py +12 -7
  60. flwr/proto/run_pb2.pyi +22 -1
  61. flwr/proto/task_pb2.py +7 -8
  62. flwr/server/__init__.py +2 -0
  63. flwr/server/compat/legacy_context.py +5 -4
  64. flwr/server/driver/grpc_driver.py +82 -140
  65. flwr/server/run_serverapp.py +40 -15
  66. flwr/server/server_app.py +56 -10
  67. flwr/server/serverapp_components.py +52 -0
  68. flwr/server/superlink/driver/driver_servicer.py +18 -3
  69. flwr/server/superlink/fleet/message_handler/message_handler.py +13 -2
  70. flwr/server/superlink/fleet/vce/backend/backend.py +4 -4
  71. flwr/server/superlink/fleet/vce/backend/raybackend.py +10 -10
  72. flwr/server/superlink/fleet/vce/vce_api.py +149 -117
  73. flwr/server/superlink/state/in_memory_state.py +11 -3
  74. flwr/server/superlink/state/sqlite_state.py +23 -8
  75. flwr/server/superlink/state/state.py +7 -2
  76. flwr/server/typing.py +2 -0
  77. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +18 -2
  78. flwr/simulation/app.py +4 -3
  79. flwr/simulation/ray_transport/ray_actor.py +15 -19
  80. flwr/simulation/ray_transport/ray_client_proxy.py +22 -9
  81. flwr/simulation/run_simulation.py +237 -66
  82. flwr/superexec/app.py +14 -7
  83. flwr/superexec/deployment.py +110 -33
  84. flwr/superexec/exec_grpc.py +5 -1
  85. flwr/superexec/exec_servicer.py +4 -1
  86. flwr/superexec/executor.py +18 -0
  87. flwr/superexec/simulation.py +151 -0
  88. {flwr_nightly-1.10.0.dev20240707.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/METADATA +3 -2
  89. {flwr_nightly-1.10.0.dev20240707.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/RECORD +92 -86
  90. {flwr_nightly-1.10.0.dev20240707.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/LICENSE +0 -0
  91. {flwr_nightly-1.10.0.dev20240707.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/WHEEL +0 -0
  92. {flwr_nightly-1.10.0.dev20240707.dist-info → flwr_nightly-1.10.0.dev20240722.dist-info}/entry_points.txt +0 -0
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
@@ -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
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,4 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
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\"7\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\"#\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
+ 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['_CREATERUNREQUEST']._serialized_start=107
28
- _globals['_CREATERUNREQUEST']._serialized_end=162
29
- _globals['_CREATERUNRESPONSE']._serialized_start=164
30
- _globals['_CREATERUNRESPONSE']._serialized_end=199
31
- _globals['_GETNODESREQUEST']._serialized_start=201
32
- _globals['_GETNODESREQUEST']._serialized_end=234
33
- _globals['_GETNODESRESPONSE']._serialized_start=236
34
- _globals['_GETNODESRESPONSE']._serialized_end=287
35
- _globals['_PUSHTASKINSREQUEST']._serialized_start=289
36
- _globals['_PUSHTASKINSREQUEST']._serialized_end=353
37
- _globals['_PUSHTASKINSRESPONSE']._serialized_start=355
38
- _globals['_PUSHTASKINSRESPONSE']._serialized_end=394
39
- _globals['_PULLTASKRESREQUEST']._serialized_start=396
40
- _globals['_PULLTASKRESREQUEST']._serialized_end=466
41
- _globals['_PULLTASKRESRESPONSE']._serialized_start=468
42
- _globals['_PULLTASKRESRESPONSE']._serialized_end=533
43
- _globals['_DRIVER']._serialized_start=536
44
- _globals['_DRIVER']._serialized_end=924
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\"#\n\x0fStartRunRequest\x12\x10\n\x08\x66\x61\x62_file\x18\x01 \x01(\x0c\"\"\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
+ 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['_STARTRUNREQUEST']._serialized_start=37
25
- _globals['_STARTRUNREQUEST']._serialized_end=72
26
- _globals['_STARTRUNRESPONSE']._serialized_start=74
27
- _globals['_STARTRUNRESPONSE']._serialized_end=108
28
- _globals['_STREAMLOGSREQUEST']._serialized_start=110
29
- _globals['_STREAMLOGSREQUEST']._serialized_end=145
30
- _globals['_STREAMLOGSRESPONSE']._serialized_start=147
31
- _globals['_STREAMLOGSRESPONSE']._serialized_end=187
32
- _globals['_EXEC']._serialized_start=190
33
- _globals['_EXEC']._serialized_end=350
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\":\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\"\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
+ 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['_RUN']._serialized_start=36
25
- _globals['_RUN']._serialized_end=94
26
- _globals['_GETRUNREQUEST']._serialized_start=96
27
- _globals['_GETRUNREQUEST']._serialized_end=127
28
- _globals['_GETRUNRESPONSE']._serialized_start=129
29
- _globals['_GETRUNRESPONSE']._serialized_end=175
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\x1a\x66lwr/proto/transport.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')
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=141
29
- _globals['_TASK']._serialized_end=406
30
- _globals['_TASKINS']._serialized_start=408
31
- _globals['_TASKINS']._serialized_end=500
32
- _globals['_TASKRES']._serialized_start=502
33
- _globals['_TASKRES']._serialized_end=594
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, RecordSet
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
- state: RecordSet,
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
- super().__init__(state)
55
+
56
+ super().__init__(**vars(context))