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.
- flwr/client/app.py +7 -4
- flwr/client/dpfedavg_numpy_client.py +4 -4
- flwr/client/grpc_client/connection.py +7 -4
- flwr/client/grpc_rere_client/connection.py +4 -4
- flwr/client/message_handler/message_handler.py +11 -2
- flwr/client/message_handler/task_handler.py +8 -6
- flwr/client/node_state_tests.py +1 -1
- flwr/client/numpy_client.py +2 -2
- flwr/client/rest_client/connection.py +7 -3
- flwr/client/secure_aggregation/secaggplus_handler.py +6 -6
- flwr/client/typing.py +1 -1
- flwr/common/configsrecord.py +98 -0
- flwr/common/logger.py +14 -0
- flwr/common/metricsrecord.py +96 -0
- flwr/common/parametersrecord.py +110 -0
- flwr/common/recordset.py +8 -18
- flwr/common/recordset_utils.py +87 -0
- flwr/common/retry_invoker.py +1 -0
- flwr/common/serde.py +12 -8
- flwr/common/typing.py +9 -0
- flwr/driver/app.py +5 -3
- flwr/driver/driver.py +3 -3
- flwr/driver/driver_client_proxy.py +24 -15
- flwr/driver/grpc_driver.py +6 -6
- flwr/proto/driver_pb2.py +23 -88
- flwr/proto/fleet_pb2.py +29 -111
- flwr/proto/node_pb2.py +7 -15
- flwr/proto/task_pb2.py +33 -127
- flwr/proto/transport_pb2.py +69 -278
- flwr/server/app.py +9 -3
- flwr/server/driver/driver_servicer.py +4 -4
- flwr/server/fleet/grpc_bidi/flower_service_servicer.py +5 -2
- flwr/server/fleet/grpc_bidi/grpc_bridge.py +9 -6
- flwr/server/fleet/grpc_bidi/grpc_client_proxy.py +4 -1
- flwr/server/fleet/grpc_bidi/grpc_server.py +3 -1
- flwr/server/fleet/grpc_bidi/ins_scheduler.py +7 -4
- flwr/server/fleet/grpc_rere/fleet_servicer.py +2 -2
- flwr/server/fleet/message_handler/message_handler.py +3 -3
- flwr/server/fleet/rest_rere/rest_api.py +1 -1
- flwr/server/state/in_memory_state.py +1 -1
- flwr/server/state/sqlite_state.py +8 -5
- flwr/server/state/state.py +1 -1
- flwr/server/strategy/aggregate.py +8 -8
- flwr/server/strategy/dpfedavg_adaptive.py +1 -1
- flwr/server/strategy/dpfedavg_fixed.py +2 -2
- flwr/server/strategy/fedavg_android.py +0 -2
- flwr/server/strategy/fedmedian.py +1 -1
- flwr/server/strategy/fedxgb_nn_avg.py +9 -2
- flwr/server/strategy/qfedavg.py +1 -1
- flwr/server/utils/validator.py +1 -1
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/METADATA +3 -3
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/RECORD +55 -51
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/WHEEL +0 -0
- {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(
|
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(
|
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
|
98
|
+
for distance in distance_matrix:
|
99
99
|
closest_indices.append(
|
100
|
-
np.argsort(
|
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(
|
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,
|
237
|
-
for j,
|
238
|
-
delta =
|
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
|
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
|
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
|
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
|
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."""
|
flwr/server/strategy/qfedavg.py
CHANGED
@@ -185,7 +185,7 @@ class QFedAvg(FedAvg):
|
|
185
185
|
hs_ffl = []
|
186
186
|
|
187
187
|
if self.pre_weights is None:
|
188
|
-
raise
|
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(
|
flwr/server/utils/validator.py
CHANGED
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.7.0.
|
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.
|
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 (>=
|
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"
|
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/RECORD
RENAMED
@@ -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=
|
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=
|
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=
|
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=
|
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=
|
13
|
-
flwr/client/message_handler/task_handler.py,sha256=
|
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=
|
18
|
-
flwr/client/numpy_client.py,sha256=
|
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=
|
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=
|
25
|
-
flwr/client/typing.py,sha256=
|
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=
|
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/
|
35
|
-
flwr/common/
|
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=
|
48
|
+
flwr/common/serde.py,sha256=mujIHgxC6HhkUjqI9UHofbHtDZbepdN2nMFUE6FH6Ik,18990
|
45
49
|
flwr/common/telemetry.py,sha256=se_-pHgEWcmN09ChSpTeek72l1UJHf7GbwXBB1KXBjQ,7683
|
46
|
-
flwr/common/typing.py,sha256=
|
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=
|
50
|
-
flwr/driver/driver.py,sha256
|
51
|
-
flwr/driver/driver_client_proxy.py,sha256=
|
52
|
-
flwr/driver/grpc_driver.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
87
|
-
flwr/server/fleet/grpc_bidi/grpc_bridge.py,sha256=
|
88
|
-
flwr/server/fleet/grpc_bidi/grpc_client_proxy.py,sha256=
|
89
|
-
flwr/server/fleet/grpc_bidi/grpc_server.py,sha256=
|
90
|
-
flwr/server/fleet/grpc_bidi/ins_scheduler.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
101
|
-
flwr/server/state/sqlite_state.py,sha256=
|
102
|
-
flwr/server/state/state.py,sha256=
|
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=
|
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=
|
108
|
-
flwr/server/strategy/dpfedavg_fixed.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
136
|
-
flwr_nightly-1.7.0.
|
137
|
-
flwr_nightly-1.7.0.
|
138
|
-
flwr_nightly-1.7.0.
|
139
|
-
flwr_nightly-1.7.0.
|
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,,
|
{flwr_nightly-1.7.0.dev20240116.dist-info → flwr_nightly-1.7.0.dev20240118.dist-info}/LICENSE
RENAMED
File without changes
|
File without changes
|
File without changes
|