flwr-nightly 1.7.0.dev20240116__py3-none-any.whl → 1.7.0.dev20240118__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
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,,