flwr-nightly 1.12.0.dev20240909__py3-none-any.whl → 1.12.0.dev20240910__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -3
- flwr/client/client_app.py +1 -1
- flwr/client/grpc_rere_client/client_interceptor.py +2 -3
- flwr/common/record/recordset.py +1 -1
- flwr/common/record/typeddict.py +24 -1
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -1
- {flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/METADATA +1 -1
- {flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/RECORD +11 -11
- {flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/entry_points.txt +0 -0
|
@@ -17,9 +17,6 @@ class FlowerClient(NumPyClient):
|
|
|
17
17
|
self.batch_size = batch_size
|
|
18
18
|
self.verbose = verbose
|
|
19
19
|
|
|
20
|
-
def get_parameters(self, config):
|
|
21
|
-
return self.model.get_weights()
|
|
22
|
-
|
|
23
20
|
def fit(self, parameters, config):
|
|
24
21
|
self.model.set_weights(parameters)
|
|
25
22
|
self.model.fit(
|
flwr/client/client_app.py
CHANGED
|
@@ -263,7 +263,7 @@ def _registration_error(fn_name: str) -> ValueError:
|
|
|
263
263
|
>>> class FlowerClient(NumPyClient):
|
|
264
264
|
>>> # ...
|
|
265
265
|
>>>
|
|
266
|
-
>>> def client_fn(
|
|
266
|
+
>>> def client_fn(context: Context):
|
|
267
267
|
>>> return FlowerClient().to_client()
|
|
268
268
|
>>>
|
|
269
269
|
>>> app = ClientApp(
|
|
@@ -130,13 +130,12 @@ class AuthenticateClientInterceptor(grpc.UnaryUnaryClientInterceptor): # type:
|
|
|
130
130
|
if self.shared_secret is None:
|
|
131
131
|
raise RuntimeError("Failure to compute hmac")
|
|
132
132
|
|
|
133
|
+
message_bytes = request.SerializeToString(deterministic=True)
|
|
133
134
|
metadata.append(
|
|
134
135
|
(
|
|
135
136
|
_AUTH_TOKEN_HEADER,
|
|
136
137
|
base64.urlsafe_b64encode(
|
|
137
|
-
compute_hmac(
|
|
138
|
-
self.shared_secret, request.SerializeToString(True)
|
|
139
|
-
)
|
|
138
|
+
compute_hmac(self.shared_secret, message_bytes)
|
|
140
139
|
),
|
|
141
140
|
)
|
|
142
141
|
)
|
flwr/common/record/recordset.py
CHANGED
|
@@ -119,7 +119,7 @@ class RecordSet:
|
|
|
119
119
|
Let's see an example.
|
|
120
120
|
|
|
121
121
|
>>> from flwr.common import RecordSet
|
|
122
|
-
>>> from flwr.common import
|
|
122
|
+
>>> from flwr.common import ConfigsRecord, MetricsRecord, ParametersRecord
|
|
123
123
|
>>>
|
|
124
124
|
>>> # Let's begin with an empty record
|
|
125
125
|
>>> my_recordset = RecordSet()
|
flwr/common/record/typeddict.py
CHANGED
|
@@ -15,7 +15,18 @@
|
|
|
15
15
|
"""Typed dict base class for *Records."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
from typing import
|
|
18
|
+
from typing import (
|
|
19
|
+
Callable,
|
|
20
|
+
Dict,
|
|
21
|
+
Generic,
|
|
22
|
+
ItemsView,
|
|
23
|
+
Iterator,
|
|
24
|
+
KeysView,
|
|
25
|
+
MutableMapping,
|
|
26
|
+
TypeVar,
|
|
27
|
+
ValuesView,
|
|
28
|
+
cast,
|
|
29
|
+
)
|
|
19
30
|
|
|
20
31
|
K = TypeVar("K") # Key type
|
|
21
32
|
V = TypeVar("V") # Value type
|
|
@@ -73,3 +84,15 @@ class TypedDict(MutableMapping[K, V], Generic[K, V]):
|
|
|
73
84
|
if isinstance(other, dict):
|
|
74
85
|
return data == other
|
|
75
86
|
return NotImplemented
|
|
87
|
+
|
|
88
|
+
def keys(self) -> KeysView[K]:
|
|
89
|
+
"""D.keys() -> a set-like object providing a view on D's keys."""
|
|
90
|
+
return cast(Dict[K, V], self.__dict__["_data"]).keys()
|
|
91
|
+
|
|
92
|
+
def values(self) -> ValuesView[V]:
|
|
93
|
+
"""D.values() -> an object providing a view on D's values."""
|
|
94
|
+
return cast(Dict[K, V], self.__dict__["_data"]).values()
|
|
95
|
+
|
|
96
|
+
def items(self) -> ItemsView[K, V]:
|
|
97
|
+
"""D.items() -> a set-like object providing a view on D's items."""
|
|
98
|
+
return cast(Dict[K, V], self.__dict__["_data"]).items()
|
|
@@ -188,7 +188,8 @@ class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
188
188
|
self, public_key: ec.EllipticCurvePublicKey, request: Request, hmac_value: bytes
|
|
189
189
|
) -> bool:
|
|
190
190
|
shared_secret = generate_shared_key(self.server_private_key, public_key)
|
|
191
|
-
|
|
191
|
+
message_bytes = request.SerializeToString(deterministic=True)
|
|
192
|
+
return verify_hmac(shared_secret, message_bytes, hmac_value)
|
|
192
193
|
|
|
193
194
|
def _create_authenticated_node(
|
|
194
195
|
self,
|
{flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/RECORD
RENAMED
|
@@ -24,7 +24,7 @@ flwr/cli/new/templates/app/code/client.mlx.py.tpl,sha256=gxipt57ldc741qwRqSWtsLQ
|
|
|
24
24
|
flwr/cli/new/templates/app/code/client.numpy.py.tpl,sha256=DMUXvQd2dr-wEn0ZrYJQhZ0OFUT4PKoHXtiD2haWnCI,570
|
|
25
25
|
flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256=WczaR5avJUhfw2Grn2KEC4tDJ4voIYG-2pAy-7i2cT8,1685
|
|
26
26
|
flwr/cli/new/templates/app/code/client.sklearn.py.tpl,sha256=xW9cuKhybk5S8IeDZhbeb0DNegDIJGEYrzMKsxgc2GE,2978
|
|
27
|
-
flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=
|
|
27
|
+
flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=yBiiU7B9Kf70U52cPkNs_dUpYrrTwbUi2os-PAyheaM,1680
|
|
28
28
|
flwr/cli/new/templates/app/code/dataset.baseline.py.tpl,sha256=jbd_exHAk2-Blu_kVutjPO6a_dkJQWb232zxSeXIZ1k,1453
|
|
29
29
|
flwr/cli/new/templates/app/code/flwr_tune/__init__.py,sha256=JgNgBtKdm1jKM9625WxappCAVUGtYAmcjKSsXJ1u3ZQ,748
|
|
30
30
|
flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl,sha256=DbotzaXzLDwplVBkJLOe5Lt5b6Yutwv9rJ69oVwyrvU,4397
|
|
@@ -63,7 +63,7 @@ flwr/cli/utils.py,sha256=l65Ul0YsSBPuypk0uorAtEDmLEYiUrzpCXi6zCg9mJ4,4506
|
|
|
63
63
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
|
64
64
|
flwr/client/app.py,sha256=o_2bhmlBeZATtWnAPZhL-Q1Ly0QZxc9ou4i7t0HKumE,31956
|
|
65
65
|
flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
|
|
66
|
-
flwr/client/client_app.py,sha256=
|
|
66
|
+
flwr/client/client_app.py,sha256=6TIH-B5lgKn199uzcjxfFKiGvKN5tmKYFpsovUrSXoo,10396
|
|
67
67
|
flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
|
|
68
68
|
flwr/client/clientapp/app.py,sha256=4QtblvJsZ0-V-QBbzyNqWV13ugrgJmkZnsHpBCuqgi8,7797
|
|
69
69
|
flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
|
|
@@ -74,7 +74,7 @@ flwr/client/grpc_adapter_client/connection.py,sha256=aOlCYasl8f2CrfcN-WrVEmvjAZF
|
|
|
74
74
|
flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
|
|
75
75
|
flwr/client/grpc_client/connection.py,sha256=czhRm23fwTgjN24Vf5nyNQ3hcb5Fo_5k-o9yZnelQCs,9362
|
|
76
76
|
flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
|
|
77
|
-
flwr/client/grpc_rere_client/client_interceptor.py,sha256=
|
|
77
|
+
flwr/client/grpc_rere_client/client_interceptor.py,sha256=eONCq-uRYvRCxjdP4wIi_FDynDipHs3DYjExgzAcJ5M,5240
|
|
78
78
|
flwr/client/grpc_rere_client/connection.py,sha256=aiIWW9fVgJZNeZ9SjUAx5ax-3825JrjYc5E5l7XvzyM,10913
|
|
79
79
|
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=Pw7Toi4wCUIEdBMyv4yKirjgW6814gFhhAmsTYmV4IM,5005
|
|
80
80
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
|
@@ -118,8 +118,8 @@ flwr/common/record/configsrecord.py,sha256=6nIpGaeB_o8SvjMfD_iehJC1efAHgWyaeGfLD
|
|
|
118
118
|
flwr/common/record/conversion_utils.py,sha256=n3I3SI2P6hUjyxbWNc0QAch-SEhfMK6Hm-UUaplAlUc,1393
|
|
119
119
|
flwr/common/record/metricsrecord.py,sha256=aTuw0gWjRaZhekf76zg0h0rES3iEnTIGPZ7-jN2PYO4,5764
|
|
120
120
|
flwr/common/record/parametersrecord.py,sha256=mOcERCUylgWLQ-hISYmOHXlt-Qohv8YtPnJdLO0Kr8U,7730
|
|
121
|
-
flwr/common/record/recordset.py,sha256=
|
|
122
|
-
flwr/common/record/typeddict.py,sha256=
|
|
121
|
+
flwr/common/record/recordset.py,sha256=sSofrBycZSqiHR4TzfI4_QoIIN-5B1LnMG0C9CiByAo,8312
|
|
122
|
+
flwr/common/record/typeddict.py,sha256=TDPLdeuHiAUy9JyfJN0VF1zSyqdnf_uNWUFjAd2z_Os,3623
|
|
123
123
|
flwr/common/recordset_compat.py,sha256=5prvfx8mT4ZWIEU4Gmz2wzCbO4yPjQ3ONr20uKt3UM0,13973
|
|
124
124
|
flwr/common/retry_invoker.py,sha256=dQY5fPIKhy9OiFswZhLxA9fB455u-DYCvDVcFJmrPDk,11707
|
|
125
125
|
flwr/common/secure_aggregation/__init__.py,sha256=erPnTWdOfMH0K0HQTmj5foDJ6t3iYcExy2aACy8iZNQ,731
|
|
@@ -254,7 +254,7 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4E
|
|
|
254
254
|
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=DIXCYfPwm5paWq6hccReW0tB7-dTfq4vvMZ7CsiuYf4,12292
|
|
255
255
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
|
|
256
256
|
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=bgoLQEhahVHjdlRDk_58zyKFeMOziiPUXSbYMhOxybY,4757
|
|
257
|
-
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=
|
|
257
|
+
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=zN8TIdg9ZxKtmrwtarWUPdm08jUBBGoz59ndO3C-7jg,7985
|
|
258
258
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
|
|
259
259
|
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=9qDDPwj3txHPo2dNaWQiO3UpGno5Zm9IMhJXnAPZbqg,4439
|
|
260
260
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
|
|
@@ -294,8 +294,8 @@ flwr/superexec/exec_grpc.py,sha256=PhqGoZEpTMxSQmUSV8Wgtzb1Za_pHJ-adZqo5RYnDyE,1
|
|
|
294
294
|
flwr/superexec/exec_servicer.py,sha256=jl0aKVjm0PLQABcTL5c3jdSIzb0Z6hpVOtrAn4Ob7ts,2323
|
|
295
295
|
flwr/superexec/executor.py,sha256=k_adivto6R2U82DADOHNvdtobehBYreRek1gOEBIQnQ,2318
|
|
296
296
|
flwr/superexec/simulation.py,sha256=J6pw-RqCSiUed8I_3MasZH4tl57ZmDebPAHNnbb0-vE,7420
|
|
297
|
-
flwr_nightly-1.12.0.
|
|
298
|
-
flwr_nightly-1.12.0.
|
|
299
|
-
flwr_nightly-1.12.0.
|
|
300
|
-
flwr_nightly-1.12.0.
|
|
301
|
-
flwr_nightly-1.12.0.
|
|
297
|
+
flwr_nightly-1.12.0.dev20240910.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
298
|
+
flwr_nightly-1.12.0.dev20240910.dist-info/METADATA,sha256=Uwf1gy1e13nxcWZJ3afsDgXNd4CjQg1BxpyfapwcP44,15703
|
|
299
|
+
flwr_nightly-1.12.0.dev20240910.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
300
|
+
flwr_nightly-1.12.0.dev20240910.dist-info/entry_points.txt,sha256=WUCbqhLEOzjx_lyATIM0-f0e8kOVaQjzwOvyOxHrMhs,434
|
|
301
|
+
flwr_nightly-1.12.0.dev20240910.dist-info/RECORD,,
|
{flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.12.0.dev20240909.dist-info → flwr_nightly-1.12.0.dev20240910.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|