flwr-nightly 1.21.0.dev20250901__py3-none-any.whl → 1.21.0.dev20250903__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/constant.py +25 -8
- flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl +0 -8
- flwr/cli/run/run.py +2 -6
- flwr/clientapp/__init__.py +4 -0
- flwr/clientapp/centraldp_mods.py +132 -0
- flwr/common/exception.py +31 -0
- flwr/common/exit/__init__.py +4 -0
- flwr/common/exit/exit.py +4 -0
- flwr/common/exit/exit_code.py +7 -0
- flwr/common/exit/exit_handler.py +62 -0
- flwr/common/{exit_handlers.py → exit/signal_handler.py} +20 -37
- flwr/common/grpc.py +0 -11
- flwr/common/inflatable_utils.py +1 -1
- flwr/compat/server/app.py +2 -2
- flwr/server/app.py +12 -3
- flwr/server/serverapp/app.py +41 -28
- flwr/serverapp/dp_fixed_clipping.py +352 -0
- flwr/serverapp/strategy/__init__.py +6 -0
- flwr/serverapp/strategy/dp_fixed_clipping.py +352 -0
- flwr/serverapp/strategy/result.py +76 -2
- flwr/serverapp/strategy/strategy.py +15 -20
- flwr/serverapp/strategy/strategy_utils.py +5 -1
- flwr/supercore/cli/flower_superexec.py +3 -0
- flwr/supercore/grpc_health/__init__.py +3 -0
- flwr/supercore/grpc_health/health_server.py +53 -0
- flwr/supercore/grpc_health/simple_health_servicer.py +2 -2
- flwr/supercore/superexec/run_superexec.py +15 -3
- flwr/supernode/cli/flower_supernode.py +3 -0
- flwr/supernode/start_client_internal.py +15 -4
- {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/METADATA +1 -1
- {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/RECORD +33 -27
- {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/entry_points.txt +0 -0
@@ -20,7 +20,7 @@ from logging import WARN
|
|
20
20
|
from typing import Optional, Union
|
21
21
|
|
22
22
|
from flwr.common.config import get_flwr_dir
|
23
|
-
from flwr.common.
|
23
|
+
from flwr.common.exit import register_signal_handlers
|
24
24
|
from flwr.common.grpc import create_channel, on_channel_state_change
|
25
25
|
from flwr.common.logger import log
|
26
26
|
from flwr.common.retry_invoker import _make_simple_grpc_retry_invoker, _wrap_stub
|
@@ -36,11 +36,12 @@ from flwr.proto.run_pb2 import GetRunRequest # pylint: disable=E0611
|
|
36
36
|
from flwr.proto.serverappio_pb2_grpc import ServerAppIoStub
|
37
37
|
from flwr.proto.simulationio_pb2_grpc import SimulationIoStub
|
38
38
|
from flwr.supercore.app_utils import start_parent_process_monitor
|
39
|
+
from flwr.supercore.grpc_health import run_health_server_grpc_no_tls
|
39
40
|
|
40
41
|
from .plugin import ExecPlugin
|
41
42
|
|
42
43
|
|
43
|
-
def run_superexec(
|
44
|
+
def run_superexec( # pylint: disable=R0913,R0914,R0917
|
44
45
|
plugin_class: type[ExecPlugin],
|
45
46
|
stub_class: Union[
|
46
47
|
type[ClientAppIoStub], type[ServerAppIoStub], type[SimulationIoStub]
|
@@ -48,6 +49,7 @@ def run_superexec(
|
|
48
49
|
appio_api_address: str,
|
49
50
|
flwr_dir: Optional[str] = None,
|
50
51
|
parent_pid: Optional[int] = None,
|
52
|
+
health_server_address: Optional[str] = None,
|
51
53
|
) -> None:
|
52
54
|
"""Run Flower SuperExec.
|
53
55
|
|
@@ -64,11 +66,20 @@ def run_superexec(
|
|
64
66
|
parent_pid : Optional[int] (default: None)
|
65
67
|
The PID of the parent process. If provided, the SuperExec will terminate
|
66
68
|
when the parent process exits.
|
69
|
+
health_server_address : Optional[str] (default: None)
|
70
|
+
The address of the health server. If `None` is provided, the health server will
|
71
|
+
NOT be started.
|
67
72
|
"""
|
68
73
|
# Start monitoring the parent process if a PID is provided
|
69
74
|
if parent_pid is not None:
|
70
75
|
start_parent_process_monitor(parent_pid)
|
71
76
|
|
77
|
+
# Launch gRPC health server
|
78
|
+
grpc_servers = []
|
79
|
+
if health_server_address is not None:
|
80
|
+
health_server = run_health_server_grpc_no_tls(health_server_address)
|
81
|
+
grpc_servers.append(health_server)
|
82
|
+
|
72
83
|
# Create the channel to the AppIO API
|
73
84
|
# No TLS support for now, so insecure connection
|
74
85
|
channel = create_channel(
|
@@ -79,9 +90,10 @@ def run_superexec(
|
|
79
90
|
channel.subscribe(on_channel_state_change)
|
80
91
|
|
81
92
|
# Register exit handlers to close the channel on exit
|
82
|
-
|
93
|
+
register_signal_handlers(
|
83
94
|
event_type=EventType.RUN_SUPEREXEC_LEAVE,
|
84
95
|
exit_message="SuperExec terminated gracefully.",
|
96
|
+
grpc_servers=grpc_servers,
|
85
97
|
exit_handlers=[lambda: channel.close()], # pylint: disable=W0108
|
86
98
|
)
|
87
99
|
|
@@ -41,6 +41,7 @@ from flwr.common.constant import (
|
|
41
41
|
)
|
42
42
|
from flwr.common.exit import ExitCode, flwr_exit
|
43
43
|
from flwr.common.logger import log
|
44
|
+
from flwr.supercore.grpc_health import add_args_health
|
44
45
|
from flwr.supernode.start_client_internal import start_client_internal
|
45
46
|
|
46
47
|
|
@@ -79,6 +80,7 @@ def flower_supernode() -> None:
|
|
79
80
|
flwr_path=args.flwr_dir,
|
80
81
|
isolation=args.isolation,
|
81
82
|
clientappio_api_address=args.clientappio_api_address,
|
83
|
+
health_server_address=args.health_server_address,
|
82
84
|
)
|
83
85
|
|
84
86
|
|
@@ -118,6 +120,7 @@ def _parse_args_run_supernode() -> argparse.ArgumentParser:
|
|
118
120
|
help="ClientAppIo API (gRPC) server address (IPv4, IPv6, or a domain name). "
|
119
121
|
f"By default, it is set to {CLIENTAPPIO_API_DEFAULT_SERVER_ADDRESS}.",
|
120
122
|
)
|
123
|
+
add_args_health(parser)
|
121
124
|
|
122
125
|
return parser
|
123
126
|
|
@@ -43,8 +43,7 @@ from flwr.common.constant import (
|
|
43
43
|
TRANSPORT_TYPES,
|
44
44
|
ExecPluginType,
|
45
45
|
)
|
46
|
-
from flwr.common.exit import ExitCode, flwr_exit
|
47
|
-
from flwr.common.exit_handlers import register_exit_handlers
|
46
|
+
from flwr.common.exit import ExitCode, flwr_exit, register_signal_handlers
|
48
47
|
from flwr.common.grpc import generic_create_grpc_server
|
49
48
|
from flwr.common.inflatable import iterate_object_tree
|
50
49
|
from flwr.common.inflatable_utils import (
|
@@ -58,6 +57,7 @@ from flwr.common.typing import Fab, Run, RunNotRunningException, UserConfig
|
|
58
57
|
from flwr.proto.clientappio_pb2_grpc import add_ClientAppIoServicer_to_server
|
59
58
|
from flwr.proto.message_pb2 import ObjectTree # pylint: disable=E0611
|
60
59
|
from flwr.supercore.ffs import Ffs, FfsFactory
|
60
|
+
from flwr.supercore.grpc_health import run_health_server_grpc_no_tls
|
61
61
|
from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
|
62
62
|
from flwr.supernode.nodestate import NodeState, NodeStateFactory
|
63
63
|
from flwr.supernode.servicer.clientappio import ClientAppIoServicer
|
@@ -85,6 +85,7 @@ def start_client_internal(
|
|
85
85
|
flwr_path: Optional[Path] = None,
|
86
86
|
isolation: str = ISOLATION_MODE_SUBPROCESS,
|
87
87
|
clientappio_api_address: str = CLIENTAPPIO_API_DEFAULT_SERVER_ADDRESS,
|
88
|
+
health_server_address: Optional[str] = None,
|
88
89
|
) -> None:
|
89
90
|
"""Start a Flower client node which connects to a Flower server.
|
90
91
|
|
@@ -133,6 +134,9 @@ def start_client_internal(
|
|
133
134
|
clientappio_api_address : str
|
134
135
|
(default: `CLIENTAPPIO_API_DEFAULT_SERVER_ADDRESS`)
|
135
136
|
The SuperNode gRPC server address.
|
137
|
+
health_server_address : Optional[str] (default: None)
|
138
|
+
The address of the health server. If `None` is provided, the health server will
|
139
|
+
NOT be started.
|
136
140
|
"""
|
137
141
|
if insecure is None:
|
138
142
|
insecure = root_certificates is None
|
@@ -143,6 +147,7 @@ def start_client_internal(
|
|
143
147
|
object_store_factory = ObjectStoreFactory()
|
144
148
|
|
145
149
|
# Launch ClientAppIo API server
|
150
|
+
grpc_servers = []
|
146
151
|
clientappio_server = run_clientappio_api_grpc(
|
147
152
|
address=clientappio_api_address,
|
148
153
|
state_factory=state_factory,
|
@@ -150,12 +155,18 @@ def start_client_internal(
|
|
150
155
|
objectstore_factory=object_store_factory,
|
151
156
|
certificates=None,
|
152
157
|
)
|
158
|
+
grpc_servers.append(clientappio_server)
|
159
|
+
|
160
|
+
# Launch gRPC health server
|
161
|
+
if health_server_address is not None:
|
162
|
+
health_server = run_health_server_grpc_no_tls(health_server_address)
|
163
|
+
grpc_servers.append(health_server)
|
153
164
|
|
154
165
|
# Register handlers for graceful shutdown
|
155
|
-
|
166
|
+
register_signal_handlers(
|
156
167
|
event_type=EventType.RUN_SUPERNODE_LEAVE,
|
157
168
|
exit_message="SuperNode terminated gracefully.",
|
158
|
-
grpc_servers=
|
169
|
+
grpc_servers=grpc_servers,
|
159
170
|
)
|
160
171
|
|
161
172
|
# Initialize NodeState, Ffs, and ObjectStore
|
{flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.21.0.
|
3
|
+
Version: 1.21.0.dev20250903
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
{flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/RECORD
RENAMED
@@ -9,7 +9,7 @@ flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=kQteGRB9-DmC7K5F9TBmUc8ndSBR7WyT2
|
|
9
9
|
flwr/cli/build.py,sha256=hE54Q_eMdWLpVKSVC2aQaUxVaiUlWnAosGNvIPSEg6Y,7284
|
10
10
|
flwr/cli/cli_user_auth_interceptor.py,sha256=O4S8tbA1-rgBNe5YMGACDqmY7v2SJoxyibRhshrzXu4,3129
|
11
11
|
flwr/cli/config_utils.py,sha256=o75PJzgCTl9FdFo_I9OjCB02-ykK0VWZdhIAeR0A8QA,9130
|
12
|
-
flwr/cli/constant.py,sha256=
|
12
|
+
flwr/cli/constant.py,sha256=LtxufmhkEqNWQ9doWbbbkUKa12vN_RK_Of5u0So-GHA,1729
|
13
13
|
flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
|
14
14
|
flwr/cli/install.py,sha256=Jr883qR7qssVpUr3hEOEcLK-dfW67Rsve3lZchjA9RU,8180
|
15
15
|
flwr/cli/log.py,sha256=n_fcoECKIkY3MTOfXhB8AjOG1LSQW_GSPY-2qc7rW9Q,6553
|
@@ -52,7 +52,7 @@ flwr/cli/new/templates/app/code/server.jax.py.tpl,sha256=IHk57syZhvO4nWVHGxE9S8f
|
|
52
52
|
flwr/cli/new/templates/app/code/server.mlx.py.tpl,sha256=GAqalaI-U2uRdttNeRn75k1FzdEW3rmgT-ywuKkFdK4,988
|
53
53
|
flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=xbQlLCKutnOqlbLQPZsaL9WM7vnebTceiU8a0HaUcZk,740
|
54
54
|
flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=gvBsGA_Jg9kAH8xTxjzTjMcvBtciuccOwQFbO7ey8tU,916
|
55
|
-
flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl,sha256=
|
55
|
+
flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl,sha256=268EzqUOM0mdiXsf0WWniNu7DiDHh_JGHLe9o-t6ru4,1158
|
56
56
|
flwr/cli/new/templates/app/code/server.sklearn.py.tpl,sha256=JoDYjPU99aKTTfjKsCtKHzMICiOR9pi8JGVBsxFpWO4,1133
|
57
57
|
flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=xMhQ7AumowgLkgUilgjVK7IbpRhPjslhVJU-vID6NY8,856
|
58
58
|
flwr/cli/new/templates/app/code/strategy.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
@@ -76,7 +76,7 @@ flwr/cli/new/templates/app/pyproject.pytorch_msg_api.toml.tpl,sha256=fS9Brr-dXYE
|
|
76
76
|
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=mAEPeBfGyrINgRuP6-nX_KJNTQjC4E5N1Nrcddxiffs,1484
|
77
77
|
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=mK8wOWqoQOVxZG6-OVwA2ChmKxexC7TfQV0ztPE4BWY,1508
|
78
78
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
79
|
-
flwr/cli/run/run.py,sha256=
|
79
|
+
flwr/cli/run/run.py,sha256=ECa0kup9dn15O70H74QdgUsEaeErbzDqVX_U0zZO5IM,8173
|
80
80
|
flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
|
81
81
|
flwr/cli/utils.py,sha256=fkyiWXWfXo5fS_sACw8Rg9wweq3RQ7XvEUEAa_caqkE,12349
|
82
82
|
flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
|
@@ -106,7 +106,8 @@ flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMy
|
|
106
106
|
flwr/client/rest_client/connection.py,sha256=fyiS1aXTv71jWczx7mSco94LYJTBXgTF-p2PnAk3CL8,15784
|
107
107
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
108
108
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
109
|
-
flwr/clientapp/__init__.py,sha256=
|
109
|
+
flwr/clientapp/__init__.py,sha256=h8RNxAbCbdaLf_htSx-e5UCb2A0mLA-mpEX_6giZuU0,799
|
110
|
+
flwr/clientapp/centraldp_mods.py,sha256=M8vvdrjfLVsFLMd9JXqD_-P08q9jsNOgu_4AAs-X9Zk,4626
|
110
111
|
flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
111
112
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
112
113
|
flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
|
@@ -121,15 +122,17 @@ flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxF
|
|
121
122
|
flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
|
122
123
|
flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
|
123
124
|
flwr/common/event_log_plugin/event_log_plugin.py,sha256=4SkVa1Ic-sPlICJShBuggXmXDcQtWQ1KDby4kthFNF0,2064
|
124
|
-
flwr/common/
|
125
|
-
flwr/common/exit/
|
126
|
-
flwr/common/exit/
|
127
|
-
flwr/common/
|
128
|
-
flwr/common/
|
125
|
+
flwr/common/exception.py,sha256=dAKSNrdh9YqKZTdYaN8hts4dAMVZHfNDV-ytzYby0LQ,1246
|
126
|
+
flwr/common/exit/__init__.py,sha256=8W7xaO1iw0vacgmQW7FTFbSh7csNv6XfsgIlnIbNF6U,978
|
127
|
+
flwr/common/exit/exit.py,sha256=DcXJfbpW1g-pQJqSZmps-1MZydd7T7RaarghIf2e4tU,3636
|
128
|
+
flwr/common/exit/exit_code.py,sha256=e8O71zIqVT1H84mNBeenTz7S39yPZSpZQm-xUenpzN4,5249
|
129
|
+
flwr/common/exit/exit_handler.py,sha256=uzDdWwhKgc1w5csZS52b86kjmEApmDZKwMn_X0zDZZo,2126
|
130
|
+
flwr/common/exit/signal_handler.py,sha256=wqxykrwgmpFzmEMhpnlM7RtO0PnqIvYiSB1qYahZ5Sk,3710
|
131
|
+
flwr/common/grpc.py,sha256=nHnFC7E84pZVTvd6BhcSYWnGd0jf8t5UmGea04qvilM,9806
|
129
132
|
flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
|
130
133
|
flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
|
131
134
|
flwr/common/inflatable_protobuf_utils.py,sha256=JtRqp-fV47goDM2y8JRQ7AmwwjeGaWexwoMWLcxX5gE,5056
|
132
|
-
flwr/common/inflatable_utils.py,sha256=
|
135
|
+
flwr/common/inflatable_utils.py,sha256=njQB7u4OL4AMraRgx23L84JEz5upeXMuYWaPZJ_T-aM,18946
|
133
136
|
flwr/common/logger.py,sha256=kP7Cbs2WuYFK83Wsx5o9qc9mj8jDSyUK3BfRjvxhSTQ,13049
|
134
137
|
flwr/common/message.py,sha256=xAL7iZN5-n-xPQpgoSFvxNrzs8fmiiPfoU0DjNQEhRw,19953
|
135
138
|
flwr/common/object_ref.py,sha256=p3SfTeqo3Aj16SkB-vsnNn01zswOPdGNBitcbRnqmUk,9134
|
@@ -166,7 +169,7 @@ flwr/compat/client/grpc_client/__init__.py,sha256=MDOckOODn-FJnkkFEfb2JO-2G97wrB
|
|
166
169
|
flwr/compat/client/grpc_client/connection.py,sha256=xAyvcTVr7bkwUfR5P3D_LKlZYiyySpt5sEwORA1h8Gc,9189
|
167
170
|
flwr/compat/common/__init__.py,sha256=OMnKw4ad0qYMSIA9LZRa2gOkhSOXwAZCpAHnBQE_hFc,746
|
168
171
|
flwr/compat/server/__init__.py,sha256=TGVSoOTuf5T5JHUVrK5wuorQF7L6Wvdem8B4uufvMJY,746
|
169
|
-
flwr/compat/server/app.py,sha256=
|
172
|
+
flwr/compat/server/app.py,sha256=l6G2T2uwBjoXO3bRuI5mAzazRQNtJHUkpCwXOigoM8Y,6485
|
170
173
|
flwr/compat/simulation/__init__.py,sha256=MApGa-tysDDw34iSdxZ7TWOKtGJM-z3i8fIRJa0qbZ8,750
|
171
174
|
flwr/proto/__init__.py,sha256=S3VbQzVwNC1P-3_9EdrXuwgptO-BVuuAe20Z_OUc1cQ,683
|
172
175
|
flwr/proto/appio_pb2.py,sha256=IhwG71f9igeXO8QCuU6vwxETlFka0KR2PiMMNvmAYgs,4029
|
@@ -235,7 +238,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
235
238
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
236
239
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
237
240
|
flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
|
238
|
-
flwr/server/app.py,sha256=
|
241
|
+
flwr/server/app.py,sha256=BYFMIpzD7ZbxW9xMhW3mJ2Ojw0E71vITS3QKf6Bse3I,29286
|
239
242
|
flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
|
240
243
|
flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
|
241
244
|
flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
|
@@ -255,7 +258,7 @@ flwr/server/server.py,sha256=39m4FSN2T-uVA-no9nstN0eWW0co-IUUAIMmpd3V7Jc,17893
|
|
255
258
|
flwr/server/server_app.py,sha256=8uagoZX-3CY3tazPqkIV9jY-cN0YrRRrDmVe23o0AV0,9515
|
256
259
|
flwr/server/server_config.py,sha256=e_6ddh0riwOJsdNn2BFev344uMWfDk9n7dyjNpPgm1w,1349
|
257
260
|
flwr/server/serverapp/__init__.py,sha256=xcC0T_MQSMS9cicUzUUpMNCOsF2d8Oh_8jvnoBLuZvo,800
|
258
|
-
flwr/server/serverapp/app.py,sha256=
|
261
|
+
flwr/server/serverapp/app.py,sha256=d42XiEwEhee_LttXEMOa9GFP81zvaufzGyt64VlCEo0,9841
|
259
262
|
flwr/server/serverapp_components.py,sha256=dfSqmrsVy3arKXpl3ZIBQWdV8rehfIms8aJooyzdmEM,2118
|
260
263
|
flwr/server/strategy/__init__.py,sha256=HhsSWMWaC7oCb2g7Kqn1MBKdrfvgi8VxACy9ZL706Q0,2836
|
261
264
|
flwr/server/strategy/aggregate.py,sha256=smlKKy-uFUuuFR12vlclucnwSQWRz78R79-Km4RWqbw,13978
|
@@ -326,11 +329,13 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=vGkycLb65CxdaMkKsANxQ
|
|
326
329
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=b_pKk7gmbahwyj0ftOOLXvu-AMtRHEc82N9PJTEO8dc,5839
|
327
330
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=DkayCsnlAya6Y2PZsueLgoUCMRtV-GbnW08RfWx_SXM,29460
|
328
331
|
flwr/serverapp/__init__.py,sha256=dUGPpyO0YEJRIjwNw2YrUWXgsEj9JOUrP5OGm8bPX9k,774
|
329
|
-
flwr/serverapp/
|
332
|
+
flwr/serverapp/dp_fixed_clipping.py,sha256=wbP4W7CaUHXdll8ZSVUnTBSEWrnWM00CGk63rOR-Q2s,12133
|
333
|
+
flwr/serverapp/strategy/__init__.py,sha256=FpZN4AafpTSxW65dAPJ0zekHo9bU84tV4uhO4XVHJTc,1088
|
334
|
+
flwr/serverapp/strategy/dp_fixed_clipping.py,sha256=wbP4W7CaUHXdll8ZSVUnTBSEWrnWM00CGk63rOR-Q2s,12133
|
330
335
|
flwr/serverapp/strategy/fedavg.py,sha256=C8UUvLTjodMpGRb4PNej5gW2cPbXsPKebGX1zPfAMUo,11020
|
331
|
-
flwr/serverapp/strategy/result.py,sha256=
|
332
|
-
flwr/serverapp/strategy/strategy.py,sha256=
|
333
|
-
flwr/serverapp/strategy/strategy_utils.py,sha256=
|
336
|
+
flwr/serverapp/strategy/result.py,sha256=rcg3NqZyC-A_x-f40fq8fk9ovL1zcSz9Jxpr32MRRIc,4285
|
337
|
+
flwr/serverapp/strategy/strategy.py,sha256=9udL2q1zEpVw-rKDMoZG_fwoklF4t1HC9hrnPaYiEhA,10663
|
338
|
+
flwr/serverapp/strategy/strategy_utils.py,sha256=rtcBQwFtWAihNdcWEAHdAqScPlRZSwqbkGjGxaWkmLE,9547
|
334
339
|
flwr/serverapp/strategy/strategy_utils_tests.py,sha256=taG6HwApwutkjUuMY3R8Ib48Xepw6g5xl9HEB_-leoY,9232
|
335
340
|
flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1556
|
336
341
|
flwr/simulation/app.py,sha256=LbGLMvN9Ap119yBqsUcNNmVLRnCySnr4VechqcQ1hpA,10401
|
@@ -344,15 +349,16 @@ flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb
|
|
344
349
|
flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
|
345
350
|
flwr/supercore/app_utils.py,sha256=K76Zt6R670b1hUmxOsNc1WUCVYvF7lejXPcCO9K0Q0g,1753
|
346
351
|
flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
|
347
|
-
flwr/supercore/cli/flower_superexec.py,sha256=
|
352
|
+
flwr/supercore/cli/flower_superexec.py,sha256=6fbzv71VYZ7nqrJQG8ZUKYVgL9LPIFFDw7uvDlkCd-o,4225
|
348
353
|
flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
|
349
354
|
flwr/supercore/corestate/corestate.py,sha256=rDAWWeG5DcpCyQso9Z3RhwL4zr2IroPlRMcDzqoSu8s,2328
|
350
355
|
flwr/supercore/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
|
351
356
|
flwr/supercore/ffs/disk_ffs.py,sha256=c5VywSaRnq3XM_zuJptNtsF2HFwsRK0pvBd5-5CNONs,3272
|
352
357
|
flwr/supercore/ffs/ffs.py,sha256=6w7wy71i7tbuJwqEgdeCa49JejXMEof3jujURN_R7Rg,2395
|
353
358
|
flwr/supercore/ffs/ffs_factory.py,sha256=pK-g3LMelvWTV6N9Cd-j-_-FdcGbRFTKNsWaqmlBDSk,1490
|
354
|
-
flwr/supercore/grpc_health/__init__.py,sha256=
|
355
|
-
flwr/supercore/grpc_health/
|
359
|
+
flwr/supercore/grpc_health/__init__.py,sha256=rCPZ7ucPY9NXBWuhb9iKs2D-yZ0rQ5YkJ7LlOeahN9A,948
|
360
|
+
flwr/supercore/grpc_health/health_server.py,sha256=bwNzQ1eQJWmzeSJwqa0zrD5s_Cut00vKdSSk8NhPI2c,1808
|
361
|
+
flwr/supercore/grpc_health/simple_health_servicer.py,sha256=C5QN_cR_VBqbhva1eP8zyZ6YwS5Q9APKl6WgM03jAC0,1531
|
356
362
|
flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
|
357
363
|
flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
|
358
364
|
flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
|
@@ -367,7 +373,7 @@ flwr/supercore/superexec/plugin/clientapp_exec_plugin.py,sha256=9FT6ufEqV5K9g4Fa
|
|
367
373
|
flwr/supercore/superexec/plugin/exec_plugin.py,sha256=w3jmtxdv7ov_EdAgifKcm4q8nV39e2Xna4sNjqClwOM,2447
|
368
374
|
flwr/supercore/superexec/plugin/serverapp_exec_plugin.py,sha256=IwRzdPV-cSKwrP2krGh0De4IkAuxsmgK0WU6J-2GXqM,1035
|
369
375
|
flwr/supercore/superexec/plugin/simulation_exec_plugin.py,sha256=upn5zE-YKkl_jTw8RzmeyQ58PU_UAlQ7CqnBXXdng8I,1060
|
370
|
-
flwr/supercore/superexec/run_superexec.py,sha256=
|
376
|
+
flwr/supercore/superexec/run_superexec.py,sha256=8hUlaVPVNnhePQ9OUgen4yy0fSGZAVggBGzm-33iJPw,6630
|
371
377
|
flwr/supercore/utils.py,sha256=ebuHMbeA8eXisX0oMPqBK3hk7uVnIE_yiqWVz8YbkpQ,1324
|
372
378
|
flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
373
379
|
flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
|
@@ -379,7 +385,7 @@ flwr/superlink/servicer/control/control_servicer.py,sha256=5GMGcq5_Hvac7DpVg8TWU
|
|
379
385
|
flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
|
380
386
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
381
387
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
382
|
-
flwr/supernode/cli/flower_supernode.py,sha256=
|
388
|
+
flwr/supernode/cli/flower_supernode.py,sha256=7aBm0z03OU-npVd1onLCvUotyhSvlZLxAnFkGVMhZcw,8670
|
383
389
|
flwr/supernode/cli/flwr_clientapp.py,sha256=W3tAyqSfeHbPhqBC4Pfo9bsyFdkBKPqdKlhGmeUKwKg,3173
|
384
390
|
flwr/supernode/nodestate/__init__.py,sha256=CyLLObbmmVgfRO88UCM0VMait1dL57mUauUDfuSHsbU,976
|
385
391
|
flwr/supernode/nodestate/in_memory_nodestate.py,sha256=rr_tg7YXhf_seYFipSB59TAfheKPratx3rrvHUOJ80g,7343
|
@@ -390,8 +396,8 @@ flwr/supernode/runtime/run_clientapp.py,sha256=2vknOFxmexCv0vsIsymrtRcvvgmk1tHM5
|
|
390
396
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
391
397
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
392
398
|
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
|
393
|
-
flwr/supernode/start_client_internal.py,sha256=
|
394
|
-
flwr_nightly-1.21.0.
|
395
|
-
flwr_nightly-1.21.0.
|
396
|
-
flwr_nightly-1.21.0.
|
397
|
-
flwr_nightly-1.21.0.
|
399
|
+
flwr/supernode/start_client_internal.py,sha256=Y9S1-QlO2WP6eo4JvWzIpfaCoh2aoE7bjEYyxNNnlyg,20777
|
400
|
+
flwr_nightly-1.21.0.dev20250903.dist-info/METADATA,sha256=x-9LvDwIejGasw9rlnPTi3qrHp3Z2hgABMTMj-_iU3k,15967
|
401
|
+
flwr_nightly-1.21.0.dev20250903.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
402
|
+
flwr_nightly-1.21.0.dev20250903.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
403
|
+
flwr_nightly-1.21.0.dev20250903.dist-info/RECORD,,
|
{flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|