flwr-nightly 1.15.0.dev20250116__py3-none-any.whl → 1.15.0.dev20250118__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flwr/client/app.py +16 -36
- flwr/client/grpc_client/connection.py +0 -6
- flwr/client/grpc_rere_client/connection.py +10 -0
- flwr/client/rest_client/connection.py +10 -0
- flwr/client/supernode/app.py +5 -5
- flwr/common/grpc.py +7 -0
- flwr/proto/clientappio_pb2.py +13 -3
- flwr/proto/clientappio_pb2_grpc.py +63 -12
- flwr/proto/error_pb2.py +13 -3
- flwr/proto/error_pb2_grpc.py +20 -0
- flwr/proto/exec_pb2.py +15 -5
- flwr/proto/exec_pb2_grpc.py +105 -24
- flwr/proto/fab_pb2.py +13 -3
- flwr/proto/fab_pb2_grpc.py +20 -0
- flwr/proto/fleet_pb2.py +15 -5
- flwr/proto/fleet_pb2_grpc.py +147 -36
- flwr/proto/grpcadapter_pb2.py +14 -4
- flwr/proto/grpcadapter_pb2_grpc.py +35 -4
- flwr/proto/log_pb2.py +13 -3
- flwr/proto/log_pb2_grpc.py +20 -0
- flwr/proto/message_pb2.py +15 -5
- flwr/proto/message_pb2_grpc.py +20 -0
- flwr/proto/node_pb2.py +13 -3
- flwr/proto/node_pb2_grpc.py +20 -0
- flwr/proto/recordset_pb2.py +18 -8
- flwr/proto/recordset_pb2_grpc.py +20 -0
- flwr/proto/run_pb2.py +16 -6
- flwr/proto/run_pb2_grpc.py +20 -0
- flwr/proto/serverappio_pb2.py +13 -3
- flwr/proto/serverappio_pb2_grpc.py +175 -44
- flwr/proto/simulationio_pb2.py +13 -3
- flwr/proto/simulationio_pb2_grpc.py +105 -24
- flwr/proto/task_pb2.py +13 -3
- flwr/proto/task_pb2_grpc.py +20 -0
- flwr/proto/transport_pb2.py +20 -10
- flwr/proto/transport_pb2_grpc.py +35 -4
- flwr/server/app.py +13 -2
- flwr/server/serverapp/app.py +1 -0
- {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/METADATA +4 -4
- {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/RECORD +43 -43
- {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/entry_points.txt +0 -0
flwr/client/app.py
CHANGED
@@ -16,11 +16,11 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
import multiprocessing
|
19
|
-
import
|
19
|
+
import os
|
20
20
|
import sys
|
21
|
+
import threading
|
21
22
|
import time
|
22
23
|
from contextlib import AbstractContextManager
|
23
|
-
from dataclasses import dataclass
|
24
24
|
from logging import ERROR, INFO, WARN
|
25
25
|
from os import urandom
|
26
26
|
from pathlib import Path
|
@@ -346,10 +346,7 @@ def start_client_internal(
|
|
346
346
|
transport, server_address
|
347
347
|
)
|
348
348
|
|
349
|
-
app_state_tracker = _AppStateTracker()
|
350
|
-
|
351
349
|
def _on_sucess(retry_state: RetryState) -> None:
|
352
|
-
app_state_tracker.is_connected = True
|
353
350
|
if retry_state.tries > 1:
|
354
351
|
log(
|
355
352
|
INFO,
|
@@ -359,7 +356,6 @@ def start_client_internal(
|
|
359
356
|
)
|
360
357
|
|
361
358
|
def _on_backoff(retry_state: RetryState) -> None:
|
362
|
-
app_state_tracker.is_connected = False
|
363
359
|
if retry_state.tries == 1:
|
364
360
|
log(WARN, "Connection attempt failed, retrying...")
|
365
361
|
else:
|
@@ -396,7 +392,7 @@ def start_client_internal(
|
|
396
392
|
|
397
393
|
runs: dict[int, Run] = {}
|
398
394
|
|
399
|
-
while
|
395
|
+
while True:
|
400
396
|
sleep_duration: int = 0
|
401
397
|
with connection(
|
402
398
|
address,
|
@@ -435,9 +431,8 @@ def start_client_internal(
|
|
435
431
|
node_config=node_config,
|
436
432
|
)
|
437
433
|
|
438
|
-
app_state_tracker.register_signal_handler()
|
439
434
|
# pylint: disable=too-many-nested-blocks
|
440
|
-
while
|
435
|
+
while True:
|
441
436
|
try:
|
442
437
|
# Receive
|
443
438
|
message = receive()
|
@@ -553,7 +548,7 @@ def start_client_internal(
|
|
553
548
|
|
554
549
|
proc = mp_spawn_context.Process(
|
555
550
|
target=_run_flwr_clientapp,
|
556
|
-
args=(command,),
|
551
|
+
args=(command, os.getpid()),
|
557
552
|
daemon=True,
|
558
553
|
)
|
559
554
|
proc.start()
|
@@ -595,10 +590,7 @@ def start_client_internal(
|
|
595
590
|
e_code = ErrorCode.LOAD_CLIENT_APP_EXCEPTION
|
596
591
|
exc_entity = "SuperNode"
|
597
592
|
|
598
|
-
|
599
|
-
log(
|
600
|
-
ERROR, "%s raised an exception", exc_entity, exc_info=ex
|
601
|
-
)
|
593
|
+
log(ERROR, "%s raised an exception", exc_entity, exc_info=ex)
|
602
594
|
|
603
595
|
# Create error message
|
604
596
|
reply_message = message.create_error_reply(
|
@@ -624,19 +616,14 @@ def start_client_internal(
|
|
624
616
|
run_id,
|
625
617
|
)
|
626
618
|
log(INFO, "")
|
627
|
-
|
628
|
-
except StopIteration:
|
629
|
-
sleep_duration = 0
|
630
|
-
break
|
631
619
|
# pylint: enable=too-many-nested-blocks
|
632
620
|
|
633
621
|
# Unregister node
|
634
|
-
if delete_node is not None
|
622
|
+
if delete_node is not None:
|
635
623
|
delete_node() # pylint: disable=not-callable
|
636
624
|
|
637
625
|
if sleep_duration == 0:
|
638
626
|
log(INFO, "Disconnect and shut down")
|
639
|
-
del app_state_tracker
|
640
627
|
break
|
641
628
|
|
642
629
|
# Sleep and reconnect afterwards
|
@@ -812,24 +799,17 @@ def _init_connection(transport: Optional[str], server_address: str) -> tuple[
|
|
812
799
|
return connection, address, error_type
|
813
800
|
|
814
801
|
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
def signal_handler(sig, frame): # type: ignore
|
824
|
-
# pylint: disable=unused-argument
|
825
|
-
self.interrupt = True
|
826
|
-
raise StopIteration from None
|
827
|
-
|
828
|
-
signal.signal(signal.SIGINT, signal_handler)
|
829
|
-
signal.signal(signal.SIGTERM, signal_handler)
|
802
|
+
def _run_flwr_clientapp(args: list[str], main_pid: int) -> None:
|
803
|
+
# Monitor the main process in case of SIGKILL
|
804
|
+
def main_process_monitor() -> None:
|
805
|
+
while True:
|
806
|
+
time.sleep(1)
|
807
|
+
if os.getppid() != main_pid:
|
808
|
+
os.kill(os.getpid(), 9)
|
830
809
|
|
810
|
+
threading.Thread(target=main_process_monitor, daemon=True).start()
|
831
811
|
|
832
|
-
|
812
|
+
# Run the command
|
833
813
|
sys.argv = args
|
834
814
|
flwr_clientapp()
|
835
815
|
|
@@ -47,12 +47,6 @@ from flwr.proto.transport_pb2 import ( # pylint: disable=E0611
|
|
47
47
|
)
|
48
48
|
from flwr.proto.transport_pb2_grpc import FlowerServiceStub # pylint: disable=E0611
|
49
49
|
|
50
|
-
# The following flags can be uncommented for debugging. Other possible values:
|
51
|
-
# https://github.com/grpc/grpc/blob/master/doc/environment_variables.md
|
52
|
-
# import os
|
53
|
-
# os.environ["GRPC_VERBOSITY"] = "debug"
|
54
|
-
# os.environ["GRPC_TRACE"] = "tcp,http"
|
55
|
-
|
56
50
|
|
57
51
|
def on_channel_state_change(channel_connectivity: str) -> None:
|
58
52
|
"""Log channel connectivity."""
|
@@ -311,3 +311,13 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
311
311
|
yield (receive, send, create_node, delete_node, get_run, get_fab)
|
312
312
|
except Exception as exc: # pylint: disable=broad-except
|
313
313
|
log(ERROR, exc)
|
314
|
+
# Cleanup
|
315
|
+
finally:
|
316
|
+
try:
|
317
|
+
if node is not None:
|
318
|
+
# Disable retrying
|
319
|
+
retry_invoker.max_tries = 1
|
320
|
+
delete_node()
|
321
|
+
except grpc.RpcError:
|
322
|
+
pass
|
323
|
+
channel.close()
|
@@ -26,6 +26,7 @@ from typing import Callable, Optional, TypeVar, Union
|
|
26
26
|
|
27
27
|
from cryptography.hazmat.primitives.asymmetric import ec
|
28
28
|
from google.protobuf.message import Message as GrpcMessage
|
29
|
+
from requests.exceptions import ConnectionError as RequestsConnectionError
|
29
30
|
|
30
31
|
from flwr.client.heartbeat import start_ping_loop
|
31
32
|
from flwr.client.message_handler.message_handler import validate_out_message
|
@@ -379,3 +380,12 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
379
380
|
yield (receive, send, create_node, delete_node, get_run, get_fab)
|
380
381
|
except Exception as exc: # pylint: disable=broad-except
|
381
382
|
log(ERROR, exc)
|
383
|
+
# Cleanup
|
384
|
+
finally:
|
385
|
+
try:
|
386
|
+
if node is not None:
|
387
|
+
# Disable retrying
|
388
|
+
retry_invoker.max_tries = 1
|
389
|
+
delete_node()
|
390
|
+
except RequestsConnectionError:
|
391
|
+
pass
|
flwr/client/supernode/app.py
CHANGED
@@ -86,6 +86,11 @@ def run_supernode() -> None:
|
|
86
86
|
|
87
87
|
log(DEBUG, "Isolation mode: %s", args.isolation)
|
88
88
|
|
89
|
+
# Register handlers for graceful shutdown
|
90
|
+
register_exit_handlers(
|
91
|
+
event_type=EventType.RUN_SUPERNODE_LEAVE,
|
92
|
+
)
|
93
|
+
|
89
94
|
start_client_internal(
|
90
95
|
server_address=args.superlink,
|
91
96
|
load_client_app_fn=load_fn,
|
@@ -103,11 +108,6 @@ def run_supernode() -> None:
|
|
103
108
|
clientappio_api_address=args.clientappio_api_address,
|
104
109
|
)
|
105
110
|
|
106
|
-
# Graceful shutdown
|
107
|
-
register_exit_handlers(
|
108
|
-
event_type=EventType.RUN_SUPERNODE_LEAVE,
|
109
|
-
)
|
110
|
-
|
111
111
|
|
112
112
|
def run_client_app() -> None:
|
113
113
|
"""Run Flower client app."""
|
flwr/common/grpc.py
CHANGED
@@ -16,6 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
import concurrent.futures
|
19
|
+
import os
|
19
20
|
import sys
|
20
21
|
from collections.abc import Sequence
|
21
22
|
from logging import DEBUG, ERROR
|
@@ -35,6 +36,12 @@ INVALID_CERTIFICATES_ERR_MSG = """
|
|
35
36
|
|
36
37
|
AddServicerToServerFn = Callable[..., Any]
|
37
38
|
|
39
|
+
if "GRPC_VERBOSITY" not in os.environ:
|
40
|
+
os.environ["GRPC_VERBOSITY"] = "error"
|
41
|
+
# The following flags can be uncommented for debugging. Other possible values:
|
42
|
+
# https://github.com/grpc/grpc/blob/master/doc/environment_variables.md
|
43
|
+
# os.environ["GRPC_TRACE"] = "tcp,http"
|
44
|
+
|
38
45
|
|
39
46
|
def create_channel(
|
40
47
|
server_address: str,
|
flwr/proto/clientappio_pb2.py
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
3
4
|
# source: flwr/proto/clientappio.proto
|
4
|
-
# Protobuf Python Version:
|
5
|
+
# Protobuf Python Version: 5.29.0
|
5
6
|
"""Generated protocol buffer code."""
|
6
7
|
from google.protobuf import descriptor as _descriptor
|
7
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
8
10
|
from google.protobuf import symbol_database as _symbol_database
|
9
11
|
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
29,
|
16
|
+
0,
|
17
|
+
'',
|
18
|
+
'flwr/proto/clientappio.proto'
|
19
|
+
)
|
10
20
|
# @@protoc_insertion_point(imports)
|
11
21
|
|
12
22
|
_sym_db = _symbol_database.Default()
|
@@ -22,8 +32,8 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/
|
|
22
32
|
_globals = globals()
|
23
33
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
24
34
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals)
|
25
|
-
if _descriptor._USE_C_DESCRIPTORS
|
26
|
-
DESCRIPTOR.
|
35
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
36
|
+
DESCRIPTOR._loaded_options = None
|
27
37
|
_globals['_CLIENTAPPOUTPUTCODE']._serialized_start=675
|
28
38
|
_globals['_CLIENTAPPOUTPUTCODE']._serialized_end=751
|
29
39
|
_globals['_CLIENTAPPOUTPUTSTATUS']._serialized_start=114
|
@@ -1,9 +1,29 @@
|
|
1
1
|
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
2
2
|
"""Client and server classes corresponding to protobuf-defined services."""
|
3
3
|
import grpc
|
4
|
+
import warnings
|
4
5
|
|
5
6
|
from flwr.proto import clientappio_pb2 as flwr_dot_proto_dot_clientappio__pb2
|
6
7
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.69.0'
|
9
|
+
GRPC_VERSION = grpc.__version__
|
10
|
+
_version_not_supported = False
|
11
|
+
|
12
|
+
try:
|
13
|
+
from grpc._utilities import first_version_is_lower
|
14
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
15
|
+
except ImportError:
|
16
|
+
_version_not_supported = True
|
17
|
+
|
18
|
+
if _version_not_supported:
|
19
|
+
raise RuntimeError(
|
20
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
21
|
+
+ f' but the generated code in flwr/proto/clientappio_pb2_grpc.py depends on'
|
22
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
23
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
24
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
25
|
+
)
|
26
|
+
|
7
27
|
|
8
28
|
class ClientAppIoStub(object):
|
9
29
|
"""Missing associated documentation comment in .proto file."""
|
@@ -18,17 +38,17 @@ class ClientAppIoStub(object):
|
|
18
38
|
'/flwr.proto.ClientAppIo/GetToken',
|
19
39
|
request_serializer=flwr_dot_proto_dot_clientappio__pb2.GetTokenRequest.SerializeToString,
|
20
40
|
response_deserializer=flwr_dot_proto_dot_clientappio__pb2.GetTokenResponse.FromString,
|
21
|
-
)
|
41
|
+
_registered_method=True)
|
22
42
|
self.PullClientAppInputs = channel.unary_unary(
|
23
43
|
'/flwr.proto.ClientAppIo/PullClientAppInputs',
|
24
44
|
request_serializer=flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsRequest.SerializeToString,
|
25
45
|
response_deserializer=flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsResponse.FromString,
|
26
|
-
)
|
46
|
+
_registered_method=True)
|
27
47
|
self.PushClientAppOutputs = channel.unary_unary(
|
28
48
|
'/flwr.proto.ClientAppIo/PushClientAppOutputs',
|
29
49
|
request_serializer=flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsRequest.SerializeToString,
|
30
50
|
response_deserializer=flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsResponse.FromString,
|
31
|
-
)
|
51
|
+
_registered_method=True)
|
32
52
|
|
33
53
|
|
34
54
|
class ClientAppIoServicer(object):
|
@@ -77,6 +97,7 @@ def add_ClientAppIoServicer_to_server(servicer, server):
|
|
77
97
|
generic_handler = grpc.method_handlers_generic_handler(
|
78
98
|
'flwr.proto.ClientAppIo', rpc_method_handlers)
|
79
99
|
server.add_generic_rpc_handlers((generic_handler,))
|
100
|
+
server.add_registered_method_handlers('flwr.proto.ClientAppIo', rpc_method_handlers)
|
80
101
|
|
81
102
|
|
82
103
|
# This class is part of an EXPERIMENTAL API.
|
@@ -94,11 +115,21 @@ class ClientAppIo(object):
|
|
94
115
|
wait_for_ready=None,
|
95
116
|
timeout=None,
|
96
117
|
metadata=None):
|
97
|
-
return grpc.experimental.unary_unary(
|
118
|
+
return grpc.experimental.unary_unary(
|
119
|
+
request,
|
120
|
+
target,
|
121
|
+
'/flwr.proto.ClientAppIo/GetToken',
|
98
122
|
flwr_dot_proto_dot_clientappio__pb2.GetTokenRequest.SerializeToString,
|
99
123
|
flwr_dot_proto_dot_clientappio__pb2.GetTokenResponse.FromString,
|
100
|
-
options,
|
101
|
-
|
124
|
+
options,
|
125
|
+
channel_credentials,
|
126
|
+
insecure,
|
127
|
+
call_credentials,
|
128
|
+
compression,
|
129
|
+
wait_for_ready,
|
130
|
+
timeout,
|
131
|
+
metadata,
|
132
|
+
_registered_method=True)
|
102
133
|
|
103
134
|
@staticmethod
|
104
135
|
def PullClientAppInputs(request,
|
@@ -111,11 +142,21 @@ class ClientAppIo(object):
|
|
111
142
|
wait_for_ready=None,
|
112
143
|
timeout=None,
|
113
144
|
metadata=None):
|
114
|
-
return grpc.experimental.unary_unary(
|
145
|
+
return grpc.experimental.unary_unary(
|
146
|
+
request,
|
147
|
+
target,
|
148
|
+
'/flwr.proto.ClientAppIo/PullClientAppInputs',
|
115
149
|
flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsRequest.SerializeToString,
|
116
150
|
flwr_dot_proto_dot_clientappio__pb2.PullClientAppInputsResponse.FromString,
|
117
|
-
options,
|
118
|
-
|
151
|
+
options,
|
152
|
+
channel_credentials,
|
153
|
+
insecure,
|
154
|
+
call_credentials,
|
155
|
+
compression,
|
156
|
+
wait_for_ready,
|
157
|
+
timeout,
|
158
|
+
metadata,
|
159
|
+
_registered_method=True)
|
119
160
|
|
120
161
|
@staticmethod
|
121
162
|
def PushClientAppOutputs(request,
|
@@ -128,8 +169,18 @@ class ClientAppIo(object):
|
|
128
169
|
wait_for_ready=None,
|
129
170
|
timeout=None,
|
130
171
|
metadata=None):
|
131
|
-
return grpc.experimental.unary_unary(
|
172
|
+
return grpc.experimental.unary_unary(
|
173
|
+
request,
|
174
|
+
target,
|
175
|
+
'/flwr.proto.ClientAppIo/PushClientAppOutputs',
|
132
176
|
flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsRequest.SerializeToString,
|
133
177
|
flwr_dot_proto_dot_clientappio__pb2.PushClientAppOutputsResponse.FromString,
|
134
|
-
options,
|
135
|
-
|
178
|
+
options,
|
179
|
+
channel_credentials,
|
180
|
+
insecure,
|
181
|
+
call_credentials,
|
182
|
+
compression,
|
183
|
+
wait_for_ready,
|
184
|
+
timeout,
|
185
|
+
metadata,
|
186
|
+
_registered_method=True)
|
flwr/proto/error_pb2.py
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
3
4
|
# source: flwr/proto/error.proto
|
4
|
-
# Protobuf Python Version:
|
5
|
+
# Protobuf Python Version: 5.29.0
|
5
6
|
"""Generated protocol buffer code."""
|
6
7
|
from google.protobuf import descriptor as _descriptor
|
7
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
8
10
|
from google.protobuf import symbol_database as _symbol_database
|
9
11
|
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
29,
|
16
|
+
0,
|
17
|
+
'',
|
18
|
+
'flwr/proto/error.proto'
|
19
|
+
)
|
10
20
|
# @@protoc_insertion_point(imports)
|
11
21
|
|
12
22
|
_sym_db = _symbol_database.Default()
|
@@ -19,8 +29,8 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/
|
|
19
29
|
_globals = globals()
|
20
30
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
21
31
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.error_pb2', _globals)
|
22
|
-
if _descriptor._USE_C_DESCRIPTORS
|
23
|
-
DESCRIPTOR.
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
33
|
+
DESCRIPTOR._loaded_options = None
|
24
34
|
_globals['_ERROR']._serialized_start=38
|
25
35
|
_globals['_ERROR']._serialized_end=75
|
26
36
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/error_pb2_grpc.py
CHANGED
@@ -1,4 +1,24 @@
|
|
1
1
|
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
2
2
|
"""Client and server classes corresponding to protobuf-defined services."""
|
3
3
|
import grpc
|
4
|
+
import warnings
|
4
5
|
|
6
|
+
|
7
|
+
GRPC_GENERATED_VERSION = '1.69.0'
|
8
|
+
GRPC_VERSION = grpc.__version__
|
9
|
+
_version_not_supported = False
|
10
|
+
|
11
|
+
try:
|
12
|
+
from grpc._utilities import first_version_is_lower
|
13
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
14
|
+
except ImportError:
|
15
|
+
_version_not_supported = True
|
16
|
+
|
17
|
+
if _version_not_supported:
|
18
|
+
raise RuntimeError(
|
19
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
20
|
+
+ f' but the generated code in flwr/proto/error_pb2_grpc.py depends on'
|
21
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
22
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
23
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
24
|
+
)
|
flwr/proto/exec_pb2.py
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
3
4
|
# source: flwr/proto/exec.proto
|
4
|
-
# Protobuf Python Version:
|
5
|
+
# Protobuf Python Version: 5.29.0
|
5
6
|
"""Generated protocol buffer code."""
|
6
7
|
from google.protobuf import descriptor as _descriptor
|
7
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
8
10
|
from google.protobuf import symbol_database as _symbol_database
|
9
11
|
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
29,
|
16
|
+
0,
|
17
|
+
'',
|
18
|
+
'flwr/proto/exec.proto'
|
19
|
+
)
|
10
20
|
# @@protoc_insertion_point(imports)
|
11
21
|
|
12
22
|
_sym_db = _symbol_database.Default()
|
@@ -23,11 +33,11 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/
|
|
23
33
|
_globals = globals()
|
24
34
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
25
35
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.exec_pb2', _globals)
|
26
|
-
if _descriptor._USE_C_DESCRIPTORS
|
27
|
-
DESCRIPTOR.
|
28
|
-
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY'].
|
36
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
37
|
+
DESCRIPTOR._loaded_options = None
|
38
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._loaded_options = None
|
29
39
|
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
30
|
-
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY'].
|
40
|
+
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._loaded_options = None
|
31
41
|
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
|
32
42
|
_globals['_STARTRUNREQUEST']._serialized_start=138
|
33
43
|
_globals['_STARTRUNREQUEST']._serialized_end=389
|