flwr-nightly 1.21.0.dev20250827__py3-none-any.whl → 1.21.0.dev20250829__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
flwr/__init__.py CHANGED
@@ -17,12 +17,15 @@
17
17
 
18
18
  from flwr.common.version import package_version as _package_version
19
19
 
20
- from . import client, common, server, simulation
20
+ from . import app, client, clientapp, common, server, serverapp, simulation
21
21
 
22
22
  __all__ = [
23
+ "app",
23
24
  "client",
25
+ "clientapp",
24
26
  "common",
25
27
  "server",
28
+ "serverapp",
26
29
  "simulation",
27
30
  ]
28
31
 
@@ -265,6 +265,8 @@ class GrpcGrid(Grid):
265
265
  # Construct Messages
266
266
  run_id = cast(Run, self._run).run_id
267
267
  message_ids: list[str] = []
268
+ if not messages:
269
+ return message_ids
268
270
  try:
269
271
  with no_object_id_recompute():
270
272
  for msg in messages:
flwr/serverapp/fedavg.py CHANGED
@@ -197,7 +197,7 @@ class FedAvg(Strategy):
197
197
  log(
198
198
  INFO,
199
199
  "aggregate_train: Received %s results and %s failures",
200
- len(replies_with_content) - num_errors,
200
+ len(replies_with_content),
201
201
  num_errors,
202
202
  )
203
203
 
@@ -208,17 +208,19 @@ class FedAvg(Strategy):
208
208
  check_arrayrecord=True,
209
209
  )
210
210
 
211
- # Aggregate ArrayRecords
212
- arrays = aggregate_arrayrecords(
213
- replies_with_content,
214
- self.weighted_by_key,
215
- )
211
+ arrays, metrics = None, None
212
+ if replies_with_content:
213
+ # Aggregate ArrayRecords
214
+ arrays = aggregate_arrayrecords(
215
+ replies_with_content,
216
+ self.weighted_by_key,
217
+ )
216
218
 
217
- # Aggregate MetricRecords
218
- metrics = self.train_metrics_aggr_fn(
219
- replies_with_content,
220
- self.weighted_by_key,
221
- )
219
+ # Aggregate MetricRecords
220
+ metrics = self.train_metrics_aggr_fn(
221
+ replies_with_content,
222
+ self.weighted_by_key,
223
+ )
222
224
  return arrays, metrics
223
225
 
224
226
  def configure_evaluate(
@@ -273,7 +275,7 @@ class FedAvg(Strategy):
273
275
  log(
274
276
  INFO,
275
277
  "aggregate_evaluate: Received %s results and %s failures",
276
- len(replies_with_content) - num_errors,
278
+ len(replies_with_content),
277
279
  num_errors,
278
280
  )
279
281
 
@@ -283,10 +285,11 @@ class FedAvg(Strategy):
283
285
  weighted_by_key=self.weighted_by_key,
284
286
  check_arrayrecord=False,
285
287
  )
286
-
287
- # Aggregate MetricRecords
288
- metrics = self.evaluate_metrics_aggr_fn(
289
- replies_with_content,
290
- self.weighted_by_key,
291
- )
288
+ metrics = None
289
+ if replies_with_content:
290
+ # Aggregate MetricRecords
291
+ metrics = self.evaluate_metrics_aggr_fn(
292
+ replies_with_content,
293
+ self.weighted_by_key,
294
+ )
292
295
  return metrics
@@ -33,7 +33,6 @@ from flwr.common import (
33
33
  from flwr.server import Grid
34
34
 
35
35
 
36
- # Define a new exception
37
36
  class InconsistentMessageReplies(Exception):
38
37
  """Exception triggered when replies are inconsistent and therefore aggregation must
39
38
  be skipped."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250827
3
+ Version: 1.21.0.dev20250829
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
@@ -1,4 +1,4 @@
1
- flwr/__init__.py,sha256=5JdNd_I_ZxHJv2tbnM_Ug2_LQ4DkhZ2FiA7l23V13hU,937
1
+ flwr/__init__.py,sha256=CXTKPZSm83CVKTxw9j_ge6AEVnqgd1rlcsm_2kPoVkU,1009
2
2
  flwr/app/__init__.py,sha256=VNahoTMYIbIQt8EMit-UvliLoJib7uSsvKANJJXUWzM,713
3
3
  flwr/app/error.py,sha256=0PwA-E_CAs5P_nWAA0kksVO1A44t4CNLEf7u-Su-uJ0,2342
4
4
  flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
@@ -242,7 +242,7 @@ flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
242
242
  flwr/server/fleet_event_log_interceptor.py,sha256=gtVPr2yQp3U2GnabIdFnuok18VerEcidKj1lKmDYGoY,3950
243
243
  flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
244
244
  flwr/server/grid/grid.py,sha256=naGCYt5J6dnmUvrcGkdNyKPe3MBd-0awGm1ALmgahqY,6625
245
- flwr/server/grid/grpc_grid.py,sha256=lFzDmray2pLoeI0AfLWMp7FGWqen1iLuA1DlA4sMVQI,15319
245
+ flwr/server/grid/grpc_grid.py,sha256=7kIpV1W6GlHVkFtAiXOb1WVZNwXG96sZ9xpfIh5BOR4,15375
246
246
  flwr/server/grid/inmemory_grid.py,sha256=qVpTzM3yhJRIRlESWWN7RndVXYZmnbaBOeGqLsUVfo8,6189
247
247
  flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
248
248
  flwr/server/run_serverapp.py,sha256=v0p6jXj2dFxlRUdoEeF1mnaFd9XRQi6dZCflPY6d3qI,2063
@@ -321,10 +321,10 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=vGkycLb65CxdaMkKsANxQ
321
321
  flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=b_pKk7gmbahwyj0ftOOLXvu-AMtRHEc82N9PJTEO8dc,5839
322
322
  flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=DkayCsnlAya6Y2PZsueLgoUCMRtV-GbnW08RfWx_SXM,29460
323
323
  flwr/serverapp/__init__.py,sha256=SRPsqsa4pOfcF9J3_i1hb9KJi3z4KDTTCqCTwv7DcK0,864
324
- flwr/serverapp/fedavg.py,sha256=Z051Z3XBYmaMzIKRn5uSlqb9FrRTUAXxuoMurMZn3PE,10861
324
+ flwr/serverapp/fedavg.py,sha256=C8UUvLTjodMpGRb4PNej5gW2cPbXsPKebGX1zPfAMUo,11020
325
325
  flwr/serverapp/result.py,sha256=rw1ZoCGBosSVSNrTLLUFMxP1XzDwJWWsn1qdBR7JtlI,1229
326
326
  flwr/serverapp/strategy.py,sha256=1mxxtA5Pyg9lZ1d3g4OCL-m8YR_0E3HUGl8Gv5BGOXY,10982
327
- flwr/serverapp/strategy_utils.py,sha256=P2DO3pcrDTDYcrjkmYuL79Bbv2boj7T4bZ42EeRTyYk,9412
327
+ flwr/serverapp/strategy_utils.py,sha256=aDlDh1TJT7oU29FiJ6tckomRAOzhhMYccrrXbynQh9o,9387
328
328
  flwr/serverapp/strategy_utils_tests.py,sha256=taG6HwApwutkjUuMY3R8Ib48Xepw6g5xl9HEB_-leoY,9232
329
329
  flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1556
330
330
  flwr/simulation/app.py,sha256=LbGLMvN9Ap119yBqsUcNNmVLRnCySnr4VechqcQ1hpA,10401
@@ -385,7 +385,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
385
385
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
386
386
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
387
387
  flwr/supernode/start_client_internal.py,sha256=ftS8GOyT9M1tOWpbobN_Xrz4xwPAPOvsTGiWSfzhheE,20269
388
- flwr_nightly-1.21.0.dev20250827.dist-info/METADATA,sha256=bBuFboanPjg8v12eYhwPbkoGwCxFJbwgOnTUsaZG2sU,15967
389
- flwr_nightly-1.21.0.dev20250827.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
390
- flwr_nightly-1.21.0.dev20250827.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
391
- flwr_nightly-1.21.0.dev20250827.dist-info/RECORD,,
388
+ flwr_nightly-1.21.0.dev20250829.dist-info/METADATA,sha256=0fvP18PGSQea_Qghy61gQnuCAJ45upmKzo7vKpfR3jY,15967
389
+ flwr_nightly-1.21.0.dev20250829.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
390
+ flwr_nightly-1.21.0.dev20250829.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
391
+ flwr_nightly-1.21.0.dev20250829.dist-info/RECORD,,