flwr-nightly 1.23.0.dev20251022__py3-none-any.whl → 1.23.0.dev20251024__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/run/run.py +1 -1
- flwr/client/grpc_rere_client/connection.py +7 -2
- flwr/client/rest_client/connection.py +8 -6
- flwr/common/serde.py +4 -2
- flwr/common/typing.py +1 -0
- flwr/proto/fab_pb2.py +11 -7
- flwr/proto/fab_pb2.pyi +21 -1
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +2 -2
- flwr/server/superlink/fleet/message_handler/message_handler.py +1 -1
- flwr/server/superlink/serverappio/serverappio_servicer.py +2 -2
- flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
- flwr/supercore/object_store/in_memory_object_store.py +0 -4
- flwr/superlink/servicer/control/control_servicer.py +5 -1
- flwr/supernode/servicer/clientappio/clientappio_servicer.py +1 -1
- {flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/METADATA +1 -1
- {flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/RECORD +18 -18
- {flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/entry_points.txt +0 -0
flwr/cli/run/run.py
CHANGED
|
@@ -155,7 +155,7 @@ def _run_with_control_api(
|
|
|
155
155
|
fab_bytes, fab_hash, config = build_fab(app)
|
|
156
156
|
fab_id, fab_version = get_metadata_from_config(config)
|
|
157
157
|
|
|
158
|
-
fab = Fab(fab_hash, fab_bytes)
|
|
158
|
+
fab = Fab(fab_hash, fab_bytes, {})
|
|
159
159
|
|
|
160
160
|
# Construct a `ConfigRecord` out of a flattened `UserConfig`
|
|
161
161
|
fed_config = flatten_dict(federation_config.get("options", {}))
|
|
@@ -36,7 +36,12 @@ from flwr.common.inflatable_protobuf_utils import (
|
|
|
36
36
|
from flwr.common.logger import log
|
|
37
37
|
from flwr.common.message import Message, remove_content_from_message
|
|
38
38
|
from flwr.common.retry_invoker import RetryInvoker, _wrap_stub
|
|
39
|
-
from flwr.common.serde import
|
|
39
|
+
from flwr.common.serde import (
|
|
40
|
+
fab_from_proto,
|
|
41
|
+
message_from_proto,
|
|
42
|
+
message_to_proto,
|
|
43
|
+
run_from_proto,
|
|
44
|
+
)
|
|
40
45
|
from flwr.common.typing import Fab, Run
|
|
41
46
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
42
47
|
from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
|
@@ -289,7 +294,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
|
289
294
|
get_fab_request = GetFabRequest(node=node, hash_str=fab_hash, run_id=run_id)
|
|
290
295
|
get_fab_response: GetFabResponse = stub.GetFab(request=get_fab_request)
|
|
291
296
|
|
|
292
|
-
return
|
|
297
|
+
return fab_from_proto(get_fab_response.fab)
|
|
293
298
|
|
|
294
299
|
def pull_object(run_id: int, object_id: str) -> bytes:
|
|
295
300
|
"""Pull the object from the SuperLink."""
|
|
@@ -37,7 +37,12 @@ from flwr.common.inflatable_protobuf_utils import (
|
|
|
37
37
|
from flwr.common.logger import log
|
|
38
38
|
from flwr.common.message import Message, remove_content_from_message
|
|
39
39
|
from flwr.common.retry_invoker import RetryInvoker
|
|
40
|
-
from flwr.common.serde import
|
|
40
|
+
from flwr.common.serde import (
|
|
41
|
+
fab_from_proto,
|
|
42
|
+
message_from_proto,
|
|
43
|
+
message_to_proto,
|
|
44
|
+
run_from_proto,
|
|
45
|
+
)
|
|
41
46
|
from flwr.common.typing import Fab, Run
|
|
42
47
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
43
48
|
from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
|
@@ -398,12 +403,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
|
398
403
|
# Send the request
|
|
399
404
|
res = _request(req, GetFabResponse, PATH_GET_FAB)
|
|
400
405
|
if res is None:
|
|
401
|
-
return Fab("", b"")
|
|
406
|
+
return Fab("", b"", {})
|
|
402
407
|
|
|
403
|
-
return
|
|
404
|
-
res.fab.hash_str,
|
|
405
|
-
res.fab.content,
|
|
406
|
-
)
|
|
408
|
+
return fab_from_proto(res.fab)
|
|
407
409
|
|
|
408
410
|
def pull_object(run_id: int, object_id: str) -> bytes:
|
|
409
411
|
"""Pull the object from the SuperLink."""
|
flwr/common/serde.py
CHANGED
|
@@ -501,12 +501,14 @@ def recorddict_from_proto(recorddict_proto: ProtoRecordDict) -> RecordDict:
|
|
|
501
501
|
|
|
502
502
|
def fab_to_proto(fab: typing.Fab) -> ProtoFab:
|
|
503
503
|
"""Create a proto Fab object from a Python Fab."""
|
|
504
|
-
return ProtoFab(
|
|
504
|
+
return ProtoFab(
|
|
505
|
+
hash_str=fab.hash_str, content=fab.content, verifications=fab.verifications
|
|
506
|
+
)
|
|
505
507
|
|
|
506
508
|
|
|
507
509
|
def fab_from_proto(fab: ProtoFab) -> typing.Fab:
|
|
508
510
|
"""Create a Python Fab object from a proto Fab."""
|
|
509
|
-
return typing.Fab(fab.hash_str, fab.content)
|
|
511
|
+
return typing.Fab(fab.hash_str, fab.content, dict(fab.verifications))
|
|
510
512
|
|
|
511
513
|
|
|
512
514
|
# === User configs ===
|
flwr/common/typing.py
CHANGED
flwr/proto/fab_pb2.py
CHANGED
|
@@ -15,17 +15,21 @@ _sym_db = _symbol_database.Default()
|
|
|
15
15
|
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"
|
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"\x99\x01\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x39\n\rverifications\x18\x03 \x03(\x0b\x32\".flwr.proto.Fab.VerificationsEntry\x1a\x34\n\x12VerificationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"Q\n\rGetFabRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08hash_str\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
|
|
19
19
|
|
|
20
20
|
_globals = globals()
|
|
21
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
22
22
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fab_pb2', _globals)
|
|
23
23
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
24
24
|
DESCRIPTOR._options = None
|
|
25
|
-
_globals['
|
|
26
|
-
_globals['
|
|
27
|
-
_globals['
|
|
28
|
-
_globals['
|
|
29
|
-
_globals['
|
|
30
|
-
_globals['
|
|
25
|
+
_globals['_FAB_VERIFICATIONSENTRY']._options = None
|
|
26
|
+
_globals['_FAB_VERIFICATIONSENTRY']._serialized_options = b'8\001'
|
|
27
|
+
_globals['_FAB']._serialized_start=60
|
|
28
|
+
_globals['_FAB']._serialized_end=213
|
|
29
|
+
_globals['_FAB_VERIFICATIONSENTRY']._serialized_start=161
|
|
30
|
+
_globals['_FAB_VERIFICATIONSENTRY']._serialized_end=213
|
|
31
|
+
_globals['_GETFABREQUEST']._serialized_start=215
|
|
32
|
+
_globals['_GETFABREQUEST']._serialized_end=296
|
|
33
|
+
_globals['_GETFABRESPONSE']._serialized_start=298
|
|
34
|
+
_globals['_GETFABRESPONSE']._serialized_end=344
|
|
31
35
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/fab_pb2.pyi
CHANGED
|
@@ -5,6 +5,7 @@ isort:skip_file
|
|
|
5
5
|
import builtins
|
|
6
6
|
import flwr.proto.node_pb2
|
|
7
7
|
import google.protobuf.descriptor
|
|
8
|
+
import google.protobuf.internal.containers
|
|
8
9
|
import google.protobuf.message
|
|
9
10
|
import typing
|
|
10
11
|
import typing_extensions
|
|
@@ -13,8 +14,22 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
13
14
|
|
|
14
15
|
class Fab(google.protobuf.message.Message):
|
|
15
16
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
17
|
+
class VerificationsEntry(google.protobuf.message.Message):
|
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
19
|
+
KEY_FIELD_NUMBER: builtins.int
|
|
20
|
+
VALUE_FIELD_NUMBER: builtins.int
|
|
21
|
+
key: typing.Text
|
|
22
|
+
value: typing.Text
|
|
23
|
+
def __init__(self,
|
|
24
|
+
*,
|
|
25
|
+
key: typing.Text = ...,
|
|
26
|
+
value: typing.Text = ...,
|
|
27
|
+
) -> None: ...
|
|
28
|
+
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
29
|
+
|
|
16
30
|
HASH_STR_FIELD_NUMBER: builtins.int
|
|
17
31
|
CONTENT_FIELD_NUMBER: builtins.int
|
|
32
|
+
VERIFICATIONS_FIELD_NUMBER: builtins.int
|
|
18
33
|
hash_str: typing.Text
|
|
19
34
|
"""This field is the hash of the data field. It is used to identify the data.
|
|
20
35
|
The hash is calculated using the SHA-256 algorithm and is represented as a
|
|
@@ -24,12 +39,17 @@ class Fab(google.protobuf.message.Message):
|
|
|
24
39
|
content: builtins.bytes
|
|
25
40
|
"""This field contains the fab file contents a one bytes blob."""
|
|
26
41
|
|
|
42
|
+
@property
|
|
43
|
+
def verifications(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
|
|
44
|
+
"""Verifications."""
|
|
45
|
+
pass
|
|
27
46
|
def __init__(self,
|
|
28
47
|
*,
|
|
29
48
|
hash_str: typing.Text = ...,
|
|
30
49
|
content: builtins.bytes = ...,
|
|
50
|
+
verifications: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
|
|
31
51
|
) -> None: ...
|
|
32
|
-
def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str"]) -> None: ...
|
|
52
|
+
def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str","verifications",b"verifications"]) -> None: ...
|
|
33
53
|
global___Fab = Fab
|
|
34
54
|
|
|
35
55
|
class GetFabRequest(google.protobuf.message.Message):
|
|
@@ -247,7 +247,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
247
247
|
"""Push an object to the ObjectStore."""
|
|
248
248
|
log(
|
|
249
249
|
DEBUG,
|
|
250
|
-
"[
|
|
250
|
+
"[Fleet.PushObject] Push Object with object_id=%s",
|
|
251
251
|
request.object_id,
|
|
252
252
|
)
|
|
253
253
|
|
|
@@ -272,7 +272,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
272
272
|
"""Pull an object from the ObjectStore."""
|
|
273
273
|
log(
|
|
274
274
|
DEBUG,
|
|
275
|
-
"[
|
|
275
|
+
"[Fleet.PullObject] Pull Object with object_id=%s",
|
|
276
276
|
request.object_id,
|
|
277
277
|
)
|
|
278
278
|
|
|
@@ -210,7 +210,7 @@ def get_fab(
|
|
|
210
210
|
raise InvalidRunStatusException(abort_msg)
|
|
211
211
|
|
|
212
212
|
if result := ffs.get(request.hash_str):
|
|
213
|
-
fab = Fab(request.hash_str, result[0])
|
|
213
|
+
fab = Fab(request.hash_str, result[0], result[1])
|
|
214
214
|
return GetFabResponse(fab=fab_to_proto(fab))
|
|
215
215
|
|
|
216
216
|
raise ValueError(f"Found no FAB with hash: {request.hash_str}")
|
|
@@ -316,7 +316,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
|
|
|
316
316
|
|
|
317
317
|
ffs: Ffs = self.ffs_factory.ffs()
|
|
318
318
|
if result := ffs.get(request.hash_str):
|
|
319
|
-
fab = Fab(request.hash_str, result[0])
|
|
319
|
+
fab = Fab(request.hash_str, result[0], result[1])
|
|
320
320
|
return GetFabResponse(fab=fab_to_proto(fab))
|
|
321
321
|
|
|
322
322
|
raise ValueError(f"Found no FAB with hash: {request.hash_str}")
|
|
@@ -343,7 +343,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
|
|
|
343
343
|
fab = None
|
|
344
344
|
if run and run.fab_hash:
|
|
345
345
|
if result := ffs.get(run.fab_hash):
|
|
346
|
-
fab = Fab(run.fab_hash, result[0])
|
|
346
|
+
fab = Fab(run.fab_hash, result[0], result[1])
|
|
347
347
|
if run and fab and serverapp_ctxt:
|
|
348
348
|
# Update run status to STARTING
|
|
349
349
|
if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
|
|
@@ -150,7 +150,7 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
|
|
|
150
150
|
fab = None
|
|
151
151
|
if run and run.fab_hash:
|
|
152
152
|
if result := ffs.get(run.fab_hash):
|
|
153
|
-
fab = Fab(run.fab_hash, result[0])
|
|
153
|
+
fab = Fab(run.fab_hash, result[0], result[1])
|
|
154
154
|
if run and fab and serverapp_ctxt:
|
|
155
155
|
# Update run status to STARTING
|
|
156
156
|
if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
|
|
@@ -48,9 +48,6 @@ class InMemoryObjectStore(ObjectStore):
|
|
|
48
48
|
self.verify = verify
|
|
49
49
|
self.store: dict[str, ObjectEntry] = {}
|
|
50
50
|
self.lock_store = threading.RLock()
|
|
51
|
-
# Mapping the Object ID of a message to the list of descendant object IDs
|
|
52
|
-
self.msg_descendant_objects_mapping: dict[str, list[str]] = {}
|
|
53
|
-
self.lock_msg_mapping = threading.RLock()
|
|
54
51
|
# Mapping each run ID to a set of object IDs that are used in that run
|
|
55
52
|
self.run_objects_mapping: dict[int, set[str]] = {}
|
|
56
53
|
|
|
@@ -215,7 +212,6 @@ class InMemoryObjectStore(ObjectStore):
|
|
|
215
212
|
"""Clear the store."""
|
|
216
213
|
with self.lock_store:
|
|
217
214
|
self.store.clear()
|
|
218
|
-
self.msg_descendant_objects_mapping.clear()
|
|
219
215
|
self.run_objects_mapping.clear()
|
|
220
216
|
|
|
221
217
|
def __contains__(self, object_id: str) -> bool:
|
|
@@ -129,7 +129,11 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
|
129
129
|
)
|
|
130
130
|
|
|
131
131
|
# Create run
|
|
132
|
-
fab = Fab(
|
|
132
|
+
fab = Fab(
|
|
133
|
+
hashlib.sha256(fab_file).hexdigest(),
|
|
134
|
+
fab_file,
|
|
135
|
+
dict(request.fab.verifications),
|
|
136
|
+
)
|
|
133
137
|
fab_hash = ffs.put(fab.content, {})
|
|
134
138
|
if fab_hash != fab.hash_str:
|
|
135
139
|
raise RuntimeError(
|
|
@@ -151,7 +151,7 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
|
151
151
|
# Retrieve context, run and fab for this run
|
|
152
152
|
context = cast(Context, state.get_context(run_id))
|
|
153
153
|
run = cast(Run, state.get_run(run_id))
|
|
154
|
-
fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0]) # type: ignore
|
|
154
|
+
fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0], ffs.get(run.fab_hash)[1]) # type: ignore
|
|
155
155
|
|
|
156
156
|
return PullAppInputsResponse(
|
|
157
157
|
context=context_to_proto(context),
|
{flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.23.0.
|
|
3
|
+
Version: 1.23.0.dev20251024
|
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
{flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/RECORD
RENAMED
|
@@ -84,7 +84,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=g7SYiAJr6Uhwg4Zs
|
|
|
84
84
|
flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl,sha256=yAJ9jL2q6U_XXYwwUT9fpIqIKFuQR_Kgg82GpWfQ5J8,1661
|
|
85
85
|
flwr/cli/pull.py,sha256=sT3-f2zf7JcXfB-pHWLXmENrOzJeUDBoqK3oruJxzao,3352
|
|
86
86
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
|
87
|
-
flwr/cli/run/run.py,sha256=
|
|
87
|
+
flwr/cli/run/run.py,sha256=f5ysmBytcme8E7feroCtvpLe3kEebSFV42dcqoSFzzY,8165
|
|
88
88
|
flwr/cli/stop.py,sha256=W7ynTYLm0-_1nC5Il4IaZTji6A3GCCm_0R-HQUudAsI,4988
|
|
89
89
|
flwr/cli/supernode/__init__.py,sha256=DBkjoPo2hS2Y-ghJxwLbrAbCQFBgD82_Itl2_892UBo,917
|
|
90
90
|
flwr/cli/supernode/ls.py,sha256=OVEs9zPSomxxiwCg1Jz8AN5MkZJDf3xAE-lxCG22zyE,8640
|
|
@@ -97,7 +97,7 @@ flwr/client/dpfedavg_numpy_client.py,sha256=3hul067cT2E9jBhzp7bFnFAZ_D2nWcIUEdHY
|
|
|
97
97
|
flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
|
|
98
98
|
flwr/client/grpc_adapter_client/connection.py,sha256=JGv02EjSOAG1E5BRUD4lwXc1LLiYJ0OhInvp31qx1cU,4404
|
|
99
99
|
flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
|
|
100
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
|
100
|
+
flwr/client/grpc_rere_client/connection.py,sha256=3_CI7wx5ZrkGrVCXjDKiUGX9aJP9Zm9yl4iqSBAmH3U,13100
|
|
101
101
|
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=dLGB5GriszAmtgvuFGuz_F7rIwpzLfDxhJ7T3Un-Ce0,6694
|
|
102
102
|
flwr/client/grpc_rere_client/node_auth_client_interceptor.py,sha256=EdTyb5ThFrpkeyXy9_nTKH7E9GnfAdXjcNZ_-uxt1AA,2410
|
|
103
103
|
flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
|
|
@@ -112,7 +112,7 @@ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=Ib-HlhZOXB6-hAWGZ0Ip
|
|
|
112
112
|
flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
|
|
113
113
|
flwr/client/numpy_client.py,sha256=Qq6ghsIAop2slKqAfgiI5NiHJ4LIxGmrik3Ror4_XVc,9581
|
|
114
114
|
flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
|
|
115
|
-
flwr/client/rest_client/connection.py,sha256=
|
|
115
|
+
flwr/client/rest_client/connection.py,sha256=uqcCT6lLgtzb_T2-u6iB60-fVaTz9uE7fy5uvLikQ_I,15962
|
|
116
116
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
|
117
117
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
|
118
118
|
flwr/clientapp/__init__.py,sha256=dsXH29kvCk1meJj9UYMCIak8zehuuhVp0uDJ2COU_1c,829
|
|
@@ -168,10 +168,10 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3
|
|
|
168
168
|
flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
|
|
169
169
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
|
|
170
170
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
|
|
171
|
-
flwr/common/serde.py,sha256=
|
|
171
|
+
flwr/common/serde.py,sha256=WdEMQzZ3G3mBh8aAYNNQ8oKSahn9UaHtCwE-qt97EmE,22032
|
|
172
172
|
flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
|
|
173
173
|
flwr/common/telemetry.py,sha256=xfx3KLFQKy0Qx8P7MAsOQxr5J3sEAQF5Kr5J-4jPz-o,8859
|
|
174
|
-
flwr/common/typing.py,sha256=
|
|
174
|
+
flwr/common/typing.py,sha256=7tec-6Wa6ygwJl-NkXKgb3QehU9AvYn-IzNrGffli74,6986
|
|
175
175
|
flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
|
|
176
176
|
flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
|
|
177
177
|
flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
|
|
@@ -199,8 +199,8 @@ flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
|
|
|
199
199
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
200
200
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
201
201
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
202
|
-
flwr/proto/fab_pb2.py,sha256=
|
|
203
|
-
flwr/proto/fab_pb2.pyi,sha256=
|
|
202
|
+
flwr/proto/fab_pb2.py,sha256=AQAUJmTt31Kq-lJQid3CJpQPrply2-OA_aSHokpVF84,2070
|
|
203
|
+
flwr/proto/fab_pb2.pyi,sha256=GOxeDi-UYzQVwIEzRk9YkzkriowmNdibZu3jMMtBPFo,3273
|
|
204
204
|
flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
205
205
|
flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
206
206
|
flwr/proto/fleet_pb2.py,sha256=xGnNGmBbPds6LeB34HN8_vy4U1oW25-w-r-C6xNpoRo,5190
|
|
@@ -305,10 +305,10 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
|
|
|
305
305
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
|
|
306
306
|
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
|
|
307
307
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
|
|
308
|
-
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=
|
|
308
|
+
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Fh28q-M42m83fhLyXRkkfdKg9A8E0cxUkciVNGkPov0,11626
|
|
309
309
|
flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py,sha256=UWeFQNBW2pGBRVN36HodHcv7bKTgMmdToh96Lhqip1M,5411
|
|
310
310
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
|
|
311
|
-
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=
|
|
311
|
+
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=GYveEXgKRlyrKRUr2H6kjWPx_g4-fnATrMdJD2G4Gaw,8762
|
|
312
312
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
|
|
313
313
|
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=mxWKwGpgHPqd7cGFqd2ASnR-KZduIzLfT-d2yiNCqQ0,9257
|
|
314
314
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
|
|
@@ -324,10 +324,10 @@ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=vmD74L8fphb0xIhArQUg1
|
|
|
324
324
|
flwr/server/superlink/linkstate/utils.py,sha256=ZtyqSo4HzGrHXW3Wn_4irYMpIiq4onNI2XCIVOOJmJM,13971
|
|
325
325
|
flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
|
|
326
326
|
flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=-I7kBbr4w4ZVYwBZoAIle-xHKthFnZrsVfxa6WR8uxA,2310
|
|
327
|
-
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=
|
|
327
|
+
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=3N1_7wKFzif1e3mBZuzzdORPaaN9Y5F-JrpS7mI3bSM,20116
|
|
328
328
|
flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
|
|
329
329
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=VqWKxjpd4bCgPFKsgtIZPk9YcG0kc1EEmr5k20EKty4,2205
|
|
330
|
-
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=
|
|
330
|
+
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=xX-QnSvAL3kp4JKnUKmDSPnR9iD1eDtJL4JfsZx2ua8,10003
|
|
331
331
|
flwr/server/superlink/utils.py,sha256=zXmyU2o535b9dgz-TvFklzfuQk4irNnMtiK8vT4Dm1c,2454
|
|
332
332
|
flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
|
|
333
333
|
flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
|
|
@@ -388,7 +388,7 @@ flwr/supercore/grpc_health/simple_health_servicer.py,sha256=C5QN_cR_VBqbhva1eP8z
|
|
|
388
388
|
flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
|
|
389
389
|
flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
|
|
390
390
|
flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
|
|
391
|
-
flwr/supercore/object_store/in_memory_object_store.py,sha256=
|
|
391
|
+
flwr/supercore/object_store/in_memory_object_store.py,sha256=SovEdiW4xAPsEeOKIzdaGAJ1L4loCT3fiwn592jtOUA,9353
|
|
392
392
|
flwr/supercore/object_store/object_store.py,sha256=J-rI3X7ET-F6dqOyM-UfHKCCQtPJ_EnYW62H_1txts0,5252
|
|
393
393
|
flwr/supercore/object_store/object_store_factory.py,sha256=vOj60FXhiJGzZeVNQkgLyAj098vNvpMDqu5HC3kP2hc,2354
|
|
394
394
|
flwr/supercore/object_store/sqlite_object_store.py,sha256=cL0e2I6PkLhWTpXiKFbT7GwPNlZcCd496Dft8KWkBUg,10315
|
|
@@ -417,7 +417,7 @@ flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=Tbi4W
|
|
|
417
417
|
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=5uBl6VcJlUOgCF0d4kmsmJc1Rs1qxyouaZv0-uH2axs,5969
|
|
418
418
|
flwr/superlink/servicer/control/control_grpc.py,sha256=MRCaX4I2a5ogjKmhtFs6Mj-VdWemxL2h3gU9QbQmvCA,4183
|
|
419
419
|
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
|
|
420
|
-
flwr/superlink/servicer/control/control_servicer.py,sha256=
|
|
420
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=hXKtSKSuhVvgDCPl-n-9OM7MsEz2QhrpKRgJvFTwvL8,19453
|
|
421
421
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
|
422
422
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
|
423
423
|
flwr/supernode/cli/flower_supernode.py,sha256=bmPpg88Zq7NYMDzyyDwBzeZ6_1f26fD_iDdGw1o_4QQ,8334
|
|
@@ -430,9 +430,9 @@ flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1q
|
|
|
430
430
|
flwr/supernode/runtime/run_clientapp.py,sha256=BuaAKTzRuFmNX-IJky3kJzoWMmZkz9joHodbz_wmgpA,8771
|
|
431
431
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
|
432
432
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
|
433
|
-
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=
|
|
433
|
+
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=ZvKosLV7GN1_fOF-tOmhqFQysYQywCysRc-m23DVIWA,10265
|
|
434
434
|
flwr/supernode/start_client_internal.py,sha256=wKqh9-_rQYi7JFKpYBLRiUeq9YJUSyUd9b-SnVnuvwI,21567
|
|
435
|
-
flwr_nightly-1.23.0.
|
|
436
|
-
flwr_nightly-1.23.0.
|
|
437
|
-
flwr_nightly-1.23.0.
|
|
438
|
-
flwr_nightly-1.23.0.
|
|
435
|
+
flwr_nightly-1.23.0.dev20251024.dist-info/METADATA,sha256=aB-IhivK00L-rHkCDzB6ydELRWF9z3kGkwWmthzgoVw,14559
|
|
436
|
+
flwr_nightly-1.23.0.dev20251024.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
437
|
+
flwr_nightly-1.23.0.dev20251024.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
|
438
|
+
flwr_nightly-1.23.0.dev20251024.dist-info/RECORD,,
|
{flwr_nightly-1.23.0.dev20251022.dist-info → flwr_nightly-1.23.0.dev20251024.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|