flwr-nightly 1.10.0.dev20240722__py3-none-any.whl → 1.11.0.dev20240724__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/config_utils.py +13 -15
- flwr/cli/new/new.py +1 -1
- flwr/cli/new/templates/app/code/{client.hf.py.tpl → client.huggingface.py.tpl} +7 -5
- flwr/cli/new/templates/app/code/client.mlx.py.tpl +28 -10
- flwr/cli/new/templates/app/code/client.pytorch.py.tpl +7 -5
- flwr/cli/new/templates/app/code/client.sklearn.py.tpl +2 -2
- flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +17 -7
- flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +20 -17
- flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl +5 -3
- flwr/cli/new/templates/app/code/{server.hf.py.tpl → server.huggingface.py.tpl} +2 -1
- flwr/cli/new/templates/app/code/server.jax.py.tpl +2 -1
- flwr/cli/new/templates/app/code/server.mlx.py.tpl +2 -1
- flwr/cli/new/templates/app/code/server.numpy.py.tpl +2 -1
- flwr/cli/new/templates/app/code/server.pytorch.py.tpl +1 -1
- flwr/cli/new/templates/app/code/server.sklearn.py.tpl +2 -1
- flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +1 -1
- flwr/cli/new/templates/app/code/{task.hf.py.tpl → task.huggingface.py.tpl} +13 -1
- flwr/cli/new/templates/app/code/task.mlx.py.tpl +13 -1
- flwr/cli/new/templates/app/code/task.pytorch.py.tpl +13 -2
- flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +13 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +3 -3
- flwr/cli/new/templates/app/{pyproject.hf.toml.tpl → pyproject.huggingface.toml.tpl} +2 -2
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +3 -3
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +8 -8
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +3 -3
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +4 -4
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +3 -3
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +6 -6
- flwr/cli/run/run.py +31 -27
- flwr/client/supernode/app.py +12 -43
- flwr/common/config.py +6 -1
- flwr/common/object_ref.py +84 -21
- flwr/proto/exec_pb2.py +16 -12
- flwr/proto/exec_pb2.pyi +20 -1
- flwr/server/run_serverapp.py +0 -3
- flwr/server/superlink/fleet/vce/backend/__init__.py +1 -1
- flwr/server/superlink/fleet/vce/vce_api.py +4 -4
- flwr/simulation/__init__.py +1 -1
- flwr/simulation/run_simulation.py +32 -4
- flwr/superexec/app.py +4 -5
- flwr/superexec/deployment.py +1 -2
- flwr/superexec/exec_servicer.py +3 -1
- flwr/superexec/executor.py +3 -0
- flwr/superexec/simulation.py +39 -9
- {flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/METADATA +1 -1
- {flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/RECORD +49 -49
- {flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/entry_points.txt +0 -0
|
@@ -32,7 +32,11 @@ from flwr.client import ClientApp
|
|
|
32
32
|
from flwr.common import EventType, event, log
|
|
33
33
|
from flwr.common.config import get_fused_config_from_dir, parse_config_args
|
|
34
34
|
from flwr.common.constant import RUN_ID_NUM_BYTES
|
|
35
|
-
from flwr.common.logger import
|
|
35
|
+
from flwr.common.logger import (
|
|
36
|
+
set_logger_propagation,
|
|
37
|
+
update_console_handler,
|
|
38
|
+
warn_deprecated_feature_with_example,
|
|
39
|
+
)
|
|
36
40
|
from flwr.common.typing import Run, UserConfig
|
|
37
41
|
from flwr.server.driver import Driver, InMemoryDriver
|
|
38
42
|
from flwr.server.run_serverapp import run as run_server_app
|
|
@@ -93,6 +97,14 @@ def run_simulation_from_cli() -> None:
|
|
|
93
97
|
"""Run Simulation Engine from the CLI."""
|
|
94
98
|
args = _parse_args_run_simulation().parse_args()
|
|
95
99
|
|
|
100
|
+
if args.enable_tf_gpu_growth:
|
|
101
|
+
warn_deprecated_feature_with_example(
|
|
102
|
+
"Passing `--enable-tf-gpu-growth` is deprecated.",
|
|
103
|
+
example_message="Instead, set the `TF_FORCE_GPU_ALLOW_GROWTH` environmnet "
|
|
104
|
+
"variable to true.",
|
|
105
|
+
code_example='TF_FORCE_GPU_ALLOW_GROWTH="true" flower-simulation <...>',
|
|
106
|
+
)
|
|
107
|
+
|
|
96
108
|
# We are supporting two modes for the CLI entrypoint:
|
|
97
109
|
# 1) Running an app dir containing a `pyproject.toml`
|
|
98
110
|
# 2) Running any ClientApp and SeverApp w/o pyproject.toml being present
|
|
@@ -223,6 +235,15 @@ def run_simulation(
|
|
|
223
235
|
When disabled, only INFO, WARNING and ERROR log messages will be shown. If
|
|
224
236
|
enabled, DEBUG-level logs will be displayed.
|
|
225
237
|
"""
|
|
238
|
+
if enable_tf_gpu_growth:
|
|
239
|
+
warn_deprecated_feature_with_example(
|
|
240
|
+
"Passing `enable_tf_gpu_growth=True` is deprecated.",
|
|
241
|
+
example_message="Instead, set the `TF_FORCE_GPU_ALLOW_GROWTH` environmnet "
|
|
242
|
+
"variable to true.",
|
|
243
|
+
code_example='import os;os.environ["TF_FORCE_GPU_ALLOW_GROWTH"]="true"'
|
|
244
|
+
"\n\tflwr.simulation.run_simulationt(...)",
|
|
245
|
+
)
|
|
246
|
+
|
|
226
247
|
_run_simulation(
|
|
227
248
|
num_supernodes=num_supernodes,
|
|
228
249
|
client_app=client_app,
|
|
@@ -264,7 +285,7 @@ def run_serverapp_th(
|
|
|
264
285
|
"""
|
|
265
286
|
try:
|
|
266
287
|
if tf_gpu_growth:
|
|
267
|
-
log(INFO, "Enabling GPU growth for Tensorflow on the
|
|
288
|
+
log(INFO, "Enabling GPU growth for Tensorflow on the server thread.")
|
|
268
289
|
enable_gpu_growth()
|
|
269
290
|
|
|
270
291
|
# Run ServerApp
|
|
@@ -475,6 +496,14 @@ def _run_simulation(
|
|
|
475
496
|
if "init_args" not in backend_config:
|
|
476
497
|
backend_config["init_args"] = {}
|
|
477
498
|
|
|
499
|
+
# Set default client_resources if not passed
|
|
500
|
+
if "client_resources" not in backend_config:
|
|
501
|
+
backend_config["client_resources"] = {"num_cpus": 2, "num_gpus": 0}
|
|
502
|
+
|
|
503
|
+
# Initialization of backend config to enable GPU growth globally when set
|
|
504
|
+
if "actor" not in backend_config:
|
|
505
|
+
backend_config["actor"] = {"tensorflow": 0}
|
|
506
|
+
|
|
478
507
|
# Set logging level
|
|
479
508
|
logger = logging.getLogger("flwr")
|
|
480
509
|
if verbose_logging:
|
|
@@ -580,8 +609,7 @@ def _parse_args_run_simulation() -> argparse.ArgumentParser:
|
|
|
580
609
|
parser.add_argument(
|
|
581
610
|
"--backend-config",
|
|
582
611
|
type=str,
|
|
583
|
-
default=
|
|
584
|
-
'"actor": {"tensorflow": 0}}',
|
|
612
|
+
default="{}",
|
|
585
613
|
help='A JSON formatted stream, e.g \'{"<keyA>":<value>, "<keyB>":<value>}\' to '
|
|
586
614
|
"configure a backend. Values supported in <value> are those included by "
|
|
587
615
|
"`flwr.common.typing.ConfigsRecordValues`. ",
|
flwr/superexec/app.py
CHANGED
|
@@ -93,7 +93,9 @@ def _parse_args_run_superexec() -> argparse.ArgumentParser:
|
|
|
93
93
|
)
|
|
94
94
|
parser.add_argument(
|
|
95
95
|
"--executor-config",
|
|
96
|
-
help="Key-value pairs for the executor config, separated by commas."
|
|
96
|
+
help="Key-value pairs for the executor config, separated by commas. "
|
|
97
|
+
'For example:\n\n`--executor-config superlink="superlink:9091",'
|
|
98
|
+
'root-certificates="certificates/superlink-ca.crt"`',
|
|
97
99
|
)
|
|
98
100
|
parser.add_argument(
|
|
99
101
|
"--insecure",
|
|
@@ -163,11 +165,8 @@ def _load_executor(
|
|
|
163
165
|
args: argparse.Namespace,
|
|
164
166
|
) -> Executor:
|
|
165
167
|
"""Get the executor plugin."""
|
|
166
|
-
if args.executor_dir is not None:
|
|
167
|
-
sys.path.insert(0, args.executor_dir)
|
|
168
|
-
|
|
169
168
|
executor_ref: str = args.executor
|
|
170
|
-
valid, error_msg = validate(executor_ref)
|
|
169
|
+
valid, error_msg = validate(executor_ref, project_dir=args.executor_dir)
|
|
171
170
|
if not valid and error_msg:
|
|
172
171
|
raise LoadExecutorError(error_msg) from None
|
|
173
172
|
|
flwr/superexec/deployment.py
CHANGED
|
@@ -135,6 +135,7 @@ class DeploymentEngine(Executor):
|
|
|
135
135
|
self,
|
|
136
136
|
fab_file: bytes,
|
|
137
137
|
override_config: UserConfig,
|
|
138
|
+
federation_config: UserConfig,
|
|
138
139
|
) -> Optional[RunTracker]:
|
|
139
140
|
"""Start run using the Flower Deployment Engine."""
|
|
140
141
|
try:
|
|
@@ -167,8 +168,6 @@ class DeploymentEngine(Executor):
|
|
|
167
168
|
# Execute the command
|
|
168
169
|
proc = subprocess.Popen( # pylint: disable=consider-using-with
|
|
169
170
|
command,
|
|
170
|
-
stdout=subprocess.PIPE,
|
|
171
|
-
stderr=subprocess.PIPE,
|
|
172
171
|
text=True,
|
|
173
172
|
)
|
|
174
173
|
log(INFO, "Started run %s", str(run_id))
|
flwr/superexec/exec_servicer.py
CHANGED
|
@@ -47,7 +47,9 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
|
47
47
|
log(INFO, "ExecServicer.StartRun")
|
|
48
48
|
|
|
49
49
|
run = self.executor.start_run(
|
|
50
|
-
request.fab_file,
|
|
50
|
+
request.fab_file,
|
|
51
|
+
user_config_from_proto(request.override_config),
|
|
52
|
+
user_config_from_proto(request.federation_config),
|
|
51
53
|
)
|
|
52
54
|
|
|
53
55
|
if run is None:
|
flwr/superexec/executor.py
CHANGED
|
@@ -51,6 +51,7 @@ class Executor(ABC):
|
|
|
51
51
|
self,
|
|
52
52
|
fab_file: bytes,
|
|
53
53
|
override_config: UserConfig,
|
|
54
|
+
federation_config: UserConfig,
|
|
54
55
|
) -> Optional[RunTracker]:
|
|
55
56
|
"""Start a run using the given Flower FAB ID and version.
|
|
56
57
|
|
|
@@ -63,6 +64,8 @@ class Executor(ABC):
|
|
|
63
64
|
The Flower App Bundle file bytes.
|
|
64
65
|
override_config: UserConfig
|
|
65
66
|
The config overrides dict sent by the user (using `flwr run`).
|
|
67
|
+
federation_config: UserConfig
|
|
68
|
+
The federation options dict sent by the user (using `flwr run`).
|
|
66
69
|
|
|
67
70
|
Returns
|
|
68
71
|
-------
|
flwr/superexec/simulation.py
CHANGED
|
@@ -32,6 +32,25 @@ from flwr.server.superlink.state.utils import generate_rand_int_from_bytes
|
|
|
32
32
|
from .executor import Executor, RunTracker
|
|
33
33
|
|
|
34
34
|
|
|
35
|
+
def _user_config_to_str(user_config: UserConfig) -> str:
|
|
36
|
+
"""Convert override user config to string."""
|
|
37
|
+
user_config_list_str = []
|
|
38
|
+
for key, value in user_config.items():
|
|
39
|
+
if isinstance(value, bool):
|
|
40
|
+
user_config_list_str.append(f"{key}={str(value).lower()}")
|
|
41
|
+
elif isinstance(value, (int, float)):
|
|
42
|
+
user_config_list_str.append(f"{key}={value}")
|
|
43
|
+
elif isinstance(value, str):
|
|
44
|
+
user_config_list_str.append(f'{key}="{value}"')
|
|
45
|
+
else:
|
|
46
|
+
raise ValueError(
|
|
47
|
+
"Only types `bool`, `float`, `int` and `str` are supported"
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
user_config_str = ",".join(user_config_list_str)
|
|
51
|
+
return user_config_str
|
|
52
|
+
|
|
53
|
+
|
|
35
54
|
class SimulationEngine(Executor):
|
|
36
55
|
"""Simulation engine executor.
|
|
37
56
|
|
|
@@ -62,13 +81,11 @@ class SimulationEngine(Executor):
|
|
|
62
81
|
- "num-supernodes": int
|
|
63
82
|
Number of nodes to register for the simulation.
|
|
64
83
|
"""
|
|
65
|
-
if not config:
|
|
66
|
-
return
|
|
67
84
|
if num_supernodes := config.get("num-supernodes"):
|
|
68
85
|
if not isinstance(num_supernodes, int):
|
|
69
86
|
raise ValueError("The `num-supernodes` value should be of type `int`.")
|
|
70
87
|
self.num_supernodes = num_supernodes
|
|
71
|
-
|
|
88
|
+
elif self.num_supernodes is None:
|
|
72
89
|
log(
|
|
73
90
|
ERROR,
|
|
74
91
|
"To start a run with the simulation plugin, please specify "
|
|
@@ -82,9 +99,22 @@ class SimulationEngine(Executor):
|
|
|
82
99
|
|
|
83
100
|
@override
|
|
84
101
|
def start_run(
|
|
85
|
-
self,
|
|
102
|
+
self,
|
|
103
|
+
fab_file: bytes,
|
|
104
|
+
override_config: UserConfig,
|
|
105
|
+
federation_config: UserConfig,
|
|
86
106
|
) -> Optional[RunTracker]:
|
|
87
107
|
"""Start run using the Flower Simulation Engine."""
|
|
108
|
+
if self.num_supernodes is None:
|
|
109
|
+
raise ValueError(
|
|
110
|
+
"Error in `SuperExec` (`SimulationEngine` executor):\n\n"
|
|
111
|
+
"`num-supernodes` must not be `None`, it must be a valid "
|
|
112
|
+
"positive integer. In order to start this simulation executor "
|
|
113
|
+
"with a specified number of `SuperNodes`, you can either provide "
|
|
114
|
+
"a `--executor` that has been initialized with a number of nodes "
|
|
115
|
+
"to the `flower-superexec` CLI, or `--executor-config num-supernodes=N`"
|
|
116
|
+
"to the `flower-superexec` CLI."
|
|
117
|
+
)
|
|
88
118
|
try:
|
|
89
119
|
|
|
90
120
|
# Install FAB to flwr dir
|
|
@@ -120,18 +150,18 @@ class SimulationEngine(Executor):
|
|
|
120
150
|
"--app",
|
|
121
151
|
f"{str(fab_path)}",
|
|
122
152
|
"--num-supernodes",
|
|
123
|
-
f"{self.num_supernodes}",
|
|
153
|
+
f"{federation_config.get('num-supernodes', self.num_supernodes)}",
|
|
124
154
|
"--run-id",
|
|
125
155
|
str(run_id),
|
|
126
156
|
]
|
|
127
157
|
|
|
128
158
|
if override_config:
|
|
129
|
-
|
|
159
|
+
override_config_str = _user_config_to_str(override_config)
|
|
160
|
+
command.extend(["--run-config", f"{override_config_str}"])
|
|
130
161
|
|
|
131
162
|
# Start Simulation
|
|
132
|
-
proc = subprocess.
|
|
163
|
+
proc = subprocess.Popen( # pylint: disable=consider-using-with
|
|
133
164
|
command,
|
|
134
|
-
check=True,
|
|
135
165
|
text=True,
|
|
136
166
|
)
|
|
137
167
|
|
|
@@ -139,7 +169,7 @@ class SimulationEngine(Executor):
|
|
|
139
169
|
|
|
140
170
|
return RunTracker(
|
|
141
171
|
run_id=run_id,
|
|
142
|
-
proc=proc,
|
|
172
|
+
proc=proc,
|
|
143
173
|
)
|
|
144
174
|
|
|
145
175
|
# pylint: disable-next=broad-except
|
{flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/RECORD
RENAMED
|
@@ -2,11 +2,11 @@ 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=FBcSrE35ll88VE11ib67qgsJe2GYDN25UswV9-cYcX8,1267
|
|
4
4
|
flwr/cli/build.py,sha256=5igi2013fLH-TlR6MNpbxNEMaVqdBbts-E-WdY3JPsE,5167
|
|
5
|
-
flwr/cli/config_utils.py,sha256=
|
|
5
|
+
flwr/cli/config_utils.py,sha256=kSgAMA4KE2SEKmfKLEvMcYQVdT8fTEnX5JTq2t04wGM,7057
|
|
6
6
|
flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
|
|
7
7
|
flwr/cli/install.py,sha256=AI6Zv2dQVDHpLDX1Z_vX5XHVxmZo1OU3ndCSrD2stzQ,7059
|
|
8
8
|
flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
|
|
9
|
-
flwr/cli/new/new.py,sha256=
|
|
9
|
+
flwr/cli/new/new.py,sha256=LIUAIxhqc04rxl8sOr-9JbUlOWNiHf6UUpiDQD1hH-s,9623
|
|
10
10
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
|
11
11
|
flwr/cli/new/templates/app/.gitignore.tpl,sha256=XixnHdyeMB2vwkGtGnwHqoWpH-9WChdyG0GXe57duhc,3078
|
|
12
12
|
flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=PqzkGm0g6Zy-vZK9_0EO3f_U6g1r69lGc4UL8kds5Q8,2696
|
|
@@ -14,43 +14,43 @@ flwr/cli/new/templates/app/README.md.tpl,sha256=_qGtgpKYKoCJVjQnvlBMKvFs_1gzTcL9
|
|
|
14
14
|
flwr/cli/new/templates/app/__init__.py,sha256=DU7QMY7IhMQyuwm_tja66xU0KXTWQFqzfTqwg-_NJdE,729
|
|
15
15
|
flwr/cli/new/templates/app/code/__init__.py,sha256=EM6vfvgAILKPaPn7H1wMV1Wi01WyZCP_Eg6NxD6oWg8,736
|
|
16
16
|
flwr/cli/new/templates/app/code/__init__.py.tpl,sha256=olwrBeJemHNBWvjc6gJURloFRqW40dAy7FRQA5pDqHU,21
|
|
17
|
-
flwr/cli/new/templates/app/code/client.
|
|
17
|
+
flwr/cli/new/templates/app/code/client.huggingface.py.tpl,sha256=gELeNHzJQLMhBIMxnW7rqKGHf-jE9oLMWA2-UesVCao,1813
|
|
18
18
|
flwr/cli/new/templates/app/code/client.jax.py.tpl,sha256=i_SZykD42vqEvv2ZyX655szuikXJXLc6uV1T-LWiYLU,1479
|
|
19
|
-
flwr/cli/new/templates/app/code/client.mlx.py.tpl,sha256=
|
|
19
|
+
flwr/cli/new/templates/app/code/client.mlx.py.tpl,sha256=2NBg3Q7siU-SsReTMZ6W1VwcuVImaxH7L2r1AkSJyYQ,2895
|
|
20
20
|
flwr/cli/new/templates/app/code/client.numpy.py.tpl,sha256=ov9mtWJGjaQ9ZVlQ5jsuCjHDeETf13GFla5jbP3KimE,561
|
|
21
|
-
flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256
|
|
22
|
-
flwr/cli/new/templates/app/code/client.sklearn.py.tpl,sha256=
|
|
23
|
-
flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=
|
|
21
|
+
flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256=-Q41F1fqt_RzqM_C3qA-dKl4AoRev9jZq-pFo7LCaVU,1558
|
|
22
|
+
flwr/cli/new/templates/app/code/client.sklearn.py.tpl,sha256=9JUQc_qAoo7dizeAhaHC_Ml06dYtEIxHZrCNxl5xTDs,2976
|
|
23
|
+
flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=yIK9nE5YUaidM5YPtlfBbfMBSYDp-h7adjmT599TtR8,1891
|
|
24
24
|
flwr/cli/new/templates/app/code/flwr_tune/__init__.py,sha256=JgNgBtKdm1jKM9625WxappCAVUGtYAmcjKSsXJ1u3ZQ,748
|
|
25
|
-
flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl,sha256=
|
|
26
|
-
flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl,sha256=
|
|
25
|
+
flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl,sha256=LOtmEYYayMCpF4rJRdo059n5w_cZRmzyuEkCN2qpTyQ,2826
|
|
26
|
+
flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl,sha256=3s41XYHRvmcLhyA60tZyGCNK2wxo2shl6mwmPfZANlA,4155
|
|
27
27
|
flwr/cli/new/templates/app/code/flwr_tune/config.yaml.tpl,sha256=aPjrwFU020tPkJmOjzSUjb9dSi2bhs4ZTMEyd0uRlCA,867
|
|
28
28
|
flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl,sha256=kPG4AIXQfNNHZGYC3amet3ttI23N72N6jjoDkp_wYIA,2028
|
|
29
29
|
flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl,sha256=cEq9ZWM3zImJVceNtxHC_bYBLE8OChK0BdjpWs5Wz-0,1881
|
|
30
30
|
flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl,sha256=tz4hgAGV6pn5cOFW10ELRNRsUzLBSssHxrH_gSs_jtk,1552
|
|
31
31
|
flwr/cli/new/templates/app/code/flwr_tune/static_config.yaml.tpl,sha256=cBPpBVN_N7p4T2a3rqChlngmE0dB_jveOLHesNcEHvs,268
|
|
32
|
-
flwr/cli/new/templates/app/code/server.
|
|
33
|
-
flwr/cli/new/templates/app/code/server.jax.py.tpl,sha256=
|
|
34
|
-
flwr/cli/new/templates/app/code/server.mlx.py.tpl,sha256=
|
|
35
|
-
flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=
|
|
36
|
-
flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=
|
|
37
|
-
flwr/cli/new/templates/app/code/server.sklearn.py.tpl,sha256=
|
|
38
|
-
flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=
|
|
39
|
-
flwr/cli/new/templates/app/code/task.
|
|
32
|
+
flwr/cli/new/templates/app/code/server.huggingface.py.tpl,sha256=r-sO6W-K-apf3byEQDh70ANHfPwsRgArJgTuctFFBi4,601
|
|
33
|
+
flwr/cli/new/templates/app/code/server.jax.py.tpl,sha256=hg6GrJu4B1Lifc-WyZq9vb3c5FnrTjkz3rdr3HxrJwo,518
|
|
34
|
+
flwr/cli/new/templates/app/code/server.mlx.py.tpl,sha256=qyo_Nla-AVC1Yf7sJJ-xlOHLLE7e0FRNkWcoltB68ag,518
|
|
35
|
+
flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=R_-xdu9eEvrN_lhyqK4akSCQaj7sPP4QIACZkUZ7Ihw,520
|
|
36
|
+
flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=FH6jQsUliJueMVzXlrvr1aFwXWq6Mp_6jjmNbolkEcA,834
|
|
37
|
+
flwr/cli/new/templates/app/code/server.sklearn.py.tpl,sha256=blkpvISjmPNOaJCyZf5Ezrg8VyxXdHUzxb3vMxcD3Lg,622
|
|
38
|
+
flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=LGQaVsfo5rVzgiFTew0z3O6AVwIoDG5rdobnwMpb1yE,852
|
|
39
|
+
flwr/cli/new/templates/app/code/task.huggingface.py.tpl,sha256=jiCZobChVJkm9OomI9_Q0bCsdGfXMgVh5bY_OulsLMk,3163
|
|
40
40
|
flwr/cli/new/templates/app/code/task.jax.py.tpl,sha256=u4o3V019EH79szOw2xzVeC5r9xgQiayPi9ZTIopV2TA,1519
|
|
41
|
-
flwr/cli/new/templates/app/code/task.mlx.py.tpl,sha256=
|
|
42
|
-
flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=
|
|
43
|
-
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=
|
|
44
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=
|
|
45
|
-
flwr/cli/new/templates/app/pyproject.
|
|
46
|
-
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=
|
|
47
|
-
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=
|
|
48
|
-
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=
|
|
49
|
-
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=
|
|
50
|
-
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=
|
|
51
|
-
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=
|
|
41
|
+
flwr/cli/new/templates/app/code/task.mlx.py.tpl,sha256=q4yf8B0hdvHKZUvuhlxpQpyY-wfV5pbqEQ4VHFtuqkU,2899
|
|
42
|
+
flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=LEBb0-IOAlnRnn-aTAYv80Fgs67wHCSP6PlhNBdsH2k,3939
|
|
43
|
+
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=8sZ8Y5kkaptzwfhAeuoBdth7VFQmD9jjjUrRvcyRrEk,1330
|
|
44
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=chTKewidM-st9Uk5o95tGOqJ5FSa1L2R0UdSW2wTr0c,789
|
|
45
|
+
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=X82t0bKRzsTG1w5kjkZhCLneyFJouX41-6Uvsj1sb8Q,776
|
|
46
|
+
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=9_Gz-6feYYXV5aMlV4WllTyjIJWXxWb7cVVchUauwgc,663
|
|
47
|
+
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=0q2vl4zFRiW3ElZiSzpEL2ZvHkzfKhZw-3zMTUHNDxk,752
|
|
48
|
+
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=6KPl7wLZ6d4aV-GmL6JXolwPtbs5IZ4NOyZ3fU54ahg,616
|
|
49
|
+
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=PlRf_AwQdFzA-PL5kvE3bXbLU3feSZLopOYVHHtUV6I,702
|
|
50
|
+
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=6rPeA9XgQByr6ECnlkNYpjYgQKA3BKTJFFvDBjjL6l8,665
|
|
51
|
+
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=zMb6GxI91ta9jQDg6zSww7I7bvO0oq9RutIKEwN2OVM,713
|
|
52
52
|
flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
|
|
53
|
-
flwr/cli/run/run.py,sha256=
|
|
53
|
+
flwr/cli/run/run.py,sha256=s6I2EU6dmjJHPJ_LNdjIBe9UZlCwvf5RA5O61nAgO3g,7483
|
|
54
54
|
flwr/cli/utils.py,sha256=l65Ul0YsSBPuypk0uorAtEDmLEYiUrzpCXi6zCg9mJ4,4506
|
|
55
55
|
flwr/client/__init__.py,sha256=wzJZsYJIHf_8-PMzvfbinyzzjgh1UP1vLrAw2_yEbKI,1345
|
|
56
56
|
flwr/client/app.py,sha256=VJ_vPMVfur5_SqUjHa18VWLB6I9kOav78f5myC_iWuk,26110
|
|
@@ -83,11 +83,11 @@ flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,1
|
|
|
83
83
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
|
84
84
|
flwr/client/rest_client/connection.py,sha256=8LPk7zPvX3l3-5QQXNym8DkIe6V14uEHmTzQ8jCcsnQ,12198
|
|
85
85
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
|
86
|
-
flwr/client/supernode/app.py,sha256=
|
|
86
|
+
flwr/client/supernode/app.py,sha256=GI2jnttoUt31v39Q-F2dS-WZuesG7IhGXfhP0oylaUU,14694
|
|
87
87
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
|
88
88
|
flwr/common/__init__.py,sha256=4cBLNNnNTwHDnL_HCxhU5ILCSZ6fYh3A_aMBtlvHTVw,3721
|
|
89
89
|
flwr/common/address.py,sha256=wRu1Luezx1PWadwV9OA_KNko01oVvbRnPqfzaDn8QOk,1882
|
|
90
|
-
flwr/common/config.py,sha256=
|
|
90
|
+
flwr/common/config.py,sha256=IN3UVfC4h-ItpbAOhJXNsVA63ZOJ05twsmIv3AbSU04,5599
|
|
91
91
|
flwr/common/constant.py,sha256=1XxuRezsr9fl3xvQNPR2kyFkwNeG_f5vZayv0PFh0kY,3012
|
|
92
92
|
flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
|
|
93
93
|
flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
|
|
@@ -98,7 +98,7 @@ flwr/common/exit_handlers.py,sha256=2Nt0wLhc17KQQsLPFSRAjjhUiEFfJK6tNozdGiIY4Fs,
|
|
|
98
98
|
flwr/common/grpc.py,sha256=_9838_onFLx7W6_lakUN35ziKpdcKp7fA-0jE0EhcEQ,2460
|
|
99
99
|
flwr/common/logger.py,sha256=42rLD69BetRkVKYXZLUaTgyjPxsCn6phVbndMC1fWjk,8130
|
|
100
100
|
flwr/common/message.py,sha256=QmFYYXA-3e9M8tGO-3NPyAI8yvdmcpdYaA_noR1DE88,13194
|
|
101
|
-
flwr/common/object_ref.py,sha256=
|
|
101
|
+
flwr/common/object_ref.py,sha256=qXwF441qulzl18pggrj9LDLtz92K83xjAuSA0HfPKP0,8724
|
|
102
102
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
|
103
103
|
flwr/common/pyproject.py,sha256=EI_ovbCHGmhYrdPx0RSDi5EkFZFof-8m1PA54c0ZTjc,1385
|
|
104
104
|
flwr/common/record/__init__.py,sha256=ejDBQOIA0OkwZAC5cK_tTPHA4oAM0Ju7Oi13-NneMlE,1054
|
|
@@ -135,8 +135,8 @@ flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
|
|
|
135
135
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
136
136
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
137
137
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
138
|
-
flwr/proto/exec_pb2.py,sha256=
|
|
139
|
-
flwr/proto/exec_pb2.pyi,sha256=
|
|
138
|
+
flwr/proto/exec_pb2.py,sha256=7b1JUZgt04lBxdXpnd3WOOwmY2egUausm4G1wbmXFPs,3120
|
|
139
|
+
flwr/proto/exec_pb2.pyi,sha256=R9xCAUxkLvuXcvQfhNGZ5Qy8qiUCdjN-gp3Iy5BmkNo,4110
|
|
140
140
|
flwr/proto/exec_pb2_grpc.py,sha256=faAN19XEMP8GTKrcIU6jvlWkN44n2KiUsZh_OG0sYcg,4072
|
|
141
141
|
flwr/proto/exec_pb2_grpc.pyi,sha256=VrFhT1Um3Nb8UC2YqnR9GIiM-Yyx0FqaxVOWljh-G_w,1208
|
|
142
142
|
flwr/proto/fab_pb2.py,sha256=k1L3z4L3pJGRIUmgt609xUe-UAtSKFwT0C7wXnb12IY,1427
|
|
@@ -187,7 +187,7 @@ flwr/server/driver/driver.py,sha256=NT_yaeit7_kZEIsCEqOWPID1GrVD3ywH4xZ2wtIh5lM,
|
|
|
187
187
|
flwr/server/driver/grpc_driver.py,sha256=4LMLDXjMU1VdHsj9nyqFIF71GWVsUR85fsO6biWMHRU,9710
|
|
188
188
|
flwr/server/driver/inmemory_driver.py,sha256=RcK94_NtjGZ4aZDIscnU7A3Uv1u8jGx29-xcbjQvZTM,6444
|
|
189
189
|
flwr/server/history.py,sha256=bBOHKyX1eQONIsUx4EUU-UnAk1i0EbEl8ioyMq_UWQ8,5063
|
|
190
|
-
flwr/server/run_serverapp.py,sha256=
|
|
190
|
+
flwr/server/run_serverapp.py,sha256=khrB9bQ42p8DMRJLGoY_pQJ5bkpXyBPL0eyPdZJo29Y,9430
|
|
191
191
|
flwr/server/server.py,sha256=wsXsxMZ9SQ0B42nBnUlcV83NJPycgrgg5bFwcQ4BYBE,17821
|
|
192
192
|
flwr/server/server_app.py,sha256=1hul76ospG8L_KooK_ewn1sWPNTNYLTtZMeGNOBNruA,6267
|
|
193
193
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
|
@@ -236,10 +236,10 @@ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=KgNah2AaND
|
|
|
236
236
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=5jbYbAn75sGv-gBwOPDySE0kz96F6dTYLeMrGqNi4lM,735
|
|
237
237
|
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=yoSU-6nCJF9ASHGNpSY69nZbUhPGXkMIKYDgybKQX3c,7672
|
|
238
238
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
|
|
239
|
-
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=
|
|
239
|
+
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=psQjI1DQHOM5uWVXM27l_wPHjfEkMUTP-_8-lEFH1JA,1466
|
|
240
240
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=iG3KSIY7DzNfcxmuLfTs7VdQJnqPCvvn5DFkTWKG5lI,2227
|
|
241
241
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=SnjZ1WOcrfMZNgiDdTHcFeXJqrY7UHx8kvO62mqU9S4,7489
|
|
242
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
|
242
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=jTAUX472qRIZefSL64rwLkhRe01PX_YwhFpWoLwk6Tc,12770
|
|
243
243
|
flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
|
|
244
244
|
flwr/server/superlink/state/in_memory_state.py,sha256=LnKlnXe9JjVHb5_XOo6eD1RQhlCvJVKgz_CkXrMz8DY,13069
|
|
245
245
|
flwr/server/superlink/state/sqlite_state.py,sha256=LdLnHtF8C-1L1IAglfZPqIuKa782Qo7qAYzTXMdMYGM,29052
|
|
@@ -256,22 +256,22 @@ flwr/server/workflow/default_workflows.py,sha256=_GqFCaxtiq3_UVCvZWgJ200QroGSI9q
|
|
|
256
256
|
flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B-8M_dPlVSJuTbvXIbiO-Ic,880
|
|
257
257
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=wpAkYPId0nfK6SgpUAtsCni4_MQLd-uqJ81tUKu3xlI,5838
|
|
258
258
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=LLW4LfPAVdpMhIjJBopHVl-OltYuVSqsESw3PULcrN8,29694
|
|
259
|
-
flwr/simulation/__init__.py,sha256=
|
|
259
|
+
flwr/simulation/__init__.py,sha256=ybVBW3xT6cg_IasJV4_ymI3bVrCbFhw1mmcfrdfl3q0,1359
|
|
260
260
|
flwr/simulation/app.py,sha256=te3dQB3eodPwzsv1y4daPyaskIAaOtgoHaQLobrqoqY,15163
|
|
261
261
|
flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
|
|
262
262
|
flwr/simulation/ray_transport/ray_actor.py,sha256=3j0HgzjrlYjnzdTRy8aA4Nf6VoUvxi1hGRQkGSU5z6c,19020
|
|
263
263
|
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=0abIsU0VBk9rNJZOKHIyzYGy3ZnWBgqYocX_oct1EP0,7307
|
|
264
264
|
flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
|
|
265
|
-
flwr/simulation/run_simulation.py,sha256=
|
|
265
|
+
flwr/simulation/run_simulation.py,sha256=BPW_zn5xuGlOHKZDvl8J-IuwH7E8ZZAIR2zcXNjsLMo,23391
|
|
266
266
|
flwr/superexec/__init__.py,sha256=9h94ogLxi6eJ3bUuJYq3E3pApThSabTPiSmPAGlTkHE,800
|
|
267
|
-
flwr/superexec/app.py,sha256=
|
|
268
|
-
flwr/superexec/deployment.py,sha256=
|
|
267
|
+
flwr/superexec/app.py,sha256=bmYl8zABnWka9WhRQxX4p1YAI76cYG655dP09ro-V0o,6485
|
|
268
|
+
flwr/superexec/deployment.py,sha256=B--96bAvyotQX-c4-umXIe50uCw4HVjD79rXCQtSUH4,6357
|
|
269
269
|
flwr/superexec/exec_grpc.py,sha256=PhqGoZEpTMxSQmUSV8Wgtzb1Za_pHJ-adZqo5RYnDyE,1942
|
|
270
|
-
flwr/superexec/exec_servicer.py,sha256=
|
|
271
|
-
flwr/superexec/executor.py,sha256=
|
|
272
|
-
flwr/superexec/simulation.py,sha256=
|
|
273
|
-
flwr_nightly-1.
|
|
274
|
-
flwr_nightly-1.
|
|
275
|
-
flwr_nightly-1.
|
|
276
|
-
flwr_nightly-1.
|
|
277
|
-
flwr_nightly-1.
|
|
270
|
+
flwr/superexec/exec_servicer.py,sha256=fxQAKfgmQRSnYq5anjryfGeRbsZrNFEkuiNcTZhRwiE,2320
|
|
271
|
+
flwr/superexec/executor.py,sha256=k_adivto6R2U82DADOHNvdtobehBYreRek1gOEBIQnQ,2318
|
|
272
|
+
flwr/superexec/simulation.py,sha256=RR1WgqgMmv6HZ2eLvWKCUs9iOQZRj1KbEoAmnG7iyLA,6304
|
|
273
|
+
flwr_nightly-1.11.0.dev20240724.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
274
|
+
flwr_nightly-1.11.0.dev20240724.dist-info/METADATA,sha256=5SKs56KSuPhXNij63fE2QsRTDpTEP2XtR89TLn8ursI,15672
|
|
275
|
+
flwr_nightly-1.11.0.dev20240724.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
276
|
+
flwr_nightly-1.11.0.dev20240724.dist-info/entry_points.txt,sha256=7qBQcA-bDGDxnJmLd9FYqglFQubjCNqyg9M8a-lukps,336
|
|
277
|
+
flwr_nightly-1.11.0.dev20240724.dist-info/RECORD,,
|
{flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.10.0.dev20240722.dist-info → flwr_nightly-1.11.0.dev20240724.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|