From 2a8b57f3d343016d397b3ddf8fe1025edecaf564 Mon Sep 17 00:00:00 2001 From: mohammadnaseri Date: Tue, 10 Sep 2024 17:58:52 +0100 Subject: [PATCH 1/4] Update sint64 to uint64 --- src/proto/flwr/proto/clientappio.proto | 6 +- src/proto/flwr/proto/driver.proto | 4 +- src/proto/flwr/proto/exec.proto | 4 +- src/proto/flwr/proto/message.proto | 8 +- src/proto/flwr/proto/node.proto | 2 +- src/proto/flwr/proto/run.proto | 4 +- src/proto/flwr/proto/task.proto | 4 +- .../server/superlink/state/sqlite_state.py | 83 +++++++++++++++---- src/py/flwr/server/superlink/state/utils.py | 34 +++++++- .../flwr/server/superlink/state/utils_test.py | 53 ++++++++++++ 10 files changed, 170 insertions(+), 32 deletions(-) create mode 100644 src/py/flwr/server/superlink/state/utils_test.py diff --git a/src/proto/flwr/proto/clientappio.proto b/src/proto/flwr/proto/clientappio.proto index 898cb04c5b5b..376df1e28001 100644 --- a/src/proto/flwr/proto/clientappio.proto +++ b/src/proto/flwr/proto/clientappio.proto @@ -30,9 +30,9 @@ message ClientAppOutputStatus { } message GetTokenRequest {} -message GetTokenResponse { sint64 token = 1; } +message GetTokenResponse { uint64 token = 1; } -message PullClientAppInputsRequest { sint64 token = 1; } +message PullClientAppInputsRequest { uint64 token = 1; } message PullClientAppInputsResponse { Message message = 1; Context context = 2; @@ -41,7 +41,7 @@ message PullClientAppInputsResponse { } message PushClientAppOutputsRequest { - sint64 token = 1; + uint64 token = 1; Message message = 2; Context context = 3; } diff --git a/src/proto/flwr/proto/driver.proto b/src/proto/flwr/proto/driver.proto index 63a2f78e6f6d..c7ae7dcf30f0 100644 --- a/src/proto/flwr/proto/driver.proto +++ b/src/proto/flwr/proto/driver.proto @@ -50,10 +50,10 @@ message CreateRunRequest { map override_config = 3; Fab fab = 4; } -message CreateRunResponse { sint64 run_id = 1; } +message CreateRunResponse { uint64 run_id = 1; } // GetNodes messages -message GetNodesRequest { sint64 run_id = 1; } +message GetNodesRequest { uint64 run_id = 1; } message GetNodesResponse { repeated Node nodes = 1; } // PushTaskIns messages diff --git a/src/proto/flwr/proto/exec.proto b/src/proto/flwr/proto/exec.proto index 65faf4386ea0..ad0723c0480c 100644 --- a/src/proto/flwr/proto/exec.proto +++ b/src/proto/flwr/proto/exec.proto @@ -33,6 +33,6 @@ message StartRunRequest { map override_config = 2; map federation_config = 3; } -message StartRunResponse { sint64 run_id = 1; } -message StreamLogsRequest { sint64 run_id = 1; } +message StartRunResponse { uint64 run_id = 1; } +message StreamLogsRequest { uint64 run_id = 1; } message StreamLogsResponse { string log_output = 1; } diff --git a/src/proto/flwr/proto/message.proto b/src/proto/flwr/proto/message.proto index 3230ab0609a9..7066da5b7e76 100644 --- a/src/proto/flwr/proto/message.proto +++ b/src/proto/flwr/proto/message.proto @@ -28,17 +28,17 @@ message Message { } message Context { - sint64 node_id = 1; + uint64 node_id = 1; map node_config = 2; RecordSet state = 3; map run_config = 4; } message Metadata { - sint64 run_id = 1; + uint64 run_id = 1; string message_id = 2; - sint64 src_node_id = 3; - sint64 dst_node_id = 4; + uint64 src_node_id = 3; + uint64 dst_node_id = 4; string reply_to_message = 5; string group_id = 6; double ttl = 7; diff --git a/src/proto/flwr/proto/node.proto b/src/proto/flwr/proto/node.proto index e61d44f0f783..ec72b51b44ec 100644 --- a/src/proto/flwr/proto/node.proto +++ b/src/proto/flwr/proto/node.proto @@ -18,6 +18,6 @@ syntax = "proto3"; package flwr.proto; message Node { - sint64 node_id = 1; + uint64 node_id = 1; bool anonymous = 2; } diff --git a/src/proto/flwr/proto/run.proto b/src/proto/flwr/proto/run.proto index 6adca5c2437b..fc3294f7a583 100644 --- a/src/proto/flwr/proto/run.proto +++ b/src/proto/flwr/proto/run.proto @@ -20,11 +20,11 @@ package flwr.proto; import "flwr/proto/transport.proto"; message Run { - sint64 run_id = 1; + uint64 run_id = 1; string fab_id = 2; string fab_version = 3; map override_config = 4; string fab_hash = 5; } -message GetRunRequest { sint64 run_id = 1; } +message GetRunRequest { uint64 run_id = 1; } message GetRunResponse { Run run = 1; } diff --git a/src/proto/flwr/proto/task.proto b/src/proto/flwr/proto/task.proto index 936b8120e495..324a70a5359c 100644 --- a/src/proto/flwr/proto/task.proto +++ b/src/proto/flwr/proto/task.proto @@ -37,13 +37,13 @@ message Task { message TaskIns { string task_id = 1; string group_id = 2; - sint64 run_id = 3; + uint64 run_id = 3; Task task = 4; } message TaskRes { string task_id = 1; string group_id = 2; - sint64 run_id = 3; + uint64 run_id = 3; Task task = 4; } diff --git a/src/py/flwr/server/superlink/state/sqlite_state.py b/src/py/flwr/server/superlink/state/sqlite_state.py index daa211560912..4be0e60d4708 100644 --- a/src/py/flwr/server/superlink/state/sqlite_state.py +++ b/src/py/flwr/server/superlink/state/sqlite_state.py @@ -32,7 +32,12 @@ from flwr.server.utils.validator import validate_task_ins_or_res from .state import State -from .utils import generate_rand_int_from_bytes, make_node_unavailable_taskres +from .utils import ( + generate_rand_int_from_bytes, + make_node_unavailable_taskres, + uint64_to_sint64, + sint64_to_uint64, +) SQL_CREATE_TABLE_NODE = """ CREATE TABLE IF NOT EXISTS node( @@ -219,6 +224,9 @@ def store_task_ins(self, task_ins: TaskIns) -> Optional[UUID]: # Create task_id task_id = uuid4() + # Convert a uint64 value to sint64 for SQLite + task_ins.run_id = uint64_to_sint64(task_ins.run_id) + # Store TaskIns task_ins.task_id = str(task_id) data = (task_ins_to_dict(task_ins),) @@ -291,7 +299,10 @@ def get_task_ins( AND consumer_node_id == :node_id AND delivered_at = "" """ - data["node_id"] = node_id + + # Convert a uint64 value to sint64 for SQLite + sint64_node_id = uint64_to_sint64(node_id) + data["node_id"] = sint64_node_id if limit is not None: query += " LIMIT :limit" @@ -350,6 +361,9 @@ def store_task_res(self, task_res: TaskRes) -> Optional[UUID]: # Create task_id task_id = uuid4() + # Convert a uint64 value to sint64 for SQLite + task_res.run_id = uint64_to_sint64(task_res.run_id) + # Store TaskIns task_res.task_id = str(task_id) data = (task_res_to_dict(task_res),) @@ -473,6 +487,10 @@ def get_task_res(self, task_ids: Set[UUID], limit: Optional[int]) -> List[TaskRe for row in task_ins_rows: if limit and len(result) == limit: break + + # Convert run_id from sint64 to uint64 + row["run_id"] = sint64_to_uint64(row["run_id"]) + task_ins = dict_to_task_ins(row) err_taskres = make_node_unavailable_taskres( ref_taskins=task_ins, @@ -546,6 +564,9 @@ def create_node( # Sample a random int64 as node_id node_id = generate_rand_int_from_bytes(NODE_ID_NUM_BYTES) + # Convert a uint64 value to sint64 for SQLite + sint64_node_id = uint64_to_sint64(node_id) + query = "SELECT node_id FROM node WHERE public_key = :public_key;" row = self.query(query, {"public_key": public_key}) @@ -561,17 +582,29 @@ def create_node( try: self.query( - query, (node_id, time.time() + ping_interval, ping_interval, public_key) + query, + ( + sint64_node_id, + time.time() + ping_interval, + ping_interval, + public_key, + ), ) except sqlite3.IntegrityError: log(ERROR, "Unexpected node registration failure.") return 0 + + # Return the uint64 value of the node_id return node_id def delete_node(self, node_id: int, public_key: Optional[bytes] = None) -> None: """Delete a node.""" + + # Convert the uint64 value to sint64 for SQLite + sint64_node_id = uint64_to_sint64(node_id) + query = "DELETE FROM node WHERE node_id = ?" - params = (node_id,) + params = (sint64_node_id,) if public_key is not None: query += " AND public_key = ?" @@ -596,15 +629,22 @@ def get_nodes(self, run_id: int) -> Set[int]: If the provided `run_id` does not exist or has no matching nodes, an empty `Set` MUST be returned. """ + + # Convert the uint64 value to sint64 for SQLite + sint64_run_id = uint64_to_sint64(run_id) + # Validate run ID - query = "SELECT COUNT(*) FROM run WHERE run_id = ?;" - if self.query(query, (run_id,))[0]["COUNT(*)"] == 0: + query = "SELECT COUNT(*) FROM run WHERE sint64_run_id = ?;" + if self.query(query, (sint64_run_id,))[0]["COUNT(*)"] == 0: return set() # Get nodes query = "SELECT node_id FROM node WHERE online_until > ?;" rows = self.query(query, (time.time(),)) - result: Set[int] = {row["node_id"] for row in rows} + + # Convert sint64 node_ids to uint64 + result: Set[int] = {sint64_to_uint64(row["node_id"]) for row in rows} + return result def get_node_id(self, node_public_key: bytes) -> Optional[int]: @@ -613,7 +653,11 @@ def get_node_id(self, node_public_key: bytes) -> Optional[int]: row = self.query(query, {"public_key": node_public_key}) if len(row) > 0: node_id: int = row[0]["node_id"] - return node_id + + # Convert a sint64 value to uint64 after reading from SQLite + uint64_node_id = sint64_to_uint64(node_id) + + return uint64_node_id return None def create_run( @@ -627,24 +671,35 @@ def create_run( # Sample a random int64 as run_id run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES) + # Convert a uint64 value to sint64 for SQLite + sint64_run_id = uint64_to_sint64(run_id) + # Check conflicts - query = "SELECT COUNT(*) FROM run WHERE run_id = ?;" - # If run_id does not exist - if self.query(query, (run_id,))[0]["COUNT(*)"] == 0: + query = "SELECT COUNT(*) FROM run WHERE sint64_run_id = ?;" + # If sint64_run_id does not exist + if self.query(query, (sint64_run_id,))[0]["COUNT(*)"] == 0: query = ( "INSERT INTO run " - "(run_id, fab_id, fab_version, fab_hash, override_config)" + "(sint64_run_id, fab_id, fab_version, fab_hash, override_config)" "VALUES (?, ?, ?, ?, ?);" ) if fab_hash: self.query( - query, (run_id, "", "", fab_hash, json.dumps(override_config)) + query, + (sint64_run_id, "", "", fab_hash, json.dumps(override_config)), ) else: self.query( query, - (run_id, fab_id, fab_version, "", json.dumps(override_config)), + ( + sint64_run_id, + fab_id, + fab_version, + "", + json.dumps(override_config), + ), ) + # Return the uint64 value of the run_id return run_id log(ERROR, "Unexpected run creation failure.") return 0 diff --git a/src/py/flwr/server/superlink/state/utils.py b/src/py/flwr/server/superlink/state/utils.py index b12a87ac998d..913a051b9946 100644 --- a/src/py/flwr/server/superlink/state/utils.py +++ b/src/py/flwr/server/superlink/state/utils.py @@ -33,8 +33,38 @@ def generate_rand_int_from_bytes(num_bytes: int) -> int: - """Generate a random `num_bytes` integer.""" - return int.from_bytes(urandom(num_bytes), "little", signed=True) + """Generate a random unsigned integer from `num_bytes` bytes.""" + return int.from_bytes(urandom(num_bytes), "little", signed=False) + + +def uint64_to_sint64(u: int) -> int: + """ + Convert a uint64 value to sint64. + + Args: + u (int): The unsigned 64-bit integer to convert. + + Returns: + int: The signed 64-bit integer equivalent. + """ + if u >= 2**63: + return u - 2**64 + return u + + +def sint64_to_uint64(s: int) -> int: + """ + Convert a sint64 value to uint64. + + Args: + s (int): The signed 64-bit integer to convert. + + Returns: + int: The unsigned 64-bit integer equivalent. + """ + if s < 0: + return s + 2**64 + return s def make_node_unavailable_taskres(ref_taskins: TaskIns) -> TaskRes: diff --git a/src/py/flwr/server/superlink/state/utils_test.py b/src/py/flwr/server/superlink/state/utils_test.py new file mode 100644 index 000000000000..3d16676431d3 --- /dev/null +++ b/src/py/flwr/server/superlink/state/utils_test.py @@ -0,0 +1,53 @@ +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Utils tests.""" + +import unittest + +from .utils import uint64_to_sint64, sint64_to_uint64, generate_rand_int_from_bytes + + +class UtilsTest(unittest.TestCase): + """Test utils code.""" + + def test_uint64_to_sint64(self): + # Test values below 2^63 + self.assertEqual(uint64_to_sint64(0), 0) + self.assertEqual(uint64_to_sint64(2**62), 2**62) + self.assertEqual(uint64_to_sint64(2**63 - 1), 2**63 - 1) + + # Test values at and above 2^63 + self.assertEqual(uint64_to_sint64(2**63), -(2**63)) + self.assertEqual(uint64_to_sint64(2**63 + 1), -(2**63) + 1) + self.assertEqual(uint64_to_sint64(2**64 - 1), -1) + + def test_sint64_to_uint64(self): + # Test values within the range of sint64 + self.assertEqual(sint64_to_uint64(-(2**63)), 2**63) + self.assertEqual(sint64_to_uint64(-(2**63) + 1), 2**63 + 1) + self.assertEqual(sint64_to_uint64(-1), 2**64 - 1) + self.assertEqual(sint64_to_uint64(0), 0) + self.assertEqual(sint64_to_uint64(2**63 - 1), 2**63 - 1) + + # Test values above 2^63 + self.assertEqual(sint64_to_uint64(2**63), 2**63) + self.assertEqual(sint64_to_uint64(2**64 - 1), 2**64 - 1) + + def test_generate_rand_int_from_bytes_unsigned_int(self): + """Test that the generated integer is unsigned (non-negative).""" + for num_bytes in range(1, 9): + with self.subTest(num_bytes=num_bytes): + rand_int = generate_rand_int_from_bytes(num_bytes) + self.assertGreaterEqual(rand_int, 0) From 2cc9049cfd1272151898fce48a620c836eff11cf Mon Sep 17 00:00:00 2001 From: mohammadnaseri Date: Tue, 10 Sep 2024 18:08:35 +0100 Subject: [PATCH 2/4] Add proto --- src/py/flwr/proto/clientappio_pb2.py | 18 ++++++++++++++---- src/py/flwr/proto/driver_pb2.py | 20 +++++++++++++++----- src/py/flwr/proto/exec_pb2.py | 22 ++++++++++++++++------ src/py/flwr/proto/message_pb2.py | 22 ++++++++++++++++------ src/py/flwr/proto/node_pb2.py | 18 ++++++++++++++---- src/py/flwr/proto/run_pb2.py | 20 +++++++++++++++----- src/py/flwr/proto/task_pb2.py | 18 ++++++++++++++---- 7 files changed, 104 insertions(+), 34 deletions(-) diff --git a/src/py/flwr/proto/clientappio_pb2.py b/src/py/flwr/proto/clientappio_pb2.py index 9fd5302fe6cd..66c3a3abbd9c 100644 --- a/src/py/flwr/proto/clientappio_pb2.py +++ b/src/py/flwr/proto/clientappio_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/clientappio.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/clientappio.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,13 +27,13 @@ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\"W\n\x15\x43lientAppOutputStatus\x12-\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1f.flwr.proto.ClientAppOutputCode\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x11\n\x0fGetTokenRequest\"!\n\x10GetTokenResponse\x12\r\n\x05token\x18\x01 \x01(\x12\"+\n\x1aPullClientAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\x12\"\xa5\x01\n\x1bPullClientAppInputsResponse\x12$\n\x07message\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\"x\n\x1bPushClientAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\x12\x12$\n\x07message\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"Q\n\x1cPushClientAppOutputsResponse\x12\x31\n\x06status\x18\x01 \x01(\x0b\x32!.flwr.proto.ClientAppOutputStatus*L\n\x13\x43lientAppOutputCode\x12\x0b\n\x07SUCCESS\x10\x00\x12\x15\n\x11\x44\x45\x41\x44LINE_EXCEEDED\x10\x01\x12\x11\n\rUNKNOWN_ERROR\x10\x02\x32\xad\x02\n\x0b\x43lientAppIo\x12G\n\x08GetToken\x12\x1b.flwr.proto.GetTokenRequest\x1a\x1c.flwr.proto.GetTokenResponse\"\x00\x12h\n\x13PullClientAppInputs\x12&.flwr.proto.PullClientAppInputsRequest\x1a\'.flwr.proto.PullClientAppInputsResponse\"\x00\x12k\n\x14PushClientAppOutputs\x12\'.flwr.proto.PushClientAppOutputsRequest\x1a(.flwr.proto.PushClientAppOutputsResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\"W\n\x15\x43lientAppOutputStatus\x12-\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1f.flwr.proto.ClientAppOutputCode\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x11\n\x0fGetTokenRequest\"!\n\x10GetTokenResponse\x12\r\n\x05token\x18\x01 \x01(\x04\"+\n\x1aPullClientAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\x04\"\xa5\x01\n\x1bPullClientAppInputsResponse\x12$\n\x07message\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\"x\n\x1bPushClientAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\x04\x12$\n\x07message\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"Q\n\x1cPushClientAppOutputsResponse\x12\x31\n\x06status\x18\x01 \x01(\x0b\x32!.flwr.proto.ClientAppOutputStatus*L\n\x13\x43lientAppOutputCode\x12\x0b\n\x07SUCCESS\x10\x00\x12\x15\n\x11\x44\x45\x41\x44LINE_EXCEEDED\x10\x01\x12\x11\n\rUNKNOWN_ERROR\x10\x02\x32\xad\x02\n\x0b\x43lientAppIo\x12G\n\x08GetToken\x12\x1b.flwr.proto.GetTokenRequest\x1a\x1c.flwr.proto.GetTokenResponse\"\x00\x12h\n\x13PullClientAppInputs\x12&.flwr.proto.PullClientAppInputsRequest\x1a\'.flwr.proto.PullClientAppInputsResponse\"\x00\x12k\n\x14PushClientAppOutputs\x12\'.flwr.proto.PushClientAppOutputsRequest\x1a(.flwr.proto.PushClientAppOutputsResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None _globals['_CLIENTAPPOUTPUTCODE']._serialized_start=675 _globals['_CLIENTAPPOUTPUTCODE']._serialized_end=751 _globals['_CLIENTAPPOUTPUTSTATUS']._serialized_start=114 diff --git a/src/py/flwr/proto/driver_pb2.py b/src/py/flwr/proto/driver_pb2.py index dde72620f5bf..d992272c7610 100644 --- a/src/py/flwr/proto/driver_pb2.py +++ b/src/py/flwr/proto/driver_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/driver.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/driver.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,14 +29,14 @@ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 -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\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xeb\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\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\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\xc7\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\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3') +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\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xeb\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\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\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(\x04\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"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\xc7\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\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.driver_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._loaded_options = None _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001' _globals['_CREATERUNREQUEST']._serialized_start=158 _globals['_CREATERUNREQUEST']._serialized_end=393 diff --git a/src/py/flwr/proto/exec_pb2.py b/src/py/flwr/proto/exec_pb2.py index 3fe109067296..a1dc00caf820 100644 --- a/src/py/flwr/proto/exec_pb2.py +++ b/src/py/flwr/proto/exec_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/exec.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/exec.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,16 +26,16 @@ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xdf\x02\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12L\n\x11\x66\x65\x64\x65ration_config\x18\x03 \x03(\x0b\x32\x31.flwr.proto.StartRunRequest.FederationConfigEntry\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\x1aK\n\x15\x46\x65\x64\x65rationConfigEntry\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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xdf\x02\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12L\n\x11\x66\x65\x64\x65ration_config\x18\x03 \x03(\x0b\x32\x31.flwr.proto.StartRunRequest.FederationConfigEntry\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\x1aK\n\x15\x46\x65\x64\x65rationConfigEntry\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(\x04\"#\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"(\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.exec_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._loaded_options = None _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001' - _globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._options = None + _globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._loaded_options = None _globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._serialized_options = b'8\001' _globals['_STARTRUNREQUEST']._serialized_start=88 _globals['_STARTRUNREQUEST']._serialized_end=439 diff --git a/src/py/flwr/proto/message_pb2.py b/src/py/flwr/proto/message_pb2.py index 7e2555972a8a..390a7003a0c2 100644 --- a/src/py/flwr/proto/message_pb2.py +++ b/src/py/flwr/proto/message_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/message.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/message.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,16 +27,16 @@ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\x12\x12\x38\n\x0bnode_config\x18\x02 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12$\n\x05state\x18\x03 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12\x36\n\nrun_config\x18\x04 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbb\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x12\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x12\x12\x18\n\x10reply_to_message\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x38\n\x0bnode_config\x18\x02 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12$\n\x05state\x18\x03 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12\x36\n\nrun_config\x18\x04 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbb\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x04\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x04\x12\x18\n\x10reply_to_message\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.message_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_CONTEXT_NODECONFIGENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_CONTEXT_NODECONFIGENTRY']._loaded_options = None _globals['_CONTEXT_NODECONFIGENTRY']._serialized_options = b'8\001' - _globals['_CONTEXT_RUNCONFIGENTRY']._options = None + _globals['_CONTEXT_RUNCONFIGENTRY']._loaded_options = None _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_options = b'8\001' _globals['_MESSAGE']._serialized_start=120 _globals['_MESSAGE']._serialized_end=243 diff --git a/src/py/flwr/proto/node_pb2.py b/src/py/flwr/proto/node_pb2.py index b300f2c562c2..f2bb4c3344a2 100644 --- a/src/py/flwr/proto/node_pb2.py +++ b/src/py/flwr/proto/node_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/node.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/node.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -14,13 +24,13 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"*\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x12\x12\x11\n\tanonymous\x18\x02 \x01(\x08\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"*\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x11\n\tanonymous\x18\x02 \x01(\x08\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.node_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None _globals['_NODE']._serialized_start=37 _globals['_NODE']._serialized_end=79 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/run_pb2.py b/src/py/flwr/proto/run_pb2.py index 4892091a6a46..431f2a458f21 100644 --- a/src/py/flwr/proto/run_pb2.py +++ b/src/py/flwr/proto/run_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/run.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/run.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,14 +25,14 @@ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\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\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\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\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\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(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Runb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.run_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_RUN_OVERRIDECONFIGENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_RUN_OVERRIDECONFIGENTRY']._loaded_options = None _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001' _globals['_RUN']._serialized_start=65 _globals['_RUN']._serialized_end=278 diff --git a/src/py/flwr/proto/task_pb2.py b/src/py/flwr/proto/task_pb2.py index 3e044f9ec846..cda5d2a6e498 100644 --- a/src/py/flwr/proto/task_pb2.py +++ b/src/py/flwr/proto/task_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/task.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/task.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,13 +27,13 @@ from flwr.proto import error_pb2 as flwr_dot_proto_dot_error__pb2 -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') +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(\x04\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(\x04\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Taskb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.task_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None _globals['_TASK']._serialized_start=113 _globals['_TASK']._serialized_end=378 _globals['_TASKINS']._serialized_start=380 From 6bc5de7f910588b699ab4dc35838dae5b40aedb3 Mon Sep 17 00:00:00 2001 From: mohammadnaseri Date: Tue, 10 Sep 2024 18:18:00 +0100 Subject: [PATCH 3/4] Add proto --- src/py/flwr/proto/clientappio_pb2.pyi | 108 ++++-- src/py/flwr/proto/clientappio_pb2_grpc.py | 75 +++- src/py/flwr/proto/clientappio_pb2_grpc.pyi | 67 +++- src/py/flwr/proto/driver_pb2.pyi | 152 +++++--- src/py/flwr/proto/driver_pb2_grpc.py | 129 +++++-- src/py/flwr/proto/driver_pb2_grpc.pyi | 132 +++++-- src/py/flwr/proto/error_pb2.py | 16 +- src/py/flwr/proto/error_pb2.pyi | 30 +- src/py/flwr/proto/error_pb2_grpc.py | 20 + src/py/flwr/proto/error_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/exec_pb2.pyi | 107 ++++-- src/py/flwr/proto/exec_pb2_grpc.py | 57 ++- src/py/flwr/proto/exec_pb2_grpc.pyi | 63 +++- src/py/flwr/proto/fab_pb2.py | 16 +- src/py/flwr/proto/fab_pb2.pyi | 46 ++- src/py/flwr/proto/fab_pb2_grpc.py | 20 + src/py/flwr/proto/fab_pb2_grpc.pyi | 13 + src/py/flwr/proto/fleet_pb2.py | 18 +- src/py/flwr/proto/fleet_pb2.pyi | 181 ++++++--- src/py/flwr/proto/fleet_pb2_grpc.py | 147 ++++++-- src/py/flwr/proto/fleet_pb2_grpc.pyi | 147 ++++++-- src/py/flwr/proto/grpcadapter_pb2.py | 18 +- src/py/flwr/proto/grpcadapter_pb2.pyi | 54 ++- src/py/flwr/proto/grpcadapter_pb2_grpc.py | 39 +- src/py/flwr/proto/grpcadapter_pb2_grpc.pyi | 45 ++- src/py/flwr/proto/message_pb2.pyi | 117 +++--- src/py/flwr/proto/message_pb2_grpc.py | 20 + src/py/flwr/proto/message_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/node_pb2.pyi | 27 +- src/py/flwr/proto/node_pb2_grpc.py | 20 + src/py/flwr/proto/node_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/recordset_pb2.py | 26 +- src/py/flwr/proto/recordset_pb2.pyi | 304 +++++++++------ src/py/flwr/proto/recordset_pb2_grpc.py | 20 + src/py/flwr/proto/recordset_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/run_pb2.pyi | 84 +++-- src/py/flwr/proto/run_pb2_grpc.py | 20 + src/py/flwr/proto/run_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/task_pb2.pyi | 99 +++-- src/py/flwr/proto/task_pb2_grpc.py | 20 + src/py/flwr/proto/task_pb2_grpc.pyi | 27 ++ src/py/flwr/proto/transport_pb2.py | 30 +- src/py/flwr/proto/transport_pb2.pyi | 408 +++++++++++++-------- src/py/flwr/proto/transport_pb2_grpc.py | 39 +- src/py/flwr/proto/transport_pb2_grpc.pyi | 46 ++- 45 files changed, 2317 insertions(+), 825 deletions(-) diff --git a/src/py/flwr/proto/clientappio_pb2.pyi b/src/py/flwr/proto/clientappio_pb2.pyi index 53d376d58101..2f8fcd5bbfb2 100644 --- a/src/py/flwr/proto/clientappio_pb2.pyi +++ b/src/py/flwr/proto/clientappio_pb2.pyi @@ -2,6 +2,7 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import flwr.proto.fab_pb2 import flwr.proto.message_pb2 @@ -9,72 +10,95 @@ import flwr.proto.run_pb2 import google.protobuf.descriptor import google.protobuf.internal.enum_type_wrapper import google.protobuf.message +import sys import typing -import typing_extensions + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor class _ClientAppOutputCode: - ValueType = typing.NewType('ValueType', builtins.int) + ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType + class _ClientAppOutputCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ClientAppOutputCode.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor SUCCESS: _ClientAppOutputCode.ValueType # 0 DEADLINE_EXCEEDED: _ClientAppOutputCode.ValueType # 1 UNKNOWN_ERROR: _ClientAppOutputCode.ValueType # 2 -class ClientAppOutputCode(_ClientAppOutputCode, metaclass=_ClientAppOutputCodeEnumTypeWrapper): - pass + +class ClientAppOutputCode(_ClientAppOutputCode, metaclass=_ClientAppOutputCodeEnumTypeWrapper): ... SUCCESS: ClientAppOutputCode.ValueType # 0 DEADLINE_EXCEEDED: ClientAppOutputCode.ValueType # 1 UNKNOWN_ERROR: ClientAppOutputCode.ValueType # 2 global___ClientAppOutputCode = ClientAppOutputCode - +@typing.final class ClientAppOutputStatus(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + CODE_FIELD_NUMBER: builtins.int MESSAGE_FIELD_NUMBER: builtins.int code: global___ClientAppOutputCode.ValueType - message: typing.Text - def __init__(self, + message: builtins.str + def __init__( + self, *, code: global___ClientAppOutputCode.ValueType = ..., - message: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["code",b"code","message",b"message"]) -> None: ... + message: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["code", b"code", "message", b"message"]) -> None: ... + global___ClientAppOutputStatus = ClientAppOutputStatus +@typing.final class GetTokenRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - def __init__(self, - ) -> None: ... + + def __init__( + self, + ) -> None: ... + global___GetTokenRequest = GetTokenRequest +@typing.final class GetTokenResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TOKEN_FIELD_NUMBER: builtins.int token: builtins.int - def __init__(self, + def __init__( + self, *, token: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["token", b"token"]) -> None: ... + global___GetTokenResponse = GetTokenResponse +@typing.final class PullClientAppInputsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TOKEN_FIELD_NUMBER: builtins.int token: builtins.int - def __init__(self, + def __init__( + self, *, token: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["token", b"token"]) -> None: ... + global___PullClientAppInputsRequest = PullClientAppInputsRequest +@typing.final class PullClientAppInputsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + MESSAGE_FIELD_NUMBER: builtins.int CONTEXT_FIELD_NUMBER: builtins.int RUN_FIELD_NUMBER: builtins.int @@ -87,19 +111,23 @@ class PullClientAppInputsResponse(google.protobuf.message.Message): def run(self) -> flwr.proto.run_pb2.Run: ... @property def fab(self) -> flwr.proto.fab_pb2.Fab: ... - def __init__(self, + def __init__( + self, *, - message: typing.Optional[flwr.proto.message_pb2.Message] = ..., - context: typing.Optional[flwr.proto.message_pb2.Context] = ..., - run: typing.Optional[flwr.proto.run_pb2.Run] = ..., - fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","message",b"message","run",b"run"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","message",b"message","run",b"run"]) -> None: ... + message: flwr.proto.message_pb2.Message | None = ..., + context: flwr.proto.message_pb2.Context | None = ..., + run: flwr.proto.run_pb2.Run | None = ..., + fab: flwr.proto.fab_pb2.Fab | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["context", b"context", "fab", b"fab", "message", b"message", "run", b"run"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["context", b"context", "fab", b"fab", "message", b"message", "run", b"run"]) -> None: ... + global___PullClientAppInputsResponse = PullClientAppInputsResponse +@typing.final class PushClientAppOutputsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TOKEN_FIELD_NUMBER: builtins.int MESSAGE_FIELD_NUMBER: builtins.int CONTEXT_FIELD_NUMBER: builtins.int @@ -108,25 +136,31 @@ class PushClientAppOutputsRequest(google.protobuf.message.Message): def message(self) -> flwr.proto.message_pb2.Message: ... @property def context(self) -> flwr.proto.message_pb2.Context: ... - def __init__(self, + def __init__( + self, *, token: builtins.int = ..., - message: typing.Optional[flwr.proto.message_pb2.Message] = ..., - context: typing.Optional[flwr.proto.message_pb2.Context] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["context",b"context","message",b"message"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["context",b"context","message",b"message","token",b"token"]) -> None: ... + message: flwr.proto.message_pb2.Message | None = ..., + context: flwr.proto.message_pb2.Context | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["context", b"context", "message", b"message"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["context", b"context", "message", b"message", "token", b"token"]) -> None: ... + global___PushClientAppOutputsRequest = PushClientAppOutputsRequest +@typing.final class PushClientAppOutputsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + STATUS_FIELD_NUMBER: builtins.int @property def status(self) -> global___ClientAppOutputStatus: ... - def __init__(self, + def __init__( + self, *, - status: typing.Optional[global___ClientAppOutputStatus] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status",b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["status",b"status"]) -> None: ... + status: global___ClientAppOutputStatus | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... + global___PushClientAppOutputsResponse = PushClientAppOutputsResponse diff --git a/src/py/flwr/proto/clientappio_pb2_grpc.py b/src/py/flwr/proto/clientappio_pb2_grpc.py index 653d49fc1ead..374efdc4600b 100644 --- a/src/py/flwr/proto/clientappio_pb2_grpc.py +++ b/src/py/flwr/proto/clientappio_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import clientappio_pb2 as flwr_dot_proto_dot_clientappio__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/clientappio_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class ClientAppIoStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,17 +38,17 @@ def __init__(self, channel): '/flwr.proto.ClientAppIo/GetToken', request_serializer=flwr_dot_proto_dot_clientappio__pb2.GetTokenRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_clientappio__pb2.GetTokenResponse.FromString, - ) + _registered_method=True) self.PullClientAppInputs = channel.unary_unary( '/flwr.proto.ClientAppIo/PullClientAppInputs', request_serializer=flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsResponse.FromString, - ) + _registered_method=True) self.PushClientAppOutputs = channel.unary_unary( '/flwr.proto.ClientAppIo/PushClientAppOutputs', request_serializer=flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsResponse.FromString, - ) + _registered_method=True) class ClientAppIoServicer(object): @@ -77,6 +97,7 @@ def add_ClientAppIoServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.ClientAppIo', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.ClientAppIo', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -94,11 +115,21 @@ def GetToken(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/GetToken', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.ClientAppIo/GetToken', flwr_dot_proto_dot_clientappio__pb2.GetTokenRequest.SerializeToString, flwr_dot_proto_dot_clientappio__pb2.GetTokenResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PullClientAppInputs(request, @@ -111,11 +142,21 @@ def PullClientAppInputs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PullClientAppInputs', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.ClientAppIo/PullClientAppInputs', flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsRequest.SerializeToString, flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PushClientAppOutputs(request, @@ -128,8 +169,18 @@ def PushClientAppOutputs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/PushClientAppOutputs', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.ClientAppIo/PushClientAppOutputs', flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsRequest.SerializeToString, flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/clientappio_pb2_grpc.pyi b/src/py/flwr/proto/clientappio_pb2_grpc.pyi index 3cddc769f745..85a5faba608b 100644 --- a/src/py/flwr/proto/clientappio_pb2_grpc.pyi +++ b/src/py/flwr/proto/clientappio_pb2_grpc.pyi @@ -2,52 +2,83 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import abc +import collections.abc import flwr.proto.clientappio_pb2 import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... class ClientAppIoStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... GetToken: grpc.UnaryUnaryMultiCallable[ flwr.proto.clientappio_pb2.GetTokenRequest, - flwr.proto.clientappio_pb2.GetTokenResponse] + flwr.proto.clientappio_pb2.GetTokenResponse, + ] """Get token""" PullClientAppInputs: grpc.UnaryUnaryMultiCallable[ flwr.proto.clientappio_pb2.PullClientAppInputsRequest, - flwr.proto.clientappio_pb2.PullClientAppInputsResponse] + flwr.proto.clientappio_pb2.PullClientAppInputsResponse, + ] """Get Message, Context, and Run""" PushClientAppOutputs: grpc.UnaryUnaryMultiCallable[ flwr.proto.clientappio_pb2.PushClientAppOutputsRequest, - flwr.proto.clientappio_pb2.PushClientAppOutputsResponse] + flwr.proto.clientappio_pb2.PushClientAppOutputsResponse, + ] """Send updated Message and Context""" +class ClientAppIoAsyncStub: + GetToken: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.clientappio_pb2.GetTokenRequest, + flwr.proto.clientappio_pb2.GetTokenResponse, + ] + """Get token""" + + PullClientAppInputs: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.clientappio_pb2.PullClientAppInputsRequest, + flwr.proto.clientappio_pb2.PullClientAppInputsResponse, + ] + """Get Message, Context, and Run""" + + PushClientAppOutputs: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.clientappio_pb2.PushClientAppOutputsRequest, + flwr.proto.clientappio_pb2.PushClientAppOutputsResponse, + ] + """Send updated Message and Context""" class ClientAppIoServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def GetToken(self, + def GetToken( + self, request: flwr.proto.clientappio_pb2.GetTokenRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.clientappio_pb2.GetTokenResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.clientappio_pb2.GetTokenResponse, collections.abc.Awaitable[flwr.proto.clientappio_pb2.GetTokenResponse]]: """Get token""" - pass @abc.abstractmethod - def PullClientAppInputs(self, + def PullClientAppInputs( + self, request: flwr.proto.clientappio_pb2.PullClientAppInputsRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.clientappio_pb2.PullClientAppInputsResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.clientappio_pb2.PullClientAppInputsResponse, collections.abc.Awaitable[flwr.proto.clientappio_pb2.PullClientAppInputsResponse]]: """Get Message, Context, and Run""" - pass @abc.abstractmethod - def PushClientAppOutputs(self, + def PushClientAppOutputs( + self, request: flwr.proto.clientappio_pb2.PushClientAppOutputsRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.clientappio_pb2.PushClientAppOutputsResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.clientappio_pb2.PushClientAppOutputsResponse, collections.abc.Awaitable[flwr.proto.clientappio_pb2.PushClientAppOutputsResponse]]: """Send updated Message and Context""" - pass - -def add_ClientAppIoServicer_to_server(servicer: ClientAppIoServicer, server: grpc.Server) -> None: ... +def add_ClientAppIoServicer_to_server(servicer: ClientAppIoServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/src/py/flwr/proto/driver_pb2.pyi b/src/py/flwr/proto/driver_pb2.pyi index d025e00474eb..5cf8cda4cc22 100644 --- a/src/py/flwr/proto/driver_pb2.pyi +++ b/src/py/flwr/proto/driver_pb2.pyi @@ -1,8 +1,24 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.fab_pb2 import flwr.proto.node_pb2 import flwr.proto.task_pb2 @@ -11,135 +27,173 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class CreateRunRequest(google.protobuf.message.Message): """CreateRun""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class OverrideConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FAB_ID_FIELD_NUMBER: builtins.int FAB_VERSION_FIELD_NUMBER: builtins.int OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int FAB_FIELD_NUMBER: builtins.int - fab_id: typing.Text - fab_version: typing.Text + fab_id: builtins.str + fab_version: builtins.str @property - def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... + def override_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... @property def fab(self) -> flwr.proto.fab_pb2.Fab: ... - def __init__(self, + def __init__( + self, *, - fab_id: typing.Text = ..., - fab_version: typing.Text = ..., - override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ... + fab_id: builtins.str = ..., + fab_version: builtins.str = ..., + override_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + fab: flwr.proto.fab_pb2.Fab | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["fab", b"fab"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["fab", b"fab", "fab_id", b"fab_id", "fab_version", b"fab_version", "override_config", b"override_config"]) -> None: ... + global___CreateRunRequest = CreateRunRequest +@typing.final class CreateRunResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int run_id: builtins.int - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ... + global___CreateRunResponse = CreateRunResponse +@typing.final class GetNodesRequest(google.protobuf.message.Message): """GetNodes messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int run_id: builtins.int - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ... + global___GetNodesRequest = GetNodesRequest +@typing.final class GetNodesResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODES_FIELD_NUMBER: builtins.int @property def nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.node_pb2.Node]: ... - def __init__(self, + def __init__( + self, *, - nodes: typing.Optional[typing.Iterable[flwr.proto.node_pb2.Node]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["nodes",b"nodes"]) -> None: ... + nodes: collections.abc.Iterable[flwr.proto.node_pb2.Node] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["nodes", b"nodes"]) -> None: ... + global___GetNodesResponse = GetNodesResponse +@typing.final class PushTaskInsRequest(google.protobuf.message.Message): """PushTaskIns messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_INS_LIST_FIELD_NUMBER: builtins.int @property def task_ins_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskIns]: ... - def __init__(self, + def __init__( + self, *, - task_ins_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskIns]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["task_ins_list",b"task_ins_list"]) -> None: ... + task_ins_list: collections.abc.Iterable[flwr.proto.task_pb2.TaskIns] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["task_ins_list", b"task_ins_list"]) -> None: ... + global___PushTaskInsRequest = PushTaskInsRequest +@typing.final class PushTaskInsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_IDS_FIELD_NUMBER: builtins.int @property - def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - def __init__(self, + def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, *, - task_ids: typing.Optional[typing.Iterable[typing.Text]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["task_ids",b"task_ids"]) -> None: ... + task_ids: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["task_ids", b"task_ids"]) -> None: ... + global___PushTaskInsResponse = PushTaskInsResponse +@typing.final class PullTaskResRequest(google.protobuf.message.Message): """PullTaskRes messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_FIELD_NUMBER: builtins.int TASK_IDS_FIELD_NUMBER: builtins.int @property def node(self) -> flwr.proto.node_pb2.Node: ... @property - def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - def __init__(self, + def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, *, - node: typing.Optional[flwr.proto.node_pb2.Node] = ..., - task_ids: typing.Optional[typing.Iterable[typing.Text]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node",b"node","task_ids",b"task_ids"]) -> None: ... + node: flwr.proto.node_pb2.Node | None = ..., + task_ids: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node", b"node", "task_ids", b"task_ids"]) -> None: ... + global___PullTaskResRequest = PullTaskResRequest +@typing.final class PullTaskResResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_RES_LIST_FIELD_NUMBER: builtins.int @property def task_res_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskRes]: ... - def __init__(self, + def __init__( + self, *, - task_res_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskRes]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ... + task_res_list: collections.abc.Iterable[flwr.proto.task_pb2.TaskRes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["task_res_list", b"task_res_list"]) -> None: ... + global___PullTaskResResponse = PullTaskResResponse diff --git a/src/py/flwr/proto/driver_pb2_grpc.py b/src/py/flwr/proto/driver_pb2_grpc.py index 6745bc7af62a..1ced78f5ffa9 100644 --- a/src/py/flwr/proto/driver_pb2_grpc.py +++ b/src/py/flwr/proto/driver_pb2_grpc.py @@ -1,11 +1,31 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import driver_pb2 as flwr_dot_proto_dot_driver__pb2 from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2 from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/driver_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class DriverStub(object): """Missing associated documentation comment in .proto file.""" @@ -20,32 +40,32 @@ def __init__(self, channel): '/flwr.proto.Driver/CreateRun', request_serializer=flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString, - ) + _registered_method=True) self.GetNodes = channel.unary_unary( '/flwr.proto.Driver/GetNodes', request_serializer=flwr_dot_proto_dot_driver__pb2.GetNodesRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_driver__pb2.GetNodesResponse.FromString, - ) + _registered_method=True) self.PushTaskIns = channel.unary_unary( '/flwr.proto.Driver/PushTaskIns', request_serializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_driver__pb2.PushTaskInsResponse.FromString, - ) + _registered_method=True) self.PullTaskRes = channel.unary_unary( '/flwr.proto.Driver/PullTaskRes', request_serializer=flwr_dot_proto_dot_driver__pb2.PullTaskResRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_driver__pb2.PullTaskResResponse.FromString, - ) + _registered_method=True) self.GetRun = channel.unary_unary( '/flwr.proto.Driver/GetRun', request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString, - ) + _registered_method=True) self.GetFab = channel.unary_unary( '/flwr.proto.Driver/GetFab', request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString, - ) + _registered_method=True) class DriverServicer(object): @@ -130,6 +150,7 @@ def add_DriverServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.Driver', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.Driver', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -147,11 +168,21 @@ def CreateRun(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/CreateRun', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/CreateRun', flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString, flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetNodes(request, @@ -164,11 +195,21 @@ def GetNodes(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetNodes', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/GetNodes', flwr_dot_proto_dot_driver__pb2.GetNodesRequest.SerializeToString, flwr_dot_proto_dot_driver__pb2.GetNodesResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PushTaskIns(request, @@ -181,11 +222,21 @@ def PushTaskIns(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PushTaskIns', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/PushTaskIns', flwr_dot_proto_dot_driver__pb2.PushTaskInsRequest.SerializeToString, flwr_dot_proto_dot_driver__pb2.PushTaskInsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PullTaskRes(request, @@ -198,11 +249,21 @@ def PullTaskRes(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PullTaskRes', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/PullTaskRes', flwr_dot_proto_dot_driver__pb2.PullTaskResRequest.SerializeToString, flwr_dot_proto_dot_driver__pb2.PullTaskResResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetRun(request, @@ -215,11 +276,21 @@ def GetRun(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetRun', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/GetRun', flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString, flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetFab(request, @@ -232,8 +303,18 @@ def GetFab(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/GetFab', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Driver/GetFab', flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString, flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/driver_pb2_grpc.pyi b/src/py/flwr/proto/driver_pb2_grpc.pyi index 7f9fd0acbd82..2ee7a69d09e9 100644 --- a/src/py/flwr/proto/driver_pb2_grpc.pyi +++ b/src/py/flwr/proto/driver_pb2_grpc.pyi @@ -1,94 +1,160 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import abc +import collections.abc import flwr.proto.driver_pb2 import flwr.proto.fab_pb2 import flwr.proto.run_pb2 import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... class DriverStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... CreateRun: grpc.UnaryUnaryMultiCallable[ flwr.proto.driver_pb2.CreateRunRequest, - flwr.proto.driver_pb2.CreateRunResponse] + flwr.proto.driver_pb2.CreateRunResponse, + ] """Request run_id""" GetNodes: grpc.UnaryUnaryMultiCallable[ flwr.proto.driver_pb2.GetNodesRequest, - flwr.proto.driver_pb2.GetNodesResponse] + flwr.proto.driver_pb2.GetNodesResponse, + ] """Return a set of nodes""" PushTaskIns: grpc.UnaryUnaryMultiCallable[ flwr.proto.driver_pb2.PushTaskInsRequest, - flwr.proto.driver_pb2.PushTaskInsResponse] + flwr.proto.driver_pb2.PushTaskInsResponse, + ] """Create one or more tasks""" PullTaskRes: grpc.UnaryUnaryMultiCallable[ flwr.proto.driver_pb2.PullTaskResRequest, - flwr.proto.driver_pb2.PullTaskResResponse] + flwr.proto.driver_pb2.PullTaskResResponse, + ] """Get task results""" GetRun: grpc.UnaryUnaryMultiCallable[ flwr.proto.run_pb2.GetRunRequest, - flwr.proto.run_pb2.GetRunResponse] + flwr.proto.run_pb2.GetRunResponse, + ] """Get run details""" GetFab: grpc.UnaryUnaryMultiCallable[ flwr.proto.fab_pb2.GetFabRequest, - flwr.proto.fab_pb2.GetFabResponse] + flwr.proto.fab_pb2.GetFabResponse, + ] """Get FAB""" +class DriverAsyncStub: + CreateRun: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.driver_pb2.CreateRunRequest, + flwr.proto.driver_pb2.CreateRunResponse, + ] + """Request run_id""" + + GetNodes: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.driver_pb2.GetNodesRequest, + flwr.proto.driver_pb2.GetNodesResponse, + ] + """Return a set of nodes""" + + PushTaskIns: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.driver_pb2.PushTaskInsRequest, + flwr.proto.driver_pb2.PushTaskInsResponse, + ] + """Create one or more tasks""" + + PullTaskRes: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.driver_pb2.PullTaskResRequest, + flwr.proto.driver_pb2.PullTaskResResponse, + ] + """Get task results""" + + GetRun: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.run_pb2.GetRunRequest, + flwr.proto.run_pb2.GetRunResponse, + ] + """Get run details""" + + GetFab: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fab_pb2.GetFabRequest, + flwr.proto.fab_pb2.GetFabResponse, + ] + """Get FAB""" class DriverServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def CreateRun(self, + def CreateRun( + self, request: flwr.proto.driver_pb2.CreateRunRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.driver_pb2.CreateRunResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.driver_pb2.CreateRunResponse, collections.abc.Awaitable[flwr.proto.driver_pb2.CreateRunResponse]]: """Request run_id""" - pass @abc.abstractmethod - def GetNodes(self, + def GetNodes( + self, request: flwr.proto.driver_pb2.GetNodesRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.driver_pb2.GetNodesResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.driver_pb2.GetNodesResponse, collections.abc.Awaitable[flwr.proto.driver_pb2.GetNodesResponse]]: """Return a set of nodes""" - pass @abc.abstractmethod - def PushTaskIns(self, + def PushTaskIns( + self, request: flwr.proto.driver_pb2.PushTaskInsRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.driver_pb2.PushTaskInsResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.driver_pb2.PushTaskInsResponse, collections.abc.Awaitable[flwr.proto.driver_pb2.PushTaskInsResponse]]: """Create one or more tasks""" - pass @abc.abstractmethod - def PullTaskRes(self, + def PullTaskRes( + self, request: flwr.proto.driver_pb2.PullTaskResRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.driver_pb2.PullTaskResResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.driver_pb2.PullTaskResResponse, collections.abc.Awaitable[flwr.proto.driver_pb2.PullTaskResResponse]]: """Get task results""" - pass @abc.abstractmethod - def GetRun(self, + def GetRun( + self, request: flwr.proto.run_pb2.GetRunRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.run_pb2.GetRunResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.run_pb2.GetRunResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunResponse]]: """Get run details""" - pass @abc.abstractmethod - def GetFab(self, + def GetFab( + self, request: flwr.proto.fab_pb2.GetFabRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fab_pb2.GetFabResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fab_pb2.GetFabResponse, collections.abc.Awaitable[flwr.proto.fab_pb2.GetFabResponse]]: """Get FAB""" - pass - -def add_DriverServicer_to_server(servicer: DriverServicer, server: grpc.Server) -> None: ... +def add_DriverServicer_to_server(servicer: DriverServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/src/py/flwr/proto/error_pb2.py b/src/py/flwr/proto/error_pb2.py index 41721ae08804..6fa102873c91 100644 --- a/src/py/flwr/proto/error_pb2.py +++ b/src/py/flwr/proto/error_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/error.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/error.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.error_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None _globals['_ERROR']._serialized_start=38 _globals['_ERROR']._serialized_end=75 # @@protoc_insertion_point(module_scope) diff --git a/src/py/flwr/proto/error_pb2.pyi b/src/py/flwr/proto/error_pb2.pyi index 1811e5aa0ca8..329a2114bfcd 100644 --- a/src/py/flwr/proto/error_pb2.pyi +++ b/src/py/flwr/proto/error_pb2.pyi @@ -1,25 +1,43 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins import google.protobuf.descriptor import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Error(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + CODE_FIELD_NUMBER: builtins.int REASON_FIELD_NUMBER: builtins.int code: builtins.int - reason: typing.Text - def __init__(self, + reason: builtins.str + def __init__( + self, *, code: builtins.int = ..., - reason: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["code",b"code","reason",b"reason"]) -> None: ... + reason: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["code", b"code", "reason", b"reason"]) -> None: ... + global___Error = Error diff --git a/src/py/flwr/proto/error_pb2_grpc.py b/src/py/flwr/proto/error_pb2_grpc.py index 2daafffebfc8..594224a9879d 100644 --- a/src/py/flwr/proto/error_pb2_grpc.py +++ b/src/py/flwr/proto/error_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/error_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/error_pb2_grpc.pyi b/src/py/flwr/proto/error_pb2_grpc.pyi index f3a5a087ef5d..b378d4c38470 100644 --- a/src/py/flwr/proto/error_pb2_grpc.pyi +++ b/src/py/flwr/proto/error_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/exec_pb2.pyi b/src/py/flwr/proto/exec_pb2.pyi index 8b7e07c8875f..d323f650d2a0 100644 --- a/src/py/flwr/proto/exec_pb2.pyi +++ b/src/py/flwr/proto/exec_pb2.pyi @@ -1,49 +1,72 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.fab_pb2 import flwr.proto.transport_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class StartRunRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class OverrideConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class FederationConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... FAB_FIELD_NUMBER: builtins.int OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int @@ -51,48 +74,62 @@ class StartRunRequest(google.protobuf.message.Message): @property def fab(self) -> flwr.proto.fab_pb2.Fab: ... @property - def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... + def override_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... @property - def federation_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... - def __init__(self, + def federation_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... + def __init__( + self, *, - fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ..., - override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - federation_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_config",b"federation_config","override_config",b"override_config"]) -> None: ... + fab: flwr.proto.fab_pb2.Fab | None = ..., + override_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + federation_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["fab", b"fab"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["fab", b"fab", "federation_config", b"federation_config", "override_config", b"override_config"]) -> None: ... + global___StartRunRequest = StartRunRequest +@typing.final class StartRunResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int run_id: builtins.int - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ... + global___StartRunResponse = StartRunResponse +@typing.final class StreamLogsRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int run_id: builtins.int - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ... + global___StreamLogsRequest = StreamLogsRequest +@typing.final class StreamLogsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + LOG_OUTPUT_FIELD_NUMBER: builtins.int - log_output: typing.Text - def __init__(self, + log_output: builtins.str + def __init__( + self, *, - log_output: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["log_output",b"log_output"]) -> None: ... + log_output: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["log_output", b"log_output"]) -> None: ... + global___StreamLogsResponse = StreamLogsResponse diff --git a/src/py/flwr/proto/exec_pb2_grpc.py b/src/py/flwr/proto/exec_pb2_grpc.py index 8cf4ce52a300..fbe56d7cad61 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.py +++ b/src/py/flwr/proto/exec_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import exec_pb2 as flwr_dot_proto_dot_exec__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/exec_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class ExecStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,12 +38,12 @@ def __init__(self, channel): '/flwr.proto.Exec/StartRun', request_serializer=flwr_dot_proto_dot_exec__pb2.StartRunRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_exec__pb2.StartRunResponse.FromString, - ) + _registered_method=True) self.StreamLogs = channel.unary_stream( '/flwr.proto.Exec/StreamLogs', request_serializer=flwr_dot_proto_dot_exec__pb2.StreamLogsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_exec__pb2.StreamLogsResponse.FromString, - ) + _registered_method=True) class ExecServicer(object): @@ -60,6 +80,7 @@ def add_ExecServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.Exec', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.Exec', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -77,11 +98,21 @@ def StartRun(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/StartRun', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Exec/StartRun', flwr_dot_proto_dot_exec__pb2.StartRunRequest.SerializeToString, flwr_dot_proto_dot_exec__pb2.StartRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def StreamLogs(request, @@ -94,8 +125,18 @@ def StreamLogs(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_stream(request, target, '/flwr.proto.Exec/StreamLogs', + return grpc.experimental.unary_stream( + request, + target, + '/flwr.proto.Exec/StreamLogs', flwr_dot_proto_dot_exec__pb2.StreamLogsRequest.SerializeToString, flwr_dot_proto_dot_exec__pb2.StreamLogsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/exec_pb2_grpc.pyi b/src/py/flwr/proto/exec_pb2_grpc.pyi index 20da3a53f4a8..a01ad2b4202e 100644 --- a/src/py/flwr/proto/exec_pb2_grpc.pyi +++ b/src/py/flwr/proto/exec_pb2_grpc.pyi @@ -1,41 +1,78 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import abc +import collections.abc import flwr.proto.exec_pb2 import grpc +import grpc.aio import typing +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... + class ExecStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... StartRun: grpc.UnaryUnaryMultiCallable[ flwr.proto.exec_pb2.StartRunRequest, - flwr.proto.exec_pb2.StartRunResponse] + flwr.proto.exec_pb2.StartRunResponse, + ] """Start run upon request""" StreamLogs: grpc.UnaryStreamMultiCallable[ flwr.proto.exec_pb2.StreamLogsRequest, - flwr.proto.exec_pb2.StreamLogsResponse] + flwr.proto.exec_pb2.StreamLogsResponse, + ] """Start log stream upon request""" +class ExecAsyncStub: + StartRun: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.exec_pb2.StartRunRequest, + flwr.proto.exec_pb2.StartRunResponse, + ] + """Start run upon request""" + + StreamLogs: grpc.aio.UnaryStreamMultiCallable[ + flwr.proto.exec_pb2.StreamLogsRequest, + flwr.proto.exec_pb2.StreamLogsResponse, + ] + """Start log stream upon request""" class ExecServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def StartRun(self, + def StartRun( + self, request: flwr.proto.exec_pb2.StartRunRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.exec_pb2.StartRunResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.exec_pb2.StartRunResponse, collections.abc.Awaitable[flwr.proto.exec_pb2.StartRunResponse]]: """Start run upon request""" - pass @abc.abstractmethod - def StreamLogs(self, + def StreamLogs( + self, request: flwr.proto.exec_pb2.StreamLogsRequest, - context: grpc.ServicerContext, - ) -> typing.Iterator[flwr.proto.exec_pb2.StreamLogsResponse]: + context: _ServicerContext, + ) -> typing.Union[collections.abc.Iterator[flwr.proto.exec_pb2.StreamLogsResponse], collections.abc.AsyncIterator[flwr.proto.exec_pb2.StreamLogsResponse]]: """Start log stream upon request""" - pass - -def add_ExecServicer_to_server(servicer: ExecServicer, server: grpc.Server) -> None: ... +def add_ExecServicer_to_server(servicer: ExecServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/src/py/flwr/proto/fab_pb2.py b/src/py/flwr/proto/fab_pb2.py index 3f04e6693ab8..6f6356a28712 100644 --- a/src/py/flwr/proto/fab_pb2.py +++ b/src/py/flwr/proto/fab_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/fab.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/fab.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,8 +29,8 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fab_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None _globals['_FAB']._serialized_start=36 _globals['_FAB']._serialized_end=76 _globals['_GETFABREQUEST']._serialized_start=78 diff --git a/src/py/flwr/proto/fab_pb2.pyi b/src/py/flwr/proto/fab_pb2.pyi index b2715dde5021..54c62c4ffc93 100644 --- a/src/py/flwr/proto/fab_pb2.pyi +++ b/src/py/flwr/proto/fab_pb2.pyi @@ -2,55 +2,65 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + import builtins import google.protobuf.descriptor import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Fab(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + HASH_STR_FIELD_NUMBER: builtins.int CONTENT_FIELD_NUMBER: builtins.int - hash_str: typing.Text + hash_str: builtins.str """This field is the hash of the data field. It is used to identify the data. The hash is calculated using the SHA-256 algorithm and is represented as a hex string (sha256hex). """ - content: builtins.bytes """This field contains the fab file contents a one bytes blob.""" - - def __init__(self, + def __init__( + self, *, - hash_str: typing.Text = ..., + hash_str: builtins.str = ..., content: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["content", b"content", "hash_str", b"hash_str"]) -> None: ... + global___Fab = Fab +@typing.final class GetFabRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + HASH_STR_FIELD_NUMBER: builtins.int - hash_str: typing.Text - def __init__(self, + hash_str: builtins.str + def __init__( + self, *, - hash_str: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["hash_str",b"hash_str"]) -> None: ... + hash_str: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["hash_str", b"hash_str"]) -> None: ... + global___GetFabRequest = GetFabRequest +@typing.final class GetFabResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + FAB_FIELD_NUMBER: builtins.int @property def fab(self) -> global___Fab: ... - def __init__(self, + def __init__( + self, *, - fab: typing.Optional[global___Fab] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> None: ... + fab: global___Fab | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["fab", b"fab"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["fab", b"fab"]) -> None: ... + global___GetFabResponse = GetFabResponse diff --git a/src/py/flwr/proto/fab_pb2_grpc.py b/src/py/flwr/proto/fab_pb2_grpc.py index 2daafffebfc8..9c2c7b24f26e 100644 --- a/src/py/flwr/proto/fab_pb2_grpc.py +++ b/src/py/flwr/proto/fab_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/fab_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/fab_pb2_grpc.pyi b/src/py/flwr/proto/fab_pb2_grpc.pyi index f3a5a087ef5d..a6a9cff9dfd4 100644 --- a/src/py/flwr/proto/fab_pb2_grpc.pyi +++ b/src/py/flwr/proto/fab_pb2_grpc.pyi @@ -2,3 +2,16 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/fleet_pb2.py b/src/py/flwr/proto/fleet_pb2.py index d1fe719f2d91..79393698862a 100644 --- a/src/py/flwr/proto/fleet_pb2.py +++ b/src/py/flwr/proto/fleet_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/fleet.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/fleet.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -23,9 +33,9 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fleet_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._loaded_options = None _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._serialized_options = b'8\001' _globals['_CREATENODEREQUEST']._serialized_start=128 _globals['_CREATENODEREQUEST']._serialized_end=170 diff --git a/src/py/flwr/proto/fleet_pb2.pyi b/src/py/flwr/proto/fleet_pb2.pyi index 5989f45c5c60..b104394f1c5a 100644 --- a/src/py/flwr/proto/fleet_pb2.pyi +++ b/src/py/flwr/proto/fleet_pb2.pyi @@ -1,176 +1,243 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.node_pb2 import flwr.proto.task_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class CreateNodeRequest(google.protobuf.message.Message): """CreateNode messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + PING_INTERVAL_FIELD_NUMBER: builtins.int ping_interval: builtins.float - def __init__(self, + def __init__( + self, *, ping_interval: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ping_interval",b"ping_interval"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ping_interval", b"ping_interval"]) -> None: ... + global___CreateNodeRequest = CreateNodeRequest +@typing.final class CreateNodeResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_FIELD_NUMBER: builtins.int @property def node(self) -> flwr.proto.node_pb2.Node: ... - def __init__(self, + def __init__( + self, *, - node: typing.Optional[flwr.proto.node_pb2.Node] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node",b"node"]) -> None: ... + node: flwr.proto.node_pb2.Node | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node", b"node"]) -> None: ... + global___CreateNodeResponse = CreateNodeResponse +@typing.final class DeleteNodeRequest(google.protobuf.message.Message): """DeleteNode messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_FIELD_NUMBER: builtins.int @property def node(self) -> flwr.proto.node_pb2.Node: ... - def __init__(self, + def __init__( + self, *, - node: typing.Optional[flwr.proto.node_pb2.Node] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node",b"node"]) -> None: ... + node: flwr.proto.node_pb2.Node | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node", b"node"]) -> None: ... + global___DeleteNodeRequest = DeleteNodeRequest +@typing.final class DeleteNodeResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - def __init__(self, - ) -> None: ... + + def __init__( + self, + ) -> None: ... + global___DeleteNodeResponse = DeleteNodeResponse +@typing.final class PingRequest(google.protobuf.message.Message): """Ping messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_FIELD_NUMBER: builtins.int PING_INTERVAL_FIELD_NUMBER: builtins.int + ping_interval: builtins.float @property def node(self) -> flwr.proto.node_pb2.Node: ... - ping_interval: builtins.float - def __init__(self, + def __init__( + self, *, - node: typing.Optional[flwr.proto.node_pb2.Node] = ..., + node: flwr.proto.node_pb2.Node | None = ..., ping_interval: builtins.float = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node",b"node","ping_interval",b"ping_interval"]) -> None: ... + ) -> None: ... + def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node", b"node", "ping_interval", b"ping_interval"]) -> None: ... + global___PingRequest = PingRequest +@typing.final class PingResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + SUCCESS_FIELD_NUMBER: builtins.int success: builtins.bool - def __init__(self, + def __init__( + self, *, success: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["success", b"success"]) -> None: ... + global___PingResponse = PingResponse +@typing.final class PullTaskInsRequest(google.protobuf.message.Message): """PullTaskIns messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_FIELD_NUMBER: builtins.int TASK_IDS_FIELD_NUMBER: builtins.int @property def node(self) -> flwr.proto.node_pb2.Node: ... @property - def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - def __init__(self, + def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, *, - node: typing.Optional[flwr.proto.node_pb2.Node] = ..., - task_ids: typing.Optional[typing.Iterable[typing.Text]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node",b"node","task_ids",b"task_ids"]) -> None: ... + node: flwr.proto.node_pb2.Node | None = ..., + task_ids: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["node", b"node"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node", b"node", "task_ids", b"task_ids"]) -> None: ... + global___PullTaskInsRequest = PullTaskInsRequest +@typing.final class PullTaskInsResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RECONNECT_FIELD_NUMBER: builtins.int TASK_INS_LIST_FIELD_NUMBER: builtins.int @property def reconnect(self) -> global___Reconnect: ... @property def task_ins_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskIns]: ... - def __init__(self, + def __init__( + self, *, - reconnect: typing.Optional[global___Reconnect] = ..., - task_ins_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskIns]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect","task_ins_list",b"task_ins_list"]) -> None: ... + reconnect: global___Reconnect | None = ..., + task_ins_list: collections.abc.Iterable[flwr.proto.task_pb2.TaskIns] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["reconnect", b"reconnect", "task_ins_list", b"task_ins_list"]) -> None: ... + global___PullTaskInsResponse = PullTaskInsResponse +@typing.final class PushTaskResRequest(google.protobuf.message.Message): """PushTaskRes messages""" + DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_RES_LIST_FIELD_NUMBER: builtins.int @property def task_res_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskRes]: ... - def __init__(self, + def __init__( + self, *, - task_res_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskRes]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ... + task_res_list: collections.abc.Iterable[flwr.proto.task_pb2.TaskRes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["task_res_list", b"task_res_list"]) -> None: ... + global___PushTaskResRequest = PushTaskResRequest +@typing.final class PushTaskResResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ResultsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str value: builtins.int - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., + key: builtins.str = ..., value: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... RECONNECT_FIELD_NUMBER: builtins.int RESULTS_FIELD_NUMBER: builtins.int @property def reconnect(self) -> global___Reconnect: ... @property - def results(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, builtins.int]: ... - def __init__(self, + def results(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]: ... + def __init__( + self, *, - reconnect: typing.Optional[global___Reconnect] = ..., - results: typing.Optional[typing.Mapping[typing.Text, builtins.int]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect","results",b"results"]) -> None: ... + reconnect: global___Reconnect | None = ..., + results: collections.abc.Mapping[builtins.str, builtins.int] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["reconnect", b"reconnect", "results", b"results"]) -> None: ... + global___PushTaskResResponse = PushTaskResResponse +@typing.final class Reconnect(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RECONNECT_FIELD_NUMBER: builtins.int reconnect: builtins.int - def __init__(self, + def __init__( + self, *, reconnect: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["reconnect", b"reconnect"]) -> None: ... + global___Reconnect = Reconnect diff --git a/src/py/flwr/proto/fleet_pb2_grpc.py b/src/py/flwr/proto/fleet_pb2_grpc.py index 5f4bb6732dcf..74920c9f3db6 100644 --- a/src/py/flwr/proto/fleet_pb2_grpc.py +++ b/src/py/flwr/proto/fleet_pb2_grpc.py @@ -1,11 +1,31 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2 from flwr.proto import fleet_pb2 as flwr_dot_proto_dot_fleet__pb2 from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/fleet_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class FleetStub(object): """Missing associated documentation comment in .proto file.""" @@ -20,37 +40,37 @@ def __init__(self, channel): '/flwr.proto.Fleet/CreateNode', request_serializer=flwr_dot_proto_dot_fleet__pb2.CreateNodeRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fleet__pb2.CreateNodeResponse.FromString, - ) + _registered_method=True) self.DeleteNode = channel.unary_unary( '/flwr.proto.Fleet/DeleteNode', request_serializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fleet__pb2.DeleteNodeResponse.FromString, - ) + _registered_method=True) self.Ping = channel.unary_unary( '/flwr.proto.Fleet/Ping', request_serializer=flwr_dot_proto_dot_fleet__pb2.PingRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fleet__pb2.PingResponse.FromString, - ) + _registered_method=True) self.PullTaskIns = channel.unary_unary( '/flwr.proto.Fleet/PullTaskIns', request_serializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsResponse.FromString, - ) + _registered_method=True) self.PushTaskRes = channel.unary_unary( '/flwr.proto.Fleet/PushTaskRes', request_serializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResResponse.FromString, - ) + _registered_method=True) self.GetRun = channel.unary_unary( '/flwr.proto.Fleet/GetRun', request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString, - ) + _registered_method=True) self.GetFab = channel.unary_unary( '/flwr.proto.Fleet/GetFab', request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString, response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString, - ) + _registered_method=True) class FleetServicer(object): @@ -147,6 +167,7 @@ def add_FleetServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.Fleet', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.Fleet', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -164,11 +185,21 @@ def CreateNode(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/CreateNode', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/CreateNode', flwr_dot_proto_dot_fleet__pb2.CreateNodeRequest.SerializeToString, flwr_dot_proto_dot_fleet__pb2.CreateNodeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteNode(request, @@ -181,11 +212,21 @@ def DeleteNode(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/DeleteNode', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/DeleteNode', flwr_dot_proto_dot_fleet__pb2.DeleteNodeRequest.SerializeToString, flwr_dot_proto_dot_fleet__pb2.DeleteNodeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Ping(request, @@ -198,11 +239,21 @@ def Ping(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/Ping', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/Ping', flwr_dot_proto_dot_fleet__pb2.PingRequest.SerializeToString, flwr_dot_proto_dot_fleet__pb2.PingResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PullTaskIns(request, @@ -215,11 +266,21 @@ def PullTaskIns(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/PullTaskIns', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/PullTaskIns', flwr_dot_proto_dot_fleet__pb2.PullTaskInsRequest.SerializeToString, flwr_dot_proto_dot_fleet__pb2.PullTaskInsResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def PushTaskRes(request, @@ -232,11 +293,21 @@ def PushTaskRes(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/PushTaskRes', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/PushTaskRes', flwr_dot_proto_dot_fleet__pb2.PushTaskResRequest.SerializeToString, flwr_dot_proto_dot_fleet__pb2.PushTaskResResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetRun(request, @@ -249,11 +320,21 @@ def GetRun(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/GetRun', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/GetRun', flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString, flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def GetFab(request, @@ -266,8 +347,18 @@ def GetFab(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.Fleet/GetFab', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.Fleet/GetFab', flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString, flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/fleet_pb2_grpc.pyi b/src/py/flwr/proto/fleet_pb2_grpc.pyi index 7988fd6a1dda..0bd13f956f48 100644 --- a/src/py/flwr/proto/fleet_pb2_grpc.pyi +++ b/src/py/flwr/proto/fleet_pb2_grpc.pyi @@ -1,30 +1,59 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import abc +import collections.abc import flwr.proto.fab_pb2 import flwr.proto.fleet_pb2 import flwr.proto.run_pb2 import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... class FleetStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... CreateNode: grpc.UnaryUnaryMultiCallable[ flwr.proto.fleet_pb2.CreateNodeRequest, - flwr.proto.fleet_pb2.CreateNodeResponse] + flwr.proto.fleet_pb2.CreateNodeResponse, + ] DeleteNode: grpc.UnaryUnaryMultiCallable[ flwr.proto.fleet_pb2.DeleteNodeRequest, - flwr.proto.fleet_pb2.DeleteNodeResponse] + flwr.proto.fleet_pb2.DeleteNodeResponse, + ] Ping: grpc.UnaryUnaryMultiCallable[ flwr.proto.fleet_pb2.PingRequest, - flwr.proto.fleet_pb2.PingResponse] + flwr.proto.fleet_pb2.PingResponse, + ] PullTaskIns: grpc.UnaryUnaryMultiCallable[ flwr.proto.fleet_pb2.PullTaskInsRequest, - flwr.proto.fleet_pb2.PullTaskInsResponse] + flwr.proto.fleet_pb2.PullTaskInsResponse, + ] """Retrieve one or more tasks, if possible HTTP API path: /api/v1/fleet/pull-task-ins @@ -32,7 +61,8 @@ class FleetStub: PushTaskRes: grpc.UnaryUnaryMultiCallable[ flwr.proto.fleet_pb2.PushTaskResRequest, - flwr.proto.fleet_pb2.PushTaskResResponse] + flwr.proto.fleet_pb2.PushTaskResResponse, + ] """Complete one or more tasks, if possible HTTP API path: /api/v1/fleet/push-task-res @@ -40,68 +70,117 @@ class FleetStub: GetRun: grpc.UnaryUnaryMultiCallable[ flwr.proto.run_pb2.GetRunRequest, - flwr.proto.run_pb2.GetRunResponse] + flwr.proto.run_pb2.GetRunResponse, + ] GetFab: grpc.UnaryUnaryMultiCallable[ flwr.proto.fab_pb2.GetFabRequest, - flwr.proto.fab_pb2.GetFabResponse] + flwr.proto.fab_pb2.GetFabResponse, + ] """Get FAB""" +class FleetAsyncStub: + CreateNode: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fleet_pb2.CreateNodeRequest, + flwr.proto.fleet_pb2.CreateNodeResponse, + ] + + DeleteNode: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fleet_pb2.DeleteNodeRequest, + flwr.proto.fleet_pb2.DeleteNodeResponse, + ] + + Ping: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fleet_pb2.PingRequest, + flwr.proto.fleet_pb2.PingResponse, + ] + + PullTaskIns: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fleet_pb2.PullTaskInsRequest, + flwr.proto.fleet_pb2.PullTaskInsResponse, + ] + """Retrieve one or more tasks, if possible + + HTTP API path: /api/v1/fleet/pull-task-ins + """ + + PushTaskRes: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fleet_pb2.PushTaskResRequest, + flwr.proto.fleet_pb2.PushTaskResResponse, + ] + """Complete one or more tasks, if possible + + HTTP API path: /api/v1/fleet/push-task-res + """ + + GetRun: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.run_pb2.GetRunRequest, + flwr.proto.run_pb2.GetRunResponse, + ] + + GetFab: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.fab_pb2.GetFabRequest, + flwr.proto.fab_pb2.GetFabResponse, + ] + """Get FAB""" class FleetServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def CreateNode(self, + def CreateNode( + self, request: flwr.proto.fleet_pb2.CreateNodeRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fleet_pb2.CreateNodeResponse: ... + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fleet_pb2.CreateNodeResponse, collections.abc.Awaitable[flwr.proto.fleet_pb2.CreateNodeResponse]]: ... @abc.abstractmethod - def DeleteNode(self, + def DeleteNode( + self, request: flwr.proto.fleet_pb2.DeleteNodeRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fleet_pb2.DeleteNodeResponse: ... + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fleet_pb2.DeleteNodeResponse, collections.abc.Awaitable[flwr.proto.fleet_pb2.DeleteNodeResponse]]: ... @abc.abstractmethod - def Ping(self, + def Ping( + self, request: flwr.proto.fleet_pb2.PingRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fleet_pb2.PingResponse: ... + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fleet_pb2.PingResponse, collections.abc.Awaitable[flwr.proto.fleet_pb2.PingResponse]]: ... @abc.abstractmethod - def PullTaskIns(self, + def PullTaskIns( + self, request: flwr.proto.fleet_pb2.PullTaskInsRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fleet_pb2.PullTaskInsResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fleet_pb2.PullTaskInsResponse, collections.abc.Awaitable[flwr.proto.fleet_pb2.PullTaskInsResponse]]: """Retrieve one or more tasks, if possible HTTP API path: /api/v1/fleet/pull-task-ins """ - pass @abc.abstractmethod - def PushTaskRes(self, + def PushTaskRes( + self, request: flwr.proto.fleet_pb2.PushTaskResRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fleet_pb2.PushTaskResResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fleet_pb2.PushTaskResResponse, collections.abc.Awaitable[flwr.proto.fleet_pb2.PushTaskResResponse]]: """Complete one or more tasks, if possible HTTP API path: /api/v1/fleet/push-task-res """ - pass @abc.abstractmethod - def GetRun(self, + def GetRun( + self, request: flwr.proto.run_pb2.GetRunRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.run_pb2.GetRunResponse: ... + context: _ServicerContext, + ) -> typing.Union[flwr.proto.run_pb2.GetRunResponse, collections.abc.Awaitable[flwr.proto.run_pb2.GetRunResponse]]: ... @abc.abstractmethod - def GetFab(self, + def GetFab( + self, request: flwr.proto.fab_pb2.GetFabRequest, - context: grpc.ServicerContext, - ) -> flwr.proto.fab_pb2.GetFabResponse: + context: _ServicerContext, + ) -> typing.Union[flwr.proto.fab_pb2.GetFabResponse, collections.abc.Awaitable[flwr.proto.fab_pb2.GetFabResponse]]: """Get FAB""" - pass - -def add_FleetServicer_to_server(servicer: FleetServicer, server: grpc.Server) -> None: ... +def add_FleetServicer_to_server(servicer: FleetServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/src/py/flwr/proto/grpcadapter_pb2.py b/src/py/flwr/proto/grpcadapter_pb2.py index 2eff4bb78e47..34f31f77689c 100644 --- a/src/py/flwr/proto/grpcadapter_pb2.py +++ b/src/py/flwr/proto/grpcadapter_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/grpcadapter.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/grpcadapter.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,9 +29,9 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.grpcadapter_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_MESSAGECONTAINER_METADATAENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_MESSAGECONTAINER_METADATAENTRY']._loaded_options = None _globals['_MESSAGECONTAINER_METADATAENTRY']._serialized_options = b'8\001' _globals['_MESSAGECONTAINER']._serialized_start=45 _globals['_MESSAGECONTAINER']._serialized_end=231 diff --git a/src/py/flwr/proto/grpcadapter_pb2.pyi b/src/py/flwr/proto/grpcadapter_pb2.pyi index 35889b30d2b6..45dcc4ed1593 100644 --- a/src/py/flwr/proto/grpcadapter_pb2.pyi +++ b/src/py/flwr/proto/grpcadapter_pb2.pyi @@ -1,43 +1,65 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class MessageContainer(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text - value: typing.Text - def __init__(self, + key: builtins.str + value: builtins.str + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... METADATA_FIELD_NUMBER: builtins.int GRPC_MESSAGE_NAME_FIELD_NUMBER: builtins.int GRPC_MESSAGE_CONTENT_FIELD_NUMBER: builtins.int - @property - def metadata(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ... - grpc_message_name: typing.Text + grpc_message_name: builtins.str grpc_message_content: builtins.bytes - def __init__(self, + @property + def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... + def __init__( + self, *, - metadata: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ..., - grpc_message_name: typing.Text = ..., + metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + grpc_message_name: builtins.str = ..., grpc_message_content: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["grpc_message_content",b"grpc_message_content","grpc_message_name",b"grpc_message_name","metadata",b"metadata"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["grpc_message_content", b"grpc_message_content", "grpc_message_name", b"grpc_message_name", "metadata", b"metadata"]) -> None: ... + global___MessageContainer = MessageContainer diff --git a/src/py/flwr/proto/grpcadapter_pb2_grpc.py b/src/py/flwr/proto/grpcadapter_pb2_grpc.py index 831f99d7b237..220e4a3e504e 100644 --- a/src/py/flwr/proto/grpcadapter_pb2_grpc.py +++ b/src/py/flwr/proto/grpcadapter_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import grpcadapter_pb2 as flwr_dot_proto_dot_grpcadapter__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/grpcadapter_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class GrpcAdapterStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,7 +38,7 @@ def __init__(self, channel): '/flwr.proto.GrpcAdapter/SendReceive', request_serializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.SerializeToString, response_deserializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.FromString, - ) + _registered_method=True) class GrpcAdapterServicer(object): @@ -42,6 +62,7 @@ def add_GrpcAdapterServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.GrpcAdapter', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.GrpcAdapter', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -59,8 +80,18 @@ def SendReceive(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/flwr.proto.GrpcAdapter/SendReceive', + return grpc.experimental.unary_unary( + request, + target, + '/flwr.proto.GrpcAdapter/SendReceive', flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.SerializeToString, flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi b/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi index 640f983e6e04..9bce0d8fe3b2 100644 --- a/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +++ b/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi @@ -1,24 +1,55 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import abc +import collections.abc import flwr.proto.grpcadapter_pb2 import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... class GrpcAdapterStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... SendReceive: grpc.UnaryUnaryMultiCallable[ flwr.proto.grpcadapter_pb2.MessageContainer, - flwr.proto.grpcadapter_pb2.MessageContainer] + flwr.proto.grpcadapter_pb2.MessageContainer, + ] +class GrpcAdapterAsyncStub: + SendReceive: grpc.aio.UnaryUnaryMultiCallable[ + flwr.proto.grpcadapter_pb2.MessageContainer, + flwr.proto.grpcadapter_pb2.MessageContainer, + ] class GrpcAdapterServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def SendReceive(self, + def SendReceive( + self, request: flwr.proto.grpcadapter_pb2.MessageContainer, - context: grpc.ServicerContext, - ) -> flwr.proto.grpcadapter_pb2.MessageContainer: ... - + context: _ServicerContext, + ) -> typing.Union[flwr.proto.grpcadapter_pb2.MessageContainer, collections.abc.Awaitable[flwr.proto.grpcadapter_pb2.MessageContainer]]: ... -def add_GrpcAdapterServicer_to_server(servicer: GrpcAdapterServicer, server: grpc.Server) -> None: ... +def add_GrpcAdapterServicer_to_server(servicer: GrpcAdapterServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/src/py/flwr/proto/message_pb2.pyi b/src/py/flwr/proto/message_pb2.pyi index b352917f217e..157407f1d67d 100644 --- a/src/py/flwr/proto/message_pb2.pyi +++ b/src/py/flwr/proto/message_pb2.pyi @@ -1,8 +1,24 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.error_pb2 import flwr.proto.recordset_pb2 import flwr.proto.transport_pb2 @@ -10,12 +26,13 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Message(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + METADATA_FIELD_NUMBER: builtins.int CONTENT_FIELD_NUMBER: builtins.int ERROR_FIELD_NUMBER: builtins.int @@ -25,47 +42,57 @@ class Message(google.protobuf.message.Message): def content(self) -> flwr.proto.recordset_pb2.RecordSet: ... @property def error(self) -> flwr.proto.error_pb2.Error: ... - def __init__(self, + def __init__( + self, *, - metadata: typing.Optional[global___Metadata] = ..., - content: typing.Optional[flwr.proto.recordset_pb2.RecordSet] = ..., - error: typing.Optional[flwr.proto.error_pb2.Error] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["content",b"content","error",b"error","metadata",b"metadata"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["content",b"content","error",b"error","metadata",b"metadata"]) -> None: ... + metadata: global___Metadata | None = ..., + content: flwr.proto.recordset_pb2.RecordSet | None = ..., + error: flwr.proto.error_pb2.Error | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["content", b"content", "error", b"error", "metadata", b"metadata"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["content", b"content", "error", b"error", "metadata", b"metadata"]) -> None: ... + global___Message = Message +@typing.final class Context(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class NodeConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class RunConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NODE_ID_FIELD_NUMBER: builtins.int NODE_CONFIG_FIELD_NUMBER: builtins.int @@ -73,24 +100,28 @@ class Context(google.protobuf.message.Message): RUN_CONFIG_FIELD_NUMBER: builtins.int node_id: builtins.int @property - def node_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... + def node_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... @property def state(self) -> flwr.proto.recordset_pb2.RecordSet: ... @property - def run_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... - def __init__(self, + def run_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... + def __init__( + self, *, node_id: builtins.int = ..., - node_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - state: typing.Optional[flwr.proto.recordset_pb2.RecordSet] = ..., - run_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["state",b"state"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node_config",b"node_config","node_id",b"node_id","run_config",b"run_config","state",b"state"]) -> None: ... + node_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + state: flwr.proto.recordset_pb2.RecordSet | None = ..., + run_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["state", b"state"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node_config", b"node_config", "node_id", b"node_id", "run_config", b"run_config", "state", b"state"]) -> None: ... + global___Context = Context +@typing.final class Metadata(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int MESSAGE_ID_FIELD_NUMBER: builtins.int SRC_NODE_ID_FIELD_NUMBER: builtins.int @@ -101,25 +132,27 @@ class Metadata(google.protobuf.message.Message): MESSAGE_TYPE_FIELD_NUMBER: builtins.int CREATED_AT_FIELD_NUMBER: builtins.int run_id: builtins.int - message_id: typing.Text + message_id: builtins.str src_node_id: builtins.int dst_node_id: builtins.int - reply_to_message: typing.Text - group_id: typing.Text + reply_to_message: builtins.str + group_id: builtins.str ttl: builtins.float - message_type: typing.Text + message_type: builtins.str created_at: builtins.float - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - message_id: typing.Text = ..., + message_id: builtins.str = ..., src_node_id: builtins.int = ..., dst_node_id: builtins.int = ..., - reply_to_message: typing.Text = ..., - group_id: typing.Text = ..., + reply_to_message: builtins.str = ..., + group_id: builtins.str = ..., ttl: builtins.float = ..., - message_type: typing.Text = ..., + message_type: builtins.str = ..., created_at: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["created_at",b"created_at","dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","reply_to_message",b"reply_to_message","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["created_at", b"created_at", "dst_node_id", b"dst_node_id", "group_id", b"group_id", "message_id", b"message_id", "message_type", b"message_type", "reply_to_message", b"reply_to_message", "run_id", b"run_id", "src_node_id", b"src_node_id", "ttl", b"ttl"]) -> None: ... + global___Metadata = Metadata diff --git a/src/py/flwr/proto/message_pb2_grpc.py b/src/py/flwr/proto/message_pb2_grpc.py index 2daafffebfc8..908c0de6b78b 100644 --- a/src/py/flwr/proto/message_pb2_grpc.py +++ b/src/py/flwr/proto/message_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/message_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/message_pb2_grpc.pyi b/src/py/flwr/proto/message_pb2_grpc.pyi index f3a5a087ef5d..b378d4c38470 100644 --- a/src/py/flwr/proto/message_pb2_grpc.pyi +++ b/src/py/flwr/proto/message_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/node_pb2.pyi b/src/py/flwr/proto/node_pb2.pyi index e10e56b1c9a9..83b559920f54 100644 --- a/src/py/flwr/proto/node_pb2.pyi +++ b/src/py/flwr/proto/node_pb2.pyi @@ -1,24 +1,43 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins import google.protobuf.descriptor import google.protobuf.message -import typing_extensions +import typing DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Node(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + NODE_ID_FIELD_NUMBER: builtins.int ANONYMOUS_FIELD_NUMBER: builtins.int node_id: builtins.int anonymous: builtins.bool - def __init__(self, + def __init__( + self, *, node_id: builtins.int = ..., anonymous: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["anonymous",b"anonymous","node_id",b"node_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["anonymous", b"anonymous", "node_id", b"node_id"]) -> None: ... + global___Node = Node diff --git a/src/py/flwr/proto/node_pb2_grpc.py b/src/py/flwr/proto/node_pb2_grpc.py index 2daafffebfc8..4b990e26989d 100644 --- a/src/py/flwr/proto/node_pb2_grpc.py +++ b/src/py/flwr/proto/node_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/node_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/node_pb2_grpc.pyi b/src/py/flwr/proto/node_pb2_grpc.pyi index f3a5a087ef5d..d807e9947369 100644 --- a/src/py/flwr/proto/node_pb2_grpc.pyi +++ b/src/py/flwr/proto/node_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/recordset_pb2.py b/src/py/flwr/proto/recordset_pb2.py index f7f74d72182b..dd316eece359 100644 --- a/src/py/flwr/proto/recordset_pb2.py +++ b/src/py/flwr/proto/recordset_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/recordset.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/recordset.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,17 +29,17 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.recordset_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_METRICSRECORD_DATAENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_METRICSRECORD_DATAENTRY']._loaded_options = None _globals['_METRICSRECORD_DATAENTRY']._serialized_options = b'8\001' - _globals['_CONFIGSRECORD_DATAENTRY']._options = None + _globals['_CONFIGSRECORD_DATAENTRY']._loaded_options = None _globals['_CONFIGSRECORD_DATAENTRY']._serialized_options = b'8\001' - _globals['_RECORDSET_PARAMETERSENTRY']._options = None + _globals['_RECORDSET_PARAMETERSENTRY']._loaded_options = None _globals['_RECORDSET_PARAMETERSENTRY']._serialized_options = b'8\001' - _globals['_RECORDSET_METRICSENTRY']._options = None + _globals['_RECORDSET_METRICSENTRY']._loaded_options = None _globals['_RECORDSET_METRICSENTRY']._serialized_options = b'8\001' - _globals['_RECORDSET_CONFIGSENTRY']._options = None + _globals['_RECORDSET_CONFIGSENTRY']._loaded_options = None _globals['_RECORDSET_CONFIGSENTRY']._serialized_options = b'8\001' _globals['_DOUBLELIST']._serialized_start=42 _globals['_DOUBLELIST']._serialized_end=68 diff --git a/src/py/flwr/proto/recordset_pb2.pyi b/src/py/flwr/proto/recordset_pb2.pyi index 86244697129c..ccd7165379c3 100644 --- a/src/py/flwr/proto/recordset_pb2.pyi +++ b/src/py/flwr/proto/recordset_pb2.pyi @@ -1,127 +1,171 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class DoubleList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + VALS_FIELD_NUMBER: builtins.int @property def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... - def __init__(self, + def __init__( + self, *, - vals: typing.Optional[typing.Iterable[builtins.float]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... + vals: collections.abc.Iterable[builtins.float] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ... + global___DoubleList = DoubleList +@typing.final class Sint64List(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + VALS_FIELD_NUMBER: builtins.int @property def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... - def __init__(self, + def __init__( + self, *, - vals: typing.Optional[typing.Iterable[builtins.int]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... + vals: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ... + global___Sint64List = Sint64List +@typing.final class BoolList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + VALS_FIELD_NUMBER: builtins.int @property def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... - def __init__(self, + def __init__( + self, *, - vals: typing.Optional[typing.Iterable[builtins.bool]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... + vals: collections.abc.Iterable[builtins.bool] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ... + global___BoolList = BoolList +@typing.final class StringList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + VALS_FIELD_NUMBER: builtins.int @property - def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - def __init__(self, + def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def __init__( + self, *, - vals: typing.Optional[typing.Iterable[typing.Text]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... + vals: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ... + global___StringList = StringList +@typing.final class BytesList(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + VALS_FIELD_NUMBER: builtins.int @property def vals(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ... - def __init__(self, + def __init__( + self, *, - vals: typing.Optional[typing.Iterable[builtins.bytes]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["vals",b"vals"]) -> None: ... + vals: collections.abc.Iterable[builtins.bytes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["vals", b"vals"]) -> None: ... + global___BytesList = BytesList +@typing.final class Array(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + DTYPE_FIELD_NUMBER: builtins.int SHAPE_FIELD_NUMBER: builtins.int STYPE_FIELD_NUMBER: builtins.int DATA_FIELD_NUMBER: builtins.int - dtype: typing.Text + dtype: builtins.str + stype: builtins.str + data: builtins.bytes @property def shape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... - stype: typing.Text - data: builtins.bytes - def __init__(self, + def __init__( + self, *, - dtype: typing.Text = ..., - shape: typing.Optional[typing.Iterable[builtins.int]] = ..., - stype: typing.Text = ..., + dtype: builtins.str = ..., + shape: collections.abc.Iterable[builtins.int] | None = ..., + stype: builtins.str = ..., data: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data",b"data","dtype",b"dtype","shape",b"shape","stype",b"stype"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "dtype", b"dtype", "shape", b"shape", "stype", b"stype"]) -> None: ... + global___Array = Array +@typing.final class MetricsRecordValue(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + DOUBLE_FIELD_NUMBER: builtins.int SINT64_FIELD_NUMBER: builtins.int DOUBLE_LIST_FIELD_NUMBER: builtins.int SINT64_LIST_FIELD_NUMBER: builtins.int double: builtins.float """Single element""" - sint64: builtins.int @property def double_list(self) -> global___DoubleList: """List types""" - pass + @property def sint64_list(self) -> global___Sint64List: ... - def __init__(self, + def __init__( + self, *, double: builtins.float = ..., sint64: builtins.int = ..., - double_list: typing.Optional[global___DoubleList] = ..., - sint64_list: typing.Optional[global___Sint64List] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint64_list",b"sint64_list","value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["double",b"double","double_list",b"double_list","sint64",b"sint64","sint64_list",b"sint64_list","value",b"value"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["value",b"value"]) -> typing.Optional[typing_extensions.Literal["double","sint64","double_list","sint64_list"]]: ... + double_list: global___DoubleList | None = ..., + sint64_list: global___Sint64List | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint64_list", b"sint64_list", "value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["double", b"double", "double_list", b"double_list", "sint64", b"sint64", "sint64_list", b"sint64_list", "value", b"value"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double", "sint64", "double_list", "sint64_list"] | None: ... + global___MetricsRecordValue = MetricsRecordValue +@typing.final class ConfigsRecordValue(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + DOUBLE_FIELD_NUMBER: builtins.int SINT64_FIELD_NUMBER: builtins.int BOOL_FIELD_NUMBER: builtins.int @@ -134,15 +178,14 @@ class ConfigsRecordValue(google.protobuf.message.Message): BYTES_LIST_FIELD_NUMBER: builtins.int double: builtins.float """Single element""" - sint64: builtins.int bool: builtins.bool - string: typing.Text + string: builtins.str bytes: builtins.bytes @property def double_list(self) -> global___DoubleList: """List types""" - pass + @property def sint64_list(self) -> global___Sint64List: ... @property @@ -151,155 +194,188 @@ class ConfigsRecordValue(google.protobuf.message.Message): def string_list(self) -> global___StringList: ... @property def bytes_list(self) -> global___BytesList: ... - def __init__(self, + def __init__( + self, *, double: builtins.float = ..., sint64: builtins.int = ..., bool: builtins.bool = ..., - string: typing.Text = ..., + string: builtins.str = ..., bytes: builtins.bytes = ..., - double_list: typing.Optional[global___DoubleList] = ..., - sint64_list: typing.Optional[global___Sint64List] = ..., - bool_list: typing.Optional[global___BoolList] = ..., - string_list: typing.Optional[global___StringList] = ..., - bytes_list: typing.Optional[global___BytesList] = ..., - ) -> None: ... - 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: ... - 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: ... - 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"]]: ... + double_list: global___DoubleList | None = ..., + sint64_list: global___Sint64List | None = ..., + bool_list: global___BoolList | None = ..., + string_list: global___StringList | None = ..., + bytes_list: global___BytesList | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.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: ... + def ClearField(self, field_name: typing.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: ... + def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["double", "sint64", "bool", "string", "bytes", "double_list", "sint64_list", "bool_list", "string_list", "bytes_list"] | None: ... + global___ConfigsRecordValue = ConfigsRecordValue +@typing.final class ParametersRecord(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + DATA_KEYS_FIELD_NUMBER: builtins.int DATA_VALUES_FIELD_NUMBER: builtins.int @property - def data_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... + def data_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... @property def data_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Array]: ... - def __init__(self, + def __init__( + self, *, - data_keys: typing.Optional[typing.Iterable[typing.Text]] = ..., - data_values: typing.Optional[typing.Iterable[global___Array]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data_keys",b"data_keys","data_values",b"data_values"]) -> None: ... + data_keys: collections.abc.Iterable[builtins.str] | None = ..., + data_values: collections.abc.Iterable[global___Array] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data_keys", b"data_keys", "data_values", b"data_values"]) -> None: ... + global___ParametersRecord = ParametersRecord +@typing.final class MetricsRecord(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class DataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___MetricsRecordValue: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___MetricsRecordValue] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___MetricsRecordValue | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int @property - def data(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___MetricsRecordValue]: ... - def __init__(self, + def data(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___MetricsRecordValue]: ... + def __init__( + self, *, - data: typing.Optional[typing.Mapping[typing.Text, global___MetricsRecordValue]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data",b"data"]) -> None: ... + data: collections.abc.Mapping[builtins.str, global___MetricsRecordValue] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data"]) -> None: ... + global___MetricsRecord = MetricsRecord +@typing.final class ConfigsRecord(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class DataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___ConfigsRecordValue: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___ConfigsRecordValue] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___ConfigsRecordValue | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int @property - def data(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___ConfigsRecordValue]: ... - def __init__(self, + def data(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ConfigsRecordValue]: ... + def __init__( + self, *, - data: typing.Optional[typing.Mapping[typing.Text, global___ConfigsRecordValue]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data",b"data"]) -> None: ... + data: collections.abc.Mapping[builtins.str, global___ConfigsRecordValue] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data"]) -> None: ... + global___ConfigsRecord = ConfigsRecord +@typing.final class RecordSet(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ParametersEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___ParametersRecord: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___ParametersRecord] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___ParametersRecord | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class MetricsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___MetricsRecord: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___MetricsRecord] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___MetricsRecord | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... + @typing.final class ConfigsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___ConfigsRecord: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___ConfigsRecord] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___ConfigsRecord | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PARAMETERS_FIELD_NUMBER: builtins.int METRICS_FIELD_NUMBER: builtins.int CONFIGS_FIELD_NUMBER: builtins.int @property - def parameters(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___ParametersRecord]: ... + def parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ParametersRecord]: ... @property - def metrics(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___MetricsRecord]: ... + def metrics(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___MetricsRecord]: ... @property - def configs(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___ConfigsRecord]: ... - def __init__(self, + def configs(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___ConfigsRecord]: ... + def __init__( + self, *, - parameters: typing.Optional[typing.Mapping[typing.Text, global___ParametersRecord]] = ..., - metrics: typing.Optional[typing.Mapping[typing.Text, global___MetricsRecord]] = ..., - configs: typing.Optional[typing.Mapping[typing.Text, global___ConfigsRecord]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["configs",b"configs","metrics",b"metrics","parameters",b"parameters"]) -> None: ... + parameters: collections.abc.Mapping[builtins.str, global___ParametersRecord] | None = ..., + metrics: collections.abc.Mapping[builtins.str, global___MetricsRecord] | None = ..., + configs: collections.abc.Mapping[builtins.str, global___ConfigsRecord] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["configs", b"configs", "metrics", b"metrics", "parameters", b"parameters"]) -> None: ... + global___RecordSet = RecordSet diff --git a/src/py/flwr/proto/recordset_pb2_grpc.py b/src/py/flwr/proto/recordset_pb2_grpc.py index 2daafffebfc8..08122a20d29a 100644 --- a/src/py/flwr/proto/recordset_pb2_grpc.py +++ b/src/py/flwr/proto/recordset_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/recordset_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/recordset_pb2_grpc.pyi b/src/py/flwr/proto/recordset_pb2_grpc.pyi index f3a5a087ef5d..b378d4c38470 100644 --- a/src/py/flwr/proto/recordset_pb2_grpc.pyi +++ b/src/py/flwr/proto/recordset_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/run_pb2.pyi b/src/py/flwr/proto/run_pb2.pyi index e65feee9c518..cbc459eef6ba 100644 --- a/src/py/flwr/proto/run_pb2.pyi +++ b/src/py/flwr/proto/run_pb2.pyi @@ -1,33 +1,53 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.transport_pb2 import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Run(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class OverrideConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> flwr.proto.transport_pb2.Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: flwr.proto.transport_pb2.Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... RUN_ID_FIELD_NUMBER: builtins.int FAB_ID_FIELD_NUMBER: builtins.int @@ -35,42 +55,52 @@ class Run(google.protobuf.message.Message): OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int FAB_HASH_FIELD_NUMBER: builtins.int run_id: builtins.int - fab_id: typing.Text - fab_version: typing.Text + fab_id: builtins.str + fab_version: builtins.str + fab_hash: builtins.str @property - def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ... - fab_hash: typing.Text - def __init__(self, + def override_config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, flwr.proto.transport_pb2.Scalar]: ... + def __init__( + self, *, run_id: builtins.int = ..., - fab_id: typing.Text = ..., - fab_version: typing.Text = ..., - override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ..., - fab_hash: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["fab_hash",b"fab_hash","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config","run_id",b"run_id"]) -> None: ... + fab_id: builtins.str = ..., + fab_version: builtins.str = ..., + override_config: collections.abc.Mapping[builtins.str, flwr.proto.transport_pb2.Scalar] | None = ..., + fab_hash: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["fab_hash", b"fab_hash", "fab_id", b"fab_id", "fab_version", b"fab_version", "override_config", b"override_config", "run_id", b"run_id"]) -> None: ... + global___Run = Run +@typing.final class GetRunRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_ID_FIELD_NUMBER: builtins.int run_id: builtins.int - def __init__(self, + def __init__( + self, *, run_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["run_id", b"run_id"]) -> None: ... + global___GetRunRequest = GetRunRequest +@typing.final class GetRunResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + RUN_FIELD_NUMBER: builtins.int @property def run(self) -> global___Run: ... - def __init__(self, + def __init__( + self, *, - run: typing.Optional[global___Run] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["run",b"run"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["run",b"run"]) -> None: ... + run: global___Run | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["run", b"run"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["run", b"run"]) -> None: ... + global___GetRunResponse = GetRunResponse diff --git a/src/py/flwr/proto/run_pb2_grpc.py b/src/py/flwr/proto/run_pb2_grpc.py index 2daafffebfc8..31641c85246b 100644 --- a/src/py/flwr/proto/run_pb2_grpc.py +++ b/src/py/flwr/proto/run_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/run_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/run_pb2_grpc.pyi b/src/py/flwr/proto/run_pb2_grpc.pyi index f3a5a087ef5d..b378d4c38470 100644 --- a/src/py/flwr/proto/run_pb2_grpc.pyi +++ b/src/py/flwr/proto/run_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2024 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/task_pb2.pyi b/src/py/flwr/proto/task_pb2.pyi index 455791ac9e6e..d6d0c5014417 100644 --- a/src/py/flwr/proto/task_pb2.pyi +++ b/src/py/flwr/proto/task_pb2.pyi @@ -1,8 +1,24 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import flwr.proto.error_pb2 import flwr.proto.node_pb2 import flwr.proto.recordset_pb2 @@ -10,12 +26,13 @@ import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.message import typing -import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +@typing.final class Task(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + PRODUCER_FIELD_NUMBER: builtins.int CONSUMER_FIELD_NUMBER: builtins.int CREATED_AT_FIELD_NUMBER: builtins.int @@ -26,78 +43,88 @@ class Task(google.protobuf.message.Message): TASK_TYPE_FIELD_NUMBER: builtins.int RECORDSET_FIELD_NUMBER: builtins.int ERROR_FIELD_NUMBER: builtins.int + created_at: builtins.float + delivered_at: builtins.str + pushed_at: builtins.float + ttl: builtins.float + task_type: builtins.str @property def producer(self) -> flwr.proto.node_pb2.Node: ... @property def consumer(self) -> flwr.proto.node_pb2.Node: ... - created_at: builtins.float - delivered_at: typing.Text - pushed_at: builtins.float - ttl: builtins.float @property - def ancestry(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ... - task_type: typing.Text + def ancestry(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... @property def recordset(self) -> flwr.proto.recordset_pb2.RecordSet: ... @property def error(self) -> flwr.proto.error_pb2.Error: ... - def __init__(self, + def __init__( + self, *, - producer: typing.Optional[flwr.proto.node_pb2.Node] = ..., - consumer: typing.Optional[flwr.proto.node_pb2.Node] = ..., + producer: flwr.proto.node_pb2.Node | None = ..., + consumer: flwr.proto.node_pb2.Node | None = ..., created_at: builtins.float = ..., - delivered_at: typing.Text = ..., + delivered_at: builtins.str = ..., pushed_at: builtins.float = ..., ttl: builtins.float = ..., - ancestry: typing.Optional[typing.Iterable[typing.Text]] = ..., - task_type: typing.Text = ..., - recordset: typing.Optional[flwr.proto.recordset_pb2.RecordSet] = ..., - error: typing.Optional[flwr.proto.error_pb2.Error] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["consumer",b"consumer","error",b"error","producer",b"producer","recordset",b"recordset"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["ancestry",b"ancestry","consumer",b"consumer","created_at",b"created_at","delivered_at",b"delivered_at","error",b"error","producer",b"producer","pushed_at",b"pushed_at","recordset",b"recordset","task_type",b"task_type","ttl",b"ttl"]) -> None: ... + ancestry: collections.abc.Iterable[builtins.str] | None = ..., + task_type: builtins.str = ..., + recordset: flwr.proto.recordset_pb2.RecordSet | None = ..., + error: flwr.proto.error_pb2.Error | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["consumer", b"consumer", "error", b"error", "producer", b"producer", "recordset", b"recordset"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["ancestry", b"ancestry", "consumer", b"consumer", "created_at", b"created_at", "delivered_at", b"delivered_at", "error", b"error", "producer", b"producer", "pushed_at", b"pushed_at", "recordset", b"recordset", "task_type", b"task_type", "ttl", b"ttl"]) -> None: ... + global___Task = Task +@typing.final class TaskIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_ID_FIELD_NUMBER: builtins.int GROUP_ID_FIELD_NUMBER: builtins.int RUN_ID_FIELD_NUMBER: builtins.int TASK_FIELD_NUMBER: builtins.int - task_id: typing.Text - group_id: typing.Text + task_id: builtins.str + group_id: builtins.str run_id: builtins.int @property def task(self) -> global___Task: ... - def __init__(self, + def __init__( + self, *, - task_id: typing.Text = ..., - group_id: typing.Text = ..., + task_id: builtins.str = ..., + group_id: builtins.str = ..., run_id: builtins.int = ..., - task: typing.Optional[global___Task] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["task",b"task"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["group_id",b"group_id","run_id",b"run_id","task",b"task","task_id",b"task_id"]) -> None: ... + task: global___Task | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["task", b"task"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["group_id", b"group_id", "run_id", b"run_id", "task", b"task", "task_id", b"task_id"]) -> None: ... + global___TaskIns = TaskIns +@typing.final class TaskRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TASK_ID_FIELD_NUMBER: builtins.int GROUP_ID_FIELD_NUMBER: builtins.int RUN_ID_FIELD_NUMBER: builtins.int TASK_FIELD_NUMBER: builtins.int - task_id: typing.Text - group_id: typing.Text + task_id: builtins.str + group_id: builtins.str run_id: builtins.int @property def task(self) -> global___Task: ... - def __init__(self, + def __init__( + self, *, - task_id: typing.Text = ..., - group_id: typing.Text = ..., + task_id: builtins.str = ..., + group_id: builtins.str = ..., run_id: builtins.int = ..., - task: typing.Optional[global___Task] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["task",b"task"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["group_id",b"group_id","run_id",b"run_id","task",b"task","task_id",b"task_id"]) -> None: ... + task: global___Task | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["task", b"task"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["group_id", b"group_id", "run_id", b"run_id", "task", b"task", "task_id", b"task_id"]) -> None: ... + global___TaskRes = TaskRes diff --git a/src/py/flwr/proto/task_pb2_grpc.py b/src/py/flwr/proto/task_pb2_grpc.py index 2daafffebfc8..c9eba5905434 100644 --- a/src/py/flwr/proto/task_pb2_grpc.py +++ b/src/py/flwr/proto/task_pb2_grpc.py @@ -1,4 +1,24 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings + +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/task_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) diff --git a/src/py/flwr/proto/task_pb2_grpc.pyi b/src/py/flwr/proto/task_pb2_grpc.pyi index f3a5a087ef5d..d807e9947369 100644 --- a/src/py/flwr/proto/task_pb2_grpc.pyi +++ b/src/py/flwr/proto/task_pb2_grpc.pyi @@ -1,4 +1,31 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2022 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... diff --git a/src/py/flwr/proto/transport_pb2.py b/src/py/flwr/proto/transport_pb2.py index d3aae72b63ab..3d306df21c27 100644 --- a/src/py/flwr/proto/transport_pb2.py +++ b/src/py/flwr/proto/transport_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: flwr/proto/transport.proto -# Protobuf Python Version: 4.25.0 +# Protobuf Python Version: 5.27.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 27, + 2, + '', + 'flwr/proto/transport.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,21 +29,21 @@ _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.transport_pb2', _globals) -if _descriptor._USE_C_DESCRIPTORS == False: - DESCRIPTOR._options = None - _globals['_SERVERMESSAGE_GETPROPERTIESINS_CONFIGENTRY']._options = None +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_SERVERMESSAGE_GETPROPERTIESINS_CONFIGENTRY']._loaded_options = None _globals['_SERVERMESSAGE_GETPROPERTIESINS_CONFIGENTRY']._serialized_options = b'8\001' - _globals['_SERVERMESSAGE_GETPARAMETERSINS_CONFIGENTRY']._options = None + _globals['_SERVERMESSAGE_GETPARAMETERSINS_CONFIGENTRY']._loaded_options = None _globals['_SERVERMESSAGE_GETPARAMETERSINS_CONFIGENTRY']._serialized_options = b'8\001' - _globals['_SERVERMESSAGE_FITINS_CONFIGENTRY']._options = None + _globals['_SERVERMESSAGE_FITINS_CONFIGENTRY']._loaded_options = None _globals['_SERVERMESSAGE_FITINS_CONFIGENTRY']._serialized_options = b'8\001' - _globals['_SERVERMESSAGE_EVALUATEINS_CONFIGENTRY']._options = None + _globals['_SERVERMESSAGE_EVALUATEINS_CONFIGENTRY']._loaded_options = None _globals['_SERVERMESSAGE_EVALUATEINS_CONFIGENTRY']._serialized_options = b'8\001' - _globals['_CLIENTMESSAGE_GETPROPERTIESRES_PROPERTIESENTRY']._options = None + _globals['_CLIENTMESSAGE_GETPROPERTIESRES_PROPERTIESENTRY']._loaded_options = None _globals['_CLIENTMESSAGE_GETPROPERTIESRES_PROPERTIESENTRY']._serialized_options = b'8\001' - _globals['_CLIENTMESSAGE_FITRES_METRICSENTRY']._options = None + _globals['_CLIENTMESSAGE_FITRES_METRICSENTRY']._loaded_options = None _globals['_CLIENTMESSAGE_FITRES_METRICSENTRY']._serialized_options = b'8\001' - _globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._options = None + _globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._loaded_options = None _globals['_CLIENTMESSAGE_EVALUATERES_METRICSENTRY']._serialized_options = b'8\001' _globals['_CODE']._serialized_start=2533 _globals['_CODE']._serialized_end=2674 diff --git a/src/py/flwr/proto/transport_pb2.pyi b/src/py/flwr/proto/transport_pb2.pyi index d10a1536ceab..4dc0d34469d8 100644 --- a/src/py/flwr/proto/transport_pb2.pyi +++ b/src/py/flwr/proto/transport_pb2.pyi @@ -1,20 +1,42 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2020 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import builtins +import collections.abc import google.protobuf.descriptor import google.protobuf.internal.containers import google.protobuf.internal.enum_type_wrapper import google.protobuf.message +import sys import typing -import typing_extensions + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor class _Code: - ValueType = typing.NewType('ValueType', builtins.int) + ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType + class _CodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Code.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor OK: _Code.ValueType # 0 @@ -22,8 +44,8 @@ class _CodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeW GET_PARAMETERS_NOT_IMPLEMENTED: _Code.ValueType # 2 FIT_NOT_IMPLEMENTED: _Code.ValueType # 3 EVALUATE_NOT_IMPLEMENTED: _Code.ValueType # 4 -class Code(_Code, metaclass=_CodeEnumTypeWrapper): - pass + +class Code(_Code, metaclass=_CodeEnumTypeWrapper): ... OK: Code.ValueType # 0 GET_PROPERTIES_NOT_IMPLEMENTED: Code.ValueType # 1 @@ -32,10 +54,10 @@ FIT_NOT_IMPLEMENTED: Code.ValueType # 3 EVALUATE_NOT_IMPLEMENTED: Code.ValueType # 4 global___Code = Code - class _Reason: - ValueType = typing.NewType('ValueType', builtins.int) + ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType + class _ReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Reason.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor UNKNOWN: _Reason.ValueType # 0 @@ -43,8 +65,8 @@ class _ReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTyp POWER_DISCONNECTED: _Reason.ValueType # 2 WIFI_UNAVAILABLE: _Reason.ValueType # 3 ACK: _Reason.ValueType # 4 -class Reason(_Reason, metaclass=_ReasonEnumTypeWrapper): - pass + +class Reason(_Reason, metaclass=_ReasonEnumTypeWrapper): ... UNKNOWN: Reason.ValueType # 0 RECONNECT: Reason.ValueType # 1 @@ -53,161 +75,197 @@ WIFI_UNAVAILABLE: Reason.ValueType # 3 ACK: Reason.ValueType # 4 global___Reason = Reason - +@typing.final class Status(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + CODE_FIELD_NUMBER: builtins.int MESSAGE_FIELD_NUMBER: builtins.int code: global___Code.ValueType - message: typing.Text - def __init__(self, + message: builtins.str + def __init__( + self, *, code: global___Code.ValueType = ..., - message: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["code",b"code","message",b"message"]) -> None: ... + message: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["code", b"code", "message", b"message"]) -> None: ... + global___Status = Status +@typing.final class Parameters(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + TENSORS_FIELD_NUMBER: builtins.int TENSOR_TYPE_FIELD_NUMBER: builtins.int + tensor_type: builtins.str @property def tensors(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ... - tensor_type: typing.Text - def __init__(self, + def __init__( + self, *, - tensors: typing.Optional[typing.Iterable[builtins.bytes]] = ..., - tensor_type: typing.Text = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["tensor_type",b"tensor_type","tensors",b"tensors"]) -> None: ... + tensors: collections.abc.Iterable[builtins.bytes] | None = ..., + tensor_type: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["tensor_type", b"tensor_type", "tensors", b"tensors"]) -> None: ... + global___Parameters = Parameters +@typing.final class ServerMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ReconnectIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + SECONDS_FIELD_NUMBER: builtins.int seconds: builtins.int - def __init__(self, + def __init__( + self, *, seconds: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["seconds",b"seconds"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["seconds", b"seconds"]) -> None: ... + @typing.final class GetPropertiesIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... CONFIG_FIELD_NUMBER: builtins.int @property - def config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - config: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["config",b"config"]) -> None: ... + config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["config", b"config"]) -> None: ... + @typing.final class GetParametersIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... CONFIG_FIELD_NUMBER: builtins.int @property - def config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - config: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["config",b"config"]) -> None: ... + config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["config", b"config"]) -> None: ... + @typing.final class FitIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PARAMETERS_FIELD_NUMBER: builtins.int CONFIG_FIELD_NUMBER: builtins.int @property def parameters(self) -> global___Parameters: ... @property - def config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - parameters: typing.Optional[global___Parameters] = ..., - config: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["parameters",b"parameters"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["config",b"config","parameters",b"parameters"]) -> None: ... + parameters: global___Parameters | None = ..., + config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["parameters", b"parameters"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "parameters", b"parameters"]) -> None: ... + @typing.final class EvaluateIns(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class ConfigEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PARAMETERS_FIELD_NUMBER: builtins.int CONFIG_FIELD_NUMBER: builtins.int @property def parameters(self) -> global___Parameters: ... @property - def config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def config(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - parameters: typing.Optional[global___Parameters] = ..., - config: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["parameters",b"parameters"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["config",b"config","parameters",b"parameters"]) -> None: ... + parameters: global___Parameters | None = ..., + config: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["parameters", b"parameters"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["config", b"config", "parameters", b"parameters"]) -> None: ... RECONNECT_INS_FIELD_NUMBER: builtins.int GET_PROPERTIES_INS_FIELD_NUMBER: builtins.int @@ -224,152 +282,180 @@ class ServerMessage(google.protobuf.message.Message): def fit_ins(self) -> global___ServerMessage.FitIns: ... @property def evaluate_ins(self) -> global___ServerMessage.EvaluateIns: ... - def __init__(self, + def __init__( + self, *, - reconnect_ins: typing.Optional[global___ServerMessage.ReconnectIns] = ..., - get_properties_ins: typing.Optional[global___ServerMessage.GetPropertiesIns] = ..., - get_parameters_ins: typing.Optional[global___ServerMessage.GetParametersIns] = ..., - fit_ins: typing.Optional[global___ServerMessage.FitIns] = ..., - evaluate_ins: typing.Optional[global___ServerMessage.EvaluateIns] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["evaluate_ins",b"evaluate_ins","fit_ins",b"fit_ins","get_parameters_ins",b"get_parameters_ins","get_properties_ins",b"get_properties_ins","msg",b"msg","reconnect_ins",b"reconnect_ins"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["evaluate_ins",b"evaluate_ins","fit_ins",b"fit_ins","get_parameters_ins",b"get_parameters_ins","get_properties_ins",b"get_properties_ins","msg",b"msg","reconnect_ins",b"reconnect_ins"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["msg",b"msg"]) -> typing.Optional[typing_extensions.Literal["reconnect_ins","get_properties_ins","get_parameters_ins","fit_ins","evaluate_ins"]]: ... + reconnect_ins: global___ServerMessage.ReconnectIns | None = ..., + get_properties_ins: global___ServerMessage.GetPropertiesIns | None = ..., + get_parameters_ins: global___ServerMessage.GetParametersIns | None = ..., + fit_ins: global___ServerMessage.FitIns | None = ..., + evaluate_ins: global___ServerMessage.EvaluateIns | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["evaluate_ins", b"evaluate_ins", "fit_ins", b"fit_ins", "get_parameters_ins", b"get_parameters_ins", "get_properties_ins", b"get_properties_ins", "msg", b"msg", "reconnect_ins", b"reconnect_ins"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["evaluate_ins", b"evaluate_ins", "fit_ins", b"fit_ins", "get_parameters_ins", b"get_parameters_ins", "get_properties_ins", b"get_properties_ins", "msg", b"msg", "reconnect_ins", b"reconnect_ins"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["msg", b"msg"]) -> typing.Literal["reconnect_ins", "get_properties_ins", "get_parameters_ins", "fit_ins", "evaluate_ins"] | None: ... + global___ServerMessage = ServerMessage +@typing.final class ClientMessage(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class DisconnectRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + REASON_FIELD_NUMBER: builtins.int reason: global___Reason.ValueType - def __init__(self, + def __init__( + self, *, reason: global___Reason.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["reason",b"reason"]) -> None: ... + ) -> None: ... + def ClearField(self, field_name: typing.Literal["reason", b"reason"]) -> None: ... + @typing.final class GetPropertiesRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class PropertiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STATUS_FIELD_NUMBER: builtins.int PROPERTIES_FIELD_NUMBER: builtins.int @property def status(self) -> global___Status: ... @property - def properties(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def properties(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - status: typing.Optional[global___Status] = ..., - properties: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status",b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["properties",b"properties","status",b"status"]) -> None: ... + status: global___Status | None = ..., + properties: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["properties", b"properties", "status", b"status"]) -> None: ... + @typing.final class GetParametersRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + STATUS_FIELD_NUMBER: builtins.int PARAMETERS_FIELD_NUMBER: builtins.int @property def status(self) -> global___Status: ... @property def parameters(self) -> global___Parameters: ... - def __init__(self, + def __init__( + self, *, - status: typing.Optional[global___Status] = ..., - parameters: typing.Optional[global___Parameters] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["parameters",b"parameters","status",b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["parameters",b"parameters","status",b"status"]) -> None: ... + status: global___Status | None = ..., + parameters: global___Parameters | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> None: ... + @typing.final class FitRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class MetricsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STATUS_FIELD_NUMBER: builtins.int PARAMETERS_FIELD_NUMBER: builtins.int NUM_EXAMPLES_FIELD_NUMBER: builtins.int METRICS_FIELD_NUMBER: builtins.int + num_examples: builtins.int @property def status(self) -> global___Status: ... @property def parameters(self) -> global___Parameters: ... - num_examples: builtins.int @property - def metrics(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def metrics(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - status: typing.Optional[global___Status] = ..., - parameters: typing.Optional[global___Parameters] = ..., + status: global___Status | None = ..., + parameters: global___Parameters | None = ..., num_examples: builtins.int = ..., - metrics: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["parameters",b"parameters","status",b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["metrics",b"metrics","num_examples",b"num_examples","parameters",b"parameters","status",b"status"]) -> None: ... + metrics: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["parameters", b"parameters", "status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["metrics", b"metrics", "num_examples", b"num_examples", "parameters", b"parameters", "status", b"status"]) -> None: ... + @typing.final class EvaluateRes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final class MetricsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int - key: typing.Text + key: builtins.str @property def value(self) -> global___Scalar: ... - def __init__(self, + def __init__( + self, *, - key: typing.Text = ..., - value: typing.Optional[global___Scalar] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ... + key: builtins.str = ..., + value: global___Scalar | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STATUS_FIELD_NUMBER: builtins.int LOSS_FIELD_NUMBER: builtins.int NUM_EXAMPLES_FIELD_NUMBER: builtins.int METRICS_FIELD_NUMBER: builtins.int - @property - def status(self) -> global___Status: ... loss: builtins.float num_examples: builtins.int @property - def metrics(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, global___Scalar]: ... - def __init__(self, + def status(self) -> global___Status: ... + @property + def metrics(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___Scalar]: ... + def __init__( + self, *, - status: typing.Optional[global___Status] = ..., + status: global___Status | None = ..., loss: builtins.float = ..., num_examples: builtins.int = ..., - metrics: typing.Optional[typing.Mapping[typing.Text, global___Scalar]] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status",b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["loss",b"loss","metrics",b"metrics","num_examples",b"num_examples","status",b"status"]) -> None: ... + metrics: collections.abc.Mapping[builtins.str, global___Scalar] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["loss", b"loss", "metrics", b"metrics", "num_examples", b"num_examples", "status", b"status"]) -> None: ... DISCONNECT_RES_FIELD_NUMBER: builtins.int GET_PROPERTIES_RES_FIELD_NUMBER: builtins.int @@ -386,21 +472,25 @@ class ClientMessage(google.protobuf.message.Message): def fit_res(self) -> global___ClientMessage.FitRes: ... @property def evaluate_res(self) -> global___ClientMessage.EvaluateRes: ... - def __init__(self, + def __init__( + self, *, - disconnect_res: typing.Optional[global___ClientMessage.DisconnectRes] = ..., - get_properties_res: typing.Optional[global___ClientMessage.GetPropertiesRes] = ..., - get_parameters_res: typing.Optional[global___ClientMessage.GetParametersRes] = ..., - fit_res: typing.Optional[global___ClientMessage.FitRes] = ..., - evaluate_res: typing.Optional[global___ClientMessage.EvaluateRes] = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["disconnect_res",b"disconnect_res","evaluate_res",b"evaluate_res","fit_res",b"fit_res","get_parameters_res",b"get_parameters_res","get_properties_res",b"get_properties_res","msg",b"msg"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["disconnect_res",b"disconnect_res","evaluate_res",b"evaluate_res","fit_res",b"fit_res","get_parameters_res",b"get_parameters_res","get_properties_res",b"get_properties_res","msg",b"msg"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["msg",b"msg"]) -> typing.Optional[typing_extensions.Literal["disconnect_res","get_properties_res","get_parameters_res","fit_res","evaluate_res"]]: ... + disconnect_res: global___ClientMessage.DisconnectRes | None = ..., + get_properties_res: global___ClientMessage.GetPropertiesRes | None = ..., + get_parameters_res: global___ClientMessage.GetParametersRes | None = ..., + fit_res: global___ClientMessage.FitRes | None = ..., + evaluate_res: global___ClientMessage.EvaluateRes | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["disconnect_res", b"disconnect_res", "evaluate_res", b"evaluate_res", "fit_res", b"fit_res", "get_parameters_res", b"get_parameters_res", "get_properties_res", b"get_properties_res", "msg", b"msg"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["disconnect_res", b"disconnect_res", "evaluate_res", b"evaluate_res", "fit_res", b"fit_res", "get_parameters_res", b"get_parameters_res", "get_properties_res", b"get_properties_res", "msg", b"msg"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["msg", b"msg"]) -> typing.Literal["disconnect_res", "get_properties_res", "get_parameters_res", "fit_res", "evaluate_res"] | None: ... + global___ClientMessage = ClientMessage +@typing.final class Scalar(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + DOUBLE_FIELD_NUMBER: builtins.int SINT64_FIELD_NUMBER: builtins.int BOOL_FIELD_NUMBER: builtins.int @@ -415,25 +505,25 @@ class Scalar(google.protobuf.message.Message): uint64 uint64 = 6; sint32 sint32 = 7; """ - bool: builtins.bool """fixed32 fixed32 = 9; fixed64 fixed64 = 10; sfixed32 sfixed32 = 11; sfixed64 sfixed64 = 12; """ - - string: typing.Text + string: builtins.str bytes: builtins.bytes - def __init__(self, + def __init__( + self, *, double: builtins.float = ..., sint64: builtins.int = ..., bool: builtins.bool = ..., - string: typing.Text = ..., + string: builtins.str = ..., bytes: builtins.bytes = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bool",b"bool","bytes",b"bytes","double",b"double","scalar",b"scalar","sint64",b"sint64","string",b"string"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["scalar",b"scalar"]) -> typing.Optional[typing_extensions.Literal["double","sint64","bool","string","bytes"]]: ... + ) -> None: ... + def HasField(self, field_name: typing.Literal["bool", b"bool", "bytes", b"bytes", "double", b"double", "scalar", b"scalar", "sint64", b"sint64", "string", b"string"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["bool", b"bool", "bytes", b"bytes", "double", b"double", "scalar", b"scalar", "sint64", b"sint64", "string", b"string"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["scalar", b"scalar"]) -> typing.Literal["double", "sint64", "bool", "string", "bytes"] | None: ... + global___Scalar = Scalar diff --git a/src/py/flwr/proto/transport_pb2_grpc.py b/src/py/flwr/proto/transport_pb2_grpc.py index 05f47fefddea..62b7b5e7597d 100644 --- a/src/py/flwr/proto/transport_pb2_grpc.py +++ b/src/py/flwr/proto/transport_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 +GRPC_GENERATED_VERSION = '1.66.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in flwr/proto/transport_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class FlowerServiceStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,7 +38,7 @@ def __init__(self, channel): '/flwr.proto.FlowerService/Join', request_serializer=flwr_dot_proto_dot_transport__pb2.ClientMessage.SerializeToString, response_deserializer=flwr_dot_proto_dot_transport__pb2.ServerMessage.FromString, - ) + _registered_method=True) class FlowerServiceServicer(object): @@ -42,6 +62,7 @@ def add_FlowerServiceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'flwr.proto.FlowerService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('flwr.proto.FlowerService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -59,8 +80,18 @@ def Join(request_iterator, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.stream_stream(request_iterator, target, '/flwr.proto.FlowerService/Join', + return grpc.experimental.stream_stream( + request_iterator, + target, + '/flwr.proto.FlowerService/Join', flwr_dot_proto_dot_transport__pb2.ClientMessage.SerializeToString, flwr_dot_proto_dot_transport__pb2.ServerMessage.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/py/flwr/proto/transport_pb2_grpc.pyi b/src/py/flwr/proto/transport_pb2_grpc.pyi index 34ff7ec25055..73d90395d90a 100644 --- a/src/py/flwr/proto/transport_pb2_grpc.pyi +++ b/src/py/flwr/proto/transport_pb2_grpc.pyi @@ -1,25 +1,55 @@ """ @generated by mypy-protobuf. Do not edit manually! isort:skip_file +Copyright 2020 Flower Labs GmbH. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============================================================================== """ + import abc +import collections.abc import flwr.proto.transport_pb2 import grpc +import grpc.aio import typing +_T = typing.TypeVar("_T") + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg] + ... + class FlowerServiceStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... Join: grpc.StreamStreamMultiCallable[ flwr.proto.transport_pb2.ClientMessage, - flwr.proto.transport_pb2.ServerMessage] + flwr.proto.transport_pb2.ServerMessage, + ] +class FlowerServiceAsyncStub: + Join: grpc.aio.StreamStreamMultiCallable[ + flwr.proto.transport_pb2.ClientMessage, + flwr.proto.transport_pb2.ServerMessage, + ] class FlowerServiceServicer(metaclass=abc.ABCMeta): @abc.abstractmethod - def Join(self, - request_iterator: typing.Iterator[flwr.proto.transport_pb2.ClientMessage], - context: grpc.ServicerContext, - ) -> typing.Iterator[flwr.proto.transport_pb2.ServerMessage]: ... - + def Join( + self, + request_iterator: _MaybeAsyncIterator[flwr.proto.transport_pb2.ClientMessage], + context: _ServicerContext, + ) -> typing.Union[collections.abc.Iterator[flwr.proto.transport_pb2.ServerMessage], collections.abc.AsyncIterator[flwr.proto.transport_pb2.ServerMessage]]: ... -def add_FlowerServiceServicer_to_server(servicer: FlowerServiceServicer, server: grpc.Server) -> None: ... +def add_FlowerServiceServicer_to_server(servicer: FlowerServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... From f739d57588335300de70e4fa34cf727df6cb434d Mon Sep 17 00:00:00 2001 From: mohammadnaseri Date: Tue, 10 Sep 2024 18:19:14 +0100 Subject: [PATCH 4/4] Format --- src/py/flwr/server/superlink/state/sqlite_state.py | 2 +- src/py/flwr/server/superlink/state/utils.py | 6 ++---- src/py/flwr/server/superlink/state/utils_test.py | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/py/flwr/server/superlink/state/sqlite_state.py b/src/py/flwr/server/superlink/state/sqlite_state.py index 4be0e60d4708..602ffff7154e 100644 --- a/src/py/flwr/server/superlink/state/sqlite_state.py +++ b/src/py/flwr/server/superlink/state/sqlite_state.py @@ -35,8 +35,8 @@ from .utils import ( generate_rand_int_from_bytes, make_node_unavailable_taskres, - uint64_to_sint64, sint64_to_uint64, + uint64_to_sint64, ) SQL_CREATE_TABLE_NODE = """ diff --git a/src/py/flwr/server/superlink/state/utils.py b/src/py/flwr/server/superlink/state/utils.py index 913a051b9946..2e453c32a11b 100644 --- a/src/py/flwr/server/superlink/state/utils.py +++ b/src/py/flwr/server/superlink/state/utils.py @@ -38,8 +38,7 @@ def generate_rand_int_from_bytes(num_bytes: int) -> int: def uint64_to_sint64(u: int) -> int: - """ - Convert a uint64 value to sint64. + """Convert a uint64 value to sint64. Args: u (int): The unsigned 64-bit integer to convert. @@ -53,8 +52,7 @@ def uint64_to_sint64(u: int) -> int: def sint64_to_uint64(s: int) -> int: - """ - Convert a sint64 value to uint64. + """Convert a sint64 value to uint64. Args: s (int): The signed 64-bit integer to convert. diff --git a/src/py/flwr/server/superlink/state/utils_test.py b/src/py/flwr/server/superlink/state/utils_test.py index 3d16676431d3..5e4325fa1596 100644 --- a/src/py/flwr/server/superlink/state/utils_test.py +++ b/src/py/flwr/server/superlink/state/utils_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 Flower Labs GmbH. All Rights Reserved. +# Copyright 2024 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ import unittest -from .utils import uint64_to_sint64, sint64_to_uint64, generate_rand_int_from_bytes +from .utils import generate_rand_int_from_bytes, sint64_to_uint64, uint64_to_sint64 class UtilsTest(unittest.TestCase):