flwr 1.24.0__py3-none-any.whl → 1.26.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 (204) hide show
  1. flwr/__init__.py +1 -1
  2. flwr/app/__init__.py +4 -1
  3. flwr/app/message_type.py +29 -0
  4. flwr/app/metadata.py +5 -2
  5. flwr/app/user_config.py +19 -0
  6. flwr/cli/app.py +37 -19
  7. flwr/cli/app_cmd/publish.py +25 -75
  8. flwr/cli/app_cmd/review.py +25 -66
  9. flwr/cli/auth_plugin/auth_plugin.py +5 -10
  10. flwr/cli/auth_plugin/noop_auth_plugin.py +1 -2
  11. flwr/cli/auth_plugin/oidc_cli_plugin.py +38 -38
  12. flwr/cli/build.py +15 -28
  13. flwr/cli/config/__init__.py +21 -0
  14. flwr/cli/config/ls.py +71 -0
  15. flwr/cli/config_migration.py +297 -0
  16. flwr/cli/config_utils.py +63 -156
  17. flwr/cli/constant.py +71 -0
  18. flwr/cli/federation/__init__.py +0 -2
  19. flwr/cli/federation/ls.py +256 -64
  20. flwr/cli/flower_config.py +429 -0
  21. flwr/cli/install.py +23 -62
  22. flwr/cli/log.py +23 -37
  23. flwr/cli/login/login.py +29 -63
  24. flwr/cli/ls.py +72 -61
  25. flwr/cli/new/new.py +98 -309
  26. flwr/cli/pull.py +19 -37
  27. flwr/cli/run/run.py +87 -100
  28. flwr/cli/run_utils.py +23 -5
  29. flwr/cli/stop.py +33 -74
  30. flwr/cli/supernode/ls.py +35 -62
  31. flwr/cli/supernode/register.py +31 -80
  32. flwr/cli/supernode/unregister.py +24 -70
  33. flwr/cli/typing.py +200 -0
  34. flwr/cli/utils.py +160 -412
  35. flwr/client/grpc_adapter_client/connection.py +2 -2
  36. flwr/client/grpc_rere_client/connection.py +9 -6
  37. flwr/client/grpc_rere_client/grpc_adapter.py +1 -1
  38. flwr/client/message_handler/message_handler.py +2 -1
  39. flwr/client/mod/centraldp_mods.py +1 -1
  40. flwr/client/mod/localdp_mod.py +1 -1
  41. flwr/client/mod/secure_aggregation/secaggplus_mod.py +1 -1
  42. flwr/client/rest_client/connection.py +6 -4
  43. flwr/client/run_info_store.py +2 -1
  44. flwr/clientapp/client_app.py +2 -1
  45. flwr/common/__init__.py +3 -2
  46. flwr/common/args.py +5 -5
  47. flwr/common/config.py +12 -17
  48. flwr/common/constant.py +3 -16
  49. flwr/common/context.py +2 -1
  50. flwr/common/exit/exit.py +4 -4
  51. flwr/common/exit/exit_code.py +6 -0
  52. flwr/common/grpc.py +2 -1
  53. flwr/common/logger.py +1 -1
  54. flwr/common/message.py +1 -1
  55. flwr/common/retry_invoker.py +13 -5
  56. flwr/common/secure_aggregation/ndarrays_arithmetic.py +5 -2
  57. flwr/common/serde.py +13 -5
  58. flwr/common/telemetry.py +1 -1
  59. flwr/common/typing.py +10 -3
  60. flwr/compat/client/app.py +6 -9
  61. flwr/compat/client/grpc_client/connection.py +2 -1
  62. flwr/compat/common/constant.py +29 -0
  63. flwr/compat/server/app.py +1 -1
  64. flwr/proto/clientappio_pb2.py +2 -2
  65. flwr/proto/clientappio_pb2_grpc.py +104 -88
  66. flwr/proto/clientappio_pb2_grpc.pyi +140 -80
  67. flwr/proto/federation_pb2.py +5 -3
  68. flwr/proto/federation_pb2.pyi +32 -2
  69. flwr/proto/fleet_pb2.py +10 -10
  70. flwr/proto/fleet_pb2.pyi +5 -1
  71. flwr/proto/run_pb2.py +18 -26
  72. flwr/proto/run_pb2.pyi +10 -58
  73. flwr/proto/serverappio_pb2.py +2 -2
  74. flwr/proto/serverappio_pb2_grpc.py +138 -207
  75. flwr/proto/serverappio_pb2_grpc.pyi +189 -155
  76. flwr/proto/simulationio_pb2.py +2 -2
  77. flwr/proto/simulationio_pb2_grpc.py +62 -90
  78. flwr/proto/simulationio_pb2_grpc.pyi +95 -55
  79. flwr/server/app.py +7 -13
  80. flwr/server/compat/grid_client_proxy.py +2 -1
  81. flwr/server/grid/grpc_grid.py +5 -5
  82. flwr/server/serverapp/app.py +11 -4
  83. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +1 -1
  84. flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +13 -12
  85. flwr/server/superlink/fleet/message_handler/message_handler.py +42 -2
  86. flwr/server/superlink/linkstate/__init__.py +2 -2
  87. flwr/server/superlink/linkstate/in_memory_linkstate.py +36 -10
  88. flwr/server/superlink/linkstate/linkstate.py +34 -21
  89. flwr/server/superlink/linkstate/linkstate_factory.py +16 -8
  90. flwr/server/superlink/linkstate/{sqlite_linkstate.py → sql_linkstate.py} +471 -516
  91. flwr/server/superlink/linkstate/utils.py +49 -2
  92. flwr/server/superlink/serverappio/serverappio_servicer.py +1 -33
  93. flwr/server/superlink/simulation/simulationio_servicer.py +0 -19
  94. flwr/server/utils/validator.py +1 -1
  95. flwr/server/workflow/default_workflows.py +2 -1
  96. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +1 -1
  97. flwr/serverapp/strategy/bulyan.py +7 -1
  98. flwr/serverapp/strategy/dp_fixed_clipping.py +9 -1
  99. flwr/serverapp/strategy/fedavg.py +1 -1
  100. flwr/serverapp/strategy/fedxgb_cyclic.py +1 -1
  101. flwr/simulation/ray_transport/ray_client_proxy.py +2 -6
  102. flwr/simulation/run_simulation.py +3 -12
  103. flwr/simulation/simulationio_connection.py +3 -3
  104. flwr/{common → supercore}/address.py +7 -33
  105. flwr/supercore/app_utils.py +2 -1
  106. flwr/supercore/constant.py +27 -2
  107. flwr/supercore/corestate/{sqlite_corestate.py → sql_corestate.py} +19 -23
  108. flwr/supercore/credential_store/__init__.py +33 -0
  109. flwr/supercore/credential_store/credential_store.py +34 -0
  110. flwr/supercore/credential_store/file_credential_store.py +76 -0
  111. flwr/{common → supercore}/date.py +0 -11
  112. flwr/supercore/ffs/disk_ffs.py +1 -1
  113. flwr/supercore/object_store/object_store_factory.py +14 -6
  114. flwr/supercore/object_store/{sqlite_object_store.py → sql_object_store.py} +115 -117
  115. flwr/supercore/sql_mixin.py +315 -0
  116. flwr/{cli/new/templates → supercore/state}/__init__.py +2 -2
  117. flwr/{cli/new/templates/app/code/flwr_tune → supercore/state/alembic}/__init__.py +2 -2
  118. flwr/supercore/state/alembic/env.py +103 -0
  119. flwr/supercore/state/alembic/script.py.mako +43 -0
  120. flwr/supercore/state/alembic/utils.py +239 -0
  121. flwr/{cli/new/templates/app → supercore/state/alembic/versions}/__init__.py +2 -2
  122. flwr/supercore/state/alembic/versions/rev_2026_01_28_initialize_migration_of_state_tables.py +200 -0
  123. flwr/supercore/state/schema/README.md +121 -0
  124. flwr/{cli/new/templates/app/code → supercore/state/schema}/__init__.py +2 -2
  125. flwr/supercore/state/schema/corestate_tables.py +36 -0
  126. flwr/supercore/state/schema/linkstate_tables.py +152 -0
  127. flwr/supercore/state/schema/objectstore_tables.py +90 -0
  128. flwr/supercore/superexec/run_superexec.py +2 -2
  129. flwr/supercore/utils.py +225 -0
  130. flwr/superlink/federation/federation_manager.py +2 -2
  131. flwr/superlink/federation/noop_federation_manager.py +8 -6
  132. flwr/superlink/servicer/control/control_grpc.py +2 -0
  133. flwr/superlink/servicer/control/control_servicer.py +106 -21
  134. flwr/supernode/cli/flower_supernode.py +2 -1
  135. flwr/supernode/nodestate/in_memory_nodestate.py +62 -1
  136. flwr/supernode/nodestate/nodestate.py +45 -0
  137. flwr/supernode/runtime/run_clientapp.py +14 -14
  138. flwr/supernode/servicer/clientappio/clientappio_servicer.py +13 -5
  139. flwr/supernode/start_client_internal.py +17 -10
  140. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/METADATA +8 -8
  141. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/RECORD +144 -184
  142. flwr/cli/federation/show.py +0 -317
  143. flwr/cli/new/templates/app/.gitignore.tpl +0 -163
  144. flwr/cli/new/templates/app/LICENSE.tpl +0 -202
  145. flwr/cli/new/templates/app/README.baseline.md.tpl +0 -127
  146. flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -68
  147. flwr/cli/new/templates/app/README.md.tpl +0 -37
  148. flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -1
  149. flwr/cli/new/templates/app/code/__init__.py.tpl +0 -1
  150. flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl +0 -1
  151. flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -75
  152. flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -93
  153. flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -71
  154. flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -102
  155. flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -46
  156. flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -80
  157. flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl +0 -55
  158. flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -108
  159. flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -82
  160. flwr/cli/new/templates/app/code/client.xgboost.py.tpl +0 -110
  161. flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -36
  162. flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -92
  163. flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -87
  164. flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -56
  165. flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -73
  166. flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -78
  167. flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -66
  168. flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -43
  169. flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -42
  170. flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -39
  171. flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -41
  172. flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -38
  173. flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -41
  174. flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl +0 -31
  175. flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -44
  176. flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -38
  177. flwr/cli/new/templates/app/code/server.xgboost.py.tpl +0 -56
  178. flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -1
  179. flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -98
  180. flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -57
  181. flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -102
  182. flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -7
  183. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -99
  184. flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl +0 -111
  185. flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -67
  186. flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -52
  187. flwr/cli/new/templates/app/code/task.xgboost.py.tpl +0 -67
  188. flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -1
  189. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -146
  190. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -80
  191. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -65
  192. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -52
  193. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -56
  194. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -49
  195. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -53
  196. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +0 -53
  197. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -52
  198. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -53
  199. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +0 -61
  200. flwr/common/pyproject.py +0 -42
  201. flwr/supercore/sqlite_mixin.py +0 -159
  202. /flwr/{common → supercore}/version.py +0 -0
  203. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/WHEEL +0 -0
  204. {flwr-1.24.0.dist-info → flwr-1.26.0.dist-info}/entry_points.txt +0 -0
flwr/common/typing.py CHANGED
@@ -23,6 +23,8 @@ from typing import Any
23
23
  import numpy as np
24
24
  import numpy.typing as npt
25
25
 
26
+ from flwr.app.user_config import UserConfig
27
+ from flwr.proto.federation_pb2 import Account # pylint: disable=E0611
26
28
  from flwr.proto.node_pb2 import NodeInfo # pylint: disable=E0611
27
29
 
28
30
  NDArray = npt.NDArray[Any]
@@ -64,8 +66,6 @@ Config = dict[str, Scalar]
64
66
  Properties = dict[str, Scalar]
65
67
 
66
68
  # Value type for user configs
67
- UserConfigValue = bool | float | int | str
68
- UserConfig = dict[str, UserConfigValue]
69
69
 
70
70
 
71
71
  class Code(Enum):
@@ -235,6 +235,9 @@ class Run: # pylint: disable=too-many-instance-attributes
235
235
  status: RunStatus
236
236
  flwr_aid: str
237
237
  federation: str
238
+ bytes_sent: int
239
+ bytes_recv: int
240
+ clientapp_runtime: float
238
241
 
239
242
  @classmethod
240
243
  def create_empty(cls, run_id: int) -> "Run":
@@ -252,6 +255,9 @@ class Run: # pylint: disable=too-many-instance-attributes
252
255
  status=RunStatus(status="", sub_status="", details=""),
253
256
  flwr_aid="",
254
257
  federation="",
258
+ bytes_sent=0,
259
+ bytes_recv=0,
260
+ clientapp_runtime=0.0,
255
261
  )
256
262
 
257
263
 
@@ -337,6 +343,7 @@ class Federation:
337
343
  """Federation details."""
338
344
 
339
345
  name: str
340
- member_aids: list[str]
346
+ description: str
347
+ accounts: list[Account]
341
348
  nodes: list[NodeInfo]
342
349
  runs: list[Run]
flwr/compat/client/app.py CHANGED
@@ -25,6 +25,7 @@ from cryptography.hazmat.primitives.asymmetric import ec
25
25
  from grpc import RpcError
26
26
 
27
27
  from flwr.app.error import Error
28
+ from flwr.app.user_config import UserConfig
28
29
  from flwr.cli.config_utils import get_fab_metadata
29
30
  from flwr.cli.install import install_from_fab
30
31
  from flwr.client.client import Client
@@ -34,18 +35,14 @@ from flwr.client.run_info_store import DeprecatedRunInfoStore
34
35
  from flwr.client.typing import ClientFnExt
35
36
  from flwr.clientapp.client_app import ClientApp, LoadClientAppError
36
37
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, Context, EventType, Message, event
37
- from flwr.common.address import parse_address
38
- from flwr.common.constant import (
39
- MAX_RETRY_DELAY,
40
- TRANSPORT_TYPE_GRPC_BIDI,
41
- TRANSPORT_TYPES,
42
- ErrorCode,
43
- )
38
+ from flwr.common.constant import MAX_RETRY_DELAY, ErrorCode
44
39
  from flwr.common.exit import ExitCode, flwr_exit
45
40
  from flwr.common.logger import log, warn_deprecated_feature
46
41
  from flwr.common.retry_invoker import RetryInvoker, RetryState, exponential
47
- from flwr.common.typing import Fab, Run, RunNotRunningException, UserConfig
42
+ from flwr.common.typing import Fab, Run, RunNotRunningException
48
43
  from flwr.compat.client.grpc_client.connection import grpc_connection
44
+ from flwr.compat.common.constant import TRANSPORT_TYPE_GRPC_BIDI, TRANSPORT_TYPES_COMPAT
45
+ from flwr.supercore.address import parse_address
49
46
  from flwr.supercore.object_store import ObjectStoreFactory
50
47
  from flwr.supernode.nodestate import NodeStateFactory
51
48
 
@@ -675,7 +672,7 @@ def _init_connection(transport: str | None, server_address: str) -> tuple[
675
672
  connection, error_type = grpc_connection, RpcError
676
673
  else:
677
674
  raise ValueError(
678
- f"Unknown transport type: {transport} (possible: {TRANSPORT_TYPES})"
675
+ f"Unknown transport type: {transport} (possible: {TRANSPORT_TYPES_COMPAT})"
679
676
  )
680
677
 
681
678
  return connection, address, error_type
@@ -25,6 +25,7 @@ from typing import cast
25
25
 
26
26
  from cryptography.hazmat.primitives.asymmetric import ec
27
27
 
28
+ from flwr.app.message_type import MessageType
28
29
  from flwr.common import (
29
30
  DEFAULT_TTL,
30
31
  GRPC_MAX_MESSAGE_LENGTH,
@@ -36,7 +37,7 @@ from flwr.common import (
36
37
  )
37
38
  from flwr.common import recorddict_compat as compat
38
39
  from flwr.common import serde
39
- from flwr.common.constant import MessageType, MessageTypeLegacy
40
+ from flwr.common.constant import MessageTypeLegacy
40
41
  from flwr.common.grpc import create_channel, on_channel_state_change
41
42
  from flwr.common.logger import log
42
43
  from flwr.common.message import make_message
@@ -0,0 +1,29 @@
1
+ # Copyright 2025 Flower Labs GmbH. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Flower constants."""
16
+
17
+ from flwr.common.constant import (
18
+ TRANSPORT_TYPE_GRPC_RERE,
19
+ TRANSPORT_TYPE_REST,
20
+ TRANSPORT_TYPE_VCE,
21
+ )
22
+
23
+ TRANSPORT_TYPE_GRPC_BIDI = "grpc-bidi"
24
+ TRANSPORT_TYPES_COMPAT = [
25
+ TRANSPORT_TYPE_GRPC_BIDI,
26
+ TRANSPORT_TYPE_GRPC_RERE,
27
+ TRANSPORT_TYPE_REST,
28
+ TRANSPORT_TYPE_VCE,
29
+ ]
flwr/compat/server/app.py CHANGED
@@ -19,7 +19,6 @@ import sys
19
19
  from logging import INFO
20
20
 
21
21
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
22
- from flwr.common.address import parse_address
23
22
  from flwr.common.constant import FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS
24
23
  from flwr.common.exit import register_signal_handlers
25
24
  from flwr.common.logger import log, warn_deprecated_feature
@@ -29,6 +28,7 @@ from flwr.server.server import Server, init_defaults, run_fl
29
28
  from flwr.server.server_config import ServerConfig
30
29
  from flwr.server.strategy import Strategy
31
30
  from flwr.server.superlink.fleet.grpc_bidi.grpc_server import start_grpc_server
31
+ from flwr.supercore.address import parse_address
32
32
 
33
33
 
34
34
  def start_server( # pylint: disable=too-many-arguments,too-many-locals
@@ -28,7 +28,7 @@ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
28
28
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\xeb\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\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\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')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\xdf\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\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\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\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x62\x06proto3')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,5 +36,5 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2'
36
36
  if not _descriptor._USE_C_DESCRIPTORS:
37
37
  DESCRIPTOR._loaded_options = None
38
38
  _globals['_CLIENTAPPIO']._serialized_start=145
39
- _globals['_CLIENTAPPIO']._serialized_end=1148
39
+ _globals['_CLIENTAPPIO']._serialized_end=1136
40
40
  # @@protoc_insertion_point(module_scope)
@@ -52,31 +52,21 @@ class ClientAppIoStub(object):
52
52
  request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
53
53
  response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
54
54
  _registered_method=True)
55
- self.PullClientAppInputs = channel.unary_unary(
56
- '/flwr.proto.ClientAppIo/PullClientAppInputs',
55
+ self.SendAppHeartbeat = channel.unary_unary(
56
+ '/flwr.proto.ClientAppIo/SendAppHeartbeat',
57
+ request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
58
+ response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
59
+ _registered_method=True)
60
+ self.PullAppInputs = channel.unary_unary(
61
+ '/flwr.proto.ClientAppIo/PullAppInputs',
57
62
  request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
58
63
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
59
64
  _registered_method=True)
60
- self.PushClientAppOutputs = channel.unary_unary(
61
- '/flwr.proto.ClientAppIo/PushClientAppOutputs',
65
+ self.PushAppOutputs = channel.unary_unary(
66
+ '/flwr.proto.ClientAppIo/PushAppOutputs',
62
67
  request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
63
68
  response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
64
69
  _registered_method=True)
65
- self.PushMessage = channel.unary_unary(
66
- '/flwr.proto.ClientAppIo/PushMessage',
67
- request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
68
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
69
- _registered_method=True)
70
- self.PullMessage = channel.unary_unary(
71
- '/flwr.proto.ClientAppIo/PullMessage',
72
- request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
73
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
74
- _registered_method=True)
75
- self.SendAppHeartbeat = channel.unary_unary(
76
- '/flwr.proto.ClientAppIo/SendAppHeartbeat',
77
- request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
78
- response_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
79
- _registered_method=True)
80
70
  self.PushObject = channel.unary_unary(
81
71
  '/flwr.proto.ClientAppIo/PushObject',
82
72
  request_serializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
@@ -92,13 +82,27 @@ class ClientAppIoStub(object):
92
82
  request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
93
83
  response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
94
84
  _registered_method=True)
85
+ self.PushMessage = channel.unary_unary(
86
+ '/flwr.proto.ClientAppIo/PushMessage',
87
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
88
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
89
+ _registered_method=True)
90
+ self.PullMessage = channel.unary_unary(
91
+ '/flwr.proto.ClientAppIo/PullMessage',
92
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
93
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
94
+ _registered_method=True)
95
95
 
96
96
 
97
97
  class ClientAppIoServicer(object):
98
98
  """Missing associated documentation comment in .proto file."""
99
99
 
100
100
  def ListAppsToLaunch(self, request, context):
101
- """Get run IDs with pending messages
101
+ """///////////////////////////////////////////////////////////////////////////
102
+ General *AppIo endpoints for SuperExec processes
103
+ ///////////////////////////////////////////////////////////////////////////
104
+
105
+ Get run IDs with pending messages
102
106
  """
103
107
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
104
108
  context.set_details('Method not implemented!')
@@ -112,63 +116,75 @@ class ClientAppIoServicer(object):
112
116
  raise NotImplementedError('Method not implemented!')
113
117
 
114
118
  def GetRun(self, request, context):
115
- """Get run details
119
+ """///////////////////////////////////////////////////////////////////////////
120
+ General *AppIo endpoints for App Executor processes
121
+ ///////////////////////////////////////////////////////////////////////////
122
+
123
+ Get run details
116
124
  """
117
125
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
118
126
  context.set_details('Method not implemented!')
119
127
  raise NotImplementedError('Method not implemented!')
120
128
 
121
- def PullClientAppInputs(self, request, context):
122
- """Pull client app inputs
129
+ def SendAppHeartbeat(self, request, context):
130
+ """App heartbeat
123
131
  """
124
132
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
125
133
  context.set_details('Method not implemented!')
126
134
  raise NotImplementedError('Method not implemented!')
127
135
 
128
- def PushClientAppOutputs(self, request, context):
129
- """Push client app outputs
136
+ def PullAppInputs(self, request, context):
137
+ """Pull app inputs
130
138
  """
131
139
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
132
140
  context.set_details('Method not implemented!')
133
141
  raise NotImplementedError('Method not implemented!')
134
142
 
135
- def PushMessage(self, request, context):
136
- """Push Message
143
+ def PushAppOutputs(self, request, context):
144
+ """Push app outputs
137
145
  """
138
146
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
139
147
  context.set_details('Method not implemented!')
140
148
  raise NotImplementedError('Method not implemented!')
141
149
 
142
- def PullMessage(self, request, context):
143
- """Pull Message
150
+ def PushObject(self, request, context):
151
+ """///////////////////////////////////////////////////////////////////////////
152
+ Specific endpoints shared by ServerAppIo and ClientAppIo
153
+ ///////////////////////////////////////////////////////////////////////////
154
+
155
+ Push Object
144
156
  """
145
157
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
146
158
  context.set_details('Method not implemented!')
147
159
  raise NotImplementedError('Method not implemented!')
148
160
 
149
- def SendAppHeartbeat(self, request, context):
150
- """App heartbeat
161
+ def PullObject(self, request, context):
162
+ """Pull Object
151
163
  """
152
164
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
153
165
  context.set_details('Method not implemented!')
154
166
  raise NotImplementedError('Method not implemented!')
155
167
 
156
- def PushObject(self, request, context):
157
- """Push Object
168
+ def ConfirmMessageReceived(self, request, context):
169
+ """Confirm Message Received
158
170
  """
159
171
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
160
172
  context.set_details('Method not implemented!')
161
173
  raise NotImplementedError('Method not implemented!')
162
174
 
163
- def PullObject(self, request, context):
164
- """Pull Object
175
+ def PushMessage(self, request, context):
176
+ """///////////////////////////////////////////////////////////////////////////
177
+ Specific endpoints for ClientAppIo
178
+ ///////////////////////////////////////////////////////////////////////////
179
+
180
+ Push Message
165
181
  """
166
182
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
167
183
  context.set_details('Method not implemented!')
168
184
  raise NotImplementedError('Method not implemented!')
169
185
 
170
- def ConfirmMessageReceived(self, request, context):
171
- """Confirm Message Received
186
+ def PullMessage(self, request, context):
187
+ """Pull Message
172
188
  """
173
189
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
174
190
  context.set_details('Method not implemented!')
@@ -192,31 +208,21 @@ def add_ClientAppIoServicer_to_server(servicer, server):
192
208
  request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.FromString,
193
209
  response_serializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.SerializeToString,
194
210
  ),
195
- 'PullClientAppInputs': grpc.unary_unary_rpc_method_handler(
196
- servicer.PullClientAppInputs,
211
+ 'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
212
+ servicer.SendAppHeartbeat,
213
+ request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
214
+ response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.SerializeToString,
215
+ ),
216
+ 'PullAppInputs': grpc.unary_unary_rpc_method_handler(
217
+ servicer.PullAppInputs,
197
218
  request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
198
219
  response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
199
220
  ),
200
- 'PushClientAppOutputs': grpc.unary_unary_rpc_method_handler(
201
- servicer.PushClientAppOutputs,
221
+ 'PushAppOutputs': grpc.unary_unary_rpc_method_handler(
222
+ servicer.PushAppOutputs,
202
223
  request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
203
224
  response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
204
225
  ),
205
- 'PushMessage': grpc.unary_unary_rpc_method_handler(
206
- servicer.PushMessage,
207
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.FromString,
208
- response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.SerializeToString,
209
- ),
210
- 'PullMessage': grpc.unary_unary_rpc_method_handler(
211
- servicer.PullMessage,
212
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
213
- response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
214
- ),
215
- 'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
216
- servicer.SendAppHeartbeat,
217
- request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
218
- response_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.SerializeToString,
219
- ),
220
226
  'PushObject': grpc.unary_unary_rpc_method_handler(
221
227
  servicer.PushObject,
222
228
  request_deserializer=flwr_dot_proto_dot_message__pb2.PushObjectRequest.FromString,
@@ -232,6 +238,16 @@ def add_ClientAppIoServicer_to_server(servicer, server):
232
238
  request_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.FromString,
233
239
  response_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.SerializeToString,
234
240
  ),
241
+ 'PushMessage': grpc.unary_unary_rpc_method_handler(
242
+ servicer.PushMessage,
243
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.FromString,
244
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.SerializeToString,
245
+ ),
246
+ 'PullMessage': grpc.unary_unary_rpc_method_handler(
247
+ servicer.PullMessage,
248
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
249
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
250
+ ),
235
251
  }
236
252
  generic_handler = grpc.method_handlers_generic_handler(
237
253
  'flwr.proto.ClientAppIo', rpc_method_handlers)
@@ -325,7 +341,7 @@ class ClientAppIo(object):
325
341
  _registered_method=True)
326
342
 
327
343
  @staticmethod
328
- def PullClientAppInputs(request,
344
+ def SendAppHeartbeat(request,
329
345
  target,
330
346
  options=(),
331
347
  channel_credentials=None,
@@ -338,9 +354,9 @@ class ClientAppIo(object):
338
354
  return grpc.experimental.unary_unary(
339
355
  request,
340
356
  target,
341
- '/flwr.proto.ClientAppIo/PullClientAppInputs',
342
- flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
343
- flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
357
+ '/flwr.proto.ClientAppIo/SendAppHeartbeat',
358
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
359
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
344
360
  options,
345
361
  channel_credentials,
346
362
  insecure,
@@ -352,7 +368,7 @@ class ClientAppIo(object):
352
368
  _registered_method=True)
353
369
 
354
370
  @staticmethod
355
- def PushClientAppOutputs(request,
371
+ def PullAppInputs(request,
356
372
  target,
357
373
  options=(),
358
374
  channel_credentials=None,
@@ -365,9 +381,9 @@ class ClientAppIo(object):
365
381
  return grpc.experimental.unary_unary(
366
382
  request,
367
383
  target,
368
- '/flwr.proto.ClientAppIo/PushClientAppOutputs',
369
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
370
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
384
+ '/flwr.proto.ClientAppIo/PullAppInputs',
385
+ flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
386
+ flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
371
387
  options,
372
388
  channel_credentials,
373
389
  insecure,
@@ -379,7 +395,7 @@ class ClientAppIo(object):
379
395
  _registered_method=True)
380
396
 
381
397
  @staticmethod
382
- def PushMessage(request,
398
+ def PushAppOutputs(request,
383
399
  target,
384
400
  options=(),
385
401
  channel_credentials=None,
@@ -392,9 +408,9 @@ class ClientAppIo(object):
392
408
  return grpc.experimental.unary_unary(
393
409
  request,
394
410
  target,
395
- '/flwr.proto.ClientAppIo/PushMessage',
396
- flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
397
- flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
411
+ '/flwr.proto.ClientAppIo/PushAppOutputs',
412
+ flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
413
+ flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
398
414
  options,
399
415
  channel_credentials,
400
416
  insecure,
@@ -406,7 +422,7 @@ class ClientAppIo(object):
406
422
  _registered_method=True)
407
423
 
408
424
  @staticmethod
409
- def PullMessage(request,
425
+ def PushObject(request,
410
426
  target,
411
427
  options=(),
412
428
  channel_credentials=None,
@@ -419,9 +435,9 @@ class ClientAppIo(object):
419
435
  return grpc.experimental.unary_unary(
420
436
  request,
421
437
  target,
422
- '/flwr.proto.ClientAppIo/PullMessage',
423
- flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
424
- flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
438
+ '/flwr.proto.ClientAppIo/PushObject',
439
+ flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
440
+ flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
425
441
  options,
426
442
  channel_credentials,
427
443
  insecure,
@@ -433,7 +449,7 @@ class ClientAppIo(object):
433
449
  _registered_method=True)
434
450
 
435
451
  @staticmethod
436
- def SendAppHeartbeat(request,
452
+ def PullObject(request,
437
453
  target,
438
454
  options=(),
439
455
  channel_credentials=None,
@@ -446,9 +462,9 @@ class ClientAppIo(object):
446
462
  return grpc.experimental.unary_unary(
447
463
  request,
448
464
  target,
449
- '/flwr.proto.ClientAppIo/SendAppHeartbeat',
450
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
451
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
465
+ '/flwr.proto.ClientAppIo/PullObject',
466
+ flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
467
+ flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
452
468
  options,
453
469
  channel_credentials,
454
470
  insecure,
@@ -460,7 +476,7 @@ class ClientAppIo(object):
460
476
  _registered_method=True)
461
477
 
462
478
  @staticmethod
463
- def PushObject(request,
479
+ def ConfirmMessageReceived(request,
464
480
  target,
465
481
  options=(),
466
482
  channel_credentials=None,
@@ -473,9 +489,9 @@ class ClientAppIo(object):
473
489
  return grpc.experimental.unary_unary(
474
490
  request,
475
491
  target,
476
- '/flwr.proto.ClientAppIo/PushObject',
477
- flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
478
- flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
492
+ '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
493
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
494
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
479
495
  options,
480
496
  channel_credentials,
481
497
  insecure,
@@ -487,7 +503,7 @@ class ClientAppIo(object):
487
503
  _registered_method=True)
488
504
 
489
505
  @staticmethod
490
- def PullObject(request,
506
+ def PushMessage(request,
491
507
  target,
492
508
  options=(),
493
509
  channel_credentials=None,
@@ -500,9 +516,9 @@ class ClientAppIo(object):
500
516
  return grpc.experimental.unary_unary(
501
517
  request,
502
518
  target,
503
- '/flwr.proto.ClientAppIo/PullObject',
504
- flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
505
- flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
519
+ '/flwr.proto.ClientAppIo/PushMessage',
520
+ flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
521
+ flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
506
522
  options,
507
523
  channel_credentials,
508
524
  insecure,
@@ -514,7 +530,7 @@ class ClientAppIo(object):
514
530
  _registered_method=True)
515
531
 
516
532
  @staticmethod
517
- def ConfirmMessageReceived(request,
533
+ def PullMessage(request,
518
534
  target,
519
535
  options=(),
520
536
  channel_credentials=None,
@@ -527,9 +543,9 @@ class ClientAppIo(object):
527
543
  return grpc.experimental.unary_unary(
528
544
  request,
529
545
  target,
530
- '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
531
- flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
532
- flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
546
+ '/flwr.proto.ClientAppIo/PullMessage',
547
+ flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
548
+ flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
533
549
  options,
534
550
  channel_credentials,
535
551
  insecure,