flwr-nightly 1.26.0.dev20260129__py3-none-any.whl → 1.26.0.dev20260201__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flwr/cli/build.py +1 -1
- flwr/cli/config_migration.py +2 -2
- flwr/cli/install.py +1 -1
- flwr/cli/run/run.py +21 -4
- flwr/cli/supernode/register.py +1 -2
- flwr/cli/utils.py +2 -1
- flwr/client/grpc_rere_client/connection.py +1 -1
- flwr/common/args.py +4 -4
- flwr/common/config.py +2 -2
- flwr/common/exit/exit.py +3 -3
- flwr/common/logger.py +1 -1
- flwr/proto/clientappio_pb2.py +1 -1
- flwr/proto/clientappio_pb2_grpc.py +106 -90
- flwr/proto/clientappio_pb2_grpc.pyi +145 -85
- flwr/proto/serverappio_pb2.py +1 -1
- flwr/proto/serverappio_pb2_grpc.py +168 -148
- flwr/proto/serverappio_pb2_grpc.pyi +209 -134
- flwr/proto/simulationio_pb2.py +1 -1
- flwr/proto/simulationio_pb2_grpc.py +80 -64
- flwr/proto/simulationio_pb2_grpc.pyi +109 -49
- flwr/server/app.py +1 -1
- flwr/server/serverapp/app.py +11 -4
- flwr/server/superlink/linkstate/linkstate_factory.py +12 -4
- flwr/supercore/ffs/disk_ffs.py +1 -1
- flwr/supercore/object_store/object_store_factory.py +10 -2
- flwr/supercore/sql_mixin.py +8 -2
- flwr/supernode/cli/flower_supernode.py +2 -1
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/METADATA +2 -2
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/RECORD +31 -31
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.26.0.dev20260129.dist-info → flwr_nightly-1.26.0.dev20260201.dist-info}/entry_points.txt +0 -0
flwr/cli/build.py
CHANGED
flwr/cli/config_migration.py
CHANGED
|
@@ -125,7 +125,7 @@ def _migrate_pyproject_toml_to_flower_config(
|
|
|
125
125
|
if cert_path := toml_fed_config.get("root-certificates"):
|
|
126
126
|
if not Path(cert_path).is_absolute():
|
|
127
127
|
toml_fed_config["root-certificates"] = str(
|
|
128
|
-
(app / cert_path).resolve()
|
|
128
|
+
(app / cert_path).expanduser().resolve()
|
|
129
129
|
)
|
|
130
130
|
# Parse and write SuperLink connection
|
|
131
131
|
conn = parse_superlink_connection(toml_fed_config, name)
|
|
@@ -223,7 +223,7 @@ def migrate(
|
|
|
223
223
|
# Determine app path for migration
|
|
224
224
|
arg1 = positional_arg_1
|
|
225
225
|
app = Path(arg1) if arg1 else Path(".")
|
|
226
|
-
app = app.resolve()
|
|
226
|
+
app = app.expanduser().resolve()
|
|
227
227
|
|
|
228
228
|
# Check if migration is applicable and if legacy usage is detected
|
|
229
229
|
is_migratable, reason = _is_migratable(app)
|
flwr/cli/install.py
CHANGED
|
@@ -63,7 +63,7 @@ def install(
|
|
|
63
63
|
if source is None:
|
|
64
64
|
source = Path(typer.prompt("Enter the source FAB file"))
|
|
65
65
|
|
|
66
|
-
source = source.resolve()
|
|
66
|
+
source = source.expanduser().resolve()
|
|
67
67
|
if not source.exists() or not source.is_file():
|
|
68
68
|
raise click.ClickException(
|
|
69
69
|
f"The source {source} does not exist or is not a file."
|
flwr/cli/run/run.py
CHANGED
|
@@ -44,7 +44,7 @@ from flwr.common.serde import config_record_to_proto, fab_to_proto, user_config_
|
|
|
44
44
|
from flwr.common.typing import Fab
|
|
45
45
|
from flwr.proto.control_pb2 import StartRunRequest # pylint: disable=E0611
|
|
46
46
|
from flwr.proto.control_pb2_grpc import ControlStub
|
|
47
|
-
from flwr.supercore.utils import parse_app_spec
|
|
47
|
+
from flwr.supercore.utils import check_federation_format, parse_app_spec
|
|
48
48
|
|
|
49
49
|
from ..log import start_stream
|
|
50
50
|
from ..utils import (
|
|
@@ -67,6 +67,14 @@ def run(
|
|
|
67
67
|
str | None,
|
|
68
68
|
typer.Argument(help="Name of the SuperLink connection."),
|
|
69
69
|
] = None,
|
|
70
|
+
federation: Annotated[
|
|
71
|
+
str | None,
|
|
72
|
+
typer.Option(
|
|
73
|
+
"--federation",
|
|
74
|
+
help="The federation to submit the run to; must be in the "
|
|
75
|
+
"format `@<account>/<federation>`.",
|
|
76
|
+
),
|
|
77
|
+
] = None,
|
|
70
78
|
run_config_overrides: Annotated[
|
|
71
79
|
list[str] | None,
|
|
72
80
|
typer.Option(
|
|
@@ -125,11 +133,11 @@ def run(
|
|
|
125
133
|
|
|
126
134
|
# Validate TOML configuration for local app
|
|
127
135
|
else:
|
|
136
|
+
app = app.expanduser().resolve() # Resolve path to absolute
|
|
128
137
|
config, warnings = load_and_validate(app / FAB_CONFIG_FILE)
|
|
129
138
|
if warnings:
|
|
130
139
|
typer.secho(
|
|
131
|
-
"
|
|
132
|
-
"(pyproject.toml):\n"
|
|
140
|
+
f"Flower App configuration warnings in '{app / FAB_CONFIG_FILE}':\n"
|
|
133
141
|
+ "\n".join([f"- {line}" for line in warnings]),
|
|
134
142
|
fg=typer.colors.YELLOW,
|
|
135
143
|
bold=True,
|
|
@@ -139,6 +147,7 @@ def run(
|
|
|
139
147
|
_run_with_control_api(
|
|
140
148
|
app,
|
|
141
149
|
config,
|
|
150
|
+
federation,
|
|
142
151
|
superlink_connection,
|
|
143
152
|
run_config_overrides,
|
|
144
153
|
stream,
|
|
@@ -157,6 +166,7 @@ def run(
|
|
|
157
166
|
def _run_with_control_api(
|
|
158
167
|
app: Path,
|
|
159
168
|
config: dict[str, Any],
|
|
169
|
+
federation: str | None,
|
|
160
170
|
superlink_connection: SuperLinkConnection,
|
|
161
171
|
config_overrides: list[str] | None,
|
|
162
172
|
stream: bool,
|
|
@@ -165,6 +175,13 @@ def _run_with_control_api(
|
|
|
165
175
|
) -> None:
|
|
166
176
|
channel = None
|
|
167
177
|
is_remote_app = app_spec is not None
|
|
178
|
+
|
|
179
|
+
# Determine federation to use
|
|
180
|
+
if federation: # Override federation from CLI
|
|
181
|
+
check_federation_format(federation)
|
|
182
|
+
else: # Use federation from SuperLink connection if set
|
|
183
|
+
federation = superlink_connection.federation or ""
|
|
184
|
+
|
|
168
185
|
try:
|
|
169
186
|
channel = init_channel_from_connection(superlink_connection)
|
|
170
187
|
stub = ControlStub(channel)
|
|
@@ -193,7 +210,7 @@ def _run_with_control_api(
|
|
|
193
210
|
req = StartRunRequest(
|
|
194
211
|
fab=fab_to_proto(fab),
|
|
195
212
|
override_config=user_config_to_proto(parse_config_args(config_overrides)),
|
|
196
|
-
federation=
|
|
213
|
+
federation=federation,
|
|
197
214
|
federation_options=config_record_to_proto(c_record),
|
|
198
215
|
app_spec=app_spec or "",
|
|
199
216
|
)
|
flwr/cli/supernode/register.py
CHANGED
|
@@ -66,8 +66,7 @@ def register( # pylint: disable=R0914
|
|
|
66
66
|
) -> None:
|
|
67
67
|
"""Add a SuperNode to the federation."""
|
|
68
68
|
# Load public key
|
|
69
|
-
|
|
70
|
-
public_key_bytes = try_load_public_key(public_key_path)
|
|
69
|
+
public_key_bytes = try_load_public_key(public_key.expanduser())
|
|
71
70
|
|
|
72
71
|
with cli_output_handler(output_format=output_format) as is_json:
|
|
73
72
|
# Migrate legacy usage if any
|
flwr/cli/utils.py
CHANGED
|
@@ -418,7 +418,8 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]: # pylint: disable=too-many-b
|
|
|
418
418
|
if e.details() == FEDERATION_NOT_SPECIFIED_MESSAGE: # pylint: disable=E1101
|
|
419
419
|
raise click.ClickException(
|
|
420
420
|
"No federation specified. "
|
|
421
|
-
"Please
|
|
421
|
+
"Please use the `--federation` flag or set a default federation "
|
|
422
|
+
"in your SuperLink connection configuration."
|
|
422
423
|
) from None
|
|
423
424
|
patten = re.compile(FEDERATION_NOT_FOUND_MESSAGE.replace("%s", "(.+)"))
|
|
424
425
|
if m := patten.match(e.details()): # pylint: disable=E1101
|
|
@@ -136,7 +136,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
|
136
136
|
confirm_message_received : Callable[[str], None]
|
|
137
137
|
"""
|
|
138
138
|
if isinstance(root_certificates, str):
|
|
139
|
-
root_certificates = Path(root_certificates).read_bytes()
|
|
139
|
+
root_certificates = Path(root_certificates).expanduser().read_bytes()
|
|
140
140
|
|
|
141
141
|
# Automatic node auth: generate keys if user didn't provide any
|
|
142
142
|
self_registered = False
|
flwr/common/args.py
CHANGED
|
@@ -95,7 +95,7 @@ def try_obtain_root_certificates(
|
|
|
95
95
|
log(ERROR, "Path argument `--root-certificates` does not point to a file.")
|
|
96
96
|
sys.exit(1)
|
|
97
97
|
else:
|
|
98
|
-
root_certificates = Path(root_cert_path).read_bytes()
|
|
98
|
+
root_certificates = Path(root_cert_path).expanduser().read_bytes()
|
|
99
99
|
log(
|
|
100
100
|
DEBUG,
|
|
101
101
|
"Starting secure HTTPS channel to %s "
|
|
@@ -129,9 +129,9 @@ def try_obtain_server_certificates(
|
|
|
129
129
|
if not isfile(args.ssl_keyfile):
|
|
130
130
|
sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
|
|
131
131
|
certificates = (
|
|
132
|
-
Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
|
|
133
|
-
Path(args.ssl_certfile).read_bytes(), # server certificate
|
|
134
|
-
Path(args.ssl_keyfile).read_bytes(), # server private key
|
|
132
|
+
Path(args.ssl_ca_certfile).expanduser().read_bytes(), # CA certificate
|
|
133
|
+
Path(args.ssl_certfile).expanduser().read_bytes(), # server certificate
|
|
134
|
+
Path(args.ssl_keyfile).expanduser().read_bytes(), # server private key
|
|
135
135
|
)
|
|
136
136
|
return certificates
|
|
137
137
|
if args.ssl_certfile or args.ssl_keyfile or args.ssl_ca_certfile:
|
flwr/common/config.py
CHANGED
|
@@ -42,7 +42,7 @@ T_dict = TypeVar("T_dict", bound=dict[str, Any]) # pylint: disable=invalid-name
|
|
|
42
42
|
|
|
43
43
|
def get_flwr_dir(provided_path: str | None = None) -> Path:
|
|
44
44
|
"""Return the Flower home directory based on env variables."""
|
|
45
|
-
if provided_path is None or not Path(provided_path).is_dir():
|
|
45
|
+
if provided_path is None or not Path(provided_path).expanduser().is_dir():
|
|
46
46
|
return Path(
|
|
47
47
|
os.getenv(
|
|
48
48
|
FLWR_HOME,
|
|
@@ -213,7 +213,7 @@ def parse_config_args(config: list[str] | None, flatten: bool = True) -> dict[st
|
|
|
213
213
|
|
|
214
214
|
# Handle if .toml file is passed
|
|
215
215
|
if len(config) == 1 and config[0].endswith(".toml"):
|
|
216
|
-
with Path(config[0]).open("rb") as config_file:
|
|
216
|
+
with Path(config[0]).expanduser().open("rb") as config_file:
|
|
217
217
|
overrides = flatten_dict(tomli.load(config_file))
|
|
218
218
|
return overrides
|
|
219
219
|
|
flwr/common/exit/exit.py
CHANGED
|
@@ -87,9 +87,6 @@ def flwr_exit(
|
|
|
87
87
|
# Log the exit message
|
|
88
88
|
log(log_level, exit_message)
|
|
89
89
|
|
|
90
|
-
# Trigger exit handlers
|
|
91
|
-
trigger_exit_handlers()
|
|
92
|
-
|
|
93
90
|
# Start a daemon thread to force exit if graceful exit fails
|
|
94
91
|
def force_exit() -> None:
|
|
95
92
|
time.sleep(FORCE_EXIT_TIMEOUT_SECONDS)
|
|
@@ -97,6 +94,9 @@ def flwr_exit(
|
|
|
97
94
|
|
|
98
95
|
threading.Thread(target=force_exit, daemon=True).start()
|
|
99
96
|
|
|
97
|
+
# Trigger exit handlers
|
|
98
|
+
trigger_exit_handlers()
|
|
99
|
+
|
|
100
100
|
# Exit
|
|
101
101
|
sys.exit(sys_exit_code)
|
|
102
102
|
|
flwr/common/logger.py
CHANGED
|
@@ -385,7 +385,7 @@ def start_log_uploader(
|
|
|
385
385
|
) -> threading.Thread:
|
|
386
386
|
"""Start the log uploader thread and return it."""
|
|
387
387
|
thread = threading.Thread(
|
|
388
|
-
target=_log_uploader, args=(log_queue, node_id, run_id, stub)
|
|
388
|
+
target=_log_uploader, args=(log_queue, node_id, run_id, stub), daemon=True
|
|
389
389
|
)
|
|
390
390
|
thread.start()
|
|
391
391
|
return thread
|
flwr/proto/clientappio_pb2.py
CHANGED
|
@@ -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\
|
|
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\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\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\x62\x06proto3')
|
|
32
32
|
|
|
33
33
|
_globals = globals()
|
|
34
34
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -52,26 +52,6 @@ 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',
|
|
57
|
-
request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
58
|
-
response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
|
|
59
|
-
_registered_method=True)
|
|
60
|
-
self.PushClientAppOutputs = channel.unary_unary(
|
|
61
|
-
'/flwr.proto.ClientAppIo/PushClientAppOutputs',
|
|
62
|
-
request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
63
|
-
response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
64
|
-
_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
55
|
self.SendAppHeartbeat = channel.unary_unary(
|
|
76
56
|
'/flwr.proto.ClientAppIo/SendAppHeartbeat',
|
|
77
57
|
request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
|
|
@@ -92,13 +72,37 @@ class ClientAppIoStub(object):
|
|
|
92
72
|
request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
|
|
93
73
|
response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
|
|
94
74
|
_registered_method=True)
|
|
75
|
+
self.PullClientAppInputs = channel.unary_unary(
|
|
76
|
+
'/flwr.proto.ClientAppIo/PullClientAppInputs',
|
|
77
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
78
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
|
|
79
|
+
_registered_method=True)
|
|
80
|
+
self.PushClientAppOutputs = channel.unary_unary(
|
|
81
|
+
'/flwr.proto.ClientAppIo/PushClientAppOutputs',
|
|
82
|
+
request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
83
|
+
response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
|
|
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
|
-
"""
|
|
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
|
-
"""
|
|
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
|
|
122
|
-
"""
|
|
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
|
|
129
|
-
"""
|
|
136
|
+
def PushObject(self, request, context):
|
|
137
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
138
|
+
Specific endpoints shared by ServerAppIo and ClientAppIo
|
|
139
|
+
///////////////////////////////////////////////////////////////////////////
|
|
140
|
+
|
|
141
|
+
Push Object
|
|
130
142
|
"""
|
|
131
143
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
132
144
|
context.set_details('Method not implemented!')
|
|
133
145
|
raise NotImplementedError('Method not implemented!')
|
|
134
146
|
|
|
135
|
-
def
|
|
136
|
-
"""
|
|
147
|
+
def PullObject(self, request, context):
|
|
148
|
+
"""Pull Object
|
|
137
149
|
"""
|
|
138
150
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
139
151
|
context.set_details('Method not implemented!')
|
|
140
152
|
raise NotImplementedError('Method not implemented!')
|
|
141
153
|
|
|
142
|
-
def
|
|
143
|
-
"""
|
|
154
|
+
def ConfirmMessageReceived(self, request, context):
|
|
155
|
+
"""Confirm Message Received
|
|
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
|
|
150
|
-
"""
|
|
161
|
+
def PullClientAppInputs(self, request, context):
|
|
162
|
+
"""///////////////////////////////////////////////////////////////////////////
|
|
163
|
+
Specific endpoints for ClientAppIo
|
|
164
|
+
///////////////////////////////////////////////////////////////////////////
|
|
165
|
+
|
|
166
|
+
Pull client app inputs
|
|
151
167
|
"""
|
|
152
168
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
153
169
|
context.set_details('Method not implemented!')
|
|
154
170
|
raise NotImplementedError('Method not implemented!')
|
|
155
171
|
|
|
156
|
-
def
|
|
157
|
-
"""Push
|
|
172
|
+
def PushClientAppOutputs(self, request, context):
|
|
173
|
+
"""Push client app outputs
|
|
158
174
|
"""
|
|
159
175
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
160
176
|
context.set_details('Method not implemented!')
|
|
161
177
|
raise NotImplementedError('Method not implemented!')
|
|
162
178
|
|
|
163
|
-
def
|
|
164
|
-
"""
|
|
179
|
+
def PushMessage(self, request, context):
|
|
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
|
|
171
|
-
"""
|
|
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,26 +208,6 @@ 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,
|
|
197
|
-
request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
|
|
198
|
-
response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
|
|
199
|
-
),
|
|
200
|
-
'PushClientAppOutputs': grpc.unary_unary_rpc_method_handler(
|
|
201
|
-
servicer.PushClientAppOutputs,
|
|
202
|
-
request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
|
|
203
|
-
response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
|
|
204
|
-
),
|
|
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
211
|
'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
|
|
216
212
|
servicer.SendAppHeartbeat,
|
|
217
213
|
request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
|
|
@@ -232,6 +228,26 @@ def add_ClientAppIoServicer_to_server(servicer, server):
|
|
|
232
228
|
request_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.FromString,
|
|
233
229
|
response_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.SerializeToString,
|
|
234
230
|
),
|
|
231
|
+
'PullClientAppInputs': grpc.unary_unary_rpc_method_handler(
|
|
232
|
+
servicer.PullClientAppInputs,
|
|
233
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
|
|
234
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
|
|
235
|
+
),
|
|
236
|
+
'PushClientAppOutputs': grpc.unary_unary_rpc_method_handler(
|
|
237
|
+
servicer.PushClientAppOutputs,
|
|
238
|
+
request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
|
|
239
|
+
response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
|
|
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
|
|
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/
|
|
342
|
-
|
|
343
|
-
|
|
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
|
|
371
|
+
def PushObject(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/
|
|
369
|
-
|
|
370
|
-
|
|
384
|
+
'/flwr.proto.ClientAppIo/PushObject',
|
|
385
|
+
flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
|
|
386
|
+
flwr_dot_proto_dot_message__pb2.PushObjectResponse.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
|
|
398
|
+
def PullObject(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/
|
|
396
|
-
|
|
397
|
-
|
|
411
|
+
'/flwr.proto.ClientAppIo/PullObject',
|
|
412
|
+
flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
|
|
413
|
+
flwr_dot_proto_dot_message__pb2.PullObjectResponse.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
|
|
425
|
+
def ConfirmMessageReceived(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/
|
|
423
|
-
|
|
424
|
-
|
|
438
|
+
'/flwr.proto.ClientAppIo/ConfirmMessageReceived',
|
|
439
|
+
flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
|
|
440
|
+
flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.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
|
|
452
|
+
def PullClientAppInputs(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/
|
|
450
|
-
|
|
451
|
-
|
|
465
|
+
'/flwr.proto.ClientAppIo/PullClientAppInputs',
|
|
466
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
|
|
467
|
+
flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.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
|
|
479
|
+
def PushClientAppOutputs(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/
|
|
477
|
-
|
|
478
|
-
|
|
492
|
+
'/flwr.proto.ClientAppIo/PushClientAppOutputs',
|
|
493
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
|
|
494
|
+
flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.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
|
|
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/
|
|
504
|
-
|
|
505
|
-
|
|
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
|
|
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/
|
|
531
|
-
|
|
532
|
-
|
|
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,
|