flwr-nightly 1.19.0.dev20250616__py3-none-any.whl → 1.20.0.dev20250617__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 (34) hide show
  1. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  2. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  3. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  4. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  5. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  6. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  7. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
  8. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  9. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
  10. flwr/cli/run/run.py +45 -38
  11. flwr/server/app.py +1 -1
  12. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +1 -1
  13. flwr/server/superlink/fleet/message_handler/message_handler.py +1 -1
  14. flwr/server/superlink/fleet/rest_rere/rest_api.py +1 -2
  15. flwr/server/superlink/serverappio/serverappio_grpc.py +1 -1
  16. flwr/server/superlink/serverappio/serverappio_servicer.py +1 -2
  17. flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
  18. flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
  19. flwr/{server/superlink → supercore}/ffs/disk_ffs.py +1 -1
  20. flwr/superexec/deployment.py +1 -2
  21. flwr/superexec/exec_grpc.py +1 -1
  22. flwr/superexec/exec_servicer.py +1 -1
  23. flwr/superexec/executor.py +1 -1
  24. flwr/superexec/simulation.py +1 -2
  25. flwr/supernode/nodestate/in_memory_nodestate.py +11 -2
  26. flwr/supernode/nodestate/nodestate.py +15 -0
  27. flwr/supernode/start_client_internal.py +1 -1
  28. {flwr_nightly-1.19.0.dev20250616.dist-info → flwr_nightly-1.20.0.dev20250617.dist-info}/METADATA +1 -1
  29. {flwr_nightly-1.19.0.dev20250616.dist-info → flwr_nightly-1.20.0.dev20250617.dist-info}/RECORD +34 -34
  30. /flwr/{server/superlink → supercore}/ffs/__init__.py +0 -0
  31. /flwr/{server/superlink → supercore}/ffs/ffs.py +0 -0
  32. /flwr/{server/superlink → supercore}/ffs/ffs_factory.py +0 -0
  33. {flwr_nightly-1.19.0.dev20250616.dist-info → flwr_nightly-1.20.0.dev20250617.dist-info}/WHEEL +0 -0
  34. {flwr_nightly-1.19.0.dev20250616.dist-info → flwr_nightly-1.20.0.dev20250617.dist-info}/entry_points.txt +0 -0
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets[vision]>=0.5.0",
13
13
  "torch==2.6.0",
14
14
  "torchvision==0.21.0",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets>=0.5.0",
13
13
  "torch==2.4.0",
14
14
  "trl==0.8.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets>=0.5.0",
13
13
  "torch==2.5.1",
14
14
  "transformers>=4.30.0,<5.0",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "jax==0.4.30",
13
13
  "jaxlib==0.4.30",
14
14
  "scikit-learn==1.6.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets[vision]>=0.5.0",
13
13
  "mlx==0.21.1",
14
14
  ]
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "numpy>=2.0.2",
13
13
  ]
14
14
 
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets[vision]>=0.5.0",
13
13
  "torch==2.5.1",
14
14
  "torchvision==0.20.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets[vision]>=0.5.0",
13
13
  "scikit-learn>=1.6.1",
14
14
  ]
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
11
+ "flwr[simulation]>=1.20.0",
12
12
  "flwr-datasets[vision]>=0.5.0",
13
13
  "tensorflow>=2.11.1,<2.18.0",
14
14
  ]
flwr/cli/run/run.py CHANGED
@@ -150,50 +150,57 @@ def _run_with_exec_api(
150
150
  stream: bool,
151
151
  output_format: str,
152
152
  ) -> None:
153
- auth_plugin = try_obtain_cli_auth_plugin(app, federation, federation_config)
154
- channel = init_channel(app, federation_config, auth_plugin)
155
- stub = ExecStub(channel)
153
+ channel = None
154
+ try:
155
+ auth_plugin = try_obtain_cli_auth_plugin(app, federation, federation_config)
156
+ channel = init_channel(app, federation_config, auth_plugin)
157
+ stub = ExecStub(channel)
156
158
 
157
- fab_bytes, fab_hash, config = build_fab(app)
158
- fab_id, fab_version = get_metadata_from_config(config)
159
+ fab_bytes, fab_hash, config = build_fab(app)
160
+ fab_id, fab_version = get_metadata_from_config(config)
159
161
 
160
- fab = Fab(fab_hash, fab_bytes)
162
+ fab = Fab(fab_hash, fab_bytes)
161
163
 
162
- # Construct a `ConfigRecord` out of a flattened `UserConfig`
163
- fed_config = flatten_dict(federation_config.get("options", {}))
164
- c_record = user_config_to_configrecord(fed_config)
164
+ # Construct a `ConfigRecord` out of a flattened `UserConfig`
165
+ fed_config = flatten_dict(federation_config.get("options", {}))
166
+ c_record = user_config_to_configrecord(fed_config)
165
167
 
166
- req = StartRunRequest(
167
- fab=fab_to_proto(fab),
168
- override_config=user_config_to_proto(parse_config_args(config_overrides)),
169
- federation_options=config_record_to_proto(c_record),
170
- )
171
- with flwr_cli_grpc_exc_handler():
172
- res = stub.StartRun(req)
173
-
174
- if res.HasField("run_id"):
175
- typer.secho(f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN)
176
- else:
177
- typer.secho("❌ Failed to start run", fg=typer.colors.RED)
178
- raise typer.Exit(code=1)
179
-
180
- if output_format == CliOutputFormat.JSON:
181
- run_output = json.dumps(
182
- {
183
- "success": res.HasField("run_id"),
184
- "run-id": res.run_id if res.HasField("run_id") else None,
185
- "fab-id": fab_id,
186
- "fab-name": fab_id.rsplit("/", maxsplit=1)[-1],
187
- "fab-version": fab_version,
188
- "fab-hash": fab_hash[:8],
189
- "fab-filename": get_fab_filename(config, fab_hash),
190
- }
168
+ req = StartRunRequest(
169
+ fab=fab_to_proto(fab),
170
+ override_config=user_config_to_proto(parse_config_args(config_overrides)),
171
+ federation_options=config_record_to_proto(c_record),
191
172
  )
192
- restore_output()
193
- Console().print_json(run_output)
173
+ with flwr_cli_grpc_exc_handler():
174
+ res = stub.StartRun(req)
194
175
 
195
- if stream:
196
- start_stream(res.run_id, channel, CONN_REFRESH_PERIOD)
176
+ if res.HasField("run_id"):
177
+ typer.secho(
178
+ f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN
179
+ )
180
+ else:
181
+ typer.secho("❌ Failed to start run", fg=typer.colors.RED)
182
+ raise typer.Exit(code=1)
183
+
184
+ if output_format == CliOutputFormat.JSON:
185
+ run_output = json.dumps(
186
+ {
187
+ "success": res.HasField("run_id"),
188
+ "run-id": res.run_id if res.HasField("run_id") else None,
189
+ "fab-id": fab_id,
190
+ "fab-name": fab_id.rsplit("/", maxsplit=1)[-1],
191
+ "fab-version": fab_version,
192
+ "fab-hash": fab_hash[:8],
193
+ "fab-filename": get_fab_filename(config, fab_hash),
194
+ }
195
+ )
196
+ restore_output()
197
+ Console().print_json(run_output)
198
+
199
+ if stream:
200
+ start_stream(res.run_id, channel, CONN_REFRESH_PERIOD)
201
+ finally:
202
+ if channel:
203
+ channel.close()
197
204
 
198
205
 
199
206
  def _run_without_exec_api(
flwr/server/app.py CHANGED
@@ -71,11 +71,11 @@ from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
71
71
  from flwr.server.fleet_event_log_interceptor import FleetEventLogInterceptor
72
72
  from flwr.server.serverapp.app import flwr_serverapp
73
73
  from flwr.simulation.app import flwr_simulation
74
+ from flwr.supercore.ffs import FfsFactory
74
75
  from flwr.supercore.object_store import ObjectStoreFactory
75
76
  from flwr.superexec.app import load_executor
76
77
  from flwr.superexec.exec_grpc import run_exec_api_grpc
77
78
 
78
- from .superlink.ffs.ffs_factory import FfsFactory
79
79
  from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
80
80
  from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
81
81
  from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
@@ -48,10 +48,10 @@ from flwr.proto.message_pb2 import ( # pylint: disable=E0611
48
48
  PushObjectResponse,
49
49
  )
50
50
  from flwr.proto.run_pb2 import GetRunRequest, GetRunResponse # pylint: disable=E0611
51
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
52
51
  from flwr.server.superlink.fleet.message_handler import message_handler
53
52
  from flwr.server.superlink.linkstate import LinkStateFactory
54
53
  from flwr.server.superlink.utils import abort_grpc_context
54
+ from flwr.supercore.ffs import FfsFactory
55
55
  from flwr.supercore.object_store import ObjectStoreFactory
56
56
 
57
57
 
@@ -58,9 +58,9 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
58
58
  GetRunResponse,
59
59
  Run,
60
60
  )
61
- from flwr.server.superlink.ffs.ffs import Ffs
62
61
  from flwr.server.superlink.linkstate import LinkState
63
62
  from flwr.server.superlink.utils import check_abort
63
+ from flwr.supercore.ffs import Ffs
64
64
  from flwr.supercore.object_store import NoObjectInStoreError, ObjectStore
65
65
 
66
66
  from ...utils import store_mapping_and_register_objects
@@ -47,10 +47,9 @@ from flwr.proto.message_pb2 import ( # pylint: disable=E0611
47
47
  PushObjectResponse,
48
48
  )
49
49
  from flwr.proto.run_pb2 import GetRunRequest, GetRunResponse # pylint: disable=E0611
50
- from flwr.server.superlink.ffs.ffs import Ffs
51
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
52
50
  from flwr.server.superlink.fleet.message_handler import message_handler
53
51
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
52
+ from flwr.supercore.ffs import Ffs, FfsFactory
54
53
  from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
55
54
 
56
55
  try:
@@ -26,8 +26,8 @@ from flwr.common.logger import log
26
26
  from flwr.proto.serverappio_pb2_grpc import ( # pylint: disable=E0611
27
27
  add_ServerAppIoServicer_to_server,
28
28
  )
29
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
30
29
  from flwr.server.superlink.linkstate import LinkStateFactory
30
+ from flwr.supercore.ffs import FfsFactory
31
31
  from flwr.supercore.object_store import ObjectStoreFactory
32
32
 
33
33
  from .serverappio_servicer import ServerAppIoServicer
@@ -81,11 +81,10 @@ from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
81
81
  PushServerAppOutputsRequest,
82
82
  PushServerAppOutputsResponse,
83
83
  )
84
- from flwr.server.superlink.ffs.ffs import Ffs
85
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
86
84
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
87
85
  from flwr.server.superlink.utils import abort_if
88
86
  from flwr.server.utils.validator import validate_message
87
+ from flwr.supercore.ffs import Ffs, FfsFactory
89
88
  from flwr.supercore.object_store import NoObjectInStoreError, ObjectStoreFactory
90
89
 
91
90
  from ..utils import store_mapping_and_register_objects
@@ -26,8 +26,8 @@ from flwr.common.logger import log
26
26
  from flwr.proto.simulationio_pb2_grpc import ( # pylint: disable=E0611
27
27
  add_SimulationIoServicer_to_server,
28
28
  )
29
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
30
29
  from flwr.server.superlink.linkstate import LinkStateFactory
30
+ from flwr.supercore.ffs import FfsFactory
31
31
 
32
32
  from .simulationio_servicer import SimulationIoServicer
33
33
 
@@ -56,9 +56,9 @@ from flwr.proto.simulationio_pb2 import ( # pylint: disable=E0611
56
56
  PushSimulationOutputsRequest,
57
57
  PushSimulationOutputsResponse,
58
58
  )
59
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
60
59
  from flwr.server.superlink.linkstate import LinkStateFactory
61
60
  from flwr.server.superlink.utils import abort_if
61
+ from flwr.supercore.ffs import FfsFactory
62
62
 
63
63
 
64
64
  class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
@@ -20,7 +20,7 @@ import json
20
20
  from pathlib import Path
21
21
  from typing import Optional
22
22
 
23
- from flwr.server.superlink.ffs.ffs import Ffs
23
+ from .ffs import Ffs
24
24
 
25
25
 
26
26
  class DiskFfs(Ffs): # pylint: disable=R0904
@@ -31,9 +31,8 @@ from flwr.common.constant import (
31
31
  )
32
32
  from flwr.common.logger import log
33
33
  from flwr.common.typing import Fab, RunStatus, UserConfig
34
- from flwr.server.superlink.ffs import Ffs
35
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
36
34
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
35
+ from flwr.supercore.ffs import Ffs, FfsFactory
37
36
 
38
37
  from .executor import Executor
39
38
 
@@ -27,8 +27,8 @@ from flwr.common.grpc import generic_create_grpc_server
27
27
  from flwr.common.logger import log
28
28
  from flwr.common.typing import UserConfig
29
29
  from flwr.proto.exec_pb2_grpc import add_ExecServicer_to_server
30
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
31
30
  from flwr.server.superlink.linkstate import LinkStateFactory
31
+ from flwr.supercore.ffs import FfsFactory
32
32
  from flwr.supercore.object_store import ObjectStoreFactory
33
33
  from flwr.superexec.exec_event_log_interceptor import ExecEventLogInterceptor
34
34
  from flwr.superexec.exec_user_auth_interceptor import ExecUserAuthInterceptor
@@ -52,8 +52,8 @@ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
52
52
  StreamLogsRequest,
53
53
  StreamLogsResponse,
54
54
  )
55
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
56
55
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
56
+ from flwr.supercore.ffs import FfsFactory
57
57
  from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
58
58
 
59
59
  from .exec_user_auth_interceptor import shared_account_info
@@ -22,8 +22,8 @@ from typing import Optional
22
22
 
23
23
  from flwr.common import ConfigRecord
24
24
  from flwr.common.typing import UserConfig
25
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
26
25
  from flwr.server.superlink.linkstate import LinkStateFactory
26
+ from flwr.supercore.ffs import FfsFactory
27
27
 
28
28
 
29
29
  @dataclass
@@ -25,9 +25,8 @@ from flwr.cli.config_utils import get_fab_metadata
25
25
  from flwr.common import ConfigRecord, Context, RecordDict
26
26
  from flwr.common.logger import log
27
27
  from flwr.common.typing import Fab, UserConfig
28
- from flwr.server.superlink.ffs import Ffs
29
- from flwr.server.superlink.ffs.ffs_factory import FfsFactory
30
28
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
29
+ from flwr.supercore.ffs import Ffs, FfsFactory
31
30
 
32
31
  from .executor import Executor
33
32
 
@@ -51,8 +51,9 @@ class InMemoryNodeState(NodeState): # pylint: disable=too-many-instance-attribu
51
51
  # Store run ID to Context mapping
52
52
  self.ctx_store: dict[int, Context] = {}
53
53
  self.lock_ctx_store = Lock()
54
- # Store run ID to token mapping
54
+ # Store run ID to token mapping and token to run ID mapping
55
55
  self.token_store: dict[int, str] = {}
56
+ self.token_to_run_id: dict[str, int] = {}
56
57
  self.lock_token_store = Lock()
57
58
 
58
59
  def set_node_id(self, node_id: Optional[int]) -> None:
@@ -177,6 +178,7 @@ class InMemoryNodeState(NodeState): # pylint: disable=too-many-instance-attribu
177
178
  if run_id in self.token_store:
178
179
  raise ValueError("Token already created for this run ID")
179
180
  self.token_store[run_id] = token
181
+ self.token_to_run_id[token] = run_id
180
182
  return token
181
183
 
182
184
  def verify_token(self, run_id: int, token: str) -> bool:
@@ -187,4 +189,11 @@ class InMemoryNodeState(NodeState): # pylint: disable=too-many-instance-attribu
187
189
  def delete_token(self, run_id: int) -> None:
188
190
  """Delete the token for the given run ID."""
189
191
  with self.lock_token_store:
190
- self.token_store.pop(run_id, None)
192
+ token = self.token_store.pop(run_id, None)
193
+ if token is not None:
194
+ self.token_to_run_id.pop(token, None)
195
+
196
+ def get_run_id_by_token(self, token: str) -> Optional[int]:
197
+ """Get the run ID associated with a given token."""
198
+ with self.lock_token_store:
199
+ return self.token_to_run_id.get(token)
@@ -210,3 +210,18 @@ class NodeState(ABC):
210
210
  run_id : int
211
211
  The ID of the run for which to delete the token.
212
212
  """
213
+
214
+ @abstractmethod
215
+ def get_run_id_by_token(self, token: str) -> Optional[int]:
216
+ """Get the run ID associated with a given token.
217
+
218
+ Parameters
219
+ ----------
220
+ token : str
221
+ The token to look up.
222
+
223
+ Returns
224
+ -------
225
+ Optional[int]
226
+ The run ID if the token is valid, otherwise None.
227
+ """
@@ -52,7 +52,7 @@ from flwr.common.logger import log
52
52
  from flwr.common.retry_invoker import RetryInvoker, RetryState, exponential
53
53
  from flwr.common.typing import Fab, Run, RunNotRunningException, UserConfig
54
54
  from flwr.proto.clientappio_pb2_grpc import add_ClientAppIoServicer_to_server
55
- from flwr.server.superlink.ffs import Ffs, FfsFactory
55
+ from flwr.supercore.ffs import Ffs, FfsFactory
56
56
  from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
57
57
  from flwr.supernode.nodestate import NodeState, NodeStateFactory
58
58
  from flwr.supernode.servicer.clientappio import ClientAppInputs, ClientAppIoServicer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.19.0.dev20250616
3
+ Version: 1.20.0.dev20250617
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
@@ -61,17 +61,17 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN
61
61
  flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=vHdhtMp0FHxbYafXyhDT9aKmmmA0Jvpx5Oum1Yu9lWY,1850
62
62
  flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
63
63
  flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
64
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=_hhn9kMIaiQDKe2qlx3flQVHVvqtckKG3WbuXw-ZUzc,2623
65
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=4WfSNMTbhJ-_CQ71gphHVocGBrPxOe33VThGXKmsiHY,1873
66
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=f7xUVuqemFliGqqmwJ_vDgIlBtJM71yTJsXdSzkPDDA,1143
67
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=35AUGbM1hMlJ4plYsFkydiYvG3XWIOLNnlcemWtIgn4,673
68
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=dXaaG5N2QXTkZIMTilujiC4t2_XaqwANEzcdtP6X694,744
69
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=uJiKvD2sJnigXYMaZRGIkj6z701ayAyyVzdAEEFL7VE,611
70
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=dckyBDmvBHbPNB5LQhXsol1JfglFBF4Np2Xp6magp4U,710
71
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=F93FdohqSBzcdFanew33V8bBeC3s9r3IaV8tfd4zw-E,686
72
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=7aOtbvAAnVXyTEYLsg_LtxDRQD16XUjRmnENgAWyiMs,710
64
+ flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=NVZBJZwn2NpHe6_4Cm32IRy7135ZI1zJQxCdW4_MPeg,2623
65
+ flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=nth0gqYOteImRFKktdC_UQ-EGIl1qHJyiBsMH9orV-I,1873
66
+ flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=gtCxa-eoE3AAGBKFXWXcD1-5Ef4I0J8-DGafDW8BqXE,1143
67
+ flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=oMuJKx1gH-Vn1PhkbpIfz8W18ktycaDGzdiOuUEmW6U,673
68
+ flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=PlYcCItFBVRElU5KQgzO6xjmC4FDcN7tUR8BK3YBFbA,744
69
+ flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=PL32GQmsxKOM7p4uEzM4jLeKqJs73YPR4P27a999y1Q,611
70
+ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=7zEuhCEz7MqfwS40udx-DP3yBuT8r927GiT6vb0gsbg,710
71
+ flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=xXXS2D6avnDNxF906rKgdi5UPNPVDI-_p_3zz5MqcDI,686
72
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=3-gDei-K7zskh5dDuhPERkkMekbxGffRN_qZyNHiQH4,710
73
73
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
74
- flwr/cli/run/run.py,sha256=U_EHebzwiH8Lszm40oJM8a2I0vaiu1Iizci_GHSl25Y,8211
74
+ flwr/cli/run/run.py,sha256=psmr215gkV0e0QtX9NFp7KUwKSA_ZwekdJmoL1zFyfw,8478
75
75
  flwr/cli/stop.py,sha256=l8DcRkA---CESVJgc7iTHLWIBAPGxWIfoem8qSU3lZQ,4972
76
76
  flwr/cli/utils.py,sha256=Vyxpd8LOn2tg5wwId18CHDKq2xaoFDxHMnMW0IlG9Yw,12048
77
77
  flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
@@ -226,7 +226,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
226
226
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
227
227
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
229
- flwr/server/app.py,sha256=reOCH1YmngNxWXBvxp8UfQNTfLP95NMh8j8jU0dW1IU,29492
229
+ flwr/server/app.py,sha256=o_-azG7qWnCF2aIThgkaLbxcksXfysSrCwDVPE8vFbc,29484
230
230
  flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
231
231
  flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
232
232
  flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
@@ -273,10 +273,6 @@ flwr/server/strategy/krum.py,sha256=9hjB-5l7lwo7Er2xRauYvNEKAv9KoPCin_TCdYJwQe4,
273
273
  flwr/server/strategy/qfedavg.py,sha256=-siSzfuVX8GRkjmyvbj68fnjk02E3EYHl8Ory6v1QzI,10131
274
274
  flwr/server/strategy/strategy.py,sha256=n4r52i5gK4KGToZvcJUeWuEif1tuI0HZUT3YJPTC7UE,7524
275
275
  flwr/server/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
276
- flwr/server/superlink/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
277
- flwr/server/superlink/ffs/disk_ffs.py,sha256=tkJiUa9cIq6Po-9UYMtFpI-GEyY5FMg4RcDKenaky74,3297
278
- flwr/server/superlink/ffs/ffs.py,sha256=6w7wy71i7tbuJwqEgdeCa49JejXMEof3jujURN_R7Rg,2395
279
- flwr/server/superlink/ffs/ffs_factory.py,sha256=pK-g3LMelvWTV6N9Cd-j-_-FdcGbRFTKNsWaqmlBDSk,1490
280
276
  flwr/server/superlink/fleet/__init__.py,sha256=Uiwr33yfW_eL-pEfj80c_JUhIKRkCPsN1JSs2v4aglU,711
281
277
  flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=fUu1V63YrzjxAOZnBJx99WjuD4Mro7dJIFH-1V4NLV8,742
282
278
  flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=Jdhesi4FUBFsdAnslzB4XaJQzERyCS2F8zeNnvBz9Wo,4715
@@ -286,12 +282,12 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
286
282
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
287
283
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
288
284
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
289
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Ug-EqW6dSvxMVbjBVGcrfeMudBp5INZkFZUBNhJioRI,8694
285
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=X7-z4oReIH5ghMfmMXML3SSpa2bhRsuIvt2OZs82BUk,8675
290
286
  flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=DrHubsaLgJCwCeeJPYogQTiP0xYqjxwnT9rh7OP7BoU,6984
291
287
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
292
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=NhQzO1_eGusDfBiq5lPVs-b0nisjbY8Z5Zr5sFBmYeY,8853
288
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=pbsKY-maXIPCihre42VeUcjVFg3bexCrfOCnKA5UPNM,8842
293
289
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
294
- flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=j3UdI_xG00t_WDPr4Zu6QlnkTu5R1ZTCg5_fLOCFG5o,9317
290
+ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=mxWKwGpgHPqd7cGFqd2ASnR-KZduIzLfT-d2yiNCqQ0,9257
295
291
  flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
296
292
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
297
293
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
@@ -304,11 +300,11 @@ flwr/server/superlink/linkstate/linkstate_factory.py,sha256=8RlosqSpKOoD_vhUUQPY
304
300
  flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=E699Ak0jMF3N7i1SIeFRutjorg51Fd7qBqaPX_gkWU0,43687
305
301
  flwr/server/superlink/linkstate/utils.py,sha256=IeLh7iGRCHU5MEWOl7iriaSE4L__8GWOa2OleXadK5M,15444
306
302
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
307
- flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=6-FUUt0GiLcBPljj8bBrUNeAITUoDQOLzaMihKo52hg,2326
308
- flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=pjBjZ6NQdOKO3AYZ8tGD-wzGHh4LaVS3lpPZb6XpKU8,18823
303
+ flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=zcvzDhCAnlFxAwCiJUHNm6IE7-rk5jeZqSmPgjEY3AU,2307
304
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=J-c3aRIpSD8Kt0-yWwAecejuNP6YKfW2KTtk21SbFvs,18763
309
305
  flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
310
- flwr/server/superlink/simulation/simulationio_grpc.py,sha256=0l0F-UjYEk6W7HZmI28PbJQLFxSi_vBHRkdchgdaSMQ,2224
311
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=8jACbVPe7YPLaR0hbpEofBBwWjc-uQPhf2FU1eNOtsw,7743
306
+ flwr/server/superlink/simulation/simulationio_grpc.py,sha256=VqWKxjpd4bCgPFKsgtIZPk9YcG0kc1EEmr5k20EKty4,2205
307
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=m1T1zvEn81jlfx9hVTqmeWxAu6APCS2YW8l5O0OQvhU,7724
312
308
  flwr/server/superlink/utils.py,sha256=SHx612HNv704oRqii3Q1SPtbRdn0AQQi1z-Rqg9moLk,3898
313
309
  flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
314
310
  flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
@@ -331,35 +327,39 @@ flwr/simulation/ray_transport/utils.py,sha256=KrexpWYCF-dAF3UHc9yDbPQWO-ahMT-BbD
331
327
  flwr/simulation/run_simulation.py,sha256=Nvw_6hI71aE2nU95_tt1F9VSo3OJWrvA97e3XZuqE4k,20310
332
328
  flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
333
329
  flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
330
+ flwr/supercore/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
331
+ flwr/supercore/ffs/disk_ffs.py,sha256=c5VywSaRnq3XM_zuJptNtsF2HFwsRK0pvBd5-5CNONs,3272
332
+ flwr/supercore/ffs/ffs.py,sha256=6w7wy71i7tbuJwqEgdeCa49JejXMEof3jujURN_R7Rg,2395
333
+ flwr/supercore/ffs/ffs_factory.py,sha256=pK-g3LMelvWTV6N9Cd-j-_-FdcGbRFTKNsWaqmlBDSk,1490
334
334
  flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
335
335
  flwr/supercore/object_store/in_memory_object_store.py,sha256=oflJcOuVNgx9A-B2da4VHDb1qj_Jub9wKFOrUBgtz_U,9630
336
336
  flwr/supercore/object_store/object_store.py,sha256=VlZz-yzoWZtITbnYD8vwLZbFosv7vgr1XVNzByObeY0,5853
337
337
  flwr/supercore/object_store/object_store_factory.py,sha256=QVwE2ywi7vsj2iKfvWWnNw3N_I7Rz91NUt2RpcbJ7iM,1527
338
338
  flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,715
339
339
  flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
340
- flwr/superexec/deployment.py,sha256=aDTRCM2V9iVS_gvwTSGaRIPGkm2Ro-CxFYin-Mba0P8,6853
340
+ flwr/superexec/deployment.py,sha256=cFxhFom-0zv93HLNjNcUdBy3Sf6JwshRoXPQtcZunF0,6797
341
341
  flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
342
- flwr/superexec/exec_grpc.py,sha256=oM9-cwTpZGRI3ma4wc9Xt5RwtM1GzrmCRmiOgr3jT34,3517
343
- flwr/superexec/exec_servicer.py,sha256=E70y-r17GOsCEwQvVmcDyJYp_H7fse4cxha6Gbgnaqo,12254
342
+ flwr/superexec/exec_grpc.py,sha256=lpc_rgRjtHHMzcdOzznl12D4vT22JqV5acdy45YDb0k,3498
343
+ flwr/superexec/exec_servicer.py,sha256=U2-sOV0C87zvOaWZ0sQcCtnh8ENRWs6bgJhpH1srcEs,12235
344
344
  flwr/superexec/exec_user_auth_interceptor.py,sha256=HpGHTcDKzB7XUiQHXgntNVFYL-VfP9Wj5tEVc04VOOw,5820
345
- flwr/superexec/executor.py,sha256=6kazVVypj-jtfeaHsqGElOv7FCrfqeQotYxVx1m4y84,3284
346
- flwr/superexec/simulation.py,sha256=2iRVsC2dGLuqIAvwsznt_qE3u9A-yuPsj9q94Oit_As,4212
345
+ flwr/superexec/executor.py,sha256=LaErHRJvNggjWV6FI6eajgKfnwOvSv2UqzFH253yDro,3265
346
+ flwr/superexec/simulation.py,sha256=62rSLcS-1wnMsMsafSQuIDLs5ZS6Ail1spkZ-alNNTg,4156
347
347
  flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
348
348
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
349
349
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
350
350
  flwr/supernode/cli/flower_supernode.py,sha256=ly2AQhbla2sufDaMsENaEALDEd0a4CS4D0eUrUOkHzY,8778
351
351
  flwr/supernode/cli/flwr_clientapp.py,sha256=KfVUO20ZMnUDSGZTJ9I1KkMawFsRV6kdRUmGIRNbg_8,2812
352
352
  flwr/supernode/nodestate/__init__.py,sha256=CyLLObbmmVgfRO88UCM0VMait1dL57mUauUDfuSHsbU,976
353
- flwr/supernode/nodestate/in_memory_nodestate.py,sha256=vfHgG7dxgVLo0ar4ltLOveEm7YVvXxdj0Cac4CE85qQ,6903
354
- flwr/supernode/nodestate/nodestate.py,sha256=Ro60vlm4xUm6FGNV440DrlzZ6rPsem-ULmJg0eAFmhU,6034
353
+ flwr/supernode/nodestate/in_memory_nodestate.py,sha256=LF3AbaW0bcZHY5yKWwUJSU2RZbMynt-YjFysGqvTOQY,7338
354
+ flwr/supernode/nodestate/nodestate.py,sha256=kkGFxYnLIwT4-UmlPnf6HvAUpPey2urUNrweGybAIY4,6398
355
355
  flwr/supernode/nodestate/nodestate_factory.py,sha256=UYTDCcwK_baHUmkzkJDxL0UEqvtTfOMlQRrROMCd0Xo,1430
356
356
  flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
357
357
  flwr/supernode/runtime/run_clientapp.py,sha256=cvWSby7u31u97QapWHxJM-Wer6F1k6mbbD-d1gxwxZA,7962
358
358
  flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
359
359
  flwr/supernode/servicer/clientappio/__init__.py,sha256=vJyOjO2FXZ2URbnthmdsgs6948wbYfdq1L1V8Um-Lr8,895
360
360
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=LmzkxtNQBn5vVrHc0Bhq2WqaK6-LM2v4kfLBN0PiNNM,8522
361
- flwr/supernode/start_client_internal.py,sha256=M1_sYScUzhXAg1obVf64E6UxYP0m9g6OmA2vZiB75As,18453
362
- flwr_nightly-1.19.0.dev20250616.dist-info/METADATA,sha256=dzYxYe5YgeuTZHTSGgctOaiLXYFPBczS5POBfjrRTv4,15910
363
- flwr_nightly-1.19.0.dev20250616.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
364
- flwr_nightly-1.19.0.dev20250616.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
365
- flwr_nightly-1.19.0.dev20250616.dist-info/RECORD,,
361
+ flwr/supernode/start_client_internal.py,sha256=zH6Pvi1cW-Np9F3_fvZR9ASsr4jeCoGSeC6EnAKOlig,18446
362
+ flwr_nightly-1.20.0.dev20250617.dist-info/METADATA,sha256=EAq6pSZc7jgWG0R8DJDg23VkA3W6qWagqmUbi_HilKU,15910
363
+ flwr_nightly-1.20.0.dev20250617.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
364
+ flwr_nightly-1.20.0.dev20250617.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
365
+ flwr_nightly-1.20.0.dev20250617.dist-info/RECORD,,
File without changes
File without changes
File without changes