flwr-nightly 1.15.0.dev20250104__py3-none-any.whl → 1.15.0.dev20250123__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/cli/cli_user_auth_interceptor.py +6 -2
- flwr/cli/config_utils.py +23 -146
- flwr/cli/constant.py +27 -0
- flwr/cli/install.py +1 -1
- flwr/cli/log.py +17 -2
- flwr/cli/login/login.py +20 -5
- flwr/cli/ls.py +10 -2
- flwr/cli/run/run.py +20 -10
- flwr/cli/stop.py +9 -1
- flwr/cli/utils.py +4 -4
- flwr/client/app.py +36 -48
- flwr/client/clientapp/app.py +4 -6
- flwr/client/clientapp/utils.py +1 -1
- flwr/client/grpc_client/connection.py +0 -6
- flwr/client/grpc_rere_client/client_interceptor.py +19 -119
- flwr/client/grpc_rere_client/connection.py +34 -24
- flwr/client/grpc_rere_client/grpc_adapter.py +16 -0
- flwr/client/rest_client/connection.py +34 -26
- flwr/client/supernode/app.py +14 -20
- flwr/common/auth_plugin/auth_plugin.py +34 -23
- flwr/common/config.py +152 -15
- flwr/common/constant.py +11 -8
- flwr/common/exit/__init__.py +24 -0
- flwr/common/exit/exit.py +99 -0
- flwr/common/exit/exit_code.py +93 -0
- flwr/common/exit_handlers.py +24 -10
- flwr/common/grpc.py +161 -3
- flwr/common/logger.py +1 -1
- flwr/common/secure_aggregation/crypto/symmetric_encryption.py +45 -0
- flwr/common/serde.py +6 -4
- flwr/common/typing.py +20 -0
- flwr/proto/clientappio_pb2.py +13 -3
- flwr/proto/clientappio_pb2_grpc.py +63 -12
- flwr/proto/error_pb2.py +13 -3
- flwr/proto/error_pb2_grpc.py +20 -0
- flwr/proto/exec_pb2.py +27 -29
- flwr/proto/exec_pb2.pyi +27 -54
- flwr/proto/exec_pb2_grpc.py +105 -24
- flwr/proto/fab_pb2.py +13 -3
- flwr/proto/fab_pb2_grpc.py +20 -0
- flwr/proto/fleet_pb2.py +54 -31
- flwr/proto/fleet_pb2.pyi +84 -0
- flwr/proto/fleet_pb2_grpc.py +207 -28
- flwr/proto/fleet_pb2_grpc.pyi +26 -0
- flwr/proto/grpcadapter_pb2.py +14 -4
- flwr/proto/grpcadapter_pb2_grpc.py +35 -4
- flwr/proto/log_pb2.py +13 -3
- flwr/proto/log_pb2_grpc.py +20 -0
- flwr/proto/message_pb2.py +15 -5
- flwr/proto/message_pb2_grpc.py +20 -0
- flwr/proto/node_pb2.py +15 -5
- flwr/proto/node_pb2.pyi +1 -4
- flwr/proto/node_pb2_grpc.py +20 -0
- flwr/proto/recordset_pb2.py +18 -8
- flwr/proto/recordset_pb2_grpc.py +20 -0
- flwr/proto/run_pb2.py +16 -6
- flwr/proto/run_pb2_grpc.py +20 -0
- flwr/proto/serverappio_pb2.py +32 -14
- flwr/proto/serverappio_pb2.pyi +56 -0
- flwr/proto/serverappio_pb2_grpc.py +261 -44
- flwr/proto/serverappio_pb2_grpc.pyi +20 -0
- flwr/proto/simulationio_pb2.py +13 -3
- flwr/proto/simulationio_pb2_grpc.py +105 -24
- flwr/proto/task_pb2.py +13 -3
- flwr/proto/task_pb2_grpc.py +20 -0
- flwr/proto/transport_pb2.py +20 -10
- flwr/proto/transport_pb2_grpc.py +35 -4
- flwr/server/app.py +87 -38
- flwr/server/compat/app_utils.py +0 -1
- flwr/server/compat/driver_client_proxy.py +1 -2
- flwr/server/driver/grpc_driver.py +5 -2
- flwr/server/driver/inmemory_driver.py +2 -1
- flwr/server/serverapp/app.py +5 -6
- flwr/server/superlink/driver/serverappio_grpc.py +1 -1
- flwr/server/superlink/driver/serverappio_servicer.py +132 -14
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +20 -88
- flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -165
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +38 -0
- flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +95 -168
- flwr/server/superlink/fleet/message_handler/message_handler.py +66 -5
- flwr/server/superlink/fleet/rest_rere/rest_api.py +28 -3
- flwr/server/superlink/fleet/vce/vce_api.py +2 -2
- flwr/server/superlink/linkstate/in_memory_linkstate.py +40 -48
- flwr/server/superlink/linkstate/linkstate.py +15 -22
- flwr/server/superlink/linkstate/sqlite_linkstate.py +80 -99
- flwr/server/superlink/linkstate/utils.py +18 -8
- flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
- flwr/server/utils/validator.py +9 -34
- flwr/simulation/app.py +4 -6
- flwr/simulation/legacy_app.py +4 -2
- flwr/simulation/run_simulation.py +1 -1
- flwr/superexec/exec_grpc.py +1 -1
- flwr/superexec/exec_servicer.py +23 -2
- {flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/METADATA +7 -7
- {flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/RECORD +98 -94
- {flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/entry_points.txt +0 -0
@@ -21,6 +21,7 @@ from typing import Optional
|
|
21
21
|
import grpc
|
22
22
|
|
23
23
|
from flwr.common import GRPC_MAX_MESSAGE_LENGTH
|
24
|
+
from flwr.common.grpc import generic_create_grpc_server
|
24
25
|
from flwr.common.logger import log
|
25
26
|
from flwr.proto.simulationio_pb2_grpc import ( # pylint: disable=E0611
|
26
27
|
add_SimulationIoServicer_to_server,
|
@@ -28,7 +29,6 @@ from flwr.proto.simulationio_pb2_grpc import ( # pylint: disable=E0611
|
|
28
29
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
29
30
|
from flwr.server.superlink.linkstate import LinkStateFactory
|
30
31
|
|
31
|
-
from ..fleet.grpc_bidi.grpc_server import generic_create_grpc_server
|
32
32
|
from .simulationio_servicer import SimulationIoServicer
|
33
33
|
|
34
34
|
|
flwr/server/utils/validator.py
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
import time
|
19
19
|
from typing import Union
|
20
20
|
|
21
|
+
from flwr.common.constant import SUPERLINK_NODE_ID
|
21
22
|
from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
|
22
23
|
|
23
24
|
|
@@ -58,24 +59,14 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> list[str
|
|
58
59
|
# Task producer
|
59
60
|
if not tasks_ins_res.task.HasField("producer"):
|
60
61
|
validation_errors.append("`producer` does not set field `producer`")
|
61
|
-
if tasks_ins_res.task.producer.node_id !=
|
62
|
-
validation_errors.append("`producer.node_id` is not
|
63
|
-
if not tasks_ins_res.task.producer.anonymous:
|
64
|
-
validation_errors.append("`producer` is not anonymous")
|
62
|
+
if tasks_ins_res.task.producer.node_id != SUPERLINK_NODE_ID:
|
63
|
+
validation_errors.append(f"`producer.node_id` is not {SUPERLINK_NODE_ID}")
|
65
64
|
|
66
65
|
# Task consumer
|
67
66
|
if not tasks_ins_res.task.HasField("consumer"):
|
68
67
|
validation_errors.append("`consumer` does not set field `consumer`")
|
69
|
-
if
|
70
|
-
|
71
|
-
and tasks_ins_res.task.consumer.node_id != 0
|
72
|
-
):
|
73
|
-
validation_errors.append("anonymous consumers MUST NOT set a `node_id`")
|
74
|
-
if (
|
75
|
-
not tasks_ins_res.task.consumer.anonymous
|
76
|
-
and tasks_ins_res.task.consumer.node_id == 0
|
77
|
-
):
|
78
|
-
validation_errors.append("non-anonymous consumer MUST provide a `node_id`")
|
68
|
+
if tasks_ins_res.task.consumer.node_id == SUPERLINK_NODE_ID:
|
69
|
+
validation_errors.append("consumer MUST provide a valid `node_id`")
|
79
70
|
|
80
71
|
# Content check
|
81
72
|
if tasks_ins_res.task.task_type == "":
|
@@ -95,30 +86,14 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> list[str
|
|
95
86
|
# Task producer
|
96
87
|
if not tasks_ins_res.task.HasField("producer"):
|
97
88
|
validation_errors.append("`producer` does not set field `producer`")
|
98
|
-
if
|
99
|
-
|
100
|
-
and tasks_ins_res.task.producer.node_id != 0
|
101
|
-
):
|
102
|
-
validation_errors.append("anonymous producers MUST NOT set a `node_id`")
|
103
|
-
if (
|
104
|
-
not tasks_ins_res.task.producer.anonymous
|
105
|
-
and tasks_ins_res.task.producer.node_id == 0
|
106
|
-
):
|
107
|
-
validation_errors.append("non-anonymous producer MUST provide a `node_id`")
|
89
|
+
if tasks_ins_res.task.producer.node_id == SUPERLINK_NODE_ID:
|
90
|
+
validation_errors.append("producer MUST provide a valid `node_id`")
|
108
91
|
|
109
92
|
# Task consumer
|
110
93
|
if not tasks_ins_res.task.HasField("consumer"):
|
111
94
|
validation_errors.append("`consumer` does not set field `consumer`")
|
112
|
-
if
|
113
|
-
|
114
|
-
and tasks_ins_res.task.consumer.node_id != 0
|
115
|
-
):
|
116
|
-
validation_errors.append("anonymous consumers MUST NOT set a `node_id`")
|
117
|
-
if (
|
118
|
-
not tasks_ins_res.task.consumer.anonymous
|
119
|
-
and tasks_ins_res.task.consumer.node_id == 0
|
120
|
-
):
|
121
|
-
validation_errors.append("non-anonymous consumer MUST provide a `node_id`")
|
95
|
+
if tasks_ins_res.task.consumer.node_id != SUPERLINK_NODE_ID:
|
96
|
+
validation_errors.append(f"consumer is not {SUPERLINK_NODE_ID}")
|
122
97
|
|
123
98
|
# Content check
|
124
99
|
if tasks_ins_res.task.task_type == "":
|
flwr/simulation/app.py
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
import argparse
|
19
|
-
import sys
|
20
19
|
from logging import DEBUG, ERROR, INFO
|
21
20
|
from queue import Queue
|
22
21
|
from time import sleep
|
@@ -39,6 +38,7 @@ from flwr.common.constant import (
|
|
39
38
|
Status,
|
40
39
|
SubStatus,
|
41
40
|
)
|
41
|
+
from flwr.common.exit import ExitCode, flwr_exit
|
42
42
|
from flwr.common.logger import (
|
43
43
|
log,
|
44
44
|
mirror_output_to_queue,
|
@@ -81,12 +81,10 @@ def flwr_simulation() -> None:
|
|
81
81
|
log(INFO, "Starting Flower Simulation")
|
82
82
|
|
83
83
|
if not args.insecure:
|
84
|
-
|
85
|
-
|
86
|
-
"`flwr-simulation` does not support TLS yet. "
|
87
|
-
"Please use the '--insecure' flag.",
|
84
|
+
flwr_exit(
|
85
|
+
ExitCode.COMMON_TLS_NOT_SUPPORTED,
|
86
|
+
"`flwr-simulation` does not support TLS yet. ",
|
88
87
|
)
|
89
|
-
sys.exit(1)
|
90
88
|
|
91
89
|
log(
|
92
90
|
DEBUG,
|
flwr/simulation/legacy_app.py
CHANGED
@@ -29,7 +29,7 @@ from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy
|
|
29
29
|
|
30
30
|
from flwr.client import ClientFnExt
|
31
31
|
from flwr.common import EventType, event
|
32
|
-
from flwr.common.constant import NODE_ID_NUM_BYTES
|
32
|
+
from flwr.common.constant import NODE_ID_NUM_BYTES, SUPERLINK_NODE_ID
|
33
33
|
from flwr.common.logger import (
|
34
34
|
log,
|
35
35
|
set_logger_propagation,
|
@@ -87,7 +87,9 @@ def _create_node_id_to_partition_mapping(
|
|
87
87
|
nodes_mapping: NodeToPartitionMapping = {} # {node-id; partition-id}
|
88
88
|
for i in range(num_clients):
|
89
89
|
while True:
|
90
|
-
node_id = generate_rand_int_from_bytes(
|
90
|
+
node_id = generate_rand_int_from_bytes(
|
91
|
+
NODE_ID_NUM_BYTES, exclude=[SUPERLINK_NODE_ID, 0]
|
92
|
+
)
|
91
93
|
if node_id not in nodes_mapping:
|
92
94
|
break
|
93
95
|
nodes_mapping[node_id] = i
|
@@ -350,7 +350,7 @@ def _main_loop(
|
|
350
350
|
# Initialize Driver
|
351
351
|
driver = InMemoryDriver(state_factory=state_factory)
|
352
352
|
driver.set_run(run_id=run.run_id)
|
353
|
-
output_context_queue:
|
353
|
+
output_context_queue: Queue[Context] = Queue()
|
354
354
|
|
355
355
|
# Get and run ServerApp thread
|
356
356
|
serverapp_th = run_serverapp_th(
|
flwr/superexec/exec_grpc.py
CHANGED
@@ -23,11 +23,11 @@ import grpc
|
|
23
23
|
|
24
24
|
from flwr.common import GRPC_MAX_MESSAGE_LENGTH
|
25
25
|
from flwr.common.auth_plugin import ExecAuthPlugin
|
26
|
+
from flwr.common.grpc import generic_create_grpc_server
|
26
27
|
from flwr.common.logger import log
|
27
28
|
from flwr.common.typing import UserConfig
|
28
29
|
from flwr.proto.exec_pb2_grpc import add_ExecServicer_to_server
|
29
30
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
30
|
-
from flwr.server.superlink.fleet.grpc_bidi.grpc_server import generic_create_grpc_server
|
31
31
|
from flwr.server.superlink.linkstate import LinkStateFactory
|
32
32
|
from flwr.superexec.exec_user_auth_interceptor import ExecUserAuthInterceptor
|
33
33
|
|
flwr/superexec/exec_servicer.py
CHANGED
@@ -181,8 +181,20 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
181
181
|
"ExecServicer initialized without user authentication",
|
182
182
|
)
|
183
183
|
raise grpc.RpcError() # This line is unreachable
|
184
|
+
|
185
|
+
# Get login details
|
186
|
+
details = self.auth_plugin.get_login_details()
|
187
|
+
|
188
|
+
# Return empty response if details is None
|
189
|
+
if details is None:
|
190
|
+
return GetLoginDetailsResponse()
|
191
|
+
|
184
192
|
return GetLoginDetailsResponse(
|
185
|
-
|
193
|
+
auth_type=details.auth_type,
|
194
|
+
device_code=details.device_code,
|
195
|
+
verification_uri_complete=details.verification_uri_complete,
|
196
|
+
expires_in=details.expires_in,
|
197
|
+
interval=details.interval,
|
186
198
|
)
|
187
199
|
|
188
200
|
def GetAuthTokens(
|
@@ -196,8 +208,17 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
196
208
|
"ExecServicer initialized without user authentication",
|
197
209
|
)
|
198
210
|
raise grpc.RpcError() # This line is unreachable
|
211
|
+
|
212
|
+
# Get auth tokens
|
213
|
+
credentials = self.auth_plugin.get_auth_tokens(request.device_code)
|
214
|
+
|
215
|
+
# Return empty response if credentials is None
|
216
|
+
if credentials is None:
|
217
|
+
return GetAuthTokensResponse()
|
218
|
+
|
199
219
|
return GetAuthTokensResponse(
|
200
|
-
|
220
|
+
access_token=credentials.access_token,
|
221
|
+
refresh_token=credentials.refresh_token,
|
201
222
|
)
|
202
223
|
|
203
224
|
|
{flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.15.0.
|
3
|
+
Version: 1.15.0.dev20250123
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
Home-page: https://flower.ai
|
6
6
|
License: Apache-2.0
|
@@ -32,22 +32,22 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
32
32
|
Classifier: Typing :: Typed
|
33
33
|
Provides-Extra: rest
|
34
34
|
Provides-Extra: simulation
|
35
|
-
Requires-Dist: cryptography (>=
|
36
|
-
Requires-Dist: grpcio (>=1.
|
35
|
+
Requires-Dist: cryptography (>=43.0.1,<44.0.0)
|
36
|
+
Requires-Dist: grpcio (>=1.69.0,<2.0.0)
|
37
37
|
Requires-Dist: iterators (>=0.0.2,<0.0.3)
|
38
38
|
Requires-Dist: numpy (>=1.26.0,<3.0.0)
|
39
39
|
Requires-Dist: pathspec (>=0.12.1,<0.13.0)
|
40
|
-
Requires-Dist: protobuf (>=
|
40
|
+
Requires-Dist: protobuf (>=5.29.3,<6.0.0)
|
41
41
|
Requires-Dist: pycryptodome (>=3.18.0,<4.0.0)
|
42
42
|
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
43
43
|
Requires-Dist: ray (==2.10.0) ; (python_version >= "3.9" and python_version < "3.12") and (extra == "simulation")
|
44
44
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
45
45
|
Requires-Dist: rich (>=13.5.0,<14.0.0)
|
46
|
-
Requires-Dist: starlette (>=0.
|
46
|
+
Requires-Dist: starlette (>=0.45.2,<0.46.0) ; extra == "rest"
|
47
47
|
Requires-Dist: tomli (>=2.0.1,<3.0.0)
|
48
48
|
Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
|
49
49
|
Requires-Dist: typer (>=0.12.5,<0.13.0)
|
50
|
-
Requires-Dist: uvicorn[standard] (>=0.
|
50
|
+
Requires-Dist: uvicorn[standard] (>=0.34.0,<0.35.0) ; extra == "rest"
|
51
51
|
Project-URL: Documentation, https://flower.ai
|
52
52
|
Project-URL: Repository, https://github.com/adap/flower
|
53
53
|
Description-Content-Type: text/markdown
|
@@ -88,7 +88,7 @@ design of Flower is based on a few guiding principles:
|
|
88
88
|
|
89
89
|
- **Framework-agnostic**: Different machine learning frameworks have different
|
90
90
|
strengths. Flower can be used with any machine learning framework, for
|
91
|
-
example, [PyTorch](https://pytorch.org), [TensorFlow](https://tensorflow.org), [Hugging Face Transformers](https://huggingface.co/), [PyTorch Lightning](https://pytorchlightning.ai/), [scikit-learn](https://scikit-learn.org/), [JAX](https://jax.readthedocs.io/), [TFLite](https://tensorflow.org/lite/), [MONAI](https://docs.monai.io/en/latest/index.html), [fastai](https://www.fast.ai/), [MLX](https://ml-explore.github.io/mlx/build/html/index.html), [XGBoost](https://xgboost.readthedocs.io/en/stable/), [Pandas](https://pandas.pydata.org/) for federated analytics, or even raw [NumPy](https://numpy.org/)
|
91
|
+
example, [PyTorch](https://pytorch.org), [TensorFlow](https://tensorflow.org), [Hugging Face Transformers](https://huggingface.co/), [PyTorch Lightning](https://pytorchlightning.ai/), [scikit-learn](https://scikit-learn.org/), [JAX](https://jax.readthedocs.io/), [TFLite](https://tensorflow.org/lite/), [MONAI](https://docs.monai.io/en/latest/index.html), [fastai](https://www.fast.ai/), [MLX](https://ml-explore.github.io/mlx/build/html/index.html), [XGBoost](https://xgboost.readthedocs.io/en/stable/), [LeRobot](https://github.com/huggingface/lerobot) for federated robots, [Pandas](https://pandas.pydata.org/) for federated analytics, or even raw [NumPy](https://numpy.org/)
|
92
92
|
for users who enjoy computing gradients by hand.
|
93
93
|
|
94
94
|
- **Understandable**: Flower is written with maintainability in mind. The
|
{flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/RECORD
RENAMED
@@ -2,14 +2,15 @@ flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
|
|
2
2
|
flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
|
3
3
|
flwr/cli/app.py,sha256=UeXrW5gxrUnFViDjAMIxGNZZKwu3a1oAj83v53IWIWM,1382
|
4
4
|
flwr/cli/build.py,sha256=4P70i_FnUs0P21aTwjTXtFQSAfY-C04hUDF-2npfJdo,6345
|
5
|
-
flwr/cli/cli_user_auth_interceptor.py,sha256=
|
6
|
-
flwr/cli/config_utils.py,sha256=
|
5
|
+
flwr/cli/cli_user_auth_interceptor.py,sha256=aZepPA298s-HjGmkJGMvI_uZe72O5aLC3jri-ilG53o,3126
|
6
|
+
flwr/cli/config_utils.py,sha256=V1s5s6-r5GINYe__yA33wkPOGjnmdaM9faEuIRMOrd4,7518
|
7
|
+
flwr/cli/constant.py,sha256=g7Ad7o3DJDkJNrWS0T3SSJETWSTkkVJWGpLM8zlbpcY,1289
|
7
8
|
flwr/cli/example.py,sha256=uk5CoD0ZITgpY_ffsTbEKf8XOOCSUzByjHPcMSPqV18,2216
|
8
|
-
flwr/cli/install.py,sha256
|
9
|
-
flwr/cli/log.py,sha256=
|
9
|
+
flwr/cli/install.py,sha256=-RnrYGejN_zyXXp_CoddSQwoQfRTWWyt9WYlxphJzyU,8180
|
10
|
+
flwr/cli/log.py,sha256=biR4Oz6C4ixwEjp2ybw_5QHtRO1Mip9Eb0FtQL3it_U,6652
|
10
11
|
flwr/cli/login/__init__.py,sha256=6_9zOzbPOAH72K2wX3-9dXTAbS7Mjpa5sEn2lA6eHHI,800
|
11
|
-
flwr/cli/login/login.py,sha256=
|
12
|
-
flwr/cli/ls.py,sha256=
|
12
|
+
flwr/cli/login/login.py,sha256=JfqkSO9TGzbPlJ_znh9DQY9neQIzxyW60fOwX85fGQc,3319
|
13
|
+
flwr/cli/ls.py,sha256=7oA-EIHm5LBKtdqV5rwwv3QnEoKXMDfIciKDbY-A9gs,11364
|
13
14
|
flwr/cli/new/__init__.py,sha256=pOQtPT9W4kCIttcKne5m-FtJbvTqdjTVJxzQ9AUYK8I,790
|
14
15
|
flwr/cli/new/new.py,sha256=scyyKt8mzkc3El1bypgkHjKwVQEc2-q4I50PxriPFdI,9922
|
15
16
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
@@ -65,26 +66,26 @@ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=PA_dEtWkY6Wf3Ektc9D
|
|
65
66
|
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=d7TwWH-QJN0j-9rs9zHnng_bHeHV7mk138KXqdv5BoE,686
|
66
67
|
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=r0SZnvoR5a5mEWKJIvQ3rW8C6-2DkhaC8A1fTA0avm0,710
|
67
68
|
flwr/cli/run/__init__.py,sha256=cCsKVB0SFzh2b3QmGba6BHckB85xlhjh3mh4pBpACtY,790
|
68
|
-
flwr/cli/run/run.py,sha256=
|
69
|
-
flwr/cli/stop.py,sha256=
|
70
|
-
flwr/cli/utils.py,sha256=
|
69
|
+
flwr/cli/run/run.py,sha256=l1RupVypUc51EoupUbnAxVLckFGkaGqanOY9zWHVfsY,8280
|
70
|
+
flwr/cli/stop.py,sha256=qTRuU_fQgDlQKUOiWCKD7-vxFHBM8TJssrXGnkbaojo,4907
|
71
|
+
flwr/cli/utils.py,sha256=RXozds-T7HN8yH0mMj67q-0YktdNNm83N9Ptu_pdhsc,10604
|
71
72
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
72
|
-
flwr/client/app.py,sha256=
|
73
|
+
flwr/client/app.py,sha256=tNnef5wGVfqMiiGiWzAuULyy1QpvCKukiRmNi_a2cQc,34261
|
73
74
|
flwr/client/client.py,sha256=8o58nd9o6ZFcMIaVYPGcV4MSjBG4H0oFgWiv8ZEO3oA,7895
|
74
75
|
flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
|
75
76
|
flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
|
76
|
-
flwr/client/clientapp/app.py,sha256=
|
77
|
+
flwr/client/clientapp/app.py,sha256=O2dghU6PBXeU6kK5Ihj2-8cKAzXIC1efyZv4aulqHU4,8952
|
77
78
|
flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
|
78
|
-
flwr/client/clientapp/utils.py,sha256=
|
79
|
+
flwr/client/clientapp/utils.py,sha256=qqTw9PKPCldGnnbAbMhtS-Qs_GcqADE1eOtVPXeKYAo,4344
|
79
80
|
flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
|
80
81
|
flwr/client/grpc_adapter_client/__init__.py,sha256=QyNWIbsq9DpyMk7oemiO1P3TBFfkfkctnJ1JoAkTl3s,742
|
81
82
|
flwr/client/grpc_adapter_client/connection.py,sha256=nV-hPd5q5Eblg6PgUrGGYj74mbE1a0qjfN8G3wzJVAc,4006
|
82
83
|
flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
|
83
|
-
flwr/client/grpc_client/connection.py,sha256=
|
84
|
+
flwr/client/grpc_client/connection.py,sha256=Y6VDDDEHCPlGxSf-bEyBua_khnY_F1OoXD-8gpIcYhE,9171
|
84
85
|
flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
|
85
|
-
flwr/client/grpc_rere_client/client_interceptor.py,sha256=
|
86
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
87
|
-
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=
|
86
|
+
flwr/client/grpc_rere_client/client_interceptor.py,sha256=8yX2jhwfX9r1PO76ZdME4tPefutnQqWPi7kELriBMUo,2451
|
87
|
+
flwr/client/grpc_rere_client/connection.py,sha256=9XBcTn4myN_pgAGM6QFQ2Q35clSqxfgY8irrChQuF6I,11668
|
88
|
+
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=VrSqHosRcWv8xDLKEabuzyHpVnRhjAEJf_MUFQxhDh8,6155
|
88
89
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
89
90
|
flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
|
90
91
|
flwr/client/message_handler/message_handler.py,sha256=s7FEfYJp5QB259Pj1L94_9AC24Kh5JyKC2U-E6eNkkY,6492
|
@@ -103,26 +104,29 @@ flwr/client/nodestate/nodestate.py,sha256=CmHZdR6kVO8tkffg42W0Yb9JdRmrUonZ9deXfU
|
|
103
104
|
flwr/client/nodestate/nodestate_factory.py,sha256=apUbcJG0a_FUVsc0TkNN3q9yovc9u_J34u9iuLFKTLQ,1430
|
104
105
|
flwr/client/numpy_client.py,sha256=chTkL9dOtK_wgUoYtzp5mfDOC1k8xPAd1qPIsB3hcjA,9581
|
105
106
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
106
|
-
flwr/client/rest_client/connection.py,sha256=
|
107
|
+
flwr/client/rest_client/connection.py,sha256=9_JDGHkmaiPgk6CmcQId56Ia1ucQfrqcpNOUObdZaZU,13008
|
107
108
|
flwr/client/run_info_store.py,sha256=ZN2Phi4DSLbSyzg8RmzJcVYh1g6eurHOmWRCT7GMtw4,4040
|
108
109
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
109
|
-
flwr/client/supernode/app.py,sha256=
|
110
|
+
flwr/client/supernode/app.py,sha256=xxtMgscyfF5iUrM2WpYQJDTGVt1nKdzSewhgOv308Ko,10990
|
110
111
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
111
112
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
112
113
|
flwr/common/address.py,sha256=9KNYE69WW_QVcyumsux3Qn1wmn4J7f13Y9nHASpvzbA,3018
|
113
114
|
flwr/common/args.py,sha256=bCvtG0hhh_hVjl9NoWsY_g7kLMIN3jCN7B883HvZ7hg,6223
|
114
115
|
flwr/common/auth_plugin/__init__.py,sha256=1Y8Oj3iB49IHDu9tvDih1J74Ygu7k85V9s2A4WORPyA,887
|
115
|
-
flwr/common/auth_plugin/auth_plugin.py,sha256=
|
116
|
-
flwr/common/config.py,sha256=
|
117
|
-
flwr/common/constant.py,sha256=
|
116
|
+
flwr/common/auth_plugin/auth_plugin.py,sha256=wgDorBUB4IkK6twQ8vNawRVz7BDPmKdXZBNLqhU9RSs,3871
|
117
|
+
flwr/common/config.py,sha256=n6T5Vi6BUFul37GUpKp9Doqnz35phJqSud_G3ySWlIQ,13336
|
118
|
+
flwr/common/constant.py,sha256=FLqav6UCcdCG61XZr31fmAFqOu4WRFG8zcbnwUyYJ4w,6202
|
118
119
|
flwr/common/context.py,sha256=uJ-mnoC_8y_udEb3kAX-r8CPphNTWM72z1AlsvQEu54,2403
|
119
120
|
flwr/common/date.py,sha256=NHHpESce5wYqEwoDXf09gp9U9l_5Bmlh2BsOcwS-kDM,1554
|
120
121
|
flwr/common/differential_privacy.py,sha256=XwcJ3rWr8S8BZUocc76vLSJAXIf6OHnWkBV6-xlIRuw,6106
|
121
122
|
flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf6d3qk6K7KBZGlV4Q,1074
|
122
123
|
flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
|
123
|
-
flwr/common/
|
124
|
-
flwr/common/
|
125
|
-
flwr/common/
|
124
|
+
flwr/common/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
|
125
|
+
flwr/common/exit/exit.py,sha256=DmZFyksp-w1sFDQekq5Z-qfnr-ivCAv78aQkqj-TDps,3458
|
126
|
+
flwr/common/exit/exit_code.py,sha256=PNEnCrZfOILjfDAFu5m-2YWEJBrk97xglq4zCUlqV7E,3470
|
127
|
+
flwr/common/exit_handlers.py,sha256=Dke87CC6d6b6kqkC2mF0I4JsP4mHhlQTFxkS4sKKgyw,3308
|
128
|
+
flwr/common/grpc.py,sha256=GCdiTCppW-clhzOo7OIJbsKIWKnJ9pqNTsAKhj7y4So,9646
|
129
|
+
flwr/common/logger.py,sha256=UPyI_98EDibqgf3epgWxFHxdXgYReSWtaKFf9Mj0hd0,12306
|
126
130
|
flwr/common/message.py,sha256=Zv4ID2BLQsbff0F03DI_MeFoHbSqVZAdDD9NcKYv6Zo,13832
|
127
131
|
flwr/common/object_ref.py,sha256=fIXf8aP5mG6Nuni7dvcKK5Di3zRfRWGs4ljvqIXplds,10115
|
128
132
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
@@ -139,98 +143,98 @@ flwr/common/retry_invoker.py,sha256=UIDKsn0AitS3fOr43WTqZAdD-TaHkBeTj1QxD7SGba0,
|
|
139
143
|
flwr/common/secure_aggregation/__init__.py,sha256=erPnTWdOfMH0K0HQTmj5foDJ6t3iYcExy2aACy8iZNQ,731
|
140
144
|
flwr/common/secure_aggregation/crypto/__init__.py,sha256=nlHesCWy8xxE5s6qHWnauCtyClcMQ2K0CEXAHakY5n0,738
|
141
145
|
flwr/common/secure_aggregation/crypto/shamir.py,sha256=wCSfEfeaPgJ9Om580-YPUF2ljiyRhq33TRC4HtwxYl8,2779
|
142
|
-
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=
|
146
|
+
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=J_pRkxbogc7e1fxRZStZFBdzzG5jeUycshJPpvyCt6g,5333
|
143
147
|
flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=zvVAIrIyI6OSzGhpCi8NNaTvPXmoMYQIPJT-NkBg8RU,3013
|
144
148
|
flwr/common/secure_aggregation/quantization.py,sha256=mC4uLf05zeONo8Ke-BY0Tj8UCMOS7VD93zHCzuv3MHU,2304
|
145
149
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=9MF-oQh62uD7rt9VeNB-rHf2gBLd5GL3S9OejCxmILY,2183
|
146
150
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=OgYd68YBRaHQYLc-YdExj9CSpwL58bVTaPrdHoAj2AE,3214
|
147
|
-
flwr/common/serde.py,sha256=
|
151
|
+
flwr/common/serde.py,sha256=iDVS5IXGKqEuzQAvnroH9c6KFEHxKFEWmkGP89PMOO0,31064
|
148
152
|
flwr/common/telemetry.py,sha256=APKVubU_zJNrE-M_rip6S6Fsu41DxY3tAjFWNOgTmC0,9086
|
149
|
-
flwr/common/typing.py,sha256=
|
153
|
+
flwr/common/typing.py,sha256=IMgs_7nDJWn8Eb7y16Hl4HC3imQV7_Hdla1IFs3B5u8,6382
|
150
154
|
flwr/common/version.py,sha256=aNSxLL49RKeLz8sPcZrsTEWtrAeQ0uxu6tjmfba4O60,1325
|
151
155
|
flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
|
152
|
-
flwr/proto/clientappio_pb2.py,sha256=
|
156
|
+
flwr/proto/clientappio_pb2.py,sha256=C42q8Efr7jDexSAUBs8RlDggBCylu615Lh0si8habX0,3954
|
153
157
|
flwr/proto/clientappio_pb2.pyi,sha256=iL6pOPmnot5wP3aXGiDfiUpp-eJIkysyju0ebPehS8Y,5670
|
154
|
-
flwr/proto/clientappio_pb2_grpc.py,sha256=
|
158
|
+
flwr/proto/clientappio_pb2_grpc.py,sha256=dHaaQB535Fvneec3gwXOTPTQ-l495GUkBS3qq-5WpCI,7452
|
155
159
|
flwr/proto/clientappio_pb2_grpc.pyi,sha256=cybktpMPaIMwrItd8hQaQDnRv4zNu_wgRddSqR9REyI,1822
|
156
|
-
flwr/proto/error_pb2.py,sha256=
|
160
|
+
flwr/proto/error_pb2.py,sha256=yU22xOnidohZg2dAI4RPdCb04UVu-3B4NfujLPCRauA,1329
|
157
161
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
158
|
-
flwr/proto/error_pb2_grpc.py,sha256=
|
162
|
+
flwr/proto/error_pb2_grpc.py,sha256=8-n4DqTGZuhUUcYLjPcv-d3C19n8fFBIL3RQCy5E4OE,897
|
159
163
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
160
|
-
flwr/proto/exec_pb2.py,sha256=
|
161
|
-
flwr/proto/exec_pb2.pyi,sha256=
|
162
|
-
flwr/proto/exec_pb2_grpc.py,sha256
|
164
|
+
flwr/proto/exec_pb2.py,sha256=mYfDOApEuXaaC-hF6HBgbvxhHpp_VoXqwF6tAbRCiXk,5922
|
165
|
+
flwr/proto/exec_pb2.pyi,sha256=2vbzq2OOYM5GI-Tug4eVM5J6xvNvSFtR8m3MsP-i-Q4,9477
|
166
|
+
flwr/proto/exec_pb2_grpc.py,sha256=3nGc21zqZ_vWda_k1Vzx8hMlZ2sNSweNkjm7ABDfls0,12278
|
163
167
|
flwr/proto/exec_pb2_grpc.pyi,sha256=M5k-FzeLWxal7zt28LJfzMWWRxmNknTC2BzHRRMa1sQ,2914
|
164
|
-
flwr/proto/fab_pb2.py,sha256
|
168
|
+
flwr/proto/fab_pb2.py,sha256=Q2-yT---MrRdzxVddy_xxQUtBIkrPU-odQ3qYaOfBwc,1870
|
165
169
|
flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
|
166
|
-
flwr/proto/fab_pb2_grpc.py,sha256=
|
170
|
+
flwr/proto/fab_pb2_grpc.py,sha256=VO-wNfkShf9z8sb8T4UUq2Pp2jKb8pjnexaSkWh2Xp4,895
|
167
171
|
flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
168
|
-
flwr/proto/fleet_pb2.py,sha256=
|
169
|
-
flwr/proto/fleet_pb2.pyi,sha256=
|
170
|
-
flwr/proto/fleet_pb2_grpc.py,sha256=
|
171
|
-
flwr/proto/fleet_pb2_grpc.pyi,sha256=
|
172
|
-
flwr/proto/grpcadapter_pb2.py,sha256=
|
172
|
+
flwr/proto/fleet_pb2.py,sha256=L2HLL669B2hlacC0HmHCFFZk2X3vNGarDqKQj4pNSSM,6842
|
173
|
+
flwr/proto/fleet_pb2.pyi,sha256=XT8Y79QB9ZWljt30hGmytkxJbu6H_D7ltkYopJQFM4o,12004
|
174
|
+
flwr/proto/fleet_pb2_grpc.py,sha256=hl2PqMcT-QH6kDoN_VBF9yvW8UKZlffrCMQigZDERso,17842
|
175
|
+
flwr/proto/fleet_pb2_grpc.pyi,sha256=sZXIu_9zp2OImuCMgMFS5mpx8qFdsgJ9Lzy3S_OWn30,4166
|
176
|
+
flwr/proto/grpcadapter_pb2.py,sha256=sPB1FbcNIjw5plvQqhd_vynO0-59n9U7G882l6o1z6Y,2101
|
173
177
|
flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
|
174
|
-
flwr/proto/grpcadapter_pb2_grpc.py,sha256=
|
178
|
+
flwr/proto/grpcadapter_pb2_grpc.py,sha256=BLQLCtfra5qGlwyN9VeWpmYKhfxe8POfhYKhrPnhYso,3636
|
175
179
|
flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=AgA9Qo_lnANb9SNuPzbZGAxupau-xcqYawZz6vqf-24,735
|
176
|
-
flwr/proto/log_pb2.py,sha256=
|
180
|
+
flwr/proto/log_pb2.py,sha256=Zwxi_yx3brrbsPKUpBtktlx97qFi76pFUp5w7vm6_Ok,1636
|
177
181
|
flwr/proto/log_pb2.pyi,sha256=ipuhgo40sAHTcRzCsGI1HwIstr5q0THPNk_cf62YyME,1448
|
178
|
-
flwr/proto/log_pb2_grpc.py,sha256=
|
182
|
+
flwr/proto/log_pb2_grpc.py,sha256=jYx0lak15BvbWFkYwcYmAJ17sckFCOHzuDALz43cY5c,895
|
179
183
|
flwr/proto/log_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
180
|
-
flwr/proto/message_pb2.py,sha256=
|
184
|
+
flwr/proto/message_pb2.py,sha256=4Diw__FXmNzdjczd3eptVqxDzhMlywx3gcGcmkeS3QY,3450
|
181
185
|
flwr/proto/message_pb2.pyi,sha256=kAFVgSi8j6ZYzkCQ9MkbrpUtVKgZsTYVIoQmcMB6BX0,5735
|
182
|
-
flwr/proto/message_pb2_grpc.py,sha256=
|
186
|
+
flwr/proto/message_pb2_grpc.py,sha256=YThZncIoEfLjcVtXqQLRfzOBejIcRcz5_vUrJwgwPow,899
|
183
187
|
flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
184
|
-
flwr/proto/node_pb2.py,sha256=
|
185
|
-
flwr/proto/node_pb2.pyi,sha256=
|
186
|
-
flwr/proto/node_pb2_grpc.py,sha256=
|
188
|
+
flwr/proto/node_pb2.py,sha256=W9RpawvpAKNLwTzYKNuttVVcIIUS7L8BMMsNTz1yVRI,1289
|
189
|
+
flwr/proto/node_pb2.pyi,sha256=CPMeIPzUeI5-Csw9sHktV9UBH4GbqiGuYzGQQKftm6Q,616
|
190
|
+
flwr/proto/node_pb2_grpc.py,sha256=wYepoRvqFZ3T91_QVEozdgW6Ur4Vc9QET326eWAbIwI,896
|
187
191
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
188
|
-
flwr/proto/recordset_pb2.py,sha256=
|
192
|
+
flwr/proto/recordset_pb2.py,sha256=gW4TQJO-XxvttG2vQ0P--veL3kMJA4A1WJCbtJo4Ym0,6651
|
189
193
|
flwr/proto/recordset_pb2.pyi,sha256=ypFNvroU4aIlnN0D6W4XAsOfm0UzTfXhxxL1v7u__Ac,15370
|
190
|
-
flwr/proto/recordset_pb2_grpc.py,sha256=
|
194
|
+
flwr/proto/recordset_pb2_grpc.py,sha256=3mSlNzYC2WmM7Veq58NG_z5PSZYrYxuJB-O_kZoZCDk,901
|
191
195
|
flwr/proto/recordset_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
192
|
-
flwr/proto/run_pb2.py,sha256=
|
196
|
+
flwr/proto/run_pb2.py,sha256=98ScUqBB5nQCaVnTGIvmK6qvanztkpVL7_Ac0Nb-7xQ,6007
|
193
197
|
flwr/proto/run_pb2.pyi,sha256=i6TEwphuFH94_kT2hZWb_RjndLuphkPrT3C2VP-NnVs,11739
|
194
|
-
flwr/proto/run_pb2_grpc.py,sha256=
|
198
|
+
flwr/proto/run_pb2_grpc.py,sha256=X_9bUyS0nKHTHNGeVxBHuD-LOp8-fi1v9O7gMNyb4Q4,895
|
195
199
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
196
|
-
flwr/proto/serverappio_pb2.py,sha256=
|
197
|
-
flwr/proto/serverappio_pb2.pyi,sha256=
|
198
|
-
flwr/proto/serverappio_pb2_grpc.py,sha256=
|
199
|
-
flwr/proto/serverappio_pb2_grpc.pyi,sha256=
|
200
|
-
flwr/proto/simulationio_pb2.py,sha256=
|
200
|
+
flwr/proto/serverappio_pb2.py,sha256=7nM9VyIfc1LEpfM0skhcRqL-CzDaqvB_nVhjGxfuwR4,6370
|
201
|
+
flwr/proto/serverappio_pb2.pyi,sha256=Ibe5Qw1F2zA0pCCoO4teCUvn7yvju1HZLuugpm1KLDM,9401
|
202
|
+
flwr/proto/serverappio_pb2_grpc.py,sha256=XBGxTLE95hydMffSmity2jR8ZTs_Ygo_WiEI54UF7TM,25506
|
203
|
+
flwr/proto/serverappio_pb2_grpc.pyi,sha256=_7gnTIDL1vO3shpuu32VXPLW1bPPb6tKSo3qXZqjOw4,6004
|
204
|
+
flwr/proto/simulationio_pb2.py,sha256=NsEQUcWnyQMz21LPGW53S7BxThmWsjr54STZNLNKonU,3369
|
201
205
|
flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
|
202
|
-
flwr/proto/simulationio_pb2_grpc.py,sha256=
|
206
|
+
flwr/proto/simulationio_pb2_grpc.py,sha256=KtWe5eXigmfXv3DNoRBgbzfb1QtDCWwo_1uWbDXeT3E,13081
|
203
207
|
flwr/proto/simulationio_pb2_grpc.pyi,sha256=YHvKtyo7UdbBgdhoN0ndzZeB5vIC3JuR5PAJLrl-OKM,3206
|
204
|
-
flwr/proto/task_pb2.py,sha256=
|
208
|
+
flwr/proto/task_pb2.py,sha256=AuAV3J4s-nlXTG_sCdyH5kXpGLfSG70L6eXNUyPoYmc,2605
|
205
209
|
flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
|
206
|
-
flwr/proto/task_pb2_grpc.py,sha256=
|
210
|
+
flwr/proto/task_pb2_grpc.py,sha256=6W5Fjm-05u4N41fHwhwauBIqyRAU68mjoj7yEku8ufo,896
|
207
211
|
flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
208
|
-
flwr/proto/transport_pb2.py,sha256=
|
212
|
+
flwr/proto/transport_pb2.py,sha256=xqDF2oI0PzAndH17O80SQkyOT_QF9m7CQ0166He7UDQ,10122
|
209
213
|
flwr/proto/transport_pb2.pyi,sha256=ipHQ03eFBqsxtAuAVefZ2lVr04BZ4YifJCS2eauNmy8,21627
|
210
|
-
flwr/proto/transport_pb2_grpc.py,sha256=
|
214
|
+
flwr/proto/transport_pb2_grpc.py,sha256=Nvn7oxzm1g1fPiGCGhyKxILDZHYG0CcgjySTzxq-q7s,3600
|
211
215
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
212
216
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
213
217
|
flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
|
214
|
-
flwr/server/app.py,sha256=
|
218
|
+
flwr/server/app.py,sha256=7Ru-udfJDLU3VHa47q_4ErdKROvuyRktjO6GWZMdvvg,32865
|
215
219
|
flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
|
216
220
|
flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
|
217
221
|
flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
|
218
222
|
flwr/server/compat/app.py,sha256=5vkHHm_h-4cMthvWD1GJo1ZW3eihytjGgvsgfXUK9gA,3298
|
219
|
-
flwr/server/compat/app_utils.py,sha256=
|
220
|
-
flwr/server/compat/driver_client_proxy.py,sha256=
|
223
|
+
flwr/server/compat/app_utils.py,sha256=Kggcoi5vQCBQmYvXBBUxhtDUcIwFiQyfphkHp2K1WxM,3546
|
224
|
+
flwr/server/compat/driver_client_proxy.py,sha256=jMmrfqSm4-qW0jOCTpHhN9Kw0ohfMwsyKU9buBzrfG0,4958
|
221
225
|
flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
|
222
226
|
flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
|
223
227
|
flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
|
224
228
|
flwr/server/driver/driver.py,sha256=u_fMfqLYTroTafGCNwKPHI4lttRL-Z5CqeT3_FHSq-Q,5701
|
225
|
-
flwr/server/driver/grpc_driver.py,sha256=
|
226
|
-
flwr/server/driver/inmemory_driver.py,sha256=
|
229
|
+
flwr/server/driver/grpc_driver.py,sha256=jJBQOlbPXT-qn1MzjReyFGFPTA6WpiJQoiXISrkAVsc,9668
|
230
|
+
flwr/server/driver/inmemory_driver.py,sha256=b1U1PrB_Vpn--vav8SX-sn0THD9BTlV9UFIpuWTWLro,6665
|
227
231
|
flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
|
228
232
|
flwr/server/run_serverapp.py,sha256=vIPhvJx0i5sEZO4IKM6ruCXmx4ncat76rh0B4KhdhhM,2446
|
229
233
|
flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
|
230
234
|
flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
|
231
235
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
232
236
|
flwr/server/serverapp/__init__.py,sha256=L0K-94UDdTyEZ8LDtYybGIIIv3HW6AhSVjXMUfYJQnQ,800
|
233
|
-
flwr/server/serverapp/app.py,sha256=
|
237
|
+
flwr/server/serverapp/app.py,sha256=3kjCL2c279EXdtzVNeOfaX-PK5updZKjBOrgV6DjVPM,8492
|
234
238
|
flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
|
235
239
|
flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
|
236
240
|
flwr/server/strategy/aggregate.py,sha256=PDvekufza13s9AsVmz9WASunaBs3yCtl8JVliFx9j6Q,13978
|
@@ -258,46 +262,46 @@ flwr/server/strategy/qfedavg.py,sha256=2ijNNc2vVODWLAaoYo9PCoaFvlanq0lbJ7I7Albdu
|
|
258
262
|
flwr/server/strategy/strategy.py,sha256=cXapkD5uDrt5C-RbmWDn9FLoap3Q41i7GKvbmfbCKtk,7524
|
259
263
|
flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
|
260
264
|
flwr/server/superlink/driver/__init__.py,sha256=5soEK5QSvxNjmJQ-CGTWROc4alSAeU0e9Ad9RDhsd3E,717
|
261
|
-
flwr/server/superlink/driver/serverappio_grpc.py,sha256=
|
262
|
-
flwr/server/superlink/driver/serverappio_servicer.py,sha256=
|
265
|
+
flwr/server/superlink/driver/serverappio_grpc.py,sha256=UzHwo6qYZMeOhr7nn1iZbcyDSmwvnq_kpYH0mEAndW0,2173
|
266
|
+
flwr/server/superlink/driver/serverappio_servicer.py,sha256=BgYsimZqTdUoeUzNF71IfcEi-Nl3Sb2zn2BCcPa_eTM,16402
|
263
267
|
flwr/server/superlink/ffs/__init__.py,sha256=FAY-zShcfPmOxosok2QyT6hTNMNctG8cH9s_nIl8jkI,840
|
264
268
|
flwr/server/superlink/ffs/disk_ffs.py,sha256=n_Ah0sQwXGVQ9wj5965nLjdkQQbpoHCljjXKFnwftsU,3297
|
265
269
|
flwr/server/superlink/ffs/ffs.py,sha256=qLI1UfosJugu2BKOJWqHIhafTm-YiuKqGf3OGWPH0NM,2395
|
266
270
|
flwr/server/superlink/ffs/ffs_factory.py,sha256=N_eMuUZggotdGiDQ5r_Tf21xsu_ob0e3jyM6ag7d3kk,1490
|
267
271
|
flwr/server/superlink/fleet/__init__.py,sha256=76od-HhYjOUoZFLFDFCFnNHI4JLAmaXQEAyp7LWlQpc,711
|
268
272
|
flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=spBQQJeYz8zPOBOfyMLv87kqWPASGB73AymcLXdFaYA,742
|
269
|
-
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=
|
273
|
+
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=RLYHmuNBtv7DUyxrUu6hmjqkum_WEsTP3RMpbqnVGic,4160
|
270
274
|
flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dkSKQMuMTYh1qSnuN87cAPv_mcdLg3f0PqTABHs8gUE,735
|
271
275
|
flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=ud08wi9j8OYRYVTIioL1xenOgrEbtS7afyr8MnQEk4I,6021
|
272
276
|
flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=JkAH_nIZaqe_9kntrg26od_jaz5XdLFuvNMgGu8xk9Q,6485
|
273
277
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4EjOXH5birmAnMoCBJcP7jpHYCnHZPk,4887
|
274
|
-
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=
|
278
|
+
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=mxPxyEF0IW0vV41Bqk1zfKOdRDEvXPwzJyMiRMg7nTI,5173
|
275
279
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
|
276
|
-
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=
|
277
|
-
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=
|
280
|
+
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=EVx3rHX8WjUXVX7Svki5ihsA1aIZkpOMLv0aQv9Rjjw,6656
|
281
|
+
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=zf58FXJ4S-k4kUh-LWcz6O6AWRcxs_ZGNQtUDDM7FVw,6307
|
278
282
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=h8oLD7uo5lKICPy0rRdKRjTYe62u8PKkT_fA4xF5JPA,731
|
279
|
-
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=
|
283
|
+
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=5QRqE0w8Kb-M2cEiPNIdKkPc17CEGHvNYjMpGOfgOlE,6886
|
280
284
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
|
281
|
-
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=
|
285
|
+
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=xj3knuVkhecT2KPz-0kQ8NlDMIsGcnDoCTGyNmLdIzM,7676
|
282
286
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=TZJsKTpYO_djv2EXx9Ji62I8TA0JiZF8jvRyJRZkAes,784
|
283
287
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=cGgal5qpd0_MwEdIqjJbHHSIgGa6GSPoI5_byUwtG_k,1437
|
284
288
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0QIvVP5O-RQxKQlUGNUj974,2194
|
285
289
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=jsUkFEVQTnrucK1jNQ_cUM8YwL7W4MQNA1GAf8ibRdg,7156
|
286
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
290
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=WTnUILr1OHS8LfjXQUA3FyWJYdJgdqpFAybyJUD-1Xo,13025
|
287
291
|
flwr/server/superlink/linkstate/__init__.py,sha256=v-2JyJlCB3qyhMNwMjmcNVOq4rkooqFU0LHH8Zo1jls,1064
|
288
|
-
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=
|
289
|
-
flwr/server/superlink/linkstate/linkstate.py,sha256=
|
292
|
+
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=v02iAvIlUqNnHodj_nERZh5lE5s-V3SxF3OiuoCnMXE,21561
|
293
|
+
flwr/server/superlink/linkstate/linkstate.py,sha256=oHqOOgmsbi7V8zc0pbZeypcvXEtPXRckrp6cdGG52Qo,12694
|
290
294
|
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=ISSMjDlwuN7swxjOeYlTNpI_kuZ8PGkMcJnf1dbhUSE,2069
|
291
|
-
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=
|
292
|
-
flwr/server/superlink/linkstate/utils.py,sha256=
|
295
|
+
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=zk3V63_sgRqKOpXXX02TfqLZpHpcxUHrVAGfxPq0yvA,42101
|
296
|
+
flwr/server/superlink/linkstate/utils.py,sha256=EpRehwI4NeEW3oINICPWP9STK49N0aszd5s5jtle7DQ,13602
|
293
297
|
flwr/server/superlink/simulation/__init__.py,sha256=mg-oapC9dkzEfjXPQFior5lpWj4g9kwbLovptyYM_g0,718
|
294
|
-
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=
|
298
|
+
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=8aUrZZLdvprKUfLLqFID4aItus9beU6m1qLQYIPB7k0,2224
|
295
299
|
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=J_TmdqM-Bxgp-iPEI3tvCuBpykw1UX0FouMQalEYAF4,6907
|
296
300
|
flwr/server/superlink/utils.py,sha256=KVb3K_g2vYfu9TnftcN0ewmev133WZcjuEePMm8d7GE,2137
|
297
301
|
flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
|
298
302
|
flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
|
299
303
|
flwr/server/utils/tensorboard.py,sha256=gEBD8w_5uaIfp5aw5RYH66lYZpd_SfkObHQ7eDd9MUk,5466
|
300
|
-
flwr/server/utils/validator.py,sha256=
|
304
|
+
flwr/server/utils/validator.py,sha256=SpoKWDlVfFI5aJr2jXWfwJjBc5OZUMMacQbOxj6wPdI,4603
|
301
305
|
flwr/server/workflow/__init__.py,sha256=SXY0XkwbkezFBxxrFB5hKUtmtAgnYISBkPouR1V71ss,902
|
302
306
|
flwr/server/workflow/constant.py,sha256=q4DLdR8Krlxuewq2AQjwTL75hphxE5ODNz4AhViHMXk,1082
|
303
307
|
flwr/server/workflow/default_workflows.py,sha256=UMC9JgdomKwxql5G0OV4AeRXWI-bMClaLAOn5OrZMnw,14073
|
@@ -305,24 +309,24 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B
|
|
305
309
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=l2IdMdJjs1bgHs5vQgLSOVzar7v2oxUn46oCrnVE1rM,5839
|
306
310
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=rfn2etO1nb7u-1oRl-H9q3enJZz3shMINZaBB7rPsC4,29671
|
307
311
|
flwr/simulation/__init__.py,sha256=5UcDVJNjFoSwWqHbGM1hKfTTUUNdwAtuoNvNrfvdkUY,1556
|
308
|
-
flwr/simulation/app.py,sha256=
|
309
|
-
flwr/simulation/legacy_app.py,sha256=
|
312
|
+
flwr/simulation/app.py,sha256=xRVSJBnTXQUqWIYOzENfTnJlZ24CSNhWkhVEFxIu4I0,9758
|
313
|
+
flwr/simulation/legacy_app.py,sha256=qpZI4Vvzr5TyWSLTRrMP-jN4rH2C25JI9nVSSjhFwSQ,15861
|
310
314
|
flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
|
311
315
|
flwr/simulation/ray_transport/ray_actor.py,sha256=k11yoAPQzFGQU-KnCCP0ZrfPPdUPXXrBe-1DKM5VdW4,18997
|
312
316
|
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=2vjOKoom3B74C6XU-jC3N6DwYmsLdB-lmkHZ_Xrv96o,7367
|
313
317
|
flwr/simulation/ray_transport/utils.py,sha256=wtbQhKQ4jGoiQDLJNQP17m1DSfL22ERhDBGuoeUFaAQ,2393
|
314
|
-
flwr/simulation/run_simulation.py,sha256=
|
318
|
+
flwr/simulation/run_simulation.py,sha256=KFpdL_RxE8NHZ68ZdghmFS6rccmWkO_iQ-kLLE1WUn8,20336
|
315
319
|
flwr/simulation/simulationio_connection.py,sha256=8aAh6MKQkQPMSnWEqA5vua_QzZtoMxG-_-AB23RPhS4,3412
|
316
320
|
flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
|
317
321
|
flwr/superexec/app.py,sha256=Z6kYHWd62YL0Q4YKyCAbt_BcefNfbKH6V-jCC-1NkZM,1842
|
318
322
|
flwr/superexec/deployment.py,sha256=wZ9G42gGS91knfplswh95MnQ83Fzu-rs6wcuNgDmmvY,6735
|
319
|
-
flwr/superexec/exec_grpc.py,sha256=
|
320
|
-
flwr/superexec/exec_servicer.py,sha256=
|
323
|
+
flwr/superexec/exec_grpc.py,sha256=ttA9qoZzSLF0Mfk1L4hzOkMSNuj5rR58_kKBYwcyrAg,2864
|
324
|
+
flwr/superexec/exec_servicer.py,sha256=X10ILT-AoGMrB3IgI2mBe9i-QcIVUAl9bucuqVOPYkU,8341
|
321
325
|
flwr/superexec/exec_user_auth_interceptor.py,sha256=K06OU-l4LnYhTDg071hGJuOaQWEJbZsYi5qxUmmtiG0,3704
|
322
326
|
flwr/superexec/executor.py,sha256=_B55WW2TD1fBINpabSSDRenVHXYmvlfhv-k8hJKU4lQ,3115
|
323
327
|
flwr/superexec/simulation.py,sha256=WQDon15oqpMopAZnwRZoTICYCfHqtkvFSqiTQ2hLD_g,4088
|
324
|
-
flwr_nightly-1.15.0.
|
325
|
-
flwr_nightly-1.15.0.
|
326
|
-
flwr_nightly-1.15.0.
|
327
|
-
flwr_nightly-1.15.0.
|
328
|
-
flwr_nightly-1.15.0.
|
328
|
+
flwr_nightly-1.15.0.dev20250123.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
329
|
+
flwr_nightly-1.15.0.dev20250123.dist-info/METADATA,sha256=K4ljj0Gg-RaK9xT0KwslcS2JTLR44qgOAo0_3W-2k_0,15864
|
330
|
+
flwr_nightly-1.15.0.dev20250123.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
331
|
+
flwr_nightly-1.15.0.dev20250123.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
|
332
|
+
flwr_nightly-1.15.0.dev20250123.dist-info/RECORD,,
|
{flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/LICENSE
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250104.dist-info → flwr_nightly-1.15.0.dev20250123.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|