flwr-nightly 1.13.0.dev20241021__py3-none-any.whl → 1.13.0.dev20241111__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 +2 -2
  2. flwr/cli/config_utils.py +97 -0
  3. flwr/cli/log.py +63 -97
  4. flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +1 -1
  5. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -0
  6. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
  7. flwr/cli/run/run.py +34 -88
  8. flwr/client/app.py +23 -20
  9. flwr/client/clientapp/app.py +22 -18
  10. flwr/client/nodestate/__init__.py +25 -0
  11. flwr/client/nodestate/in_memory_nodestate.py +38 -0
  12. flwr/client/nodestate/nodestate.py +30 -0
  13. flwr/client/nodestate/nodestate_factory.py +37 -0
  14. flwr/client/{node_state.py → run_info_store.py} +4 -3
  15. flwr/client/supernode/app.py +6 -8
  16. flwr/common/args.py +83 -0
  17. flwr/common/config.py +10 -0
  18. flwr/common/constant.py +39 -5
  19. flwr/common/context.py +9 -4
  20. flwr/common/date.py +3 -3
  21. flwr/common/logger.py +108 -1
  22. flwr/common/object_ref.py +47 -16
  23. flwr/common/serde.py +24 -0
  24. flwr/common/telemetry.py +0 -6
  25. flwr/common/typing.py +10 -1
  26. flwr/proto/exec_pb2.py +14 -17
  27. flwr/proto/exec_pb2.pyi +14 -22
  28. flwr/proto/log_pb2.py +29 -0
  29. flwr/proto/log_pb2.pyi +39 -0
  30. flwr/proto/log_pb2_grpc.py +4 -0
  31. flwr/proto/log_pb2_grpc.pyi +4 -0
  32. flwr/proto/message_pb2.py +8 -8
  33. flwr/proto/message_pb2.pyi +4 -1
  34. flwr/proto/run_pb2.py +32 -27
  35. flwr/proto/run_pb2.pyi +26 -0
  36. flwr/proto/serverappio_pb2.py +52 -0
  37. flwr/proto/{driver_pb2.pyi → serverappio_pb2.pyi} +54 -0
  38. flwr/proto/serverappio_pb2_grpc.py +376 -0
  39. flwr/proto/serverappio_pb2_grpc.pyi +147 -0
  40. flwr/proto/simulationio_pb2.py +38 -0
  41. flwr/proto/simulationio_pb2.pyi +65 -0
  42. flwr/proto/simulationio_pb2_grpc.py +205 -0
  43. flwr/proto/simulationio_pb2_grpc.pyi +81 -0
  44. flwr/server/app.py +272 -105
  45. flwr/server/driver/driver.py +15 -1
  46. flwr/server/driver/grpc_driver.py +25 -36
  47. flwr/server/driver/inmemory_driver.py +6 -16
  48. flwr/server/run_serverapp.py +29 -23
  49. flwr/server/{superlink/state → serverapp}/__init__.py +3 -9
  50. flwr/server/serverapp/app.py +214 -0
  51. flwr/server/strategy/aggregate.py +4 -4
  52. flwr/server/strategy/fedadam.py +11 -1
  53. flwr/server/superlink/driver/__init__.py +1 -1
  54. flwr/server/superlink/driver/{driver_grpc.py → serverappio_grpc.py} +19 -16
  55. flwr/server/superlink/driver/{driver_servicer.py → serverappio_servicer.py} +125 -39
  56. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +4 -2
  57. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
  58. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +4 -2
  59. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -2
  60. flwr/server/superlink/fleet/message_handler/message_handler.py +7 -7
  61. flwr/server/superlink/fleet/rest_rere/rest_api.py +7 -7
  62. flwr/server/superlink/fleet/vce/vce_api.py +23 -23
  63. flwr/server/superlink/linkstate/__init__.py +28 -0
  64. flwr/server/superlink/{state/in_memory_state.py → linkstate/in_memory_linkstate.py} +184 -36
  65. flwr/server/superlink/{state/state.py → linkstate/linkstate.py} +149 -19
  66. flwr/server/superlink/{state/state_factory.py → linkstate/linkstate_factory.py} +9 -9
  67. flwr/server/superlink/{state/sqlite_state.py → linkstate/sqlite_linkstate.py} +306 -65
  68. flwr/server/superlink/{state → linkstate}/utils.py +81 -30
  69. flwr/server/superlink/simulation/__init__.py +15 -0
  70. flwr/server/superlink/simulation/simulationio_grpc.py +65 -0
  71. flwr/server/superlink/simulation/simulationio_servicer.py +153 -0
  72. flwr/simulation/__init__.py +5 -1
  73. flwr/simulation/app.py +273 -345
  74. flwr/simulation/legacy_app.py +382 -0
  75. flwr/simulation/ray_transport/ray_client_proxy.py +2 -2
  76. flwr/simulation/run_simulation.py +57 -131
  77. flwr/simulation/simulationio_connection.py +86 -0
  78. flwr/superexec/app.py +6 -134
  79. flwr/superexec/deployment.py +61 -66
  80. flwr/superexec/exec_grpc.py +15 -8
  81. flwr/superexec/exec_servicer.py +36 -65
  82. flwr/superexec/executor.py +26 -7
  83. flwr/superexec/simulation.py +54 -107
  84. {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241111.dist-info}/METADATA +5 -4
  85. {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241111.dist-info}/RECORD +88 -69
  86. {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241111.dist-info}/entry_points.txt +2 -0
  87. flwr/client/node_state_tests.py +0 -66
  88. flwr/proto/driver_pb2.py +0 -42
  89. flwr/proto/driver_pb2_grpc.py +0 -239
  90. flwr/proto/driver_pb2_grpc.pyi +0 -94
  91. {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241111.dist-info}/LICENSE +0 -0
  92. {flwr_nightly-1.13.0.dev20241021.dist-info → flwr_nightly-1.13.0.dev20241111.dist-info}/WHEEL +0 -0
@@ -1,239 +0,0 @@
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
-
5
- from flwr.proto import driver_pb2 as flwr_dot_proto_dot_driver__pb2
6
- from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
7
- from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
8
-
9
-
10
- class DriverStub(object):
11
- """Missing associated documentation comment in .proto file."""
12
-
13
- def __init__(self, channel):
14
- """Constructor.
15
-
16
- Args:
17
- channel: A grpc.Channel.
18
- """
19
- self.CreateRun = channel.unary_unary(
20
- '/flwr.proto.Driver/CreateRun',
21
- request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
22
- response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
23
- )
24
- self.GetNodes = channel.unary_unary(
25
- '/flwr.proto.Driver/GetNodes',
26
- request_serializer=flwr_dot_proto_dot_driver__pb2.GetNodesRequest.SerializeToString,
27
- response_deserializer=flwr_dot_proto_dot_driver__pb2.GetNodesResponse.FromString,
28
- )
29
- self.PushTaskIns = channel.unary_unary(
30
- '/flwr.proto.Driver/PushTaskIns',
31
- request_serializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsRequest.SerializeToString,
32
- response_deserializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsResponse.FromString,
33
- )
34
- self.PullTaskRes = channel.unary_unary(
35
- '/flwr.proto.Driver/PullTaskRes',
36
- request_serializer=flwr_dot_proto_dot_driver__pb2.PullTaskResRequest.SerializeToString,
37
- response_deserializer=flwr_dot_proto_dot_driver__pb2.PullTaskResResponse.FromString,
38
- )
39
- self.GetRun = channel.unary_unary(
40
- '/flwr.proto.Driver/GetRun',
41
- request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
42
- response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
43
- )
44
- self.GetFab = channel.unary_unary(
45
- '/flwr.proto.Driver/GetFab',
46
- request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
47
- response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
48
- )
49
-
50
-
51
- class DriverServicer(object):
52
- """Missing associated documentation comment in .proto file."""
53
-
54
- def CreateRun(self, request, context):
55
- """Request run_id
56
- """
57
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
58
- context.set_details('Method not implemented!')
59
- raise NotImplementedError('Method not implemented!')
60
-
61
- def GetNodes(self, request, context):
62
- """Return a set of nodes
63
- """
64
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
65
- context.set_details('Method not implemented!')
66
- raise NotImplementedError('Method not implemented!')
67
-
68
- def PushTaskIns(self, request, context):
69
- """Create one or more tasks
70
- """
71
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
72
- context.set_details('Method not implemented!')
73
- raise NotImplementedError('Method not implemented!')
74
-
75
- def PullTaskRes(self, request, context):
76
- """Get task results
77
- """
78
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
79
- context.set_details('Method not implemented!')
80
- raise NotImplementedError('Method not implemented!')
81
-
82
- def GetRun(self, request, context):
83
- """Get run details
84
- """
85
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
86
- context.set_details('Method not implemented!')
87
- raise NotImplementedError('Method not implemented!')
88
-
89
- def GetFab(self, request, context):
90
- """Get FAB
91
- """
92
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
93
- context.set_details('Method not implemented!')
94
- raise NotImplementedError('Method not implemented!')
95
-
96
-
97
- def add_DriverServicer_to_server(servicer, server):
98
- rpc_method_handlers = {
99
- 'CreateRun': grpc.unary_unary_rpc_method_handler(
100
- servicer.CreateRun,
101
- request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
102
- response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
103
- ),
104
- 'GetNodes': grpc.unary_unary_rpc_method_handler(
105
- servicer.GetNodes,
106
- request_deserializer=flwr_dot_proto_dot_driver__pb2.GetNodesRequest.FromString,
107
- response_serializer=flwr_dot_proto_dot_driver__pb2.GetNodesResponse.SerializeToString,
108
- ),
109
- 'PushTaskIns': grpc.unary_unary_rpc_method_handler(
110
- servicer.PushTaskIns,
111
- request_deserializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsRequest.FromString,
112
- response_serializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsResponse.SerializeToString,
113
- ),
114
- 'PullTaskRes': grpc.unary_unary_rpc_method_handler(
115
- servicer.PullTaskRes,
116
- request_deserializer=flwr_dot_proto_dot_driver__pb2.PullTaskResRequest.FromString,
117
- response_serializer=flwr_dot_proto_dot_driver__pb2.PullTaskResResponse.SerializeToString,
118
- ),
119
- 'GetRun': grpc.unary_unary_rpc_method_handler(
120
- servicer.GetRun,
121
- request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.FromString,
122
- response_serializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.SerializeToString,
123
- ),
124
- 'GetFab': grpc.unary_unary_rpc_method_handler(
125
- servicer.GetFab,
126
- request_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.FromString,
127
- response_serializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.SerializeToString,
128
- ),
129
- }
130
- generic_handler = grpc.method_handlers_generic_handler(
131
- 'flwr.proto.Driver', rpc_method_handlers)
132
- server.add_generic_rpc_handlers((generic_handler,))
133
-
134
-
135
- # This class is part of an EXPERIMENTAL API.
136
- class Driver(object):
137
- """Missing associated documentation comment in .proto file."""
138
-
139
- @staticmethod
140
- def CreateRun(request,
141
- target,
142
- options=(),
143
- channel_credentials=None,
144
- call_credentials=None,
145
- insecure=False,
146
- compression=None,
147
- wait_for_ready=None,
148
- timeout=None,
149
- metadata=None):
150
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/CreateRun',
151
- flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
152
- flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
153
- options, channel_credentials,
154
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
155
-
156
- @staticmethod
157
- def GetNodes(request,
158
- target,
159
- options=(),
160
- channel_credentials=None,
161
- call_credentials=None,
162
- insecure=False,
163
- compression=None,
164
- wait_for_ready=None,
165
- timeout=None,
166
- metadata=None):
167
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetNodes',
168
- flwr_dot_proto_dot_driver__pb2.GetNodesRequest.SerializeToString,
169
- flwr_dot_proto_dot_driver__pb2.GetNodesResponse.FromString,
170
- options, channel_credentials,
171
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
172
-
173
- @staticmethod
174
- def PushTaskIns(request,
175
- target,
176
- options=(),
177
- channel_credentials=None,
178
- call_credentials=None,
179
- insecure=False,
180
- compression=None,
181
- wait_for_ready=None,
182
- timeout=None,
183
- metadata=None):
184
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PushTaskIns',
185
- flwr_dot_proto_dot_driver__pb2.PushTaskInsRequest.SerializeToString,
186
- flwr_dot_proto_dot_driver__pb2.PushTaskInsResponse.FromString,
187
- options, channel_credentials,
188
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
189
-
190
- @staticmethod
191
- def PullTaskRes(request,
192
- target,
193
- options=(),
194
- channel_credentials=None,
195
- call_credentials=None,
196
- insecure=False,
197
- compression=None,
198
- wait_for_ready=None,
199
- timeout=None,
200
- metadata=None):
201
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PullTaskRes',
202
- flwr_dot_proto_dot_driver__pb2.PullTaskResRequest.SerializeToString,
203
- flwr_dot_proto_dot_driver__pb2.PullTaskResResponse.FromString,
204
- options, channel_credentials,
205
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
206
-
207
- @staticmethod
208
- def GetRun(request,
209
- target,
210
- options=(),
211
- channel_credentials=None,
212
- call_credentials=None,
213
- insecure=False,
214
- compression=None,
215
- wait_for_ready=None,
216
- timeout=None,
217
- metadata=None):
218
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetRun',
219
- flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
220
- flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
221
- options, channel_credentials,
222
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
223
-
224
- @staticmethod
225
- def GetFab(request,
226
- target,
227
- options=(),
228
- channel_credentials=None,
229
- call_credentials=None,
230
- insecure=False,
231
- compression=None,
232
- wait_for_ready=None,
233
- timeout=None,
234
- metadata=None):
235
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetFab',
236
- flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
237
- flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
238
- options, channel_credentials,
239
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1,94 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- """
5
- import abc
6
- import flwr.proto.driver_pb2
7
- import flwr.proto.fab_pb2
8
- import flwr.proto.run_pb2
9
- import grpc
10
-
11
- class DriverStub:
12
- def __init__(self, channel: grpc.Channel) -> None: ...
13
- CreateRun: grpc.UnaryUnaryMultiCallable[
14
- flwr.proto.run_pb2.CreateRunRequest,
15
- flwr.proto.run_pb2.CreateRunResponse]
16
- """Request run_id"""
17
-
18
- GetNodes: grpc.UnaryUnaryMultiCallable[
19
- flwr.proto.driver_pb2.GetNodesRequest,
20
- flwr.proto.driver_pb2.GetNodesResponse]
21
- """Return a set of nodes"""
22
-
23
- PushTaskIns: grpc.UnaryUnaryMultiCallable[
24
- flwr.proto.driver_pb2.PushTaskInsRequest,
25
- flwr.proto.driver_pb2.PushTaskInsResponse]
26
- """Create one or more tasks"""
27
-
28
- PullTaskRes: grpc.UnaryUnaryMultiCallable[
29
- flwr.proto.driver_pb2.PullTaskResRequest,
30
- flwr.proto.driver_pb2.PullTaskResResponse]
31
- """Get task results"""
32
-
33
- GetRun: grpc.UnaryUnaryMultiCallable[
34
- flwr.proto.run_pb2.GetRunRequest,
35
- flwr.proto.run_pb2.GetRunResponse]
36
- """Get run details"""
37
-
38
- GetFab: grpc.UnaryUnaryMultiCallable[
39
- flwr.proto.fab_pb2.GetFabRequest,
40
- flwr.proto.fab_pb2.GetFabResponse]
41
- """Get FAB"""
42
-
43
-
44
- class DriverServicer(metaclass=abc.ABCMeta):
45
- @abc.abstractmethod
46
- def CreateRun(self,
47
- request: flwr.proto.run_pb2.CreateRunRequest,
48
- context: grpc.ServicerContext,
49
- ) -> flwr.proto.run_pb2.CreateRunResponse:
50
- """Request run_id"""
51
- pass
52
-
53
- @abc.abstractmethod
54
- def GetNodes(self,
55
- request: flwr.proto.driver_pb2.GetNodesRequest,
56
- context: grpc.ServicerContext,
57
- ) -> flwr.proto.driver_pb2.GetNodesResponse:
58
- """Return a set of nodes"""
59
- pass
60
-
61
- @abc.abstractmethod
62
- def PushTaskIns(self,
63
- request: flwr.proto.driver_pb2.PushTaskInsRequest,
64
- context: grpc.ServicerContext,
65
- ) -> flwr.proto.driver_pb2.PushTaskInsResponse:
66
- """Create one or more tasks"""
67
- pass
68
-
69
- @abc.abstractmethod
70
- def PullTaskRes(self,
71
- request: flwr.proto.driver_pb2.PullTaskResRequest,
72
- context: grpc.ServicerContext,
73
- ) -> flwr.proto.driver_pb2.PullTaskResResponse:
74
- """Get task results"""
75
- pass
76
-
77
- @abc.abstractmethod
78
- def GetRun(self,
79
- request: flwr.proto.run_pb2.GetRunRequest,
80
- context: grpc.ServicerContext,
81
- ) -> flwr.proto.run_pb2.GetRunResponse:
82
- """Get run details"""
83
- pass
84
-
85
- @abc.abstractmethod
86
- def GetFab(self,
87
- request: flwr.proto.fab_pb2.GetFabRequest,
88
- context: grpc.ServicerContext,
89
- ) -> flwr.proto.fab_pb2.GetFabResponse:
90
- """Get FAB"""
91
- pass
92
-
93
-
94
- def add_DriverServicer_to_server(servicer: DriverServicer, server: grpc.Server) -> None: ...