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.
Files changed (43) hide show
  1. flwr/client/app.py +16 -36
  2. flwr/client/grpc_client/connection.py +0 -6
  3. flwr/client/grpc_rere_client/connection.py +10 -0
  4. flwr/client/rest_client/connection.py +10 -0
  5. flwr/client/supernode/app.py +5 -5
  6. flwr/common/grpc.py +7 -0
  7. flwr/proto/clientappio_pb2.py +13 -3
  8. flwr/proto/clientappio_pb2_grpc.py +63 -12
  9. flwr/proto/error_pb2.py +13 -3
  10. flwr/proto/error_pb2_grpc.py +20 -0
  11. flwr/proto/exec_pb2.py +15 -5
  12. flwr/proto/exec_pb2_grpc.py +105 -24
  13. flwr/proto/fab_pb2.py +13 -3
  14. flwr/proto/fab_pb2_grpc.py +20 -0
  15. flwr/proto/fleet_pb2.py +15 -5
  16. flwr/proto/fleet_pb2_grpc.py +147 -36
  17. flwr/proto/grpcadapter_pb2.py +14 -4
  18. flwr/proto/grpcadapter_pb2_grpc.py +35 -4
  19. flwr/proto/log_pb2.py +13 -3
  20. flwr/proto/log_pb2_grpc.py +20 -0
  21. flwr/proto/message_pb2.py +15 -5
  22. flwr/proto/message_pb2_grpc.py +20 -0
  23. flwr/proto/node_pb2.py +13 -3
  24. flwr/proto/node_pb2_grpc.py +20 -0
  25. flwr/proto/recordset_pb2.py +18 -8
  26. flwr/proto/recordset_pb2_grpc.py +20 -0
  27. flwr/proto/run_pb2.py +16 -6
  28. flwr/proto/run_pb2_grpc.py +20 -0
  29. flwr/proto/serverappio_pb2.py +13 -3
  30. flwr/proto/serverappio_pb2_grpc.py +175 -44
  31. flwr/proto/simulationio_pb2.py +13 -3
  32. flwr/proto/simulationio_pb2_grpc.py +105 -24
  33. flwr/proto/task_pb2.py +13 -3
  34. flwr/proto/task_pb2_grpc.py +20 -0
  35. flwr/proto/transport_pb2.py +20 -10
  36. flwr/proto/transport_pb2_grpc.py +35 -4
  37. flwr/server/app.py +13 -2
  38. flwr/server/serverapp/app.py +1 -0
  39. {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/METADATA +4 -4
  40. {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/RECORD +43 -43
  41. {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/LICENSE +0 -0
  42. {flwr_nightly-1.15.0.dev20250116.dist-info → flwr_nightly-1.15.0.dev20250118.dist-info}/WHEEL +0 -0
  43. {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 signal
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 not app_state_tracker.interrupt:
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 not app_state_tracker.interrupt:
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
- if not app_state_tracker.interrupt:
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 and app_state_tracker.is_connected:
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
- @dataclass
816
- class _AppStateTracker:
817
- interrupt: bool = False
818
- is_connected: bool = False
819
-
820
- def register_signal_handler(self) -> None:
821
- """Register handlers for exit signals."""
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
- def _run_flwr_clientapp(args: list[str]) -> None:
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
@@ -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,
@@ -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: 4.25.0
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 == False:
26
- DESCRIPTOR._options = None
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(request, target, '/flwr.proto.ClientAppIo/GetToken',
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, channel_credentials,
101
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
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(request, target, '/flwr.proto.ClientAppIo/PullClientAppInputs',
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, channel_credentials,
118
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
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(request, target, '/flwr.proto.ClientAppIo/PushClientAppOutputs',
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, channel_credentials,
135
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
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: 4.25.0
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 == False:
23
- DESCRIPTOR._options = None
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)
@@ -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: 4.25.0
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 == False:
27
- DESCRIPTOR._options = None
28
- _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
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']._options = None
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