flwr-nightly 1.14.0.dev20241219__py3-none-any.whl → 1.15.0.dev20241220__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.

@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "torch==2.2.1",
14
14
  "torchvision==0.17.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.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets>=0.3.0",
13
13
  "torch==2.3.1",
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.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets>=0.3.0",
13
13
  "torch==2.2.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.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "jax==0.4.30",
13
13
  "jaxlib==0.4.30",
14
14
  "scikit-learn==1.3.2",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets[vision]>=0.3.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.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "numpy>=1.21.0",
13
13
  ]
14
14
 
@@ -8,10 +8,10 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
- "torch==2.2.1",
14
- "torchvision==0.17.1",
13
+ "torch==2.5.1",
14
+ "torchvision==0.20.1",
15
15
  ]
16
16
 
17
17
  [tool.hatch.build.targets.wheel]
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "scikit-learn>=1.1.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.13.1",
11
+ "flwr[simulation]>=1.14.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "tensorflow>=2.11.1,<2.18.0",
14
14
  ]
@@ -114,9 +114,8 @@ def run_client_app() -> None:
114
114
  event(EventType.RUN_CLIENT_APP_ENTER)
115
115
  log(
116
116
  ERROR,
117
- "The command `flower-client-app` has been replaced by `flower-supernode`.",
117
+ "The command `flower-client-app` has been replaced by `flwr run`.",
118
118
  )
119
- log(INFO, "Execute `flower-supernode --help` to learn how to use it.")
120
119
  register_exit_handlers(event_type=EventType.RUN_CLIENT_APP_LEAVE)
121
120
 
122
121
 
flwr/common/telemetry.py CHANGED
@@ -151,6 +151,16 @@ class EventType(str, Enum):
151
151
 
152
152
  # Not yet implemented
153
153
 
154
+ # --- `flwr-*` commands ------------------------------------------------------------
155
+
156
+ # CLI: flwr-simulation
157
+ FLWR_SIMULATION_RUN_ENTER = auto()
158
+ FLWR_SIMULATION_RUN_LEAVE = auto()
159
+
160
+ # CLI: flwr-serverapp
161
+ FLWR_SERVERAPP_RUN_ENTER = auto()
162
+ FLWR_SERVERAPP_RUN_LEAVE = auto()
163
+
154
164
  # --- Simulation Engine ------------------------------------------------------------
155
165
 
156
166
  # CLI: flower-simulation
@@ -171,12 +181,12 @@ class EventType(str, Enum):
171
181
  RUN_SUPERNODE_ENTER = auto()
172
182
  RUN_SUPERNODE_LEAVE = auto()
173
183
 
174
- # CLI: `flower-server-app`
184
+ # --- DEPRECATED -------------------------------------------------------------------
185
+
186
+ # [DEPRECATED] CLI: `flower-server-app`
175
187
  RUN_SERVER_APP_ENTER = auto()
176
188
  RUN_SERVER_APP_LEAVE = auto()
177
189
 
178
- # --- DEPRECATED -------------------------------------------------------------------
179
-
180
190
  # [DEPRECATED] CLI: `flower-client-app`
181
191
  RUN_CLIENT_APP_ENTER = auto()
182
192
  RUN_CLIENT_APP_LEAVE = auto()
@@ -15,12 +15,12 @@
15
15
  """Run ServerApp."""
16
16
 
17
17
 
18
- import sys
19
18
  from logging import DEBUG, ERROR
20
19
  from typing import Optional
21
20
 
22
- from flwr.common import Context
23
- from flwr.common.logger import log, warn_unsupported_feature
21
+ from flwr.common import Context, EventType, event
22
+ from flwr.common.exit_handlers import register_exit_handlers
23
+ from flwr.common.logger import log
24
24
  from flwr.common.object_ref import load_app
25
25
 
26
26
  from .driver import Driver
@@ -66,12 +66,11 @@ def run(
66
66
  return context
67
67
 
68
68
 
69
- # pylint: disable-next=too-many-branches,too-many-statements,too-many-locals
70
69
  def run_server_app() -> None:
71
70
  """Run Flower server app."""
72
- warn_unsupported_feature(
73
- "The command `flower-server-app` is deprecated and no longer in use. "
74
- "Use the `flwr-serverapp` exclusively instead."
71
+ event(EventType.RUN_SERVER_APP_ENTER)
72
+ log(
73
+ ERROR,
74
+ "The command `flower-server-app` has been replaced by `flwr run`.",
75
75
  )
76
- log(ERROR, "`flower-server-app` used.")
77
- sys.exit()
76
+ register_exit_handlers(event_type=EventType.RUN_SERVER_APP_LEAVE)
@@ -25,6 +25,7 @@ from typing import Optional
25
25
 
26
26
  from flwr.cli.config_utils import get_fab_metadata
27
27
  from flwr.cli.install import install_from_fab
28
+ from flwr.cli.utils import get_sha256_hash
28
29
  from flwr.common.args import add_args_flwr_app_common
29
30
  from flwr.common.config import (
30
31
  get_flwr_dir,
@@ -51,6 +52,7 @@ from flwr.common.serde import (
51
52
  run_from_proto,
52
53
  run_status_to_proto,
53
54
  )
55
+ from flwr.common.telemetry import EventType, event
54
56
  from flwr.common.typing import RunNotRunningException, RunStatus
55
57
  from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
56
58
  from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
@@ -113,7 +115,8 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212, disable=R0915
113
115
  # Resolve directory where FABs are installed
114
116
  flwr_dir_ = get_flwr_dir(flwr_dir)
115
117
  log_uploader = None
116
-
118
+ success = True
119
+ hash_run_id = None
117
120
  while True:
118
121
 
119
122
  try:
@@ -129,6 +132,8 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212, disable=R0915
129
132
  run = run_from_proto(res.run)
130
133
  fab = fab_from_proto(res.fab)
131
134
 
135
+ hash_run_id = get_sha256_hash(run.run_id)
136
+
132
137
  driver.set_run(run.run_id)
133
138
 
134
139
  # Start log uploader for this run
@@ -171,6 +176,11 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212, disable=R0915
171
176
  UpdateRunStatusRequest(run_id=run.run_id, run_status=run_status_proto)
172
177
  )
173
178
 
179
+ event(
180
+ EventType.FLWR_SERVERAPP_RUN_ENTER,
181
+ event_details={"run-id-hash": hash_run_id},
182
+ )
183
+
174
184
  # Load and run the ServerApp with the Driver
175
185
  updated_context = run_(
176
186
  driver=driver,
@@ -187,17 +197,18 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212, disable=R0915
187
197
  _ = driver._stub.PushServerAppOutputs(out_req)
188
198
 
189
199
  run_status = RunStatus(Status.FINISHED, SubStatus.COMPLETED, "")
190
-
191
200
  except RunNotRunningException:
192
201
  log(INFO, "")
193
202
  log(INFO, "Run ID %s stopped.", run.run_id)
194
203
  log(INFO, "")
195
204
  run_status = None
205
+ success = False
196
206
 
197
207
  except Exception as ex: # pylint: disable=broad-exception-caught
198
208
  exc_entity = "ServerApp"
199
209
  log(ERROR, "%s raised an exception", exc_entity, exc_info=ex)
200
210
  run_status = RunStatus(Status.FINISHED, SubStatus.FAILED, str(ex))
211
+ success = False
201
212
 
202
213
  finally:
203
214
  # Stop log uploader for this run and upload final logs
@@ -213,6 +224,10 @@ def run_serverapp( # pylint: disable=R0914, disable=W0212, disable=R0915
213
224
  run_id=run.run_id, run_status=run_status_proto
214
225
  )
215
226
  )
227
+ event(
228
+ EventType.FLWR_SERVERAPP_RUN_LEAVE,
229
+ event_details={"run-id-hash": hash_run_id, "success": success},
230
+ )
216
231
 
217
232
  # Stop the loop if `flwr-serverapp` is expected to process a single run
218
233
  if run_once:
flwr/simulation/app.py CHANGED
@@ -24,7 +24,8 @@ from typing import Optional
24
24
 
25
25
  from flwr.cli.config_utils import get_fab_metadata
26
26
  from flwr.cli.install import install_from_fab
27
- from flwr.common import EventType
27
+ from flwr.cli.utils import get_sha256_hash
28
+ from flwr.common import EventType, event
28
29
  from flwr.common.args import add_args_flwr_app_common
29
30
  from flwr.common.config import (
30
31
  get_flwr_dir,
@@ -202,6 +203,15 @@ def run_simulation_process( # pylint: disable=R0914, disable=W0212, disable=R09
202
203
  verbose: bool = fed_opt.get("verbose", False)
203
204
  enable_tf_gpu_growth: bool = fed_opt.get("enable_tf_gpu_growth", False)
204
205
 
206
+ event(
207
+ EventType.FLWR_SIMULATION_RUN_ENTER,
208
+ event_details={
209
+ "backend": "ray",
210
+ "num-supernodes": num_supernodes,
211
+ "run-id-hash": get_sha256_hash(run.run_id),
212
+ },
213
+ )
214
+
205
215
  # Launch the simulation
206
216
  updated_context = _run_simulation(
207
217
  server_app_attr=server_app_attr,
@@ -214,7 +224,7 @@ def run_simulation_process( # pylint: disable=R0914, disable=W0212, disable=R09
214
224
  verbose_logging=verbose,
215
225
  server_app_run_config=fused_config,
216
226
  is_app=True,
217
- exit_event=EventType.CLI_FLOWER_SIMULATION_LEAVE,
227
+ exit_event=EventType.FLWR_SIMULATION_RUN_LEAVE,
218
228
  )
219
229
 
220
230
  # Send resulting context
@@ -28,6 +28,7 @@ from queue import Empty, Queue
28
28
  from typing import Any, Optional
29
29
 
30
30
  from flwr.cli.config_utils import load_and_validate
31
+ from flwr.cli.utils import get_sha256_hash
31
32
  from flwr.client import ClientApp
32
33
  from flwr.common import Context, EventType, RecordSet, event, log, now
33
34
  from flwr.common.config import get_fused_config_from_dir, parse_config_args
@@ -394,7 +395,13 @@ def _main_loop(
394
395
  finally:
395
396
  # Trigger stop event
396
397
  f_stop.set()
397
- event(exit_event, event_details={"success": success})
398
+ event(
399
+ exit_event,
400
+ event_details={
401
+ "run-id-hash": get_sha256_hash(run.run_id),
402
+ "success": success,
403
+ },
404
+ )
398
405
  if serverapp_th:
399
406
  serverapp_th.join()
400
407
  if server_app_thread_has_exception.is_set():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.14.0.dev20241219
3
+ Version: 1.15.0.dev20241220
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -118,7 +118,7 @@ Flower's goal is to make federated learning accessible to everyone. This series
118
118
 
119
119
  4. **Custom Clients for Federated Learning**
120
120
 
121
- [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/doc/source/tutorial-series-customize-the-client-pytorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb))
121
+ [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/adap/flower/blob/main/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb) (or open the [Jupyter Notebook](https://github.com/adap/flower/blob/main/framework/docs/source/tutorial-series-customize-the-client-pytorch.ipynb))
122
122
 
123
123
  Stay tuned, more tutorials are coming soon. Topics include **Privacy and Security in Federated Learning**, and **Scaling Federated Learning**.
124
124
 
@@ -55,15 +55,15 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN
55
55
  flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=SeIIo0rr_6ffn4Qx2xELD18jYXCkcW__NWtYEDXCICM,1843
56
56
  flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
57
57
  flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
58
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=_bT_ze1QPajyFZW0AxLILai0_2qiquB5_7FCSF0ZqCk,2666
59
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=GH8stg-XUQAsj_324Cc9RYm7etdtcR49ssglOloo8kE,1873
60
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=_LSCSc9cAiRuvTLdsy9wphwzhV7FCOUxO1ce12YOk58,1143
61
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=8xC1457V13AxTsO7SaLsqhQQPN7Aau3wbNZqKJ9Inx8,673
62
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=sJMPYaroZLM7EkIX5ulnCelKxHlpViYiSqhswEnGrB0,744
63
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=SbCIUjwCIsgTRoBb-GMwivcWdoigMvD3QbKL6TJNgWM,612
64
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=UtH3Vslg2S8fIKIHC-dJGcxz5YUK2WI3F2TUAgTsQn0,710
65
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=01HArBqRrbZT3O7pXOM9MqduXMNm525wv7Sj6dvYMJE,686
66
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=KVCIOEYNWnq6j7XOboXqZshc9aQ2PyRDUu7bZtmfJ24,710
58
+ flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=5-xGWgb1s0c4E5KXfQqWzVziJXIsUp1cGwZEsMEI31Q,2666
59
+ flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=-XdX44M9o6dl-EDBLtHLQejFGQlwQnjATgmEpA8cuq4,1873
60
+ flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=QPxFT3_7RSUVwy8jjT6SeWmV9dl2FQ26gUhdp8O7CpI,1143
61
+ flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=cFFgI0zzzyThm38iXy9OLBkPpZz8mOP1qSagBJvwxGQ,673
62
+ flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=1qeTW-GHMAWr-vuMAJ-eijco9IIsftdBeqNH7g8x3Zw,744
63
+ flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=nU-ij9nPXxmPgE2SGapXnRfghye8g_Fo1_ub5XpaKAE,612
64
+ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=PA_dEtWkY6Wf3Ektc9DvSKE81er3yDntf_VTtC1nDHc,710
65
+ flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=d7TwWH-QJN0j-9rs9zHnng_bHeHV7mk138KXqdv5BoE,686
66
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=r0SZnvoR5a5mEWKJIvQ3rW8C6-2DkhaC8A1fTA0avm0,710
67
67
  flwr/cli/run/__init__.py,sha256=cCsKVB0SFzh2b3QmGba6BHckB85xlhjh3mh4pBpACtY,790
68
68
  flwr/cli/run/run.py,sha256=BvpjYyUvDhVMvO5cG711ihtdeSbls9p8zVAuFGETLA8,7893
69
69
  flwr/cli/stop.py,sha256=1T9RNRCH8dxjmBT38hFtKAWY9Gb7RMCMCML7kex9WzE,4613
@@ -106,7 +106,7 @@ flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3
106
106
  flwr/client/rest_client/connection.py,sha256=NWBu7Cc8LUTlf7GjJl3rgdCAykrE5suul_xZUV21OgI,12659
107
107
  flwr/client/run_info_store.py,sha256=ZN2Phi4DSLbSyzg8RmzJcVYh1g6eurHOmWRCT7GMtw4,4040
108
108
  flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
109
- flwr/client/supernode/app.py,sha256=qh_hhV_PihPfzL8UMXkwvQJVHRautdsCNd5WKv_Wd40,11483
109
+ flwr/client/supernode/app.py,sha256=LCZs4ImGkleGgsn-b1AOK-u_P8Gi5nKeSvicEDRDF8Q,11400
110
110
  flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
111
111
  flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
112
112
  flwr/common/address.py,sha256=9KNYE69WW_QVcyumsux3Qn1wmn4J7f13Y9nHASpvzbA,3018
@@ -145,7 +145,7 @@ flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCM
145
145
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
146
146
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=OgYd68YBRaHQYLc-YdExj9CSpwL58bVTaPrdHoAj2AE,3214
147
147
  flwr/common/serde.py,sha256=K9ExsqcTPETESkt2HMaNtIQAIAfwmuwtJFlG-59I7Sw,31046
148
- flwr/common/telemetry.py,sha256=CHIwFFQ13sWFavmEvkvA43XR1sbh1S3nWvD5TuCO2eI,8774
148
+ flwr/common/telemetry.py,sha256=APKVubU_zJNrE-M_rip6S6Fsu41DxY3tAjFWNOgTmC0,9086
149
149
  flwr/common/typing.py,sha256=eTlGl56rdus583r11xHY_ejG-3b3rknqF735UY5zMK8,6025
150
150
  flwr/common/version.py,sha256=aNSxLL49RKeLz8sPcZrsTEWtrAeQ0uxu6tjmfba4O60,1325
151
151
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
@@ -225,12 +225,12 @@ flwr/server/driver/driver.py,sha256=u_fMfqLYTroTafGCNwKPHI4lttRL-Z5CqeT3_FHSq-Q,
225
225
  flwr/server/driver/grpc_driver.py,sha256=9Vns8XRSc3WmQn8KejJtJftgsg3UzsEwqPC8ekTGSHY,9636
226
226
  flwr/server/driver/inmemory_driver.py,sha256=fCDhbP3OGmqWrUPQlagsMFGbEwFT0pn9OqhxeHr65zg,6614
227
227
  flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
228
- flwr/server/run_serverapp.py,sha256=oDfHaHyVT5BRcckFFQKg8AVPCWR1ek7OhNceTC8qq9g,2493
228
+ flwr/server/run_serverapp.py,sha256=vIPhvJx0i5sEZO4IKM6ruCXmx4ncat76rh0B4KhdhhM,2446
229
229
  flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
230
230
  flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
231
231
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
232
232
  flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
233
- flwr/server/serverapp/app.py,sha256=wAIN72ESE7yY6W7qShCfnVF-DVgeGmfpIxW1JZUFWDc,7911
233
+ flwr/server/serverapp/app.py,sha256=eh15kToGVRdIFXHyVKa58tWN5Hh3EIXHcYEbcIqqNb0,8467
234
234
  flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
235
235
  flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
236
236
  flwr/server/strategy/aggregate.py,sha256=PDvekufza13s9AsVmz9WASunaBs3yCtl8JVliFx9j6Q,13978
@@ -305,13 +305,13 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B
305
305
  flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=l2IdMdJjs1bgHs5vQgLSOVzar7v2oxUn46oCrnVE1rM,5839
306
306
  flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=rfn2etO1nb7u-1oRl-H9q3enJZz3shMINZaBB7rPsC4,29671
307
307
  flwr/simulation/__init__.py,sha256=5UcDVJNjFoSwWqHbGM1hKfTTUUNdwAtuoNvNrfvdkUY,1556
308
- flwr/simulation/app.py,sha256=Q9vZFVUvy2_QNNUpyElCmAMfe4d90mSoX9rGpzgZjD4,9412
308
+ flwr/simulation/app.py,sha256=cQgIJJujFUpBCcydxgakNygibf3Iww6OAWRo7Sq6y8w,9754
309
309
  flwr/simulation/legacy_app.py,sha256=ySggtKEtXe8L77n8qyGXDA7UPv840MXh-QoalzoGiLU,15780
310
310
  flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
311
311
  flwr/simulation/ray_transport/ray_actor.py,sha256=k11yoAPQzFGQU-KnCCP0ZrfPPdUPXXrBe-1DKM5VdW4,18997
312
312
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2vjOKoom3B74C6XU-jC3N6DwYmsLdB-lmkHZ_Xrv96o,7367
313
313
  flwr/simulation/ray_transport/utils.py,sha256=wtbQhKQ4jGoiQDLJNQP17m1DSfL22ERhDBGuoeUFaAQ,2393
314
- flwr/simulation/run_simulation.py,sha256=MSD2USh40j8vRrUyJeb3ngtghB8evtFLBMi6nUfpljY,20169
314
+ flwr/simulation/run_simulation.py,sha256=Vw0QRT0WjOQUCv1_jxqHsbjhos3huT5cm36NPUwgNOQ,20338
315
315
  flwr/simulation/simulationio_connection.py,sha256=8aAh6MKQkQPMSnWEqA5vua_QzZtoMxG-_-AB23RPhS4,3412
316
316
  flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
317
317
  flwr/superexec/app.py,sha256=Z6kYHWd62YL0Q4YKyCAbt_BcefNfbKH6V-jCC-1NkZM,1842
@@ -321,8 +321,8 @@ flwr/superexec/exec_servicer.py,sha256=8tFwj1fDBF6PzwLhByTlxM-KNZc83bG1UdE92-8DS
321
321
  flwr/superexec/exec_user_auth_interceptor.py,sha256=K06OU-l4LnYhTDg071hGJuOaQWEJbZsYi5qxUmmtiG0,3704
322
322
  flwr/superexec/executor.py,sha256=_B55WW2TD1fBINpabSSDRenVHXYmvlfhv-k8hJKU4lQ,3115
323
323
  flwr/superexec/simulation.py,sha256=WQDon15oqpMopAZnwRZoTICYCfHqtkvFSqiTQ2hLD_g,4088
324
- flwr_nightly-1.14.0.dev20241219.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
325
- flwr_nightly-1.14.0.dev20241219.dist-info/METADATA,sha256=MrzB3rgo1I9lerAuVmhkHS8hWfQ7nf2tnRYSdrk4I58,15799
326
- flwr_nightly-1.14.0.dev20241219.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
327
- flwr_nightly-1.14.0.dev20241219.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
328
- flwr_nightly-1.14.0.dev20241219.dist-info/RECORD,,
324
+ flwr_nightly-1.15.0.dev20241220.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
325
+ flwr_nightly-1.15.0.dev20241220.dist-info/METADATA,sha256=--cUbBSS2RHrCjDUm1vD0uMl90Wmg6DxacjfT8cZmgk,15810
326
+ flwr_nightly-1.15.0.dev20241220.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
327
+ flwr_nightly-1.15.0.dev20241220.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
328
+ flwr_nightly-1.15.0.dev20241220.dist-info/RECORD,,