flwr-nightly 1.13.0.dev20241019__py3-none-any.whl → 1.13.0.dev20241106__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 (81) 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 +18 -83
  8. flwr/client/app.py +13 -14
  9. flwr/client/clientapp/app.py +1 -2
  10. flwr/client/{node_state.py → run_info_store.py} +4 -3
  11. flwr/client/supernode/app.py +6 -8
  12. flwr/common/constant.py +39 -4
  13. flwr/common/context.py +9 -4
  14. flwr/common/date.py +3 -3
  15. flwr/common/logger.py +103 -0
  16. flwr/common/serde.py +24 -0
  17. flwr/common/telemetry.py +0 -6
  18. flwr/common/typing.py +9 -0
  19. flwr/proto/exec_pb2.py +6 -6
  20. flwr/proto/exec_pb2.pyi +8 -2
  21. flwr/proto/log_pb2.py +29 -0
  22. flwr/proto/log_pb2.pyi +39 -0
  23. flwr/proto/log_pb2_grpc.py +4 -0
  24. flwr/proto/log_pb2_grpc.pyi +4 -0
  25. flwr/proto/message_pb2.py +8 -8
  26. flwr/proto/message_pb2.pyi +4 -1
  27. flwr/proto/serverappio_pb2.py +52 -0
  28. flwr/proto/{driver_pb2.pyi → serverappio_pb2.pyi} +54 -0
  29. flwr/proto/serverappio_pb2_grpc.py +376 -0
  30. flwr/proto/serverappio_pb2_grpc.pyi +147 -0
  31. flwr/proto/simulationio_pb2.py +38 -0
  32. flwr/proto/simulationio_pb2.pyi +65 -0
  33. flwr/proto/simulationio_pb2_grpc.py +171 -0
  34. flwr/proto/simulationio_pb2_grpc.pyi +68 -0
  35. flwr/server/app.py +247 -105
  36. flwr/server/driver/driver.py +15 -1
  37. flwr/server/driver/grpc_driver.py +26 -33
  38. flwr/server/driver/inmemory_driver.py +6 -14
  39. flwr/server/run_serverapp.py +29 -23
  40. flwr/server/{superlink/state → serverapp}/__init__.py +3 -9
  41. flwr/server/serverapp/app.py +270 -0
  42. flwr/server/strategy/fedadam.py +11 -1
  43. flwr/server/superlink/driver/__init__.py +1 -1
  44. flwr/server/superlink/driver/{driver_grpc.py → serverappio_grpc.py} +19 -16
  45. flwr/server/superlink/driver/{driver_servicer.py → serverappio_servicer.py} +125 -39
  46. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +4 -2
  47. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
  48. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +4 -2
  49. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -2
  50. flwr/server/superlink/fleet/message_handler/message_handler.py +7 -7
  51. flwr/server/superlink/fleet/rest_rere/rest_api.py +7 -7
  52. flwr/server/superlink/fleet/vce/vce_api.py +23 -23
  53. flwr/server/superlink/linkstate/__init__.py +28 -0
  54. flwr/server/superlink/{state/in_memory_state.py → linkstate/in_memory_linkstate.py} +180 -21
  55. flwr/server/superlink/{state/state.py → linkstate/linkstate.py} +144 -15
  56. flwr/server/superlink/{state/state_factory.py → linkstate/linkstate_factory.py} +9 -9
  57. flwr/server/superlink/{state/sqlite_state.py → linkstate/sqlite_linkstate.py} +300 -50
  58. flwr/server/superlink/{state → linkstate}/utils.py +84 -2
  59. flwr/server/superlink/simulation/__init__.py +15 -0
  60. flwr/server/superlink/simulation/simulationio_grpc.py +65 -0
  61. flwr/server/superlink/simulation/simulationio_servicer.py +132 -0
  62. flwr/simulation/__init__.py +2 -0
  63. flwr/simulation/app.py +1 -1
  64. flwr/simulation/ray_transport/ray_client_proxy.py +2 -2
  65. flwr/simulation/run_simulation.py +57 -131
  66. flwr/simulation/simulationio_connection.py +86 -0
  67. flwr/superexec/app.py +6 -134
  68. flwr/superexec/deployment.py +60 -65
  69. flwr/superexec/exec_grpc.py +15 -8
  70. flwr/superexec/exec_servicer.py +34 -63
  71. flwr/superexec/executor.py +22 -4
  72. flwr/superexec/simulation.py +13 -8
  73. {flwr_nightly-1.13.0.dev20241019.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/METADATA +1 -1
  74. {flwr_nightly-1.13.0.dev20241019.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/RECORD +77 -64
  75. {flwr_nightly-1.13.0.dev20241019.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/entry_points.txt +1 -0
  76. flwr/client/node_state_tests.py +0 -66
  77. flwr/proto/driver_pb2.py +0 -42
  78. flwr/proto/driver_pb2_grpc.py +0 -239
  79. flwr/proto/driver_pb2_grpc.pyi +0 -94
  80. {flwr_nightly-1.13.0.dev20241019.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/LICENSE +0 -0
  81. {flwr_nightly-1.13.0.dev20241019.dist-info → flwr_nightly-1.13.0.dev20241106.dist-info}/WHEEL +0 -0
@@ -0,0 +1,65 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import flwr.proto.fab_pb2
7
+ import flwr.proto.message_pb2
8
+ import flwr.proto.run_pb2
9
+ import google.protobuf.descriptor
10
+ import google.protobuf.message
11
+ import typing
12
+ import typing_extensions
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ class PullSimulationInputsRequest(google.protobuf.message.Message):
17
+ """PullSimulationInputs messages"""
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+ def __init__(self,
20
+ ) -> None: ...
21
+ global___PullSimulationInputsRequest = PullSimulationInputsRequest
22
+
23
+ class PullSimulationInputsResponse(google.protobuf.message.Message):
24
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
25
+ CONTEXT_FIELD_NUMBER: builtins.int
26
+ RUN_FIELD_NUMBER: builtins.int
27
+ FAB_FIELD_NUMBER: builtins.int
28
+ @property
29
+ def context(self) -> flwr.proto.message_pb2.Context: ...
30
+ @property
31
+ def run(self) -> flwr.proto.run_pb2.Run: ...
32
+ @property
33
+ def fab(self) -> flwr.proto.fab_pb2.Fab: ...
34
+ def __init__(self,
35
+ *,
36
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
37
+ run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
38
+ fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
39
+ ) -> None: ...
40
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
41
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
42
+ global___PullSimulationInputsResponse = PullSimulationInputsResponse
43
+
44
+ class PushSimulationOutputsRequest(google.protobuf.message.Message):
45
+ """PushSimulationOutputs messages"""
46
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
47
+ RUN_ID_FIELD_NUMBER: builtins.int
48
+ CONTEXT_FIELD_NUMBER: builtins.int
49
+ run_id: builtins.int
50
+ @property
51
+ def context(self) -> flwr.proto.message_pb2.Context: ...
52
+ def __init__(self,
53
+ *,
54
+ run_id: builtins.int = ...,
55
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
56
+ ) -> None: ...
57
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
58
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
59
+ global___PushSimulationOutputsRequest = PushSimulationOutputsRequest
60
+
61
+ class PushSimulationOutputsResponse(google.protobuf.message.Message):
62
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
63
+ def __init__(self,
64
+ ) -> None: ...
65
+ global___PushSimulationOutputsResponse = PushSimulationOutputsResponse
@@ -0,0 +1,171 @@
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 log_pb2 as flwr_dot_proto_dot_log__pb2
6
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
7
+ from flwr.proto import simulationio_pb2 as flwr_dot_proto_dot_simulationio__pb2
8
+
9
+
10
+ class SimulationIoStub(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.PullSimulationInputs = channel.unary_unary(
20
+ '/flwr.proto.SimulationIo/PullSimulationInputs',
21
+ request_serializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.SerializeToString,
22
+ response_deserializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.FromString,
23
+ )
24
+ self.PushSimulationOutputs = channel.unary_unary(
25
+ '/flwr.proto.SimulationIo/PushSimulationOutputs',
26
+ request_serializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.SerializeToString,
27
+ response_deserializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.FromString,
28
+ )
29
+ self.UpdateRunStatus = channel.unary_unary(
30
+ '/flwr.proto.SimulationIo/UpdateRunStatus',
31
+ request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
32
+ response_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
33
+ )
34
+ self.PushLogs = channel.unary_unary(
35
+ '/flwr.proto.SimulationIo/PushLogs',
36
+ request_serializer=flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
37
+ response_deserializer=flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
38
+ )
39
+
40
+
41
+ class SimulationIoServicer(object):
42
+ """Missing associated documentation comment in .proto file."""
43
+
44
+ def PullSimulationInputs(self, request, context):
45
+ """Pull Simulation inputs
46
+ """
47
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
48
+ context.set_details('Method not implemented!')
49
+ raise NotImplementedError('Method not implemented!')
50
+
51
+ def PushSimulationOutputs(self, request, context):
52
+ """Push Simulation outputs
53
+ """
54
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
55
+ context.set_details('Method not implemented!')
56
+ raise NotImplementedError('Method not implemented!')
57
+
58
+ def UpdateRunStatus(self, request, context):
59
+ """Update the status of a given run
60
+ """
61
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
62
+ context.set_details('Method not implemented!')
63
+ raise NotImplementedError('Method not implemented!')
64
+
65
+ def PushLogs(self, request, context):
66
+ """Push ServerApp logs
67
+ """
68
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
69
+ context.set_details('Method not implemented!')
70
+ raise NotImplementedError('Method not implemented!')
71
+
72
+
73
+ def add_SimulationIoServicer_to_server(servicer, server):
74
+ rpc_method_handlers = {
75
+ 'PullSimulationInputs': grpc.unary_unary_rpc_method_handler(
76
+ servicer.PullSimulationInputs,
77
+ request_deserializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.FromString,
78
+ response_serializer=flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.SerializeToString,
79
+ ),
80
+ 'PushSimulationOutputs': grpc.unary_unary_rpc_method_handler(
81
+ servicer.PushSimulationOutputs,
82
+ request_deserializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.FromString,
83
+ response_serializer=flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.SerializeToString,
84
+ ),
85
+ 'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
86
+ servicer.UpdateRunStatus,
87
+ request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
88
+ response_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.SerializeToString,
89
+ ),
90
+ 'PushLogs': grpc.unary_unary_rpc_method_handler(
91
+ servicer.PushLogs,
92
+ request_deserializer=flwr_dot_proto_dot_log__pb2.PushLogsRequest.FromString,
93
+ response_serializer=flwr_dot_proto_dot_log__pb2.PushLogsResponse.SerializeToString,
94
+ ),
95
+ }
96
+ generic_handler = grpc.method_handlers_generic_handler(
97
+ 'flwr.proto.SimulationIo', rpc_method_handlers)
98
+ server.add_generic_rpc_handlers((generic_handler,))
99
+
100
+
101
+ # This class is part of an EXPERIMENTAL API.
102
+ class SimulationIo(object):
103
+ """Missing associated documentation comment in .proto file."""
104
+
105
+ @staticmethod
106
+ def PullSimulationInputs(request,
107
+ target,
108
+ options=(),
109
+ channel_credentials=None,
110
+ call_credentials=None,
111
+ insecure=False,
112
+ compression=None,
113
+ wait_for_ready=None,
114
+ timeout=None,
115
+ metadata=None):
116
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/PullSimulationInputs',
117
+ flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsRequest.SerializeToString,
118
+ flwr_dot_proto_dot_simulationio__pb2.PullSimulationInputsResponse.FromString,
119
+ options, channel_credentials,
120
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
121
+
122
+ @staticmethod
123
+ def PushSimulationOutputs(request,
124
+ target,
125
+ options=(),
126
+ channel_credentials=None,
127
+ call_credentials=None,
128
+ insecure=False,
129
+ compression=None,
130
+ wait_for_ready=None,
131
+ timeout=None,
132
+ metadata=None):
133
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/PushSimulationOutputs',
134
+ flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsRequest.SerializeToString,
135
+ flwr_dot_proto_dot_simulationio__pb2.PushSimulationOutputsResponse.FromString,
136
+ options, channel_credentials,
137
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
138
+
139
+ @staticmethod
140
+ def UpdateRunStatus(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.SimulationIo/UpdateRunStatus',
151
+ flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
152
+ flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
153
+ options, channel_credentials,
154
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
155
+
156
+ @staticmethod
157
+ def PushLogs(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.SimulationIo/PushLogs',
168
+ flwr_dot_proto_dot_log__pb2.PushLogsRequest.SerializeToString,
169
+ flwr_dot_proto_dot_log__pb2.PushLogsResponse.FromString,
170
+ options, channel_credentials,
171
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -0,0 +1,68 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import abc
6
+ import flwr.proto.log_pb2
7
+ import flwr.proto.run_pb2
8
+ import flwr.proto.simulationio_pb2
9
+ import grpc
10
+
11
+ class SimulationIoStub:
12
+ def __init__(self, channel: grpc.Channel) -> None: ...
13
+ PullSimulationInputs: grpc.UnaryUnaryMultiCallable[
14
+ flwr.proto.simulationio_pb2.PullSimulationInputsRequest,
15
+ flwr.proto.simulationio_pb2.PullSimulationInputsResponse]
16
+ """Pull Simulation inputs"""
17
+
18
+ PushSimulationOutputs: grpc.UnaryUnaryMultiCallable[
19
+ flwr.proto.simulationio_pb2.PushSimulationOutputsRequest,
20
+ flwr.proto.simulationio_pb2.PushSimulationOutputsResponse]
21
+ """Push Simulation outputs"""
22
+
23
+ UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
24
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
25
+ flwr.proto.run_pb2.UpdateRunStatusResponse]
26
+ """Update the status of a given run"""
27
+
28
+ PushLogs: grpc.UnaryUnaryMultiCallable[
29
+ flwr.proto.log_pb2.PushLogsRequest,
30
+ flwr.proto.log_pb2.PushLogsResponse]
31
+ """Push ServerApp logs"""
32
+
33
+
34
+ class SimulationIoServicer(metaclass=abc.ABCMeta):
35
+ @abc.abstractmethod
36
+ def PullSimulationInputs(self,
37
+ request: flwr.proto.simulationio_pb2.PullSimulationInputsRequest,
38
+ context: grpc.ServicerContext,
39
+ ) -> flwr.proto.simulationio_pb2.PullSimulationInputsResponse:
40
+ """Pull Simulation inputs"""
41
+ pass
42
+
43
+ @abc.abstractmethod
44
+ def PushSimulationOutputs(self,
45
+ request: flwr.proto.simulationio_pb2.PushSimulationOutputsRequest,
46
+ context: grpc.ServicerContext,
47
+ ) -> flwr.proto.simulationio_pb2.PushSimulationOutputsResponse:
48
+ """Push Simulation outputs"""
49
+ pass
50
+
51
+ @abc.abstractmethod
52
+ def UpdateRunStatus(self,
53
+ request: flwr.proto.run_pb2.UpdateRunStatusRequest,
54
+ context: grpc.ServicerContext,
55
+ ) -> flwr.proto.run_pb2.UpdateRunStatusResponse:
56
+ """Update the status of a given run"""
57
+ pass
58
+
59
+ @abc.abstractmethod
60
+ def PushLogs(self,
61
+ request: flwr.proto.log_pb2.PushLogsRequest,
62
+ context: grpc.ServicerContext,
63
+ ) -> flwr.proto.log_pb2.PushLogsResponse:
64
+ """Push ServerApp logs"""
65
+ pass
66
+
67
+
68
+ def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: grpc.Server) -> None: ...