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.
Files changed (33) hide show
  1. flwr/cli/constant.py +25 -8
  2. flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl +0 -8
  3. flwr/cli/run/run.py +2 -6
  4. flwr/clientapp/__init__.py +4 -0
  5. flwr/clientapp/centraldp_mods.py +132 -0
  6. flwr/common/exception.py +31 -0
  7. flwr/common/exit/__init__.py +4 -0
  8. flwr/common/exit/exit.py +4 -0
  9. flwr/common/exit/exit_code.py +7 -0
  10. flwr/common/exit/exit_handler.py +62 -0
  11. flwr/common/{exit_handlers.py → exit/signal_handler.py} +20 -37
  12. flwr/common/grpc.py +0 -11
  13. flwr/common/inflatable_utils.py +1 -1
  14. flwr/compat/server/app.py +2 -2
  15. flwr/server/app.py +12 -3
  16. flwr/server/serverapp/app.py +41 -28
  17. flwr/serverapp/dp_fixed_clipping.py +352 -0
  18. flwr/serverapp/strategy/__init__.py +6 -0
  19. flwr/serverapp/strategy/dp_fixed_clipping.py +352 -0
  20. flwr/serverapp/strategy/result.py +76 -2
  21. flwr/serverapp/strategy/strategy.py +15 -20
  22. flwr/serverapp/strategy/strategy_utils.py +5 -1
  23. flwr/supercore/cli/flower_superexec.py +3 -0
  24. flwr/supercore/grpc_health/__init__.py +3 -0
  25. flwr/supercore/grpc_health/health_server.py +53 -0
  26. flwr/supercore/grpc_health/simple_health_servicer.py +2 -2
  27. flwr/supercore/superexec/run_superexec.py +15 -3
  28. flwr/supernode/cli/flower_supernode.py +3 -0
  29. flwr/supernode/start_client_internal.py +15 -4
  30. {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/METADATA +1 -1
  31. {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/RECORD +33 -27
  32. {flwr_nightly-1.21.0.dev20250901.dist-info → flwr_nightly-1.21.0.dev20250903.dist-info}/WHEEL +0 -0
  33. {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.exit_handlers import register_exit_handlers
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
- register_exit_handlers(
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
- register_exit_handlers(
166
+ register_signal_handlers(
156
167
  event_type=EventType.RUN_SUPERNODE_LEAVE,
157
168
  exit_message="SuperNode terminated gracefully.",
158
- grpc_servers=[clientappio_server],
169
+ grpc_servers=grpc_servers,
159
170
  )
160
171
 
161
172
  # Initialize NodeState, Ffs, and ObjectStore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250901
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
@@ -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=g7Ad7o3DJDkJNrWS0T3SSJETWSTkkVJWGpLM8zlbpcY,1289
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=Y_ldLmyMy0yfSogzU6rlc0RhlZiOBYw2aWTv0nFHTdg,1390
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=A469slN-qunLu1-jCFGSsgJD2SIn0b_0RdRQ5C5MbDU,8502
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=zGW4z49Ojzoi1hDiRC7kyhLjijUilc6fqHhtM_ATRVA,719
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/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
125
- flwr/common/exit/exit.py,sha256=dWZgznSZkg8Tr_Bh9jRHGUhlWk2228q5XFIK98Zr4Tc,3531
126
- flwr/common/exit/exit_code.py,sha256=K0QSQg5elE3xl3OHBaMu1vClAXpyxqBEo6t_weFkh7I,4910
127
- flwr/common/exit_handlers.py,sha256=IaqJ60fXZuu7McaRYnoYKtlbH9t4Yl9goNExKqtmQbs,4304
128
- flwr/common/grpc.py,sha256=y70hUFvXkIf3l03xOhlb7qhS6W1UJZRSZqCdB0ir0v8,10381
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=OcNW8_CfHNuJhHekwRtnrDJZ4vbhujw2w7SG7Y0TuSI,18955
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=_lIe7Q4KUk-olq9PYBxIsO3UaOn6N92CWgWQ4hRcAZw,6490
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=vAm_K4U54qcE4QeefNsFXL6A_M2M2YKCk_TVzrMIXIE,28841
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=4wC6vpwSct3NImp4R_K1X7ROEtp8GJzSvIX6kUjmZvU,9372
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/strategy/__init__.py,sha256=XeBoiPeAIrcWv2Mq6I98Gme-VLTvckgH5wOU5IlGYYY,857
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=rw1ZoCGBosSVSNrTLLUFMxP1XzDwJWWsn1qdBR7JtlI,1229
332
- flwr/serverapp/strategy/strategy.py,sha256=1mxxtA5Pyg9lZ1d3g4OCL-m8YR_0E3HUGl8Gv5BGOXY,10982
333
- flwr/serverapp/strategy/strategy_utils.py,sha256=aDlDh1TJT7oU29FiJ6tckomRAOzhhMYccrrXbynQh9o,9387
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=UeiizyoA6wAjBAixELZFALn261rs71MdkSj3h3vxUpc,4084
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=bK1jWNje-uwxf4_c0vfFsZdVrLzAHQ463OsOcVWERPU,814
355
- flwr/supercore/grpc_health/simple_health_servicer.py,sha256=IUWS0NpgLAwxApvd4TpU8eZibpABbPX9w-SbMXDypdE,1521
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=6bzP9xzP8MrWwiN9xyizoU4rmY0ZkwLn_liVmvrKy6E,6058
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=fAkk9zGhoP8Sv05EkdXRiCtirTAzWkSZBqRoaDdgflk,8529
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=ftS8GOyT9M1tOWpbobN_Xrz4xwPAPOvsTGiWSfzhheE,20269
394
- flwr_nightly-1.21.0.dev20250901.dist-info/METADATA,sha256=JMFP2dOrx11LeroH2u0FNyQ4WnM8kNs4h3RE__vzN6Q,15967
395
- flwr_nightly-1.21.0.dev20250901.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
396
- flwr_nightly-1.21.0.dev20250901.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
397
- flwr_nightly-1.21.0.dev20250901.dist-info/RECORD,,
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,,