flwr 1.19.0__py3-none-any.whl → 1.21.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. flwr/__init__.py +4 -1
  2. flwr/app/__init__.py +28 -0
  3. flwr/app/exception.py +31 -0
  4. flwr/cli/auth_plugin/oidc_cli_plugin.py +4 -4
  5. flwr/cli/build.py +15 -5
  6. flwr/cli/cli_user_auth_interceptor.py +1 -1
  7. flwr/cli/config_utils.py +3 -3
  8. flwr/cli/constant.py +25 -8
  9. flwr/cli/log.py +9 -9
  10. flwr/cli/login/login.py +3 -3
  11. flwr/cli/ls.py +5 -5
  12. flwr/cli/new/new.py +23 -4
  13. flwr/cli/new/templates/app/README.flowertune.md.tpl +2 -0
  14. flwr/cli/new/templates/app/README.md.tpl +5 -0
  15. flwr/cli/new/templates/app/code/__init__.pytorch_msg_api.py.tpl +1 -0
  16. flwr/cli/new/templates/app/code/client.pytorch_msg_api.py.tpl +80 -0
  17. flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl +41 -0
  18. flwr/cli/new/templates/app/code/task.pytorch_msg_api.py.tpl +98 -0
  19. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +14 -3
  20. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +13 -1
  21. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +21 -2
  22. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +18 -1
  23. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +19 -2
  24. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +18 -1
  25. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +20 -3
  26. flwr/cli/new/templates/app/pyproject.pytorch_msg_api.toml.tpl +53 -0
  27. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +18 -1
  28. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +18 -1
  29. flwr/cli/run/run.py +53 -50
  30. flwr/cli/stop.py +7 -4
  31. flwr/cli/utils.py +29 -11
  32. flwr/client/grpc_adapter_client/connection.py +11 -4
  33. flwr/client/grpc_rere_client/connection.py +93 -129
  34. flwr/client/rest_client/connection.py +134 -164
  35. flwr/clientapp/__init__.py +10 -0
  36. flwr/clientapp/mod/__init__.py +26 -0
  37. flwr/clientapp/mod/centraldp_mods.py +132 -0
  38. flwr/common/args.py +20 -6
  39. flwr/common/auth_plugin/__init__.py +4 -4
  40. flwr/common/auth_plugin/auth_plugin.py +7 -7
  41. flwr/common/constant.py +26 -5
  42. flwr/common/event_log_plugin/event_log_plugin.py +1 -1
  43. flwr/common/exit/__init__.py +4 -0
  44. flwr/common/exit/exit.py +8 -1
  45. flwr/common/exit/exit_code.py +42 -8
  46. flwr/common/exit/exit_handler.py +62 -0
  47. flwr/common/{exit_handlers.py → exit/signal_handler.py} +20 -37
  48. flwr/common/grpc.py +1 -1
  49. flwr/common/{inflatable_grpc_utils.py → inflatable_protobuf_utils.py} +52 -10
  50. flwr/common/inflatable_utils.py +191 -24
  51. flwr/common/logger.py +1 -1
  52. flwr/common/record/array.py +101 -22
  53. flwr/common/record/arraychunk.py +59 -0
  54. flwr/common/retry_invoker.py +30 -11
  55. flwr/common/serde.py +0 -28
  56. flwr/common/telemetry.py +4 -0
  57. flwr/compat/client/app.py +14 -31
  58. flwr/compat/server/app.py +2 -2
  59. flwr/proto/appio_pb2.py +51 -0
  60. flwr/proto/appio_pb2.pyi +195 -0
  61. flwr/proto/appio_pb2_grpc.py +4 -0
  62. flwr/proto/appio_pb2_grpc.pyi +4 -0
  63. flwr/proto/clientappio_pb2.py +4 -19
  64. flwr/proto/clientappio_pb2.pyi +0 -125
  65. flwr/proto/clientappio_pb2_grpc.py +269 -29
  66. flwr/proto/clientappio_pb2_grpc.pyi +114 -21
  67. flwr/proto/control_pb2.py +62 -0
  68. flwr/proto/{exec_pb2_grpc.py → control_pb2_grpc.py} +54 -54
  69. flwr/proto/{exec_pb2_grpc.pyi → control_pb2_grpc.pyi} +28 -28
  70. flwr/proto/fleet_pb2.py +12 -20
  71. flwr/proto/fleet_pb2.pyi +6 -36
  72. flwr/proto/serverappio_pb2.py +8 -31
  73. flwr/proto/serverappio_pb2.pyi +0 -152
  74. flwr/proto/serverappio_pb2_grpc.py +107 -38
  75. flwr/proto/serverappio_pb2_grpc.pyi +47 -20
  76. flwr/proto/simulationio_pb2.py +4 -11
  77. flwr/proto/simulationio_pb2.pyi +0 -58
  78. flwr/proto/simulationio_pb2_grpc.py +129 -27
  79. flwr/proto/simulationio_pb2_grpc.pyi +52 -13
  80. flwr/server/app.py +130 -153
  81. flwr/server/fleet_event_log_interceptor.py +4 -0
  82. flwr/server/grid/grpc_grid.py +94 -54
  83. flwr/server/grid/inmemory_grid.py +1 -0
  84. flwr/server/serverapp/app.py +165 -144
  85. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +8 -0
  86. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +1 -1
  87. flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -5
  88. flwr/server/superlink/fleet/message_handler/message_handler.py +10 -16
  89. flwr/server/superlink/fleet/rest_rere/rest_api.py +1 -2
  90. flwr/server/superlink/fleet/vce/backend/raybackend.py +3 -1
  91. flwr/server/superlink/fleet/vce/vce_api.py +6 -6
  92. flwr/server/superlink/linkstate/in_memory_linkstate.py +34 -0
  93. flwr/server/superlink/linkstate/linkstate.py +2 -1
  94. flwr/server/superlink/linkstate/sqlite_linkstate.py +45 -0
  95. flwr/server/superlink/serverappio/serverappio_grpc.py +2 -2
  96. flwr/server/superlink/serverappio/serverappio_servicer.py +95 -48
  97. flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
  98. flwr/server/superlink/simulation/simulationio_servicer.py +98 -22
  99. flwr/server/superlink/utils.py +0 -35
  100. flwr/serverapp/__init__.py +12 -0
  101. flwr/serverapp/dp_fixed_clipping.py +352 -0
  102. flwr/serverapp/exception.py +38 -0
  103. flwr/serverapp/strategy/__init__.py +38 -0
  104. flwr/serverapp/strategy/dp_fixed_clipping.py +352 -0
  105. flwr/serverapp/strategy/fedadagrad.py +162 -0
  106. flwr/serverapp/strategy/fedadam.py +181 -0
  107. flwr/serverapp/strategy/fedavg.py +295 -0
  108. flwr/serverapp/strategy/fedopt.py +218 -0
  109. flwr/serverapp/strategy/fedyogi.py +173 -0
  110. flwr/serverapp/strategy/result.py +105 -0
  111. flwr/serverapp/strategy/strategy.py +285 -0
  112. flwr/serverapp/strategy/strategy_utils.py +251 -0
  113. flwr/serverapp/strategy/strategy_utils_tests.py +304 -0
  114. flwr/simulation/app.py +159 -154
  115. flwr/simulation/run_simulation.py +17 -0
  116. flwr/supercore/app_utils.py +58 -0
  117. flwr/supercore/cli/__init__.py +22 -0
  118. flwr/supercore/cli/flower_superexec.py +141 -0
  119. flwr/supercore/corestate/__init__.py +22 -0
  120. flwr/supercore/corestate/corestate.py +81 -0
  121. flwr/{server/superlink → supercore}/ffs/disk_ffs.py +1 -1
  122. flwr/supercore/grpc_health/__init__.py +25 -0
  123. flwr/supercore/grpc_health/health_server.py +53 -0
  124. flwr/supercore/grpc_health/simple_health_servicer.py +38 -0
  125. flwr/supercore/license_plugin/__init__.py +22 -0
  126. flwr/supercore/license_plugin/license_plugin.py +26 -0
  127. flwr/supercore/object_store/in_memory_object_store.py +31 -31
  128. flwr/supercore/object_store/object_store.py +20 -42
  129. flwr/supercore/object_store/utils.py +43 -0
  130. flwr/{superexec → supercore/superexec}/__init__.py +1 -1
  131. flwr/supercore/superexec/plugin/__init__.py +28 -0
  132. flwr/supercore/superexec/plugin/base_exec_plugin.py +53 -0
  133. flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +28 -0
  134. flwr/supercore/superexec/plugin/exec_plugin.py +71 -0
  135. flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +28 -0
  136. flwr/supercore/superexec/plugin/simulation_exec_plugin.py +28 -0
  137. flwr/supercore/superexec/run_superexec.py +185 -0
  138. flwr/supercore/utils.py +32 -0
  139. flwr/superlink/servicer/__init__.py +15 -0
  140. flwr/superlink/servicer/control/__init__.py +22 -0
  141. flwr/{superexec/exec_event_log_interceptor.py → superlink/servicer/control/control_event_log_interceptor.py} +9 -5
  142. flwr/{superexec/exec_grpc.py → superlink/servicer/control/control_grpc.py} +39 -28
  143. flwr/superlink/servicer/control/control_license_interceptor.py +82 -0
  144. flwr/{superexec/exec_servicer.py → superlink/servicer/control/control_servicer.py} +79 -31
  145. flwr/{superexec/exec_user_auth_interceptor.py → superlink/servicer/control/control_user_auth_interceptor.py} +18 -10
  146. flwr/supernode/cli/flower_supernode.py +3 -7
  147. flwr/supernode/cli/flwr_clientapp.py +20 -16
  148. flwr/supernode/nodestate/in_memory_nodestate.py +13 -4
  149. flwr/supernode/nodestate/nodestate.py +3 -44
  150. flwr/supernode/runtime/run_clientapp.py +129 -115
  151. flwr/supernode/servicer/clientappio/__init__.py +1 -3
  152. flwr/supernode/servicer/clientappio/clientappio_servicer.py +217 -165
  153. flwr/supernode/start_client_internal.py +205 -148
  154. {flwr-1.19.0.dist-info → flwr-1.21.0.dist-info}/METADATA +5 -3
  155. {flwr-1.19.0.dist-info → flwr-1.21.0.dist-info}/RECORD +161 -117
  156. {flwr-1.19.0.dist-info → flwr-1.21.0.dist-info}/entry_points.txt +1 -0
  157. flwr/common/inflatable_rest_utils.py +0 -99
  158. flwr/proto/exec_pb2.py +0 -62
  159. flwr/superexec/app.py +0 -45
  160. flwr/superexec/deployment.py +0 -192
  161. flwr/superexec/executor.py +0 -100
  162. flwr/superexec/simulation.py +0 -130
  163. /flwr/proto/{exec_pb2.pyi → control_pb2.pyi} +0 -0
  164. /flwr/{server/superlink → supercore}/ffs/__init__.py +0 -0
  165. /flwr/{server/superlink → supercore}/ffs/ffs.py +0 -0
  166. /flwr/{server/superlink → supercore}/ffs/ffs_factory.py +0 -0
  167. {flwr-1.19.0.dist-info → flwr-1.21.0.dist-info}/WHEEL +0 -0
flwr/compat/client/app.py CHANGED
@@ -29,8 +29,6 @@ from flwr.cli.config_utils import get_fab_metadata
29
29
  from flwr.cli.install import install_from_fab
30
30
  from flwr.client.client import Client
31
31
  from flwr.client.client_app import ClientApp, LoadClientAppError
32
- from flwr.client.grpc_adapter_client.connection import grpc_adapter
33
- from flwr.client.grpc_rere_client.connection import grpc_request_response
34
32
  from flwr.client.message_handler.message_handler import handle_control_message
35
33
  from flwr.client.numpy_client import NumPyClient
36
34
  from flwr.client.run_info_store import DeprecatedRunInfoStore
@@ -39,10 +37,7 @@ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, Context, EventType, Message, ev
39
37
  from flwr.common.address import parse_address
40
38
  from flwr.common.constant import (
41
39
  MAX_RETRY_DELAY,
42
- TRANSPORT_TYPE_GRPC_ADAPTER,
43
40
  TRANSPORT_TYPE_GRPC_BIDI,
44
- TRANSPORT_TYPE_GRPC_RERE,
45
- TRANSPORT_TYPE_REST,
46
41
  TRANSPORT_TYPES,
47
42
  ErrorCode,
48
43
  )
@@ -121,10 +116,8 @@ def start_client(
121
116
  Starts an insecure gRPC connection when True. Enables HTTPS connection
122
117
  when False, using system certificates if `root_certificates` is None.
123
118
  transport : Optional[str] (default: None)
124
- Configure the transport layer. Allowed values:
125
- - 'grpc-bidi': gRPC, bidirectional streaming
126
- - 'grpc-rere': gRPC, request-response (experimental)
127
- - 'rest': HTTP (experimental)
119
+ **[Deprecated]** This argument is no longer supported and will be
120
+ removed in a future release.
128
121
  authentication_keys : Optional[Tuple[PrivateKey, PublicKey]] (default: None)
129
122
  Tuple containing the elliptic curve private key and public key for
130
123
  authentication from the cryptography library.
@@ -180,6 +173,12 @@ def start_client(
180
173
  )
181
174
  warn_deprecated_feature(name=msg)
182
175
 
176
+ if transport is not None and transport != "grpc-bidi":
177
+ raise ValueError(
178
+ f"Transport type {transport} is not supported. "
179
+ "Use 'grpc-bidi' or None (default) instead."
180
+ )
181
+
183
182
  event(EventType.START_CLIENT_ENTER)
184
183
  start_client_internal(
185
184
  server_address=server_address,
@@ -429,7 +428,7 @@ def start_client_internal(
429
428
 
430
429
  run: Run = runs[run_id]
431
430
  if get_fab is not None and run.fab_hash:
432
- fab = get_fab(run.fab_hash, run_id)
431
+ fab = get_fab(run.fab_hash, run_id) # pylint: disable=E1102
433
432
  # If `ClientApp` runs in the same process, install the FAB
434
433
  install_from_fab(fab.content, flwr_path, True)
435
434
  fab_id, fab_version = get_fab_metadata(fab.content)
@@ -573,10 +572,8 @@ def start_numpy_client(
573
572
  Starts an insecure gRPC connection when True. Enables HTTPS connection
574
573
  when False, using system certificates if `root_certificates` is None.
575
574
  transport : Optional[str] (default: None)
576
- Configure the transport layer. Allowed values:
577
- - 'grpc-bidi': gRPC, bidirectional streaming
578
- - 'grpc-rere': gRPC, request-response (experimental)
579
- - 'rest': HTTP (experimental)
575
+ **[Deprecated]** This argument is no longer supported and will be
576
+ removed in a future release.
580
577
 
581
578
  Examples
582
579
  --------
@@ -672,23 +669,9 @@ def _init_connection(transport: Optional[str], server_address: str) -> tuple[
672
669
  if transport is None:
673
670
  transport = TRANSPORT_TYPE_GRPC_BIDI
674
671
 
675
- # Use either gRPC bidirectional streaming or REST request/response
676
- if transport == TRANSPORT_TYPE_REST:
677
- try:
678
- from requests.exceptions import ConnectionError as RequestsConnectionError
679
-
680
- from flwr.client.rest_client.connection import http_request_response
681
- except ModuleNotFoundError:
682
- flwr_exit(ExitCode.COMMON_MISSING_EXTRA_REST)
683
- if server_address[:4] != "http":
684
- flwr_exit(ExitCode.SUPERNODE_REST_ADDRESS_INVALID)
685
- connection, error_type = http_request_response, RequestsConnectionError
686
- elif transport == TRANSPORT_TYPE_GRPC_RERE:
687
- connection, error_type = grpc_request_response, RpcError
688
- elif transport == TRANSPORT_TYPE_GRPC_ADAPTER:
689
- connection, error_type = grpc_adapter, RpcError
690
- elif transport == TRANSPORT_TYPE_GRPC_BIDI:
691
- connection, error_type = grpc_connection, RpcError # type: ignore[assignment]
672
+ # Use gRPC bidirectional streaming
673
+ if transport == TRANSPORT_TYPE_GRPC_BIDI:
674
+ connection, error_type = grpc_connection, RpcError
692
675
  else:
693
676
  raise ValueError(
694
677
  f"Unknown transport type: {transport} (possible: {TRANSPORT_TYPES})"
flwr/compat/server/app.py CHANGED
@@ -22,7 +22,7 @@ from typing import Optional
22
22
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
23
23
  from flwr.common.address import parse_address
24
24
  from flwr.common.constant import FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS
25
- from flwr.common.exit_handlers import register_exit_handlers
25
+ from flwr.common.exit import register_signal_handlers
26
26
  from flwr.common.logger import log, warn_deprecated_feature
27
27
  from flwr.server.client_manager import ClientManager
28
28
  from flwr.server.history import History
@@ -154,7 +154,7 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
154
154
  )
155
155
 
156
156
  # Graceful shutdown
157
- register_exit_handlers(
157
+ register_signal_handlers(
158
158
  event_type=EventType.START_SERVER_LEAVE,
159
159
  exit_message="Flower server terminated gracefully.",
160
160
  grpc_servers=[grpc_server],
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/appio.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
16
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
17
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/appio.proto\x12\nflwr.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\"\x19\n\x17ListAppsToLaunchRequest\"+\n\x18ListAppsToLaunchResponse\x12\x0f\n\x07run_ids\x18\x01 \x03(\x04\"%\n\x13RequestTokenRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"%\n\x14RequestTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\"\x99\x01\n\x16PushAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\x12\x34\n\x14message_object_trees\x18\x04 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"G\n\x17PushAppMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x17\n\x0fobjects_to_push\x18\x02 \x03(\t\"L\n\x16PullAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\"{\n\x17PullAppMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x02 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"%\n\x14PullAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\"y\n\x15PullAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"\\\n\x15PushAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"\x18\n\x16PushAppOutputsResponseb\x06proto3')
21
+
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.appio_pb2', _globals)
25
+ if _descriptor._USE_C_DESCRIPTORS == False:
26
+ DESCRIPTOR._options = None
27
+ _globals['_LISTAPPSTOLAUNCHREQUEST']._serialized_start=108
28
+ _globals['_LISTAPPSTOLAUNCHREQUEST']._serialized_end=133
29
+ _globals['_LISTAPPSTOLAUNCHRESPONSE']._serialized_start=135
30
+ _globals['_LISTAPPSTOLAUNCHRESPONSE']._serialized_end=178
31
+ _globals['_REQUESTTOKENREQUEST']._serialized_start=180
32
+ _globals['_REQUESTTOKENREQUEST']._serialized_end=217
33
+ _globals['_REQUESTTOKENRESPONSE']._serialized_start=219
34
+ _globals['_REQUESTTOKENRESPONSE']._serialized_end=256
35
+ _globals['_PUSHAPPMESSAGESREQUEST']._serialized_start=259
36
+ _globals['_PUSHAPPMESSAGESREQUEST']._serialized_end=412
37
+ _globals['_PUSHAPPMESSAGESRESPONSE']._serialized_start=414
38
+ _globals['_PUSHAPPMESSAGESRESPONSE']._serialized_end=485
39
+ _globals['_PULLAPPMESSAGESREQUEST']._serialized_start=487
40
+ _globals['_PULLAPPMESSAGESREQUEST']._serialized_end=563
41
+ _globals['_PULLAPPMESSAGESRESPONSE']._serialized_start=565
42
+ _globals['_PULLAPPMESSAGESRESPONSE']._serialized_end=688
43
+ _globals['_PULLAPPINPUTSREQUEST']._serialized_start=690
44
+ _globals['_PULLAPPINPUTSREQUEST']._serialized_end=727
45
+ _globals['_PULLAPPINPUTSRESPONSE']._serialized_start=729
46
+ _globals['_PULLAPPINPUTSRESPONSE']._serialized_end=850
47
+ _globals['_PUSHAPPOUTPUTSREQUEST']._serialized_start=852
48
+ _globals['_PUSHAPPOUTPUTSREQUEST']._serialized_end=944
49
+ _globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_start=946
50
+ _globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_end=970
51
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,195 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import flwr.proto.fab_pb2
7
+ import flwr.proto.message_pb2
8
+ import flwr.proto.run_pb2
9
+ import google.protobuf.descriptor
10
+ import google.protobuf.internal.containers
11
+ import google.protobuf.message
12
+ import typing
13
+ import typing_extensions
14
+
15
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
+
17
+ class ListAppsToLaunchRequest(google.protobuf.message.Message):
18
+ """These messages are used by both ServerAppIo and ClientAppIo services
19
+
20
+ ListAppsToLaunch messages
21
+ """
22
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
23
+ def __init__(self,
24
+ ) -> None: ...
25
+ global___ListAppsToLaunchRequest = ListAppsToLaunchRequest
26
+
27
+ class ListAppsToLaunchResponse(google.protobuf.message.Message):
28
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
29
+ RUN_IDS_FIELD_NUMBER: builtins.int
30
+ @property
31
+ def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
32
+ """List of run IDs of the apps to launch"""
33
+ pass
34
+ def __init__(self,
35
+ *,
36
+ run_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
37
+ ) -> None: ...
38
+ def ClearField(self, field_name: typing_extensions.Literal["run_ids",b"run_ids"]) -> None: ...
39
+ global___ListAppsToLaunchResponse = ListAppsToLaunchResponse
40
+
41
+ class RequestTokenRequest(google.protobuf.message.Message):
42
+ """RequestToken messages"""
43
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
44
+ RUN_ID_FIELD_NUMBER: builtins.int
45
+ run_id: builtins.int
46
+ def __init__(self,
47
+ *,
48
+ run_id: builtins.int = ...,
49
+ ) -> None: ...
50
+ def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
51
+ global___RequestTokenRequest = RequestTokenRequest
52
+
53
+ class RequestTokenResponse(google.protobuf.message.Message):
54
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
55
+ TOKEN_FIELD_NUMBER: builtins.int
56
+ token: typing.Text
57
+ def __init__(self,
58
+ *,
59
+ token: typing.Text = ...,
60
+ ) -> None: ...
61
+ def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
62
+ global___RequestTokenResponse = RequestTokenResponse
63
+
64
+ class PushAppMessagesRequest(google.protobuf.message.Message):
65
+ """PushAppMessages messages"""
66
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
67
+ TOKEN_FIELD_NUMBER: builtins.int
68
+ MESSAGES_LIST_FIELD_NUMBER: builtins.int
69
+ RUN_ID_FIELD_NUMBER: builtins.int
70
+ MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
71
+ token: typing.Text
72
+ @property
73
+ def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
74
+ run_id: builtins.int
75
+ @property
76
+ def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
77
+ def __init__(self,
78
+ *,
79
+ token: typing.Text = ...,
80
+ messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
81
+ run_id: builtins.int = ...,
82
+ message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
83
+ ) -> None: ...
84
+ def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","run_id",b"run_id","token",b"token"]) -> None: ...
85
+ global___PushAppMessagesRequest = PushAppMessagesRequest
86
+
87
+ class PushAppMessagesResponse(google.protobuf.message.Message):
88
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
89
+ MESSAGE_IDS_FIELD_NUMBER: builtins.int
90
+ OBJECTS_TO_PUSH_FIELD_NUMBER: builtins.int
91
+ @property
92
+ def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
93
+ @property
94
+ def objects_to_push(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
95
+ def __init__(self,
96
+ *,
97
+ message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
98
+ objects_to_push: typing.Optional[typing.Iterable[typing.Text]] = ...,
99
+ ) -> None: ...
100
+ def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","objects_to_push",b"objects_to_push"]) -> None: ...
101
+ global___PushAppMessagesResponse = PushAppMessagesResponse
102
+
103
+ class PullAppMessagesRequest(google.protobuf.message.Message):
104
+ """PullAppMessages messages"""
105
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
106
+ TOKEN_FIELD_NUMBER: builtins.int
107
+ MESSAGE_IDS_FIELD_NUMBER: builtins.int
108
+ RUN_ID_FIELD_NUMBER: builtins.int
109
+ token: typing.Text
110
+ @property
111
+ def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
112
+ run_id: builtins.int
113
+ def __init__(self,
114
+ *,
115
+ token: typing.Text = ...,
116
+ message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
117
+ run_id: builtins.int = ...,
118
+ ) -> None: ...
119
+ def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","run_id",b"run_id","token",b"token"]) -> None: ...
120
+ global___PullAppMessagesRequest = PullAppMessagesRequest
121
+
122
+ class PullAppMessagesResponse(google.protobuf.message.Message):
123
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
124
+ MESSAGES_LIST_FIELD_NUMBER: builtins.int
125
+ MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
126
+ @property
127
+ def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
128
+ @property
129
+ def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
130
+ def __init__(self,
131
+ *,
132
+ messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
133
+ message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
134
+ ) -> None: ...
135
+ def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list"]) -> None: ...
136
+ global___PullAppMessagesResponse = PullAppMessagesResponse
137
+
138
+ class PullAppInputsRequest(google.protobuf.message.Message):
139
+ """PullAppInputs messages"""
140
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
141
+ TOKEN_FIELD_NUMBER: builtins.int
142
+ token: typing.Text
143
+ def __init__(self,
144
+ *,
145
+ token: typing.Text = ...,
146
+ ) -> None: ...
147
+ def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
148
+ global___PullAppInputsRequest = PullAppInputsRequest
149
+
150
+ class PullAppInputsResponse(google.protobuf.message.Message):
151
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
152
+ CONTEXT_FIELD_NUMBER: builtins.int
153
+ RUN_FIELD_NUMBER: builtins.int
154
+ FAB_FIELD_NUMBER: builtins.int
155
+ @property
156
+ def context(self) -> flwr.proto.message_pb2.Context: ...
157
+ @property
158
+ def run(self) -> flwr.proto.run_pb2.Run: ...
159
+ @property
160
+ def fab(self) -> flwr.proto.fab_pb2.Fab: ...
161
+ def __init__(self,
162
+ *,
163
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
164
+ run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
165
+ fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
166
+ ) -> None: ...
167
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
168
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
169
+ global___PullAppInputsResponse = PullAppInputsResponse
170
+
171
+ class PushAppOutputsRequest(google.protobuf.message.Message):
172
+ """PushAppInputs messages"""
173
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
174
+ TOKEN_FIELD_NUMBER: builtins.int
175
+ RUN_ID_FIELD_NUMBER: builtins.int
176
+ CONTEXT_FIELD_NUMBER: builtins.int
177
+ token: typing.Text
178
+ run_id: builtins.int
179
+ @property
180
+ def context(self) -> flwr.proto.message_pb2.Context: ...
181
+ def __init__(self,
182
+ *,
183
+ token: typing.Text = ...,
184
+ run_id: builtins.int = ...,
185
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
186
+ ) -> None: ...
187
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
188
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id","token",b"token"]) -> None: ...
189
+ global___PushAppOutputsRequest = PushAppOutputsRequest
190
+
191
+ class PushAppOutputsResponse(google.protobuf.message.Message):
192
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
193
+ def __init__(self,
194
+ ) -> None: ...
195
+ global___PushAppOutputsResponse = PushAppOutputsResponse
@@ -0,0 +1,4 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
@@ -0,0 +1,4 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
@@ -15,31 +15,16 @@ _sym_db = _symbol_database.Default()
15
15
  from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
16
16
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
17
17
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
18
+ from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
18
19
 
19
20
 
20
- 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')
21
+ 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\x1a\x16\x66lwr/proto/appio.proto2\x8a\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
21
22
 
22
23
  _globals = globals()
23
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
25
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals)
25
26
  if _descriptor._USE_C_DESCRIPTORS == False:
26
27
  DESCRIPTOR._options = None
27
- _globals['_CLIENTAPPOUTPUTCODE']._serialized_start=675
28
- _globals['_CLIENTAPPOUTPUTCODE']._serialized_end=751
29
- _globals['_CLIENTAPPOUTPUTSTATUS']._serialized_start=114
30
- _globals['_CLIENTAPPOUTPUTSTATUS']._serialized_end=201
31
- _globals['_GETTOKENREQUEST']._serialized_start=203
32
- _globals['_GETTOKENREQUEST']._serialized_end=220
33
- _globals['_GETTOKENRESPONSE']._serialized_start=222
34
- _globals['_GETTOKENRESPONSE']._serialized_end=255
35
- _globals['_PULLCLIENTAPPINPUTSREQUEST']._serialized_start=257
36
- _globals['_PULLCLIENTAPPINPUTSREQUEST']._serialized_end=300
37
- _globals['_PULLCLIENTAPPINPUTSRESPONSE']._serialized_start=303
38
- _globals['_PULLCLIENTAPPINPUTSRESPONSE']._serialized_end=468
39
- _globals['_PUSHCLIENTAPPOUTPUTSREQUEST']._serialized_start=470
40
- _globals['_PUSHCLIENTAPPOUTPUTSREQUEST']._serialized_end=590
41
- _globals['_PUSHCLIENTAPPOUTPUTSRESPONSE']._serialized_start=592
42
- _globals['_PUSHCLIENTAPPOUTPUTSRESPONSE']._serialized_end=673
43
- _globals['_CLIENTAPPIO']._serialized_start=754
44
- _globals['_CLIENTAPPIO']._serialized_end=1055
28
+ _globals['_CLIENTAPPIO']._serialized_start=139
29
+ _globals['_CLIENTAPPIO']._serialized_end=1045
45
30
  # @@protoc_insertion_point(module_scope)
@@ -2,131 +2,6 @@
2
2
  @generated by mypy-protobuf. Do not edit manually!
3
3
  isort:skip_file
4
4
  """
5
- import builtins
6
- import flwr.proto.fab_pb2
7
- import flwr.proto.message_pb2
8
- import flwr.proto.run_pb2
9
5
  import google.protobuf.descriptor
10
- import google.protobuf.internal.enum_type_wrapper
11
- import google.protobuf.message
12
- import typing
13
- import typing_extensions
14
6
 
15
7
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
-
17
- class _ClientAppOutputCode:
18
- ValueType = typing.NewType('ValueType', builtins.int)
19
- V: typing_extensions.TypeAlias = ValueType
20
- class _ClientAppOutputCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ClientAppOutputCode.ValueType], builtins.type):
21
- DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
22
- SUCCESS: _ClientAppOutputCode.ValueType # 0
23
- DEADLINE_EXCEEDED: _ClientAppOutputCode.ValueType # 1
24
- UNKNOWN_ERROR: _ClientAppOutputCode.ValueType # 2
25
- class ClientAppOutputCode(_ClientAppOutputCode, metaclass=_ClientAppOutputCodeEnumTypeWrapper):
26
- pass
27
-
28
- SUCCESS: ClientAppOutputCode.ValueType # 0
29
- DEADLINE_EXCEEDED: ClientAppOutputCode.ValueType # 1
30
- UNKNOWN_ERROR: ClientAppOutputCode.ValueType # 2
31
- global___ClientAppOutputCode = ClientAppOutputCode
32
-
33
-
34
- class ClientAppOutputStatus(google.protobuf.message.Message):
35
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
36
- CODE_FIELD_NUMBER: builtins.int
37
- MESSAGE_FIELD_NUMBER: builtins.int
38
- code: global___ClientAppOutputCode.ValueType
39
- message: typing.Text
40
- def __init__(self,
41
- *,
42
- code: global___ClientAppOutputCode.ValueType = ...,
43
- message: typing.Text = ...,
44
- ) -> None: ...
45
- def ClearField(self, field_name: typing_extensions.Literal["code",b"code","message",b"message"]) -> None: ...
46
- global___ClientAppOutputStatus = ClientAppOutputStatus
47
-
48
- class GetTokenRequest(google.protobuf.message.Message):
49
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
50
- def __init__(self,
51
- ) -> None: ...
52
- global___GetTokenRequest = GetTokenRequest
53
-
54
- class GetTokenResponse(google.protobuf.message.Message):
55
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
56
- TOKEN_FIELD_NUMBER: builtins.int
57
- token: builtins.int
58
- def __init__(self,
59
- *,
60
- token: builtins.int = ...,
61
- ) -> None: ...
62
- def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
63
- global___GetTokenResponse = GetTokenResponse
64
-
65
- class PullClientAppInputsRequest(google.protobuf.message.Message):
66
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
67
- TOKEN_FIELD_NUMBER: builtins.int
68
- token: builtins.int
69
- def __init__(self,
70
- *,
71
- token: builtins.int = ...,
72
- ) -> None: ...
73
- def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
74
- global___PullClientAppInputsRequest = PullClientAppInputsRequest
75
-
76
- class PullClientAppInputsResponse(google.protobuf.message.Message):
77
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
78
- MESSAGE_FIELD_NUMBER: builtins.int
79
- CONTEXT_FIELD_NUMBER: builtins.int
80
- RUN_FIELD_NUMBER: builtins.int
81
- FAB_FIELD_NUMBER: builtins.int
82
- @property
83
- def message(self) -> flwr.proto.message_pb2.Message: ...
84
- @property
85
- def context(self) -> flwr.proto.message_pb2.Context: ...
86
- @property
87
- def run(self) -> flwr.proto.run_pb2.Run: ...
88
- @property
89
- def fab(self) -> flwr.proto.fab_pb2.Fab: ...
90
- def __init__(self,
91
- *,
92
- message: typing.Optional[flwr.proto.message_pb2.Message] = ...,
93
- context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
94
- run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
95
- fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
96
- ) -> None: ...
97
- def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","message",b"message","run",b"run"]) -> builtins.bool: ...
98
- def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","message",b"message","run",b"run"]) -> None: ...
99
- global___PullClientAppInputsResponse = PullClientAppInputsResponse
100
-
101
- class PushClientAppOutputsRequest(google.protobuf.message.Message):
102
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
103
- TOKEN_FIELD_NUMBER: builtins.int
104
- MESSAGE_FIELD_NUMBER: builtins.int
105
- CONTEXT_FIELD_NUMBER: builtins.int
106
- token: builtins.int
107
- @property
108
- def message(self) -> flwr.proto.message_pb2.Message: ...
109
- @property
110
- def context(self) -> flwr.proto.message_pb2.Context: ...
111
- def __init__(self,
112
- *,
113
- token: builtins.int = ...,
114
- message: typing.Optional[flwr.proto.message_pb2.Message] = ...,
115
- context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
116
- ) -> None: ...
117
- def HasField(self, field_name: typing_extensions.Literal["context",b"context","message",b"message"]) -> builtins.bool: ...
118
- def ClearField(self, field_name: typing_extensions.Literal["context",b"context","message",b"message","token",b"token"]) -> None: ...
119
- global___PushClientAppOutputsRequest = PushClientAppOutputsRequest
120
-
121
- class PushClientAppOutputsResponse(google.protobuf.message.Message):
122
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
123
- STATUS_FIELD_NUMBER: builtins.int
124
- @property
125
- def status(self) -> global___ClientAppOutputStatus: ...
126
- def __init__(self,
127
- *,
128
- status: typing.Optional[global___ClientAppOutputStatus] = ...,
129
- ) -> None: ...
130
- def HasField(self, field_name: typing_extensions.Literal["status",b"status"]) -> builtins.bool: ...
131
- def ClearField(self, field_name: typing_extensions.Literal["status",b"status"]) -> None: ...
132
- global___PushClientAppOutputsResponse = PushClientAppOutputsResponse