flwr 1.13.0__py3-none-any.whl → 1.14.0__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.
Files changed (120) hide show
  1. flwr/cli/app.py +5 -0
  2. flwr/cli/build.py +1 -37
  3. flwr/cli/cli_user_auth_interceptor.py +86 -0
  4. flwr/cli/config_utils.py +19 -2
  5. flwr/cli/example.py +1 -0
  6. flwr/cli/install.py +2 -19
  7. flwr/cli/log.py +18 -36
  8. flwr/cli/login/__init__.py +22 -0
  9. flwr/cli/login/login.py +81 -0
  10. flwr/cli/ls.py +205 -106
  11. flwr/cli/new/__init__.py +1 -0
  12. flwr/cli/new/new.py +25 -14
  13. flwr/cli/new/templates/app/.gitignore.tpl +3 -0
  14. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  15. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +3 -3
  16. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  17. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  18. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +2 -3
  19. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  20. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
  21. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  22. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
  23. flwr/cli/run/__init__.py +1 -0
  24. flwr/cli/run/run.py +89 -39
  25. flwr/cli/stop.py +130 -0
  26. flwr/cli/utils.py +172 -8
  27. flwr/client/app.py +14 -3
  28. flwr/client/client.py +1 -32
  29. flwr/client/clientapp/app.py +4 -8
  30. flwr/client/clientapp/utils.py +1 -0
  31. flwr/client/grpc_adapter_client/connection.py +1 -1
  32. flwr/client/grpc_client/connection.py +1 -1
  33. flwr/client/grpc_rere_client/connection.py +13 -7
  34. flwr/client/message_handler/message_handler.py +1 -2
  35. flwr/client/mod/comms_mods.py +1 -0
  36. flwr/client/mod/localdp_mod.py +1 -1
  37. flwr/client/nodestate/__init__.py +1 -0
  38. flwr/client/nodestate/nodestate.py +1 -0
  39. flwr/client/nodestate/nodestate_factory.py +1 -0
  40. flwr/client/numpy_client.py +0 -44
  41. flwr/client/rest_client/connection.py +3 -3
  42. flwr/client/supernode/app.py +2 -2
  43. flwr/common/address.py +1 -0
  44. flwr/common/args.py +1 -0
  45. flwr/common/auth_plugin/__init__.py +24 -0
  46. flwr/common/auth_plugin/auth_plugin.py +111 -0
  47. flwr/common/config.py +3 -1
  48. flwr/common/constant.py +17 -1
  49. flwr/common/logger.py +40 -0
  50. flwr/common/message.py +1 -0
  51. flwr/common/object_ref.py +57 -54
  52. flwr/common/pyproject.py +1 -0
  53. flwr/common/record/__init__.py +1 -0
  54. flwr/common/record/parametersrecord.py +1 -0
  55. flwr/common/retry_invoker.py +77 -0
  56. flwr/common/secure_aggregation/secaggplus_utils.py +2 -2
  57. flwr/common/telemetry.py +15 -4
  58. flwr/common/typing.py +12 -0
  59. flwr/common/version.py +1 -0
  60. flwr/proto/exec_pb2.py +38 -14
  61. flwr/proto/exec_pb2.pyi +107 -2
  62. flwr/proto/exec_pb2_grpc.py +102 -0
  63. flwr/proto/exec_pb2_grpc.pyi +39 -0
  64. flwr/proto/fab_pb2.py +4 -4
  65. flwr/proto/fab_pb2.pyi +4 -1
  66. flwr/proto/serverappio_pb2.py +18 -18
  67. flwr/proto/serverappio_pb2.pyi +8 -2
  68. flwr/proto/serverappio_pb2_grpc.py +34 -0
  69. flwr/proto/serverappio_pb2_grpc.pyi +13 -0
  70. flwr/proto/simulationio_pb2.py +2 -2
  71. flwr/proto/simulationio_pb2_grpc.py +34 -0
  72. flwr/proto/simulationio_pb2_grpc.pyi +13 -0
  73. flwr/server/app.py +62 -7
  74. flwr/server/compat/app_utils.py +7 -1
  75. flwr/server/driver/grpc_driver.py +11 -63
  76. flwr/server/driver/inmemory_driver.py +5 -1
  77. flwr/server/run_serverapp.py +8 -9
  78. flwr/server/serverapp/app.py +25 -10
  79. flwr/server/strategy/dpfedavg_fixed.py +1 -0
  80. flwr/server/superlink/driver/serverappio_grpc.py +1 -0
  81. flwr/server/superlink/driver/serverappio_servicer.py +82 -23
  82. flwr/server/superlink/ffs/disk_ffs.py +1 -0
  83. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +1 -0
  84. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -0
  85. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +32 -12
  86. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +12 -11
  87. flwr/server/superlink/fleet/message_handler/message_handler.py +32 -5
  88. flwr/server/superlink/fleet/rest_rere/rest_api.py +4 -1
  89. flwr/server/superlink/fleet/vce/__init__.py +1 -0
  90. flwr/server/superlink/fleet/vce/backend/__init__.py +1 -0
  91. flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -0
  92. flwr/server/superlink/linkstate/in_memory_linkstate.py +21 -30
  93. flwr/server/superlink/linkstate/linkstate.py +17 -2
  94. flwr/server/superlink/linkstate/sqlite_linkstate.py +30 -49
  95. flwr/server/superlink/simulation/simulationio_servicer.py +33 -0
  96. flwr/server/superlink/utils.py +65 -0
  97. flwr/simulation/app.py +59 -52
  98. flwr/simulation/ray_transport/ray_actor.py +1 -0
  99. flwr/simulation/ray_transport/utils.py +1 -0
  100. flwr/simulation/run_simulation.py +36 -22
  101. flwr/simulation/simulationio_connection.py +3 -0
  102. flwr/superexec/app.py +1 -0
  103. flwr/superexec/deployment.py +1 -0
  104. flwr/superexec/exec_grpc.py +19 -1
  105. flwr/superexec/exec_servicer.py +76 -2
  106. flwr/superexec/exec_user_auth_interceptor.py +101 -0
  107. flwr/superexec/executor.py +1 -0
  108. {flwr-1.13.0.dist-info → flwr-1.14.0.dist-info}/METADATA +8 -8
  109. {flwr-1.13.0.dist-info → flwr-1.14.0.dist-info}/RECORD +112 -112
  110. flwr/proto/common_pb2.py +0 -36
  111. flwr/proto/common_pb2.pyi +0 -121
  112. flwr/proto/common_pb2_grpc.py +0 -4
  113. flwr/proto/common_pb2_grpc.pyi +0 -4
  114. flwr/proto/control_pb2.py +0 -27
  115. flwr/proto/control_pb2.pyi +0 -7
  116. flwr/proto/control_pb2_grpc.py +0 -135
  117. flwr/proto/control_pb2_grpc.pyi +0 -53
  118. {flwr-1.13.0.dist-info → flwr-1.14.0.dist-info}/LICENSE +0 -0
  119. {flwr-1.13.0.dist-info → flwr-1.14.0.dist-info}/WHEEL +0 -0
  120. {flwr-1.13.0.dist-info → flwr-1.14.0.dist-info}/entry_points.txt +0 -0
flwr/proto/common_pb2.pyi DELETED
@@ -1,121 +0,0 @@
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
@@ -1,4 +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
-
@@ -1,4 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- """
flwr/proto/control_pb2.py DELETED
@@ -1,27 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: flwr/proto/control.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
- from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
16
-
17
-
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto2\x88\x02\n\x07\x43ontrol\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x62\x06proto3')
19
-
20
- _globals = globals()
21
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.control_pb2', _globals)
23
- if _descriptor._USE_C_DESCRIPTORS == False:
24
- DESCRIPTOR._options = None
25
- _globals['_CONTROL']._serialized_start=63
26
- _globals['_CONTROL']._serialized_end=327
27
- # @@protoc_insertion_point(module_scope)
@@ -1,7 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- """
5
- import google.protobuf.descriptor
6
-
7
- DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
@@ -1,135 +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 run_pb2 as flwr_dot_proto_dot_run__pb2
6
-
7
-
8
- class ControlStub(object):
9
- """Missing associated documentation comment in .proto file."""
10
-
11
- def __init__(self, channel):
12
- """Constructor.
13
-
14
- Args:
15
- channel: A grpc.Channel.
16
- """
17
- self.CreateRun = channel.unary_unary(
18
- '/flwr.proto.Control/CreateRun',
19
- request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
20
- response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
21
- )
22
- self.GetRunStatus = channel.unary_unary(
23
- '/flwr.proto.Control/GetRunStatus',
24
- request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
25
- response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
26
- )
27
- self.UpdateRunStatus = channel.unary_unary(
28
- '/flwr.proto.Control/UpdateRunStatus',
29
- request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
30
- response_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
31
- )
32
-
33
-
34
- class ControlServicer(object):
35
- """Missing associated documentation comment in .proto file."""
36
-
37
- def CreateRun(self, request, context):
38
- """Request to create a new run
39
- """
40
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
41
- context.set_details('Method not implemented!')
42
- raise NotImplementedError('Method not implemented!')
43
-
44
- def GetRunStatus(self, request, context):
45
- """Get the status of a given run
46
- """
47
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
48
- context.set_details('Method not implemented!')
49
- raise NotImplementedError('Method not implemented!')
50
-
51
- def UpdateRunStatus(self, request, context):
52
- """Update the status of a given run
53
- """
54
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
55
- context.set_details('Method not implemented!')
56
- raise NotImplementedError('Method not implemented!')
57
-
58
-
59
- def add_ControlServicer_to_server(servicer, server):
60
- rpc_method_handlers = {
61
- 'CreateRun': grpc.unary_unary_rpc_method_handler(
62
- servicer.CreateRun,
63
- request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
64
- response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
65
- ),
66
- 'GetRunStatus': grpc.unary_unary_rpc_method_handler(
67
- servicer.GetRunStatus,
68
- request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
69
- response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
70
- ),
71
- 'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
72
- servicer.UpdateRunStatus,
73
- request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
74
- response_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.SerializeToString,
75
- ),
76
- }
77
- generic_handler = grpc.method_handlers_generic_handler(
78
- 'flwr.proto.Control', rpc_method_handlers)
79
- server.add_generic_rpc_handlers((generic_handler,))
80
-
81
-
82
- # This class is part of an EXPERIMENTAL API.
83
- class Control(object):
84
- """Missing associated documentation comment in .proto file."""
85
-
86
- @staticmethod
87
- def CreateRun(request,
88
- target,
89
- options=(),
90
- channel_credentials=None,
91
- call_credentials=None,
92
- insecure=False,
93
- compression=None,
94
- wait_for_ready=None,
95
- timeout=None,
96
- metadata=None):
97
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/CreateRun',
98
- flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
99
- flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
100
- options, channel_credentials,
101
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
102
-
103
- @staticmethod
104
- def GetRunStatus(request,
105
- target,
106
- options=(),
107
- channel_credentials=None,
108
- call_credentials=None,
109
- insecure=False,
110
- compression=None,
111
- wait_for_ready=None,
112
- timeout=None,
113
- metadata=None):
114
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/GetRunStatus',
115
- flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
116
- flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
117
- options, channel_credentials,
118
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
119
-
120
- @staticmethod
121
- def UpdateRunStatus(request,
122
- target,
123
- options=(),
124
- channel_credentials=None,
125
- call_credentials=None,
126
- insecure=False,
127
- compression=None,
128
- wait_for_ready=None,
129
- timeout=None,
130
- metadata=None):
131
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/UpdateRunStatus',
132
- flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
133
- flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
134
- options, channel_credentials,
135
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1,53 +0,0 @@
1
- """
2
- @generated by mypy-protobuf. Do not edit manually!
3
- isort:skip_file
4
- """
5
- import abc
6
- import flwr.proto.run_pb2
7
- import grpc
8
-
9
- class ControlStub:
10
- def __init__(self, channel: grpc.Channel) -> None: ...
11
- CreateRun: grpc.UnaryUnaryMultiCallable[
12
- flwr.proto.run_pb2.CreateRunRequest,
13
- flwr.proto.run_pb2.CreateRunResponse]
14
- """Request to create a new run"""
15
-
16
- GetRunStatus: grpc.UnaryUnaryMultiCallable[
17
- flwr.proto.run_pb2.GetRunStatusRequest,
18
- flwr.proto.run_pb2.GetRunStatusResponse]
19
- """Get the status of a given run"""
20
-
21
- UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
22
- flwr.proto.run_pb2.UpdateRunStatusRequest,
23
- flwr.proto.run_pb2.UpdateRunStatusResponse]
24
- """Update the status of a given run"""
25
-
26
-
27
- class ControlServicer(metaclass=abc.ABCMeta):
28
- @abc.abstractmethod
29
- def CreateRun(self,
30
- request: flwr.proto.run_pb2.CreateRunRequest,
31
- context: grpc.ServicerContext,
32
- ) -> flwr.proto.run_pb2.CreateRunResponse:
33
- """Request to create a new run"""
34
- pass
35
-
36
- @abc.abstractmethod
37
- def GetRunStatus(self,
38
- request: flwr.proto.run_pb2.GetRunStatusRequest,
39
- context: grpc.ServicerContext,
40
- ) -> flwr.proto.run_pb2.GetRunStatusResponse:
41
- """Get the status of a given run"""
42
- pass
43
-
44
- @abc.abstractmethod
45
- def UpdateRunStatus(self,
46
- request: flwr.proto.run_pb2.UpdateRunStatusRequest,
47
- context: grpc.ServicerContext,
48
- ) -> flwr.proto.run_pb2.UpdateRunStatusResponse:
49
- """Update the status of a given run"""
50
- pass
51
-
52
-
53
- def add_ControlServicer_to_server(servicer: ControlServicer, server: grpc.Server) -> None: ...
File without changes
File without changes