flwr-nightly 1.7.0.dev20240116__py3-none-any.whl → 1.7.0.dev20240118__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 (55) hide show
  1. flwr/client/app.py +7 -4
  2. flwr/client/dpfedavg_numpy_client.py +4 -4
  3. flwr/client/grpc_client/connection.py +7 -4
  4. flwr/client/grpc_rere_client/connection.py +4 -4
  5. flwr/client/message_handler/message_handler.py +11 -2
  6. flwr/client/message_handler/task_handler.py +8 -6
  7. flwr/client/node_state_tests.py +1 -1
  8. flwr/client/numpy_client.py +2 -2
  9. flwr/client/rest_client/connection.py +7 -3
  10. flwr/client/secure_aggregation/secaggplus_handler.py +6 -6
  11. flwr/client/typing.py +1 -1
  12. flwr/common/configsrecord.py +98 -0
  13. flwr/common/logger.py +14 -0
  14. flwr/common/metricsrecord.py +96 -0
  15. flwr/common/parametersrecord.py +110 -0
  16. flwr/common/recordset.py +8 -18
  17. flwr/common/recordset_utils.py +87 -0
  18. flwr/common/retry_invoker.py +1 -0
  19. flwr/common/serde.py +12 -8
  20. flwr/common/typing.py +9 -0
  21. flwr/driver/app.py +5 -3
  22. flwr/driver/driver.py +3 -3
  23. flwr/driver/driver_client_proxy.py +24 -15
  24. flwr/driver/grpc_driver.py +6 -6
  25. flwr/proto/driver_pb2.py +23 -88
  26. flwr/proto/fleet_pb2.py +29 -111
  27. flwr/proto/node_pb2.py +7 -15
  28. flwr/proto/task_pb2.py +33 -127
  29. flwr/proto/transport_pb2.py +69 -278
  30. flwr/server/app.py +9 -3
  31. flwr/server/driver/driver_servicer.py +4 -4
  32. flwr/server/fleet/grpc_bidi/flower_service_servicer.py +5 -2
  33. flwr/server/fleet/grpc_bidi/grpc_bridge.py +9 -6
  34. flwr/server/fleet/grpc_bidi/grpc_client_proxy.py +4 -1
  35. flwr/server/fleet/grpc_bidi/grpc_server.py +3 -1
  36. flwr/server/fleet/grpc_bidi/ins_scheduler.py +7 -4
  37. flwr/server/fleet/grpc_rere/fleet_servicer.py +2 -2
  38. flwr/server/fleet/message_handler/message_handler.py +3 -3
  39. flwr/server/fleet/rest_rere/rest_api.py +1 -1
  40. flwr/server/state/in_memory_state.py +1 -1
  41. flwr/server/state/sqlite_state.py +8 -5
  42. flwr/server/state/state.py +1 -1
  43. flwr/server/strategy/aggregate.py +8 -8
  44. flwr/server/strategy/dpfedavg_adaptive.py +1 -1
  45. flwr/server/strategy/dpfedavg_fixed.py +2 -2
  46. flwr/server/strategy/fedavg_android.py +0 -2
  47. flwr/server/strategy/fedmedian.py +1 -1
  48. flwr/server/strategy/fedxgb_nn_avg.py +9 -2
  49. flwr/server/strategy/qfedavg.py +1 -1
  50. flwr/server/utils/validator.py +1 -1
  51. {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/METADATA +3 -3
  52. {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/RECORD +55 -51
  53. {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/LICENSE +0 -0
  54. {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/WHEEL +0 -0
  55. {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/entry_points.txt +0 -0
@@ -27,7 +27,7 @@ from flwr.server.client_proxy import ClientProxy
27
27
  def aggregate(results: List[Tuple[NDArrays, int]]) -> NDArrays:
28
28
  """Compute weighted average."""
29
29
  # Calculate the total number of examples used during training
30
- num_examples_total = sum([num_examples for _, num_examples in results])
30
+ num_examples_total = sum(num_examples for (_, num_examples) in results)
31
31
 
32
32
  # Create a list of weights, each multiplied by the related number of examples
33
33
  weighted_weights = [
@@ -45,7 +45,7 @@ def aggregate(results: List[Tuple[NDArrays, int]]) -> NDArrays:
45
45
  def aggregate_inplace(results: List[Tuple[ClientProxy, FitRes]]) -> NDArrays:
46
46
  """Compute in-place weighted average."""
47
47
  # Count total examples
48
- num_examples_total = sum([fit_res.num_examples for _, fit_res in results])
48
+ num_examples_total = sum(fit_res.num_examples for (_, fit_res) in results)
49
49
 
50
50
  # Compute scaling factors for each result
51
51
  scaling_factors = [
@@ -95,9 +95,9 @@ def aggregate_krum(
95
95
  # For each client, take the n-f-2 closest parameters vectors
96
96
  num_closest = max(1, len(weights) - num_malicious - 2)
97
97
  closest_indices = []
98
- for i, _ in enumerate(distance_matrix):
98
+ for distance in distance_matrix:
99
99
  closest_indices.append(
100
- np.argsort(distance_matrix[i])[1 : num_closest + 1].tolist() # noqa: E203
100
+ np.argsort(distance)[1 : num_closest + 1].tolist() # noqa: E203
101
101
  )
102
102
 
103
103
  # Compute the score for each client, that is the sum of the distances
@@ -202,7 +202,7 @@ def aggregate_bulyan(
202
202
 
203
203
  def weighted_loss_avg(results: List[Tuple[int, float]]) -> float:
204
204
  """Aggregate evaluation results obtained from multiple clients."""
205
- num_total_evaluation_examples = sum([num_examples for num_examples, _ in results])
205
+ num_total_evaluation_examples = sum(num_examples for (num_examples, _) in results)
206
206
  weighted_losses = [num_examples * loss for num_examples, loss in results]
207
207
  return sum(weighted_losses) / num_total_evaluation_examples
208
208
 
@@ -233,9 +233,9 @@ def _compute_distances(weights: List[NDArrays]) -> NDArray:
233
233
  """
234
234
  flat_w = np.array([np.concatenate(p, axis=None).ravel() for p in weights])
235
235
  distance_matrix = np.zeros((len(weights), len(weights)))
236
- for i, _ in enumerate(flat_w):
237
- for j, _ in enumerate(flat_w):
238
- delta = flat_w[i] - flat_w[j]
236
+ for i, flat_w_i in enumerate(flat_w):
237
+ for j, flat_w_j in enumerate(flat_w):
238
+ delta = flat_w_i - flat_w_j
239
239
  norm = np.linalg.norm(delta)
240
240
  distance_matrix[i, j] = norm**2
241
241
  return distance_matrix
@@ -91,7 +91,7 @@ class DPFedAvgAdaptive(DPFedAvgFixed):
91
91
  norm_bit_set_count = 0
92
92
  for client_proxy, fit_res in results:
93
93
  if "dpfedavg_norm_bit" not in fit_res.metrics:
94
- raise Exception(
94
+ raise KeyError(
95
95
  f"Indicator bit not returned by client with id {client_proxy.cid}."
96
96
  )
97
97
  if fit_res.metrics["dpfedavg_norm_bit"]:
@@ -46,11 +46,11 @@ class DPFedAvgFixed(Strategy):
46
46
  self.num_sampled_clients = num_sampled_clients
47
47
 
48
48
  if clip_norm <= 0:
49
- raise Exception("The clipping threshold should be a positive value.")
49
+ raise ValueError("The clipping threshold should be a positive value.")
50
50
  self.clip_norm = clip_norm
51
51
 
52
52
  if noise_multiplier < 0:
53
- raise Exception("The noise multiplier should be a non-negative value.")
53
+ raise ValueError("The noise multiplier should be a non-negative value.")
54
54
  self.noise_multiplier = noise_multiplier
55
55
 
56
56
  self.server_side_noising = server_side_noising
@@ -234,12 +234,10 @@ class FedAvgAndroid(Strategy):
234
234
  """Convert parameters object to NumPy weights."""
235
235
  return [self.bytes_to_ndarray(tensor) for tensor in parameters.tensors]
236
236
 
237
- # pylint: disable=R0201
238
237
  def ndarray_to_bytes(self, ndarray: NDArray) -> bytes:
239
238
  """Serialize NumPy array to bytes."""
240
239
  return ndarray.tobytes()
241
240
 
242
- # pylint: disable=R0201
243
241
  def bytes_to_ndarray(self, tensor: bytes) -> NDArray:
244
242
  """Deserialize NumPy array from bytes."""
245
243
  ndarray_deserialized = np.frombuffer(tensor, dtype=np.float32)
@@ -36,7 +36,7 @@ from .fedavg import FedAvg
36
36
 
37
37
 
38
38
  class FedMedian(FedAvg):
39
- """Configurable FedAvg with Momentum strategy implementation."""
39
+ """Configurable FedMedian strategy implementation."""
40
40
 
41
41
  def __repr__(self) -> str:
42
42
  """Compute a string representation of the strategy."""
@@ -25,7 +25,7 @@ from logging import WARNING
25
25
  from typing import Any, Dict, List, Optional, Tuple, Union
26
26
 
27
27
  from flwr.common import FitRes, Scalar, ndarrays_to_parameters, parameters_to_ndarrays
28
- from flwr.common.logger import log
28
+ from flwr.common.logger import log, warn_deprecated_feature
29
29
  from flwr.server.client_proxy import ClientProxy
30
30
 
31
31
  from .aggregate import aggregate
@@ -33,7 +33,13 @@ from .fedavg import FedAvg
33
33
 
34
34
 
35
35
  class FedXgbNnAvg(FedAvg):
36
- """Configurable FedXgbNnAvg strategy implementation."""
36
+ """Configurable FedXgbNnAvg strategy implementation.
37
+
38
+ Warning
39
+ -------
40
+ This strategy is deprecated, but a copy of it is available in Flower Baselines:
41
+ https://github.com/adap/flower/tree/main/baselines/hfedxgboost.
42
+ """
37
43
 
38
44
  def __init__(self, *args: Any, **kwargs: Any) -> None:
39
45
  """Federated XGBoost [Ma et al., 2023] strategy.
@@ -41,6 +47,7 @@ class FedXgbNnAvg(FedAvg):
41
47
  Implementation based on https://arxiv.org/abs/2304.07537.
42
48
  """
43
49
  super().__init__(*args, **kwargs)
50
+ warn_deprecated_feature("`FedXgbNnAvg` strategy")
44
51
 
45
52
  def __repr__(self) -> str:
46
53
  """Compute a string representation of the strategy."""
@@ -185,7 +185,7 @@ class QFedAvg(FedAvg):
185
185
  hs_ffl = []
186
186
 
187
187
  if self.pre_weights is None:
188
- raise Exception("QffedAvg pre_weights are None in aggregate_fit")
188
+ raise AttributeError("QffedAvg pre_weights are None in aggregate_fit")
189
189
 
190
190
  weights_before = self.pre_weights
191
191
  eval_result = self.evaluate(
@@ -17,7 +17,7 @@
17
17
 
18
18
  from typing import List, Union
19
19
 
20
- from flwr.proto.task_pb2 import TaskIns, TaskRes
20
+ from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
21
21
 
22
22
 
23
23
  # pylint: disable-next=too-many-branches,too-many-statements
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.7.0.dev20240116
3
+ Version: 1.7.0.dev20240118
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.dev
6
6
  License: Apache-2.0
@@ -33,10 +33,10 @@ Classifier: Typing :: Typed
33
33
  Provides-Extra: rest
34
34
  Provides-Extra: simulation
35
35
  Requires-Dist: cryptography (>=41.0.2,<42.0.0)
36
- Requires-Dist: grpcio (>=1.48.2,<2.0.0,!=1.52.0)
36
+ Requires-Dist: grpcio (>=1.60.0,<2.0.0)
37
37
  Requires-Dist: iterators (>=0.0.2,<0.0.3)
38
38
  Requires-Dist: numpy (>=1.21.0,<2.0.0)
39
- Requires-Dist: protobuf (>=3.19.0,<4.0.0)
39
+ Requires-Dist: protobuf (>=4.25.2,<5.0.0)
40
40
  Requires-Dist: pycryptodome (>=3.18.0,<4.0.0)
41
41
  Requires-Dist: pydantic (<2.0.0) ; extra == "simulation"
42
42
  Requires-Dist: ray (==2.6.3) ; extra == "simulation"
@@ -1,38 +1,42 @@
1
1
  flwr/__init__.py,sha256=6zbcS7z2q-VUdmpFppLH6BacsE-ZFmfq6OvtKNOyYE0,981
2
2
  flwr/client/__init__.py,sha256=2T4enmlE4PsoKiGTvXwBKSlhOjZ7MXRy5oCGNf0UH9Y,1111
3
- flwr/client/app.py,sha256=YwMnRJEgMVjzFDMLectMZyADq55_u0Y9nBL9OGLOgYg,19156
3
+ flwr/client/app.py,sha256=AkJXshBH0zKLqkm3dQQ4KYFrwNmLdjzLNZvgzfKiCOc,19243
4
4
  flwr/client/client.py,sha256=LmGguS2YV_BmTG-P3NXvxeljbuJ2d1OkFYRY5pQz-bQ,8198
5
- flwr/client/dpfedavg_numpy_client.py,sha256=LxUcPBO0mU3VScAx9vx2PlsghXjQZVEBOn3rolgrgio,7216
5
+ flwr/client/dpfedavg_numpy_client.py,sha256=0XryFdCMM_RLiNLCr6evLp-6R7ZjeMmRUROIgzRmtmc,7215
6
6
  flwr/client/flower.py,sha256=PPYROFVnu7NEe7sR8XFVbkfvfwecIuQc5-VllPz0LlQ,4049
7
7
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
8
- flwr/client/grpc_client/connection.py,sha256=ki7ZaYvSDJK1bvW2UxrldyToiEvqk2j_cuIaICT19ZA,5002
8
+ flwr/client/grpc_client/connection.py,sha256=WJazRjWZuSLnE4jsGtJ86g9THewbAfspQ-XtmfGR8uQ,5115
9
9
  flwr/client/grpc_rere_client/__init__.py,sha256=avn6W_vHEM_yZEB1S7hCZgnTbXb6ZujqRP_vAzyXu-0,752
10
- flwr/client/grpc_rere_client/connection.py,sha256=r0wzwJp9ugcHlD0iF6wj45KqpfDe_AwBbI9jUjiIVrI,6560
10
+ flwr/client/grpc_rere_client/connection.py,sha256=NtYxwJCucI9RYieU9rVMi5wzrnvLNxhSWYmi5IiWAtc,6660
11
11
  flwr/client/message_handler/__init__.py,sha256=abHvBRJJiiaAMNgeILQbMOa6h8WqMK2BcnvxwQZFpic,719
12
- flwr/client/message_handler/message_handler.py,sha256=k1YrWtySYzdg5m0F_qbQzVxSXnpmYq8UZF5_Jzo-jzg,8305
13
- flwr/client/message_handler/task_handler.py,sha256=zy9BuJ_BLiF3-ngDlTA_cOZW6QfqNkYV00X4P7po9hE,5713
12
+ flwr/client/message_handler/message_handler.py,sha256=zf6n2itYm7pjapTzEy3tvda3e1YTotIXNxRGX_hlLOg,8393
13
+ flwr/client/message_handler/task_handler.py,sha256=36g-gP7oH_VDpsjW2P9LH4uzlDkygY8S9FyGxjbSw34,5823
14
14
  flwr/client/middleware/__init__.py,sha256=Eo3JvAV5XqmyRySNqeiw93YNETmmP5ixEOMeBA6ah4w,769
15
15
  flwr/client/middleware/utils.py,sha256=QUghso_SWsKTUPfKwrtBwPyyJoEI9AV9hRY2acu1TYE,1168
16
16
  flwr/client/node_state.py,sha256=3NUHqNokmFAN7Rv0rWIWnoaBKyYH9K3Ir0exGC_nx4M,1749
17
- flwr/client/node_state_tests.py,sha256=GkUiOJodLUkelaf9Y2z2h6Z0I_TCB7qMHjy6bChNWQc,1914
18
- flwr/client/numpy_client.py,sha256=tVVK8aKnObapy2fTxfVbMJIbyRX4HyEVjdkjXc4MOO0,10276
17
+ flwr/client/node_state_tests.py,sha256=SX1kiXQmDP11eJTkaj1BFoKQpP_6XFaMQukT3_sOT6c,1939
18
+ flwr/client/numpy_client.py,sha256=c9OMP2c61dr_oNy88osWwQjsOyimzJXeldlN34UAo2c,10276
19
19
  flwr/client/rest_client/__init__.py,sha256=ThwOnkMdzxo_UuyTI47Q7y9oSpuTgNT2OuFvJCfuDiw,735
20
- flwr/client/rest_client/connection.py,sha256=0vzOKxdnqgLtne4kIXVREtMWr40HqlqIvE6ZRur-ViM,11583
20
+ flwr/client/rest_client/connection.py,sha256=j8BpGRM4mGJrkw7Yncpwk-BJ6KOw0C3PS3tqLfsUUes,11762
21
21
  flwr/client/run_state.py,sha256=d4UmHLt9zMd0sTgnVdRsLgr1QEx0l5PtJ0dPv2NSVVw,867
22
22
  flwr/client/secure_aggregation/__init__.py,sha256=XCDycteBTivym0zwkwqXhFMCAoDoHBZQg5GxdMnFCfA,888
23
23
  flwr/client/secure_aggregation/handler.py,sha256=oRyGCerz92aED7UydYwJ7OFVxUwHqedG3PshHrdZq-Y,1522
24
- flwr/client/secure_aggregation/secaggplus_handler.py,sha256=7Me0_Ab_O-U3rlsCxJYSJyLNPpN85o4LyyZrMCGX5Cg,18917
25
- flwr/client/typing.py,sha256=AAHV0_scoK1h4lWhrjb0az5_h2gIMYupQ7CJ_yxRK0I,1194
24
+ flwr/client/secure_aggregation/secaggplus_handler.py,sha256=2jKtRhoJaVRmMJgJ2v8VRUCw2ko7uhTL2_h8CZVFwZA,18928
25
+ flwr/client/typing.py,sha256=75vC6dpzv99PLRztPzaGPik2OifFZbgxvHVDMIA_C30,1219
26
26
  flwr/common/__init__.py,sha256=qttep0POwoigzB5pcraZa4YMt9jsCSfeibcrTQMUjIc,2884
27
27
  flwr/common/address.py,sha256=iTAN9jtmIGMrWFnx9XZQl45ZEtQJVZZLYPRBSNVARGI,1882
28
+ flwr/common/configsrecord.py,sha256=LPEDTFH_5MdfDWcMUcked6rV78JN1lZRuUHioG0EkGk,3854
28
29
  flwr/common/constant.py,sha256=J-BpHv6OFmrA37SeS4En8Nsy7yJdoNJWHCtbdnjIxSc,1120
29
30
  flwr/common/date.py,sha256=UWhBZj49yX9LD4BmatS_ZFZu_-kweGh0KQJ1djyWWH4,891
30
31
  flwr/common/dp.py,sha256=hF45cPElXxcQsh4AoquAyaTrNi0xCrIcKx7xOcV_1XU,1782
31
32
  flwr/common/grpc.py,sha256=qVLB0d6bCuaBRW5YB0vEZXsR7Bo3R2lh4ONiCocqwRI,2270
32
- flwr/common/logger.py,sha256=yGM9KCc7eU4-pvuOc_FXdLbBxalfU-ZAaepf9TbDAhY,3821
33
+ flwr/common/logger.py,sha256=qX_gqEyrmGOH0x_r8uQ1Vskz4fGvEij9asdo4DUOPY8,4135
34
+ flwr/common/metricsrecord.py,sha256=0N3z6tVUPwgBk7_ECEc5edrT_YrjAwYM-O9HOq_hGw8,3787
33
35
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
34
- flwr/common/recordset.py,sha256=MLeEtFtdKIFoFIT0F-K_Xk3BnuYlLkYQPTx1m8IWD2A,2324
35
- flwr/common/retry_invoker.py,sha256=RBTiDnYyePWvhBH9GqcWZl0tQaUOVUqOVBwfGprXWEg,10810
36
+ flwr/common/parametersrecord.py,sha256=3ePLwmTqEYxh3A4yjA5-H3kjPpTHH8s1TnAUkOECr8E,4088
37
+ flwr/common/recordset.py,sha256=OeRcBMGqx9vutWRz1xkujBPHlVpU58R1EcFRHEQrePo,2351
38
+ flwr/common/recordset_utils.py,sha256=FgNuuAgbxtLgjB1vVmcYsTG8kqIW1ZpmYrcUEKAOH_A,3122
39
+ flwr/common/retry_invoker.py,sha256=H_hKqKaEI8vZPywWmoAtJYkcUnKhlYc4kV63zRY0kWA,10856
36
40
  flwr/common/secure_aggregation/__init__.py,sha256=29nHIUO2L8-KhNHQ2KmIgRo_4CPkq4LgLCUN0on5FgI,731
37
41
  flwr/common/secure_aggregation/crypto/__init__.py,sha256=dz7pVx2aPrHxr_AwgO5mIiTzu4PcvUxRq9NLBbFcsf8,738
38
42
  flwr/common/secure_aggregation/crypto/shamir.py,sha256=yY35ZgHlB4YyGW_buG-1X-0M-ejXuQzISgYLgC_Z9TY,2792
@@ -41,99 +45,99 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=KAHCEHGSTJ6mCgnC8dT
41
45
  flwr/common/secure_aggregation/quantization.py,sha256=appui7GGrkRPsupF59TkapeV4Na_CyPi73JtJ1pimdI,2310
42
46
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=m5UDo7IgRkMS3yixhzz7DhhAv6VAQMCghglMygSPU_k,1606
43
47
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=PleDyDu7jHNAfbRoEaoQiOjxG6iMl9yA8rNKYTfnyFw,3155
44
- flwr/common/serde.py,sha256=F-FWwqnbXRYNMEU8Ss_MG4cKsiuW1_9wZf9LJM2etUc,18907
48
+ flwr/common/serde.py,sha256=mujIHgxC6HhkUjqI9UHofbHtDZbepdN2nMFUE6FH6Ik,18990
45
49
  flwr/common/telemetry.py,sha256=se_-pHgEWcmN09ChSpTeek72l1UJHf7GbwXBB1KXBjQ,7683
46
- flwr/common/typing.py,sha256=e21UHUqHIzucAkTt2Xh7sOO-qTCZjqEbY09lHaCE9tc,3959
50
+ flwr/common/typing.py,sha256=bitdkwrDzodeasIYCoevK5z14dyUrrjNM2SZSSKub1Q,4364
47
51
  flwr/common/version.py,sha256=A0MKvyKPrV8wLg0YCAODTqM71v26NEH36c6JYtfgg0o,667
48
52
  flwr/driver/__init__.py,sha256=NQ4KeZ5fP9wdxGjcr2cP41_7TLuuYQ3u4J7GwYtQ488,870
49
- flwr/driver/app.py,sha256=WEM6GdR58DmW_-6c712CfvzT2QsMD_XUUSOQUFb1qhg,7218
50
- flwr/driver/driver.py,sha256=-ciFhnNJ8LGLBmfjcJmhrYrs1di7UiNGS2o7c2Q2DQw,3892
51
- flwr/driver/driver_client_proxy.py,sha256=4OQWjX-L8FOfCStij9dzTqkw_lrkbHqNGDrLFiUFcbo,5719
52
- flwr/driver/grpc_driver.py,sha256=KU-nb6EbYnwkqh03GnjuRRDu6eHrPjlDQaOkw8s3EHo,4486
53
+ flwr/driver/app.py,sha256=tCPnUwq60kAY637htvDSZGIln21OxIVgg0-o8o4ZAGw,7307
54
+ flwr/driver/driver.py,sha256=S9KsRlpf7j3y6jGaAgu4TwM_AyHlZFhJV-HgfwJKxks,3967
55
+ flwr/driver/driver_client_proxy.py,sha256=iQmf-5zwWgljC5-RHVf_JtfvxByY5MSDuTlrXo9BiUs,6154
56
+ flwr/driver/grpc_driver.py,sha256=KlJT_wWVm9xx2xapzC0Kgn1UDnBBem514aaTtzJSlkw,4560
53
57
  flwr/flower/__init__.py,sha256=VlOKQzq4OecSM4Ga2uk1iu2K8mxMc-j1XA0bdhaTeMw,892
54
58
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
55
- flwr/proto/driver_pb2.py,sha256=ctSEmPrqQo5aOhIz1Kmw8AmhzuJkRSqjq1Xl8UWp6GU,5829
59
+ flwr/proto/driver_pb2.py,sha256=JHIdjNPTgp6YHD-_lz5ZZFB0VIOR3_GmcaOTN4jndc4,3115
56
60
  flwr/proto/driver_pb2.pyi,sha256=xwl2AqIWn0SwAlg-x5RUQeqr6DC48eywnqmD7gbaaFs,4670
57
61
  flwr/proto/driver_pb2_grpc.py,sha256=qQBRdQUz4k2K4DVO7kSfWHx-62UJ85HaYKnKCr6JcU8,7304
58
62
  flwr/proto/driver_pb2_grpc.pyi,sha256=NpOM5eCrIPcuWdYrZAayQSDvvFp6cDCVflabhmuvMfo,2022
59
- flwr/proto/fleet_pb2.py,sha256=h_lDZDTEauPy53lomiYaSngwmveNkMw94rvCQjg3yx8,7295
63
+ flwr/proto/fleet_pb2.py,sha256=8rKQHu6Oa9ki_NG6kRNGtfPPYZp5kKBZhPW696_kn84,3852
60
64
  flwr/proto/fleet_pb2.pyi,sha256=QXYs9M7_dABghdCMfk5Rjf4w0LsZGDeQ1ojH00XaQME,6182
61
65
  flwr/proto/fleet_pb2_grpc.py,sha256=hF1uPaioZzQMRCP9yPlv9LC0mi_DTuhn-IkQJzWIPCs,7505
62
66
  flwr/proto/fleet_pb2_grpc.pyi,sha256=mzhTmBwHa1mQoC5yDnUpdGG4kkdk47AlO2PCKxjMbC8,2183
63
- flwr/proto/node_pb2.py,sha256=bWqn3w6wvUjBrQQFA4P5lIpfFXQQ4u0kEMavk4xqoQo,1188
67
+ flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
64
68
  flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
65
69
  flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
66
70
  flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
67
- flwr/proto/task_pb2.py,sha256=k64g-fJh-PgKghjMKlDLWJcrlOH5aFswyzd6OzClhGs,8228
71
+ flwr/proto/task_pb2.py,sha256=PhD59jZWtEGwJ6wJRl2cC3ZaNS8AxpGrZ65N1DCB6c8,4900
68
72
  flwr/proto/task_pb2.pyi,sha256=vdsSlvMkg9vN-qQsf6HgV_JbbYrBK17f-fkeJo8a55Y,10843
69
73
  flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
70
74
  flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
71
- flwr/proto/transport_pb2.py,sha256=XWXbVa9pylkn-1mdlSaV9x0lk8zIC40DZzBcB_3LaMk,18721
75
+ flwr/proto/transport_pb2.py,sha256=cURzfpCgZvH7GEvBPLvTYijE3HvhK1MePjINk4xYArk,9781
72
76
  flwr/proto/transport_pb2.pyi,sha256=CZvJRWTU3QWFWLXNFtyLSrSKFatIyMcy-ohzLbQ-G9c,21497
73
77
  flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPcosk,2598
74
78
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
75
79
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
80
  flwr/server/__init__.py,sha256=SG7XJWnskPZu30VfY5WmXbfYKeb8UFrths4qprAb0yg,1377
77
- flwr/server/app.py,sha256=t8sgTZDQ4VmN3KnJP-u5KyJa4i9eLURZ73isDy28U2A,28508
81
+ flwr/server/app.py,sha256=2LiZQoxkryBN3KNIlqrbSw7VrbYK-tjHxB6i2OHLHb4,28610
78
82
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
79
83
  flwr/server/client_proxy.py,sha256=8ScGDvP3jHbl8DV3hyFID5N5VEVlXn8ZTQXtkdOfssI,2234
80
84
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
81
85
  flwr/server/driver/__init__.py,sha256=STB1_DASVEg7Cu6L7VYxTzV7UMkgtBkFim09Z82Dh8I,712
82
- flwr/server/driver/driver_servicer.py,sha256=cyLV1n0L1gcgRQK1yxhCiw1O2lYN4WT-b9tscA65oUw,4453
86
+ flwr/server/driver/driver_servicer.py,sha256=8JwftxoMMqHPAEgvE2TDDvm4zW2-7xaHYoji5kb6k8k,4553
83
87
  flwr/server/fleet/__init__.py,sha256=C6GCSD5eP5Of6_dIeSe1jx9HnV0icsvWyQ5EKAUHJRU,711
84
88
  flwr/server/fleet/grpc_bidi/__init__.py,sha256=mgGJGjwT6VU7ovC1gdnnqttjyBPlNIcZnYRqx4K3IBQ,735
85
89
  flwr/server/fleet/grpc_bidi/driver_client_manager.py,sha256=179z_IVT_95G7dIMsP9ec0JpoPEA62Eu12YyM-TKsyM,4284
86
- flwr/server/fleet/grpc_bidi/flower_service_servicer.py,sha256=OGQHPhlfHXbgwifCKn-mZ35ULh0alKuJNGyJcsqsYuA,5693
87
- flwr/server/fleet/grpc_bidi/grpc_bridge.py,sha256=XTbTIs3qtqyaigvIrOyyaN91Dh4C1fGfEVCTgS9IP5A,6415
88
- flwr/server/fleet/grpc_bidi/grpc_client_proxy.py,sha256=XdCyEJwG6Lw7y8R-0zRVELuCgai2eZXFc8RufKaHj3w,4657
89
- flwr/server/fleet/grpc_bidi/grpc_server.py,sha256=vePhwuY1YeH7vpUDUXgomyHYx5OSczEvN4GfFiHUge4,11745
90
- flwr/server/fleet/grpc_bidi/ins_scheduler.py,sha256=CI1TJ0qwSpit45VXFTz0cKnTrLqrCyQjLCgsK8ceLmA,6170
90
+ flwr/server/fleet/grpc_bidi/flower_service_servicer.py,sha256=v1oDksCIphGoTCMbz68DjaTk7Pw89wjGTJUw4rezV1Q,5756
91
+ flwr/server/fleet/grpc_bidi/grpc_bridge.py,sha256=LSOmabFXAQxKycQOliplKmigbmVwdm-D4CI-hJ0Pav0,6458
92
+ flwr/server/fleet/grpc_bidi/grpc_client_proxy.py,sha256=MubuEEAZAcKzx9LYAB87B2sjvZWWyQS3RPAJJm1GS4I,4695
93
+ flwr/server/fleet/grpc_bidi/grpc_server.py,sha256=TY_Z8ComreNNOOKveeUO6eE5hoSuTvx_EWqQl0zRADQ,11779
94
+ flwr/server/fleet/grpc_bidi/ins_scheduler.py,sha256=fYR7dPRFYuWCZCju03SQJt0boTLEax83qCrp_Ycy5OY,6259
91
95
  flwr/server/fleet/grpc_rere/__init__.py,sha256=bEJOMWbSlqkw-y5ZHtEXczhoSlAxErcRYffmTMQAV8M,758
92
- flwr/server/fleet/grpc_rere/fleet_servicer.py,sha256=bd8mIRHSpBeH2AqFMF1aAjKihZIJ01AhnQKz75OMIJo,2553
96
+ flwr/server/fleet/grpc_rere/fleet_servicer.py,sha256=tG_t9_Fpbs-K1uT5B6GeLdrQCVcOXAdtqBGg_f7ZVVw,2603
93
97
  flwr/server/fleet/message_handler/__init__.py,sha256=hEY0l61ojH8Iz30_K1btm1HJ6J49iZJSFUsVYqUTw3A,731
94
- flwr/server/fleet/message_handler/message_handler.py,sha256=3F2OXmVdgWUxwV_4dVBO9wkrl4T_6vT-AFLDqACT-Qk,2748
98
+ flwr/server/fleet/message_handler/message_handler.py,sha256=_SauWQUO6VCMRRNXDfg3gv2h1FKG7e7p8F-Nj4aY6OM,2823
95
99
  flwr/server/fleet/rest_rere/__init__.py,sha256=VKDvDq5H8koOUztpmQacVzGJXPLEEkL1Vmolxt3mvnY,735
96
- flwr/server/fleet/rest_rere/rest_api.py,sha256=_72gqtux9js0NBS-qnhLF--Pb93Em6sGPwEyoi0p1TU,5861
100
+ flwr/server/fleet/rest_rere/rest_api.py,sha256=c2wMs9Ytx0BprIyPQIFnbLaPXNy_NoCOs72ERRat0z0,5886
97
101
  flwr/server/history.py,sha256=W7PHCFX7dLXrdnaVfl5V4tuzmtxh6zArkWYxVXvTZ1c,4904
98
102
  flwr/server/server.py,sha256=skrNgQp9vlCVHruovlaB0Rh1W7xdH7KqEfVCMZGpK7c,15965
99
103
  flwr/server/state/__init__.py,sha256=ij-7Ms-hyordQdRmGQxY1-nVa4OhixJ0jr7_YDkys0s,1003
100
- flwr/server/state/in_memory_state.py,sha256=nYs0tAU3cf_BO94iUPxSorwD3PnZwC54i8ZcyrAMbo0,7868
101
- flwr/server/state/sqlite_state.py,sha256=vV58tYph5cttaNgC5JXvgmrQCGFVF-MyNxuiuagBg1k,21203
102
- flwr/server/state/state.py,sha256=CVFB-cWbHqoMeUJlgQhvBnxTgoL1ZWEhJjGNdCjPuNc,5291
104
+ flwr/server/state/in_memory_state.py,sha256=kODjcJrvF_I7Oc3UVfsnxPksTD0oas0x91shbJ4IdbY,7893
105
+ flwr/server/state/sqlite_state.py,sha256=GXstBWmRtqahaKETY1N_-s11_tfgPHG3hJR0qzW4tbw,21301
106
+ flwr/server/state/state.py,sha256=JtsI92HfdKd8KzBQ9Om7A7xwngDXVxtET2Bk9aQ7nao,5316
103
107
  flwr/server/state/state_factory.py,sha256=91cSB-KOAFM37z7T098WxTkVeKNaAZ_mTI75snn2_tk,1654
104
108
  flwr/server/strategy/__init__.py,sha256=EDTv_lU67VmZ8pRqy5fabQDhq5x4oRiD-KHoXhOIWMs,2096
105
- flwr/server/strategy/aggregate.py,sha256=8Q27qX7sgXaD9fznMBrSojrrUSvC57i2P6zVi4OCvY8,13473
109
+ flwr/server/strategy/aggregate.py,sha256=QyRIJtI5gnuY1NbgrcrOvkHxGIxBvApq7d9Y4xl-6W4,13468
106
110
  flwr/server/strategy/bulyan.py,sha256=8GsSVJzRSoSWE2zQUKqC3Z795grdN9xpmc3MSGGXnzM,6532
107
- flwr/server/strategy/dpfedavg_adaptive.py,sha256=WJmEBwFlBRo5xEAMCu_SI-Ec19Mp2L1DznvedcPvHNc,4661
108
- flwr/server/strategy/dpfedavg_fixed.py,sha256=EjselzlQV_Fz6Mfil3mYXaSVgs_vxmXtkfhCbFu92uA,7002
111
+ flwr/server/strategy/dpfedavg_adaptive.py,sha256=Wu0StMixNy-1fIJ3Bo2HcytoDQv5Xe5dCZcrsMTOBdg,4660
112
+ flwr/server/strategy/dpfedavg_fixed.py,sha256=roWpIRhup30P1tEgijsJGBAPqtLIuJZ9etFeukwKpjU,7004
109
113
  flwr/server/strategy/fault_tolerant_fedavg.py,sha256=veGcehB6rXT_MihNDrD1v5JY-TxJi7fybdDl-OZooDQ,5900
110
114
  flwr/server/strategy/fedadagrad.py,sha256=9yoVdZOFTjQ7DpaVrYLH9ca88WgJVWepld6UXybGQMY,6505
111
115
  flwr/server/strategy/fedadam.py,sha256=Zvqo6oChwB2aDGHeLXHNE74nHGwkFAWODLZ8f6Dtq1g,6763
112
116
  flwr/server/strategy/fedavg.py,sha256=Kup1jfI-IjMhb3pj-gbu-Qrdzp3J4OCOq3_3LKyzQHY,11684
113
- flwr/server/strategy/fedavg_android.py,sha256=6i_EAZkC4rawvDIP1XxPKzi9Uyyxp4IO_oilXg64G4U,9840
117
+ flwr/server/strategy/fedavg_android.py,sha256=yhAZg7iPGVieAQC3rYLb9hLSoNQjBMl1stxaySpVHCw,9784
114
118
  flwr/server/strategy/fedavgm.py,sha256=xZ045SVLI892U_zCFFVpi1DMzKzzv261Y7wkHVsrQO0,8132
115
- flwr/server/strategy/fedmedian.py,sha256=FohcvEjbNwhcLku2qLhmg4r-WGhazICGLVpQkj6QQg4,2715
119
+ flwr/server/strategy/fedmedian.py,sha256=HpmUkLLXWgmMgQiEK2cG1l5nOd99ykAWdUxV5uUNWqw,2704
116
120
  flwr/server/strategy/fedopt.py,sha256=xqu-7513C8bFBw2qrzvduk9o2mT0sPHNVLKmVbJ3V4U,5242
117
121
  flwr/server/strategy/fedprox.py,sha256=BBmIDoRtDeb3TpigO1beBZ79wIVy2UsVDIDnxktoyas,6862
118
122
  flwr/server/strategy/fedtrimmedavg.py,sha256=p12uA7EN0k_CfYeh513P3m8mH3h14SmR3C_MQ9vw6Sc,5890
119
123
  flwr/server/strategy/fedxgb_bagging.py,sha256=BqtHfdRrLW5AhnBiN_aiECWcgIvgFEzku_76D98vMXg,5895
120
124
  flwr/server/strategy/fedxgb_cyclic.py,sha256=CjlFdy-0lxM4m1O6lYL2498lImPHhxiTkiOvPTXKj24,5423
121
- flwr/server/strategy/fedxgb_nn_avg.py,sha256=m8buZHA2D5LJRIcjyKl8vi9-z3QtAkqY5k2spZvfu6E,3782
125
+ flwr/server/strategy/fedxgb_nn_avg.py,sha256=tA6X43juce0ShfRgfeNxRIcpSUlgVNwGB8vYoUuNFhI,4047
122
126
  flwr/server/strategy/fedyogi.py,sha256=fG9i1WEdUXTYh5mTmagGLHqc12OogEsj3s3IopwM4ZA,6801
123
127
  flwr/server/strategy/krum.py,sha256=yaYAZw4KOL84nc_PZAp43rBl0pXC0dT6y46sEuZrirA,6285
124
- flwr/server/strategy/qfedavg.py,sha256=m45LVQrLvvpVcKWAeH7kpWcRAFUX_Ls6XgiFZ95Fzb4,10145
128
+ flwr/server/strategy/qfedavg.py,sha256=s-4C-96PKZiUbwZ9_v1ALAd9GmvucjmeOKETipK7fNo,10150
125
129
  flwr/server/strategy/strategy.py,sha256=g6VoIFogEviRub6G4QsKdIp6M_Ek6GhBhqcdNx5ueUk,7543
126
130
  flwr/server/utils/__init__.py,sha256=RQVbo-bcsVtp_lJBf7dL5w01FbLrr7v3YedeGp5_YMs,908
127
131
  flwr/server/utils/tensorboard.py,sha256=k0G6bqsLx7wfYbH2KtXsDYcOCfyIeE12-hefXA7lZdg,5485
128
- flwr/server/utils/validator.py,sha256=whLz1xBEP8mG_ZuJiIR3cRk3TmrXCFl7CxIP0sRpInY,5679
132
+ flwr/server/utils/validator.py,sha256=b_3ahGkSPn4M3TPYaNiY5DyJmnkQHJsyarccPgrhFos,5704
129
133
  flwr/simulation/__init__.py,sha256=E2eD5FlTmZZ80u21FmWCkacrM7O4mrEHD8iXqeCaBUQ,1278
130
134
  flwr/simulation/app.py,sha256=pbkldpm3Uc9_0M2R5-8Ako26g9WxNhZW4fLJY-4YtJY,13879
131
135
  flwr/simulation/ray_transport/__init__.py,sha256=FsaAnzC4cw4DqoouBCix6496k29jACkfeIam55BvW9g,734
132
136
  flwr/simulation/ray_transport/ray_actor.py,sha256=S_E-7Bk0ONWx12b0ObP3CtzJSEL3yPxpFVcYfkDx6Es,17044
133
137
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=RziUVY9PmuI8fJEbra-Vk9oWwRxALDZOeF1fAW-a9wg,9430
134
138
  flwr/simulation/ray_transport/utils.py,sha256=e0mkFOgOXSJHSQdiipoggF-DLBXaJZVytx9auQ35fCg,3368
135
- flwr_nightly-1.7.0.dev20240116.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
136
- flwr_nightly-1.7.0.dev20240116.dist-info/METADATA,sha256=Gay4YgiW3aHGKw6rzdjDbgdFT1N1H1dcastPV-Upvds,13449
137
- flwr_nightly-1.7.0.dev20240116.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
138
- flwr_nightly-1.7.0.dev20240116.dist-info/entry_points.txt,sha256=1uLlD5tIunkzALMfMWnqjdE_D5hRUX_I1iMmOMv6tZI,181
139
- flwr_nightly-1.7.0.dev20240116.dist-info/RECORD,,
139
+ flwr_nightly-1.7.0.dev20240118.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
140
+ flwr_nightly-1.7.0.dev20240118.dist-info/METADATA,sha256=qylFcleupNUtA6tHNz1Y-GTgnj2utWRHkETkX9dsLTM,13440
141
+ flwr_nightly-1.7.0.dev20240118.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
142
+ flwr_nightly-1.7.0.dev20240118.dist-info/entry_points.txt,sha256=1uLlD5tIunkzALMfMWnqjdE_D5hRUX_I1iMmOMv6tZI,181
143
+ flwr_nightly-1.7.0.dev20240118.dist-info/RECORD,,