flwr-nightly 1.13.0.dev20241106__py3-none-any.whl → 1.13.0.dev20241117__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.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

Files changed (58) hide show
  1. flwr/cli/app.py +2 -0
  2. flwr/cli/build.py +37 -0
  3. flwr/cli/install.py +5 -3
  4. flwr/cli/ls.py +228 -0
  5. flwr/cli/run/run.py +16 -5
  6. flwr/client/app.py +68 -19
  7. flwr/client/clientapp/app.py +51 -35
  8. flwr/client/grpc_rere_client/connection.py +2 -12
  9. flwr/client/nodestate/__init__.py +25 -0
  10. flwr/client/nodestate/in_memory_nodestate.py +38 -0
  11. flwr/client/nodestate/nodestate.py +30 -0
  12. flwr/client/nodestate/nodestate_factory.py +37 -0
  13. flwr/client/rest_client/connection.py +4 -14
  14. flwr/client/supernode/app.py +57 -53
  15. flwr/common/args.py +148 -0
  16. flwr/common/config.py +10 -0
  17. flwr/common/constant.py +21 -7
  18. flwr/common/date.py +18 -0
  19. flwr/common/logger.py +6 -2
  20. flwr/common/object_ref.py +47 -16
  21. flwr/common/serde.py +10 -0
  22. flwr/common/typing.py +32 -11
  23. flwr/proto/exec_pb2.py +23 -17
  24. flwr/proto/exec_pb2.pyi +50 -20
  25. flwr/proto/exec_pb2_grpc.py +34 -0
  26. flwr/proto/exec_pb2_grpc.pyi +13 -0
  27. flwr/proto/run_pb2.py +32 -27
  28. flwr/proto/run_pb2.pyi +44 -1
  29. flwr/proto/simulationio_pb2.py +2 -2
  30. flwr/proto/simulationio_pb2_grpc.py +34 -0
  31. flwr/proto/simulationio_pb2_grpc.pyi +13 -0
  32. flwr/server/app.py +83 -87
  33. flwr/server/driver/driver.py +1 -1
  34. flwr/server/driver/grpc_driver.py +6 -20
  35. flwr/server/driver/inmemory_driver.py +1 -3
  36. flwr/server/run_serverapp.py +8 -238
  37. flwr/server/serverapp/app.py +44 -89
  38. flwr/server/strategy/aggregate.py +4 -4
  39. flwr/server/superlink/fleet/rest_rere/rest_api.py +10 -9
  40. flwr/server/superlink/linkstate/in_memory_linkstate.py +76 -62
  41. flwr/server/superlink/linkstate/linkstate.py +24 -9
  42. flwr/server/superlink/linkstate/sqlite_linkstate.py +87 -128
  43. flwr/server/superlink/linkstate/utils.py +191 -32
  44. flwr/server/superlink/simulation/simulationio_servicer.py +22 -1
  45. flwr/simulation/__init__.py +3 -1
  46. flwr/simulation/app.py +245 -352
  47. flwr/simulation/legacy_app.py +402 -0
  48. flwr/simulation/run_simulation.py +8 -19
  49. flwr/simulation/simulationio_connection.py +2 -2
  50. flwr/superexec/deployment.py +13 -7
  51. flwr/superexec/exec_servicer.py +32 -3
  52. flwr/superexec/executor.py +4 -3
  53. flwr/superexec/simulation.py +52 -145
  54. {flwr_nightly-1.13.0.dev20241106.dist-info → flwr_nightly-1.13.0.dev20241117.dist-info}/METADATA +10 -7
  55. {flwr_nightly-1.13.0.dev20241106.dist-info → flwr_nightly-1.13.0.dev20241117.dist-info}/RECORD +58 -51
  56. {flwr_nightly-1.13.0.dev20241106.dist-info → flwr_nightly-1.13.0.dev20241117.dist-info}/entry_points.txt +1 -0
  57. {flwr_nightly-1.13.0.dev20241106.dist-info → flwr_nightly-1.13.0.dev20241117.dist-info}/LICENSE +0 -0
  58. {flwr_nightly-1.13.0.dev20241106.dist-info → flwr_nightly-1.13.0.dev20241117.dist-info}/WHEEL +0 -0
@@ -15,108 +15,60 @@
15
15
  """Simulation engine executor."""
16
16
 
17
17
 
18
- import json
19
- import subprocess
20
- import sys
21
- from logging import ERROR, INFO, WARN
18
+ import hashlib
19
+ from logging import ERROR, INFO
22
20
  from typing import Optional
23
21
 
24
22
  from typing_extensions import override
25
23
 
26
- from flwr.cli.config_utils import load_and_validate
27
- from flwr.cli.install import install_from_fab
28
- from flwr.common.config import unflatten_dict
29
- from flwr.common.constant import RUN_ID_NUM_BYTES
24
+ from flwr.cli.config_utils import get_fab_metadata
25
+ from flwr.common import ConfigsRecord, Context, RecordSet
30
26
  from flwr.common.logger import log
31
- from flwr.common.typing import UserConfig
27
+ from flwr.common.typing import Fab, UserConfig
28
+ from flwr.server.superlink.ffs import Ffs
32
29
  from flwr.server.superlink.ffs.ffs_factory import FfsFactory
33
- from flwr.server.superlink.linkstate import LinkStateFactory
34
- from flwr.server.superlink.linkstate.utils import generate_rand_int_from_bytes
30
+ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
35
31
 
36
32
  from .executor import Executor
37
33
 
38
34
 
39
- def _user_config_to_str(user_config: UserConfig) -> str:
40
- """Convert override user config to string."""
41
- user_config_list_str = []
42
- for key, value in user_config.items():
43
- if isinstance(value, bool):
44
- user_config_list_str.append(f"{key}={str(value).lower()}")
45
- elif isinstance(value, (int, float)):
46
- user_config_list_str.append(f"{key}={value}")
47
- elif isinstance(value, str):
48
- user_config_list_str.append(f'{key}="{value}"')
49
- else:
50
- raise ValueError(
51
- "Only types `bool`, `float`, `int` and `str` are supported"
52
- )
53
-
54
- user_config_str = ",".join(user_config_list_str)
55
- return user_config_str
56
-
57
-
58
35
  class SimulationEngine(Executor):
59
- """Simulation engine executor.
60
-
61
- Parameters
62
- ----------
63
- num_supernodes: Opitonal[str] (default: None)
64
- Total number of nodes to involve in the simulation.
65
- """
36
+ """Simulation engine executor."""
66
37
 
67
38
  def __init__(
68
39
  self,
69
- num_supernodes: Optional[int] = None,
70
- verbose: Optional[bool] = False,
71
40
  ) -> None:
72
- self.num_supernodes = num_supernodes
73
- self.verbose = verbose
41
+ self.linkstate_factory: Optional[LinkStateFactory] = None
42
+ self.ffs_factory: Optional[FfsFactory] = None
74
43
 
75
44
  @override
76
45
  def initialize(
77
46
  self, linkstate_factory: LinkStateFactory, ffs_factory: FfsFactory
78
47
  ) -> None:
79
48
  """Initialize the executor with the necessary factories."""
49
+ self.linkstate_factory = linkstate_factory
50
+ self.ffs_factory = ffs_factory
51
+
52
+ @property
53
+ def linkstate(self) -> LinkState:
54
+ """Return the LinkState."""
55
+ if self.linkstate_factory is None:
56
+ raise RuntimeError("Executor is not initialized.")
57
+ return self.linkstate_factory.state()
58
+
59
+ @property
60
+ def ffs(self) -> Ffs:
61
+ """Return the Flower File Storage (FFS)."""
62
+ if self.ffs_factory is None:
63
+ raise RuntimeError("Executor is not initialized.")
64
+ return self.ffs_factory.ffs()
80
65
 
81
66
  @override
82
67
  def set_config(
83
68
  self,
84
69
  config: UserConfig,
85
70
  ) -> None:
86
- """Set executor config arguments.
87
-
88
- Parameters
89
- ----------
90
- config : UserConfig
91
- A dictionary for configuration values.
92
- Supported configuration key/value pairs:
93
- - "num-supernodes": int
94
- Number of nodes to register for the simulation.
95
- - "verbose": bool
96
- Set verbosity of logs.
97
- """
98
- if num_supernodes := config.get("num-supernodes"):
99
- if not isinstance(num_supernodes, int):
100
- raise ValueError("The `num-supernodes` value should be of type `int`.")
101
- self.num_supernodes = num_supernodes
102
- elif self.num_supernodes is None:
103
- log(
104
- ERROR,
105
- "To start a run with the simulation plugin, please specify "
106
- "the number of SuperNodes. This can be done by using the "
107
- "`--executor-config` argument when launching the SuperExec.",
108
- )
109
- raise ValueError(
110
- "`num-supernodes` must not be `None`, it must be a valid "
111
- "positive integer."
112
- )
113
-
114
- if verbose := config.get("verbose"):
115
- if not isinstance(verbose, bool):
116
- raise ValueError(
117
- "The `verbose` value must be a string `true` or `false`."
118
- )
119
- self.verbose = verbose
71
+ """Set executor config arguments."""
120
72
 
121
73
  # pylint: disable=too-many-locals
122
74
  @override
@@ -124,87 +76,42 @@ class SimulationEngine(Executor):
124
76
  self,
125
77
  fab_file: bytes,
126
78
  override_config: UserConfig,
127
- federation_config: UserConfig,
79
+ federation_options: ConfigsRecord,
128
80
  ) -> Optional[int]:
129
81
  """Start run using the Flower Simulation Engine."""
130
- if self.num_supernodes is None:
131
- raise ValueError(
132
- "Error in `SuperExec` (`SimulationEngine` executor):\n\n"
133
- "`num-supernodes` must not be `None`, it must be a valid "
134
- "positive integer. In order to start this simulation executor "
135
- "with a specified number of `SuperNodes`, you can either provide "
136
- "a `--executor` that has been initialized with a number of nodes "
137
- "to the `flower-superexec` CLI, or `--executor-config num-supernodes=N`"
138
- "to the `flower-superexec` CLI."
139
- )
140
82
  try:
141
-
142
- # Install FAB to flwr dir
143
- fab_path = install_from_fab(fab_file, None, True)
144
-
145
- # Install FAB Python package
146
- subprocess.run(
147
- [sys.executable, "-m", "pip", "install", "--no-deps", str(fab_path)],
148
- stdout=None if self.verbose else subprocess.DEVNULL,
149
- stderr=None if self.verbose else subprocess.DEVNULL,
150
- check=True,
151
- )
152
-
153
- # Load and validate config
154
- config, errors, warnings = load_and_validate(fab_path / "pyproject.toml")
155
- if errors:
156
- raise ValueError(errors)
157
-
158
- if warnings:
159
- log(WARN, warnings)
160
-
161
- if config is None:
83
+ # Check that num-supernodes is set
84
+ if "num-supernodes" not in federation_options:
162
85
  raise ValueError(
163
- "Config extracted from FAB's pyproject.toml is not valid"
86
+ "Federation options doesn't contain key `num-supernodes`."
164
87
  )
165
88
 
166
- # Flatten federated config
167
- federation_config_flat = unflatten_dict(federation_config)
89
+ # Create run
90
+ fab = Fab(hashlib.sha256(fab_file).hexdigest(), fab_file)
91
+ fab_hash = self.ffs.put(fab.content, {})
92
+ if fab_hash != fab.hash_str:
93
+ raise RuntimeError(
94
+ f"FAB ({fab.hash_str}) hash from request doesn't match contents"
95
+ )
96
+ fab_id, fab_version = get_fab_metadata(fab.content)
168
97
 
169
- num_supernodes = federation_config_flat.get(
170
- "num-supernodes", self.num_supernodes
98
+ run_id = self.linkstate.create_run(
99
+ fab_id, fab_version, fab_hash, override_config, federation_options
171
100
  )
172
- backend_cfg = federation_config_flat.get("backend", {})
173
- verbose: Optional[bool] = federation_config_flat.get("verbose")
174
-
175
- # In Simulation there is no SuperLink, still we create a run_id
176
- run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES)
177
- log(INFO, "Created run %s", str(run_id))
178
101
 
179
- # Prepare commnand
180
- command = [
181
- "flower-simulation",
182
- "--app",
183
- f"{str(fab_path)}",
184
- "--num-supernodes",
185
- f"{num_supernodes}",
186
- "--run-id",
187
- str(run_id),
188
- ]
189
-
190
- if backend_cfg:
191
- # Stringify as JSON
192
- command.extend(["--backend-config", json.dumps(backend_cfg)])
193
-
194
- if verbose:
195
- command.extend(["--verbose"])
196
-
197
- if override_config:
198
- override_config_str = _user_config_to_str(override_config)
199
- command.extend(["--run-config", f"{override_config_str}"])
200
-
201
- # Start Simulation
202
- _ = subprocess.Popen( # pylint: disable=consider-using-with
203
- command,
204
- text=True,
102
+ # Create an empty context for the Run
103
+ context = Context(
104
+ run_id=run_id,
105
+ node_id=0,
106
+ node_config={},
107
+ state=RecordSet(),
108
+ run_config={},
205
109
  )
206
110
 
207
- log(INFO, "Started run %s", str(run_id))
111
+ # Register the context at the LinkState
112
+ self.linkstate.set_serverapp_context(run_id=run_id, context=context)
113
+
114
+ log(INFO, "Created run %s", str(run_id))
208
115
 
209
116
  return run_id
210
117
 
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241106
4
- Summary: Flower: A Friendly Federated Learning Framework
3
+ Version: 1.13.0.dev20241117
4
+ Summary: Flower: A Friendly Federated AI Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
7
- Keywords: flower,fl,federated learning,federated analytics,federated evaluation,machine learning
7
+ Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
8
8
  Author: The Flower Authors
9
9
  Author-email: hello@flower.ai
10
10
  Requires-Python: >=3.9,<4.0
@@ -21,6 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Programming Language :: Python :: 3.13
24
25
  Classifier: Programming Language :: Python :: Implementation :: CPython
25
26
  Classifier: Topic :: Scientific/Engineering
26
27
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -32,14 +33,16 @@ Classifier: Typing :: Typed
32
33
  Provides-Extra: rest
33
34
  Provides-Extra: simulation
34
35
  Requires-Dist: cryptography (>=42.0.4,<43.0.0)
35
- Requires-Dist: grpcio (>=1.60.0,<2.0.0,!=1.64.2,!=1.65.1,!=1.65.2,!=1.65.4,!=1.65.5,!=1.66.0,!=1.66.1)
36
+ Requires-Dist: grpcio (>=1.60.0,<2.0.0,!=1.64.2,<=1.64.3)
37
+ Requires-Dist: hatchling (>=1.25.0,<2.0.0)
36
38
  Requires-Dist: iterators (>=0.0.2,<0.0.3)
37
- Requires-Dist: numpy (>=1.21.0,<2.0.0)
39
+ Requires-Dist: numpy (>=1.26.0,<3.0.0)
38
40
  Requires-Dist: pathspec (>=0.12.1,<0.13.0)
39
41
  Requires-Dist: protobuf (>=4.25.2,<5.0.0)
40
42
  Requires-Dist: pycryptodome (>=3.18.0,<4.0.0)
41
43
  Requires-Dist: ray (==2.10.0) ; (python_version >= "3.9" and python_version < "3.12") and (extra == "simulation")
42
44
  Requires-Dist: requests (>=2.31.0,<3.0.0) ; extra == "rest"
45
+ Requires-Dist: rich (>=13.5.0,<14.0.0)
43
46
  Requires-Dist: starlette (>=0.31.0,<0.32.0) ; extra == "rest"
44
47
  Requires-Dist: tomli (>=2.0.1,<3.0.0)
45
48
  Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
@@ -49,7 +52,7 @@ Project-URL: Documentation, https://flower.ai
49
52
  Project-URL: Repository, https://github.com/adap/flower
50
53
  Description-Content-Type: text/markdown
51
54
 
52
- # Flower: A Friendly Federated Learning Framework
55
+ # Flower: A Friendly Federated AI Framework
53
56
 
54
57
  <p align="center">
55
58
  <a href="https://flower.ai/">
@@ -72,7 +75,7 @@ Description-Content-Type: text/markdown
72
75
  [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-flwr-blue)](https://hub.docker.com/u/flwr)
73
76
  [![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.ai/join-slack)
74
77
 
75
- Flower (`flwr`) is a framework for building federated learning systems. The
78
+ Flower (`flwr`) is a framework for building federated AI systems. The
76
79
  design of Flower is based on a few guiding principles:
77
80
 
78
81
  - **Customizable**: Federated learning systems vary wildly from one use case to
@@ -1,11 +1,12 @@
1
1
  flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
2
2
  flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
3
- flwr/cli/app.py,sha256=_HDs7HS12Dp7NXIyVrkPs1SKJq3x-XvVZd6y1lvyud4,1255
4
- flwr/cli/build.py,sha256=k2M0aIY2q5WB_yXQ22Woxt1zb6m-Z1wNwmhWMxEm5Dw,6344
3
+ flwr/cli/app.py,sha256=h1RCGBUtiL1JTC6yoihlOlB-k4imJ0ToS8uG4haFiyU,1292
4
+ flwr/cli/build.py,sha256=a_43l2HL2K1z2x_IJGUw_4KrEZrJiiw_yVq_bdUyFes,7457
5
5
  flwr/cli/config_utils.py,sha256=n-xNkQG_0POz5UUHyE00lthNaOjuS6IYU9Thzb_BThs,11431
6
6
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
7
- flwr/cli/install.py,sha256=7Dx8zrn49mTktxGOToBhGx8hzsHOViDasMJ43ooKPXc,8646
7
+ flwr/cli/install.py,sha256=kDLZDZpIVIK9GaNdxCEHHAEAfqo5IfdG2P2SRZHjSDI,8695
8
8
  flwr/cli/log.py,sha256=WlAuxZdTUYZ5bRKkm0jLWrOxHTS0TlSA5BeDtO9xF3k,6659
9
+ flwr/cli/ls.py,sha256=lUXG07ebrq0bYOWdZk9i8pslvmou_v6DNiuj_PugOqY,7704
9
10
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
10
11
  flwr/cli/new/new.py,sha256=uSiG7aXQzPDnikv2YcjQ86OOLqint0hNWCI0fSQD0jI,9634
11
12
  flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
@@ -61,14 +62,14 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=LUsQsEVhCgGzKEBB5Ie
61
62
  flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=BiZPOKEoGiZOuxSHQY_nQHj3KH7wH7QAiVmpxGutOgk,686
62
63
  flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=6R_bIGyPvXlCtLABF8fHLmGBNlIptG8QrYM69_Fy_nk,710
63
64
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
64
- flwr/cli/run/run.py,sha256=FCdETDR3d_Aqw3Bn-oGogiAjOqH87AWLtcwifgJLAcQ,6034
65
+ flwr/cli/run/run.py,sha256=TQm7M0a-oSeNXPCsn75qYrkGB0IPbk0HulcYk1gwmR0,6293
65
66
  flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
66
67
  flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
67
- flwr/client/app.py,sha256=fEUTXz_uNwZe-otCbUf5F3sJozGfvkrMNS3u7DE6sOo,32808
68
+ flwr/client/app.py,sha256=1XroQmYNXSoTTVIWpKcCqkYYgnBMMVNtB6fPrZmd3ok,34980
68
69
  flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
69
70
  flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
70
71
  flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
71
- flwr/client/clientapp/app.py,sha256=673TTaTl3r73c1nvRcgQECz8kXqszf_8Aw72SxI0lTg,7856
72
+ flwr/client/clientapp/app.py,sha256=W6wOlysris-JGKM5Wq-OrYNHl7rYgaAepEaRI1wMWo4,8725
72
73
  flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
73
74
  flwr/client/clientapp/utils.py,sha256=Xg23Q7g7r9jrxXEbvJ9wXal_uAqYK3mi087u0QER6-I,4343
74
75
  flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
@@ -78,7 +79,7 @@ flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1
78
79
  flwr/client/grpc_client/connection.py,sha256=Y9yJkRvGypulerX9fviP4axF5XBTBnvYrsp2mv5OS9E,9411
79
80
  flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
80
81
  flwr/client/grpc_rere_client/client_interceptor.py,sha256=q08lIEeJLvvonNOiejNXvmySbPObteGnbDHhEKDmWzE,5380
81
- flwr/client/grpc_rere_client/connection.py,sha256=RALwGBVQGudzNhQvLaaTNrwxABWeghzQO7FpFmUM9is,11156
82
+ flwr/client/grpc_rere_client/connection.py,sha256=c3s-79EToJymlCDNu5aIwu3qZ9XW8DMNGXoOG6fR52E,10929
82
83
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=sQo0I9T65t97LFGoW_PrmgaTbd18GFgi2DoAI5wQJ4k,5589
83
84
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
84
85
  flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
@@ -92,27 +93,32 @@ flwr/client/mod/secure_aggregation/__init__.py,sha256=A7DzZ3uvXTUkuHBzrxJMWQQD4R
92
93
  flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=wI9tuIEvMUETz-wVIEbPYvh-1nK9CEylBLGoVpNhL94,1095
93
94
  flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=7cNXsY07ZA0M5_9VSc52F8JUoAoGaraNDA2rgaLvvFo,19680
94
95
  flwr/client/mod/utils.py,sha256=dFcTHOjUuuiw34fcQlvyzytYD0sCv1w9x8fQX1Yo8Oc,1201
96
+ flwr/client/nodestate/__init__.py,sha256=UBK-iI4BTiiFi3v6SBo2cizaRRhZzTzkXOhbAZB7cs8,975
97
+ flwr/client/nodestate/in_memory_nodestate.py,sha256=MKI3jVPARPWJmNGw61k1-9LIXROkTx2PrhWjDM8cpHk,1291
98
+ flwr/client/nodestate/nodestate.py,sha256=2sSziyHK65ygayLcEoR78erqyrRe10tZ2tB-QISdRB4,1023
99
+ flwr/client/nodestate/nodestate_factory.py,sha256=LipmYzjYlN2U-CYN20d8Kk0PXyCAJq3L3VQFc6QscJc,1429
95
100
  flwr/client/numpy_client.py,sha256=tqGyhIkeeZQGr65BR03B7TWgx4rW3FA7G2874D8z_VU,11167
96
101
  flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
97
- flwr/client/rest_client/connection.py,sha256=k-RqgUFqidACAGlMFPIUM8aawXI5h2LvKUri2OAK7Bg,12817
102
+ flwr/client/rest_client/connection.py,sha256=cBLtI-nUTELn5zpS42sbnc--0wxc1DdHkVGAlfRSc2Y,12626
98
103
  flwr/client/run_info_store.py,sha256=ZN2Phi4DSLbSyzg8RmzJcVYh1g6eurHOmWRCT7GMtw4,4040
99
104
  flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
100
- flwr/client/supernode/app.py,sha256=JN24tRBHLbFJ0KeCTA8eS24KUJHCl9J2xGwWjyPQ7Vg,12239
105
+ flwr/client/supernode/app.py,sha256=gb7tkT3l6tF2hOumeaELDQFvnTHwtvt5rSELVXUsTdo,12363
101
106
  flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
102
107
  flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
103
108
  flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
104
- flwr/common/config.py,sha256=nYA1vjiiqSWx5JjSdlQd1i_0N_Dh9kEGUse1Qze3JMs,7803
105
- flwr/common/constant.py,sha256=-YsUgUiaScB3vvoppQ3h8_Ww-bkaNgLK72wwi2qZj6M,4756
109
+ flwr/common/args.py,sha256=y9qtPIwyijegNi0GbQT5ddRtMUITM-DlgilC1Co-nvw,6133
110
+ flwr/common/config.py,sha256=qC1QvGAGr4faBtg3Y5dWhfyK5FggyWUMjPqg-Rx_FW4,8083
111
+ flwr/common/constant.py,sha256=41xaDQdeDMowFQ3Y34V132ICftGJJ2cVrZYyBmu6FZg,5418
106
112
  flwr/common/context.py,sha256=uJ-mnoC_8y_udEb3kAX-r8CPphNTWM72z1AlsvQEu54,2403
107
- flwr/common/date.py,sha256=uTvLmCkd3uVQuD4MviPHnIXMGyheL16mEI_UlOsv_R8,894
113
+ flwr/common/date.py,sha256=NHHpESce5wYqEwoDXf09gp9U9l_5Bmlh2BsOcwS-kDM,1554
108
114
  flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
109
115
  flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf6d3qk6K7KBZGlV4Q,1074
110
116
  flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
111
117
  flwr/common/exit_handlers.py,sha256=MracJaBeoCOC7TaXK9zCJQxhrMSx9ZtczK237qvhBpU,2806
112
118
  flwr/common/grpc.py,sha256=6Yi28JjAll19nxYJlOT9B03RN8dvJZP9zUoR3RSmxoY,2487
113
- flwr/common/logger.py,sha256=AJNu-cymiQUp4Dw1zkw5xww_HVkUAhHvtYxwzUtuohM,11065
119
+ flwr/common/logger.py,sha256=q_PKjfgUEH-yrjPSIvzzaKocWBqEOaILAmfKOOyEcDE,11197
114
120
  flwr/common/message.py,sha256=4O1m0OWXBAYZz05gKgEtnoJ94J1gjo7hCNHyUXThxRo,13831
115
- flwr/common/object_ref.py,sha256=5lgWqYaJR28UdFc-iirWw9YqFXMfgkOOAdfJc1AVibE,8711
121
+ flwr/common/object_ref.py,sha256=DavEkh-IJv_s0VeLsJvSZS5k-Ix_k1UcNXbldfNFXxM,9859
116
122
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
117
123
  flwr/common/pyproject.py,sha256=EI_ovbCHGmhYrdPx0RSDi5EkFZFof-8m1PA54c0ZTjc,1385
118
124
  flwr/common/record/__init__.py,sha256=ejDBQOIA0OkwZAC5cK_tTPHA4oAM0Ju7Oi13-NneMlE,1054
@@ -132,9 +138,9 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=zvVAIrIyI6OSzGhpCi8
132
138
  flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCMOS7VD93zHCzuv3MHU,2304
133
139
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
134
140
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=o7IhHH6J9xqinhQy3TdPgQpoj1XyEpyv3OQFyx81RVQ,3193
135
- flwr/common/serde.py,sha256=_z7-2XC-ecfEPzv2wEjJMTp9YH5FJqgQrTBZneDmhzA,30630
141
+ flwr/common/serde.py,sha256=K9ExsqcTPETESkt2HMaNtIQAIAfwmuwtJFlG-59I7Sw,31046
136
142
  flwr/common/telemetry.py,sha256=20AYNaePOBaSEh99PIuBrxRxtY53-kZ5-2Ej0JWUJmc,8731
137
- flwr/common/typing.py,sha256=fS_KmVdg0c1B87yMnccIPfjBzQ3CTRwYJcaWfmvZzEA,5103
143
+ flwr/common/typing.py,sha256=RLq2f9jhE_Nndtk023cPMG0LpoQHaacEsww-3j0xs4Q,5710
138
144
  flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
139
145
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
140
146
  flwr/proto/clientappio_pb2.py,sha256=Y3PMv-JMaBGehpslgbvGY6l2u5vNpfCTFWu-fmAmBJ4,3703
@@ -153,10 +159,10 @@ flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
153
159
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
154
160
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
155
161
  flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
156
- flwr/proto/exec_pb2.py,sha256=jrPfFdZrT7L6kI-MGu6Ej2rYpd8sgen27bm6njrTrrk,3335
157
- flwr/proto/exec_pb2.pyi,sha256=rvf6cp7YXGQiltzjhd7ZeZmyAeHexDKTp_5kyavZYsA,4612
158
- flwr/proto/exec_pb2_grpc.py,sha256=faAN19XEMP8GTKrcIU6jvlWkN44n2KiUsZh_OG0sYcg,4072
159
- flwr/proto/exec_pb2_grpc.pyi,sha256=VrFhT1Um3Nb8UC2YqnR9GIiM-Yyx0FqaxVOWljh-G_w,1208
162
+ flwr/proto/exec_pb2.py,sha256=uKvQah9kbPj9PpduEFqpxYX0t_yWjHDMa5IBwl7vqKA,4022
163
+ flwr/proto/exec_pb2.pyi,sha256=RJUqVsDKDZAxRSypeM4rhg4PCYsal_iVomps3GA_T_Y,6016
164
+ flwr/proto/exec_pb2_grpc.py,sha256=kPXb_vp2Swl-1nkQEHJaqXKXi9P8pauBFemboGFgI9Q,5621
165
+ flwr/proto/exec_pb2_grpc.pyi,sha256=qnefAjYPdWs-yYTPIfsbecoKWbVKjp6IFZHwN82ZGUo,1601
160
166
  flwr/proto/fab_pb2.py,sha256=3QSDq9pjbZoqVxsmCRDwHO5PrSjzn2vixjYxE-qPmb0,1589
161
167
  flwr/proto/fab_pb2.pyi,sha256=fXI108QaFtbl1WWTyslPbIx9c_19D0aYCoFn0xYtL4U,2277
162
168
  flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -185,18 +191,18 @@ flwr/proto/recordset_pb2.py,sha256=XjEIDU-YlKSY59qNd0qXTFB4COvMHGiszQ5O1krJ1Ks,6
185
191
  flwr/proto/recordset_pb2.pyi,sha256=ypFNvroU4aIlnN0D6W4XAsOfm0UzTfXhxxL1v7u__Ac,15370
186
192
  flwr/proto/recordset_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
187
193
  flwr/proto/recordset_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
188
- flwr/proto/run_pb2.py,sha256=pwel-8Hzsz1Gw2EHGEFKObgSEKQNth7nGZOEsJQO8fM,4940
189
- flwr/proto/run_pb2.pyi,sha256=pr7MPml_7gOmBuu7BO-yaU-LexamsJYxnRG-utigVAo,9641
194
+ flwr/proto/run_pb2.py,sha256=J2TQwf-S0o9ImGuQLrczw99S0GSXm6hk-npJ8rXAC0Y,5743
195
+ flwr/proto/run_pb2.pyi,sha256=i6TEwphuFH94_kT2hZWb_RjndLuphkPrT3C2VP-NnVs,11739
190
196
  flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
191
197
  flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
192
198
  flwr/proto/serverappio_pb2.py,sha256=zWnODeaj26oSx98-BFvwtWM_fYvsw9OeSIuV7JnKVvw,4822
193
199
  flwr/proto/serverappio_pb2.pyi,sha256=Ib9c32FCtjA9zZY54Ohi6B-DtLgSjokAqOExm_2uOvY,6429
194
200
  flwr/proto/serverappio_pb2_grpc.py,sha256=M__pFMmb9yTAGMHVd3_K1V6DeLRuFc9UErJHWjBAsZs,17439
195
201
  flwr/proto/serverappio_pb2_grpc.pyi,sha256=ERM-0cQVmUqrVXlvEbS2wfUZpZmv5SlIeNsGZPYMrVo,4779
196
- flwr/proto/simulationio_pb2.py,sha256=Za9bndkWX7TPoiNmlnQeRHR4DQ2UrbaagDtirKOb-0U,2884
202
+ flwr/proto/simulationio_pb2.py,sha256=sCJQp_NEJSDtC4EKzyy2yZWtu9z7PGUUFJpLjdA9VUs,3011
197
203
  flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
198
- flwr/proto/simulationio_pb2_grpc.py,sha256=6bLKBXsB8Oam8RurI0i8kPKe_1VpnbqY7RrD9nqs1PM,7900
199
- flwr/proto/simulationio_pb2_grpc.pyi,sha256=d_BJaLr6bG_lcQoZuyglqAr6uJm6ttJhE0sk4zZf5N8,2320
204
+ flwr/proto/simulationio_pb2_grpc.py,sha256=-qcd4rOOK-46LcP57oZswqwASpy2_UvMJmJ80OpzuNM,9622
205
+ flwr/proto/simulationio_pb2_grpc.pyi,sha256=Bk4K7MsPpxF6RmIqByySQIXJeJ1pBrU2I19hrKUoFdI,2795
200
206
  flwr/proto/task_pb2.py,sha256=R5GfHgL8IJRI_qHWNeILl1Y9zHjvB0tnCvMHmTgF4Is,2361
201
207
  flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
202
208
  flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -207,7 +213,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
207
213
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
208
214
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
215
  flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
210
- flwr/server/app.py,sha256=uEn-pPorwf2HAzKf6cG1JkFgJTvUbTnp4oucU7MLdE4,29861
216
+ flwr/server/app.py,sha256=UAynn_AmJotTMS8ebY1Gqe7Qft9slSlSMKyWfnriB7M,28919
211
217
  flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
212
218
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
213
219
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
@@ -217,19 +223,19 @@ flwr/server/compat/driver_client_proxy.py,sha256=Af0bRUEVZNcCYRxt3DjpLPdvVYpTgz6
217
223
  flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
218
224
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
219
225
  flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
220
- flwr/server/driver/driver.py,sha256=gHHO8oFkFWYf1J9wn4aKCcnzx7hXsmY_JO5jr004s68,5702
221
- flwr/server/driver/grpc_driver.py,sha256=ziRzquh1fuC-joaalHKI_zcqm9k1kDpZYDIzGa33TsI,9629
222
- flwr/server/driver/inmemory_driver.py,sha256=DcWFhV57p2OGgVYIdNlB65_o2lviClk9yVp_4XtdYPg,6458
226
+ flwr/server/driver/driver.py,sha256=u_fMfqLYTroTafGCNwKPHI4lttRL-Z5CqeT3_FHSq-Q,5701
227
+ flwr/server/driver/grpc_driver.py,sha256=lIOeAPvTIRAebRitTONZE1ji4UTGjIsMor-dW_X8eDw,9300
228
+ flwr/server/driver/inmemory_driver.py,sha256=gfB4jmkk1indhRa9XCdKCXghVcWBF1qBD-tAxMUyQm0,6404
223
229
  flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
224
- flwr/server/run_serverapp.py,sha256=lYaslawycvJ0A8GD-h9Q2etp8ZgYzmEhcP_Bo91qjtQ,10561
230
+ flwr/server/run_serverapp.py,sha256=oDfHaHyVT5BRcckFFQKg8AVPCWR1ek7OhNceTC8qq9g,2493
225
231
  flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
226
232
  flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
227
233
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
228
234
  flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
229
- flwr/server/serverapp/app.py,sha256=-OUdiyNjnPwibznlc-1hQ54oUT2EowdPVheXUKCW6LM,8988
235
+ flwr/server/serverapp/app.py,sha256=Fa26GCuq53cJYH7cII8iaEq8EtfLrNB90MOeHzU81EE,7554
230
236
  flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
231
237
  flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
232
- flwr/server/strategy/aggregate.py,sha256=iFZ8lp7PV_a2m9kywV-FK0iM33ofxavOs5TIaEQY8nU,13961
238
+ flwr/server/strategy/aggregate.py,sha256=PDvekufza13s9AsVmz9WASunaBs3yCtl8JVliFx9j6Q,13978
233
239
  flwr/server/strategy/bulyan.py,sha256=DDNLLlTJCHgBtij7EpDsa852GHEYjjDB1iORACZO2KE,6513
234
240
  flwr/server/strategy/dp_adaptive_clipping.py,sha256=zrqA9OfQu4gwUkLCXbh59sPsDd_x2IhNs-BER_ITzNE,17447
235
241
  flwr/server/strategy/dp_fixed_clipping.py,sha256=ILmO_AsoMpstOAYK9L6hJpqf7zE6erdMj_SD_-hHAFk,12834
@@ -274,21 +280,21 @@ flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=iZlgW7L5oVG_0
274
280
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
275
281
  flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=WAis2WPj0L91HSfOZqX-k0n9Rs3igdARKRMsV1VlTnY,4465
276
282
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
277
- flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=ob_LZopJPOtesWeE5MJkIJdFOi1G7C7T8SdOyf8Q5xE,6360
283
+ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=WX-CiZVa4ntzMlZfBzKJtOsliP1Sm7GyHhPMqVXaehg,6605
278
284
  flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
279
285
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=Onq16E2M2Wha2K1zvhcquT1jOveQL2cgIrgqWvAPH9Y,1436
280
286
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0QIvVP5O-RQxKQlUGNUj974,2194
281
287
  flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DPSioTSKD3YGtS3uJsPD7Hn2Fw,7155
282
288
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=VL6e_Jwf4uxA-X1EelxJZMv6Eji-_p2J9D0MdHG10a4,13029
283
289
  flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
284
- flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=7teZcDU__Ni5l1mDh7j4P_-GlFVxvwaxelhy7TkM6ZU,21974
285
- flwr/server/superlink/linkstate/linkstate.py,sha256=ylDV9I_j6a4LtWq-d-VWQyh8ipCob6DT7QcY6A7-LAo,12021
290
+ flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=TRayqT_pKB0JfdsAYXwtuXyG4d3vYD_vhvYixhTlAec,22327
291
+ flwr/server/superlink/linkstate/linkstate.py,sha256=9tb80YM1XhVSuiE32PVqdG7fBulqtSGM3Hv01WaFLcQ,12548
286
292
  flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
287
- flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=KLGfrJQOqCbkwC4oqeQgn0oyTyU5fm9Kv0-4v6ftenA,45159
288
- flwr/server/superlink/linkstate/utils.py,sha256=cr6HM77pefdAdhkd0dg6MIWkfwBpvedbJId5uwCPZmE,7458
293
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=iha2p7hxGRvyl1Fc9fMjfW_nvbibstTDuHgMREsY8HA,43445
294
+ flwr/server/superlink/linkstate/utils.py,sha256=d5uqqIOCKfd54X8CFNfUr3AWqPLpgmzsC_RagRwFugM,13321
289
295
  flwr/server/superlink/simulation/__init__.py,sha256=mg-oapC9dkzEfjXPQFior5lpWj4g9kwbLovptyYM_g0,718
290
296
  flwr/server/superlink/simulation/simulationio_grpc.py,sha256=5wflYW_TS0mjmPG6OYuHMJwXD2_cYmUNhFkdOU0jMWQ,2237
291
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=KRdgPt9vYGQorRgXwmCs65hpk7LHwMRU5RSk40m8t9I,5067
297
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=LsW6Cl8qH_vq04F6CeOp3vBtjTGQn4tATKHfirDmJZQ,5942
292
298
  flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
293
299
  flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
294
300
  flwr/server/utils/tensorboard.py,sha256=gEBD8w_5uaIfp5aw5RYH66lYZpd_SfkObHQ7eDd9MUk,5466
@@ -299,23 +305,24 @@ flwr/server/workflow/default_workflows.py,sha256=UMC9JgdomKwxql5G0OV4AeRXWI-bMCl
299
305
  flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B-8M_dPlVSJuTbvXIbiO-Ic,880
300
306
  flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=l2IdMdJjs1bgHs5vQgLSOVzar7v2oxUn46oCrnVE1rM,5839
301
307
  flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=rfn2etO1nb7u-1oRl-H9q3enJZz3shMINZaBB7rPsC4,29671
302
- flwr/simulation/__init__.py,sha256=om3YBJ1ZZGWFmt9ZOuq4jc-TlbvAr2bsnV9qSQja0R8,1464
303
- flwr/simulation/app.py,sha256=41Njder468ko8C-oKXJagc_mRIlhJcDwzIttOWB9dPQ,15149
308
+ flwr/simulation/__init__.py,sha256=5UcDVJNjFoSwWqHbGM1hKfTTUUNdwAtuoNvNrfvdkUY,1556
309
+ flwr/simulation/app.py,sha256=EGF20e-Uv7slJCRQeDI2erjFDiljE_RRo-4TFHOMouk,9576
310
+ flwr/simulation/legacy_app.py,sha256=ySggtKEtXe8L77n8qyGXDA7UPv840MXh-QoalzoGiLU,15780
304
311
  flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
305
312
  flwr/simulation/ray_transport/ray_actor.py,sha256=9-XBguAm5IFqm2ddPFsQtnuuFN6lzqdb00SnCxGUGBo,18996
306
313
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2vjOKoom3B74C6XU-jC3N6DwYmsLdB-lmkHZ_Xrv96o,7367
307
314
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
308
- flwr/simulation/run_simulation.py,sha256=Wnu5ivU0Fee8lCSWggXNR2e3wudvHCr-GTinm4Xb_Bk,20248
309
- flwr/simulation/simulationio_connection.py,sha256=Uqtm2pRuZqEM8SxKS2TdBgsMUABSabhVIx9zzCPb_qc,3195
315
+ flwr/simulation/run_simulation.py,sha256=2EWlyoswFUpa-IV_vPu4FFfDbUZS4ADR77M3bXV91xM,20022
316
+ flwr/simulation/simulationio_connection.py,sha256=m31L9Iej-61va48E5x-wJypA6p5s82WM4PKIAmKizQA,3209
310
317
  flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
311
318
  flwr/superexec/app.py,sha256=Tt3GonnTwHrMmicwx9XaP-crP78-bf4DUWl-N5cG6zY,1841
312
- flwr/superexec/deployment.py,sha256=cyaFosL_ue8LHu7y0EDAqbvz7npmQzfIrooR1ChKF14,6507
319
+ flwr/superexec/deployment.py,sha256=7VYmmI12zEaTHp_cQtU1GLikmqhctUHhEdshBPRFHMs,6734
313
320
  flwr/superexec/exec_grpc.py,sha256=OuhBAk7hiky9rjGceinLGIXqchtzGPQThZnwyYv6Ei0,2241
314
- flwr/superexec/exec_servicer.py,sha256=6dUCijBYhrntZeQj82q2kVOUNFu_tsFOwT5HkkLYn9Q,3927
315
- flwr/superexec/executor.py,sha256=QA2_hQJxmN3zc75oEkDs-zkWAHesz59jE0P5lem-5VU,3073
316
- flwr/superexec/simulation.py,sha256=Ny3MJnNlgzW4K3NbgsgDM0LKKcoCd_q3LqNqb0GhWLI,7640
317
- flwr_nightly-1.13.0.dev20241106.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
318
- flwr_nightly-1.13.0.dev20241106.dist-info/METADATA,sha256=Llp8R-V25ySynw2F_c3igw4PHVRfkRa8sbS63ydH248,15618
319
- flwr_nightly-1.13.0.dev20241106.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
320
- flwr_nightly-1.13.0.dev20241106.dist-info/entry_points.txt,sha256=FxJQ96pmcNF2OvkTH6XF-Ip2PNrHvykjArkvkjQC7Mk,486
321
- flwr_nightly-1.13.0.dev20241106.dist-info/RECORD,,
321
+ flwr/superexec/exec_servicer.py,sha256=M3R3q5rg2kYz-gFN-nmiXkvjels4QbieEA0K5wks0kQ,4972
322
+ flwr/superexec/executor.py,sha256=zH3_53il6Jh0ZscIVEB9f4GNnXMeBbCGyCoBCxLgiG0,3114
323
+ flwr/superexec/simulation.py,sha256=WQDon15oqpMopAZnwRZoTICYCfHqtkvFSqiTQ2hLD_g,4088
324
+ flwr_nightly-1.13.0.dev20241117.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
325
+ flwr_nightly-1.13.0.dev20241117.dist-info/METADATA,sha256=hY_iiu43zt7NGG-fsKZBRMdp4o4BCNOx_W0at0f_o9w,15722
326
+ flwr_nightly-1.13.0.dev20241117.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
327
+ flwr_nightly-1.13.0.dev20241117.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
328
+ flwr_nightly-1.13.0.dev20241117.dist-info/RECORD,,
@@ -8,4 +8,5 @@ flower-supernode=flwr.client.supernode.app:run_supernode
8
8
  flwr=flwr.cli.app:app
9
9
  flwr-clientapp=flwr.client.clientapp:flwr_clientapp
10
10
  flwr-serverapp=flwr.server.serverapp:flwr_serverapp
11
+ flwr-simulation=flwr.simulation.app:flwr_simulation
11
12