flwr-nightly 1.15.0.dev20250130__py3-none-any.whl → 1.16.0.dev20250201__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/ls.py +3 -2
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- flwr/cli/stop.py +3 -2
- flwr/client/supernode/app.py +4 -28
- flwr/common/args.py +25 -47
- flwr/common/config.py +15 -2
- flwr/common/object_ref.py +0 -14
- flwr/server/app.py +3 -7
- {flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/METADATA +1 -1
- {flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/RECORD +21 -21
- {flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/entry_points.txt +0 -0
flwr/cli/ls.py
CHANGED
@@ -117,7 +117,7 @@ def ls( # pylint: disable=too-many-locals, too-many-branches, R0913, R0917
|
|
117
117
|
federation, config, federation_config_overrides
|
118
118
|
)
|
119
119
|
exit_if_no_address(federation_config, "ls")
|
120
|
-
|
120
|
+
channel = None
|
121
121
|
try:
|
122
122
|
if runs and run_id is not None:
|
123
123
|
raise ValueError(
|
@@ -148,7 +148,8 @@ def ls( # pylint: disable=too-many-locals, too-many-branches, R0913, R0917
|
|
148
148
|
)
|
149
149
|
raise typer.Exit(code=1) from err
|
150
150
|
finally:
|
151
|
-
channel
|
151
|
+
if channel:
|
152
|
+
channel.close()
|
152
153
|
except (typer.Exit, Exception) as err: # pylint: disable=broad-except
|
153
154
|
if suppress_output:
|
154
155
|
restore_output()
|
flwr/cli/stop.py
CHANGED
@@ -84,7 +84,7 @@ def stop( # pylint: disable=R0914
|
|
84
84
|
federation, config, federation_config_overrides
|
85
85
|
)
|
86
86
|
exit_if_no_address(federation_config, "stop")
|
87
|
-
|
87
|
+
channel = None
|
88
88
|
try:
|
89
89
|
auth_plugin = try_obtain_cli_auth_plugin(app, federation, federation_config)
|
90
90
|
channel = init_channel(app, federation_config, auth_plugin)
|
@@ -101,7 +101,8 @@ def stop( # pylint: disable=R0914
|
|
101
101
|
)
|
102
102
|
raise typer.Exit(code=1) from err
|
103
103
|
finally:
|
104
|
-
channel
|
104
|
+
if channel:
|
105
|
+
channel.close()
|
105
106
|
except (typer.Exit, Exception) as err: # pylint: disable=broad-except
|
106
107
|
if suppress_output:
|
107
108
|
restore_output()
|
flwr/client/supernode/app.py
CHANGED
@@ -41,7 +41,7 @@ from flwr.common.constant import (
|
|
41
41
|
)
|
42
42
|
from flwr.common.exit import ExitCode, flwr_exit
|
43
43
|
from flwr.common.exit_handlers import register_exit_handlers
|
44
|
-
from flwr.common.logger import log
|
44
|
+
from flwr.common.logger import log
|
45
45
|
|
46
46
|
from ..app import start_client_internal
|
47
47
|
from ..clientapp.utils import get_load_client_app_fn
|
@@ -50,7 +50,6 @@ from ..clientapp.utils import get_load_client_app_fn
|
|
50
50
|
def run_supernode() -> None:
|
51
51
|
"""Run Flower SuperNode."""
|
52
52
|
args = _parse_args_run_supernode().parse_args()
|
53
|
-
_warn_deprecated_server_arg(args)
|
54
53
|
|
55
54
|
log(INFO, "Starting Flower SuperNode")
|
56
55
|
|
@@ -109,26 +108,6 @@ def run_client_app() -> None:
|
|
109
108
|
register_exit_handlers(event_type=EventType.RUN_CLIENT_APP_LEAVE)
|
110
109
|
|
111
110
|
|
112
|
-
def _warn_deprecated_server_arg(args: argparse.Namespace) -> None:
|
113
|
-
"""Warn about the deprecated argument `--server`."""
|
114
|
-
if args.server != FLEET_API_GRPC_RERE_DEFAULT_ADDRESS:
|
115
|
-
warn = "Passing flag --server is deprecated. Use --superlink instead."
|
116
|
-
warn_deprecated_feature(warn)
|
117
|
-
|
118
|
-
if args.superlink != FLEET_API_GRPC_RERE_DEFAULT_ADDRESS:
|
119
|
-
# if `--superlink` also passed, then
|
120
|
-
# warn user that this argument overrides what was passed with `--server`
|
121
|
-
log(
|
122
|
-
WARN,
|
123
|
-
"Both `--server` and `--superlink` were passed. "
|
124
|
-
"`--server` will be ignored. Connecting to the Superlink Fleet API "
|
125
|
-
"at %s.",
|
126
|
-
args.superlink,
|
127
|
-
)
|
128
|
-
else:
|
129
|
-
args.superlink = args.server
|
130
|
-
|
131
|
-
|
132
111
|
def _parse_args_run_supernode() -> argparse.ArgumentParser:
|
133
112
|
"""Parse flower-supernode command line arguments."""
|
134
113
|
parser = argparse.ArgumentParser(
|
@@ -206,15 +185,12 @@ def _parse_args_common(parser: argparse.ArgumentParser) -> None:
|
|
206
185
|
help="Specifies the path to the PEM-encoded root certificate file for "
|
207
186
|
"establishing secure HTTPS connections.",
|
208
187
|
)
|
209
|
-
parser.add_argument(
|
210
|
-
"--server",
|
211
|
-
default=FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
|
212
|
-
help="Server address",
|
213
|
-
)
|
214
188
|
parser.add_argument(
|
215
189
|
"--superlink",
|
216
190
|
default=FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
|
217
|
-
help="SuperLink Fleet API
|
191
|
+
help="SuperLink Fleet API address (IPv4, IPv6, or a domain name). If using the "
|
192
|
+
"REST (experimental) transport, ensure your address is in the form "
|
193
|
+
"`http://...` or `https://...` when TLS is enabled.",
|
218
194
|
)
|
219
195
|
parser.add_argument(
|
220
196
|
"--max-retries",
|
flwr/common/args.py
CHANGED
@@ -20,13 +20,9 @@ import sys
|
|
20
20
|
from logging import DEBUG, ERROR, WARN
|
21
21
|
from os.path import isfile
|
22
22
|
from pathlib import Path
|
23
|
-
from typing import Optional
|
23
|
+
from typing import Optional, Union
|
24
24
|
|
25
|
-
from flwr.common.constant import
|
26
|
-
TRANSPORT_TYPE_GRPC_ADAPTER,
|
27
|
-
TRANSPORT_TYPE_GRPC_RERE,
|
28
|
-
TRANSPORT_TYPE_REST,
|
29
|
-
)
|
25
|
+
from flwr.common.constant import TRANSPORT_TYPE_REST
|
30
26
|
from flwr.common.logger import log
|
31
27
|
|
32
28
|
|
@@ -55,9 +51,9 @@ def add_args_flwr_app_common(parser: argparse.ArgumentParser) -> None:
|
|
55
51
|
def try_obtain_root_certificates(
|
56
52
|
args: argparse.Namespace,
|
57
53
|
grpc_server_address: str,
|
58
|
-
) -> Optional[bytes]:
|
54
|
+
) -> Optional[Union[bytes, str]]:
|
59
55
|
"""Validate and return the root certificates."""
|
60
|
-
root_cert_path = args.root_certificates
|
56
|
+
root_cert_path: Optional[str] = args.root_certificates
|
61
57
|
if args.insecure:
|
62
58
|
if root_cert_path is not None:
|
63
59
|
sys.exit(
|
@@ -93,56 +89,38 @@ def try_obtain_root_certificates(
|
|
93
89
|
grpc_server_address,
|
94
90
|
root_cert_path,
|
95
91
|
)
|
92
|
+
if args.transport == TRANSPORT_TYPE_REST:
|
93
|
+
return root_cert_path
|
96
94
|
return root_certificates
|
97
95
|
|
98
96
|
|
99
97
|
def try_obtain_server_certificates(
|
100
98
|
args: argparse.Namespace,
|
101
|
-
transport_type: str,
|
102
99
|
) -> Optional[tuple[bytes, bytes, bytes]]:
|
103
100
|
"""Validate and return the CA cert, server cert, and server private key."""
|
104
101
|
if args.insecure:
|
105
102
|
log(WARN, "Option `--insecure` was set. Starting insecure HTTP server.")
|
106
103
|
return None
|
107
104
|
# Check if certificates are provided
|
108
|
-
if
|
109
|
-
if
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
)
|
128
|
-
if transport_type == TRANSPORT_TYPE_REST:
|
129
|
-
if args.ssl_certfile and args.ssl_keyfile:
|
130
|
-
if not isfile(args.ssl_certfile):
|
131
|
-
sys.exit("Path argument `--ssl-certfile` does not point to a file.")
|
132
|
-
if not isfile(args.ssl_keyfile):
|
133
|
-
sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
|
134
|
-
certificates = (
|
135
|
-
b"",
|
136
|
-
Path(args.ssl_certfile).read_bytes(), # server certificate
|
137
|
-
Path(args.ssl_keyfile).read_bytes(), # server private key
|
138
|
-
)
|
139
|
-
return certificates
|
140
|
-
if args.ssl_certfile or args.ssl_keyfile:
|
141
|
-
sys.exit(
|
142
|
-
"You need to provide valid file paths to `--ssl-certfile` "
|
143
|
-
"and `--ssl-keyfile` to create a secure connection "
|
144
|
-
"in Fleet API server (REST, experimental)."
|
145
|
-
)
|
105
|
+
if args.ssl_certfile and args.ssl_keyfile and args.ssl_ca_certfile:
|
106
|
+
if not isfile(args.ssl_ca_certfile):
|
107
|
+
sys.exit("Path argument `--ssl-ca-certfile` does not point to a file.")
|
108
|
+
if not isfile(args.ssl_certfile):
|
109
|
+
sys.exit("Path argument `--ssl-certfile` does not point to a file.")
|
110
|
+
if not isfile(args.ssl_keyfile):
|
111
|
+
sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
|
112
|
+
certificates = (
|
113
|
+
Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
|
114
|
+
Path(args.ssl_certfile).read_bytes(), # server certificate
|
115
|
+
Path(args.ssl_keyfile).read_bytes(), # server private key
|
116
|
+
)
|
117
|
+
return certificates
|
118
|
+
if args.ssl_certfile or args.ssl_keyfile or args.ssl_ca_certfile:
|
119
|
+
sys.exit(
|
120
|
+
"You need to provide valid file paths to `--ssl-certfile`, "
|
121
|
+
"`--ssl-keyfile`, and `—-ssl-ca-certfile` to create a secure "
|
122
|
+
"connection in Fleet API server (gRPC-rere)."
|
123
|
+
)
|
146
124
|
log(
|
147
125
|
ERROR,
|
148
126
|
"Certificates are required unless running in insecure mode. "
|
flwr/common/config.py
CHANGED
@@ -23,6 +23,7 @@ from pathlib import Path
|
|
23
23
|
from typing import IO, Any, Optional, TypeVar, Union, cast, get_args
|
24
24
|
|
25
25
|
import tomli
|
26
|
+
import typer
|
26
27
|
|
27
28
|
from flwr.common.constant import (
|
28
29
|
APP_DIR,
|
@@ -233,8 +234,20 @@ def parse_config_args(
|
|
233
234
|
|
234
235
|
matches = pattern.findall(config_line)
|
235
236
|
toml_str = "\n".join(f"{k} = {v}" for k, v in matches)
|
236
|
-
|
237
|
-
|
237
|
+
try:
|
238
|
+
overrides.update(tomli.loads(toml_str))
|
239
|
+
flat_overrides = flatten_dict(overrides) if flatten else overrides
|
240
|
+
except tomli.TOMLDecodeError as err:
|
241
|
+
typer.secho(
|
242
|
+
"❌ The provided configuration string is in an invalid format. "
|
243
|
+
"The correct format should be, e.g., 'key1=123 key2=false "
|
244
|
+
'key3="string"\', where values must be of type bool, int, '
|
245
|
+
"string, or float. Ensure proper formatting with "
|
246
|
+
"space-separated key-value pairs.",
|
247
|
+
fg=typer.colors.RED,
|
248
|
+
bold=True,
|
249
|
+
)
|
250
|
+
raise typer.Exit(code=1) from err
|
238
251
|
|
239
252
|
return flat_overrides
|
240
253
|
|
flwr/common/object_ref.py
CHANGED
@@ -19,13 +19,10 @@ import ast
|
|
19
19
|
import importlib
|
20
20
|
import sys
|
21
21
|
from importlib.util import find_spec
|
22
|
-
from logging import WARN
|
23
22
|
from pathlib import Path
|
24
23
|
from threading import Lock
|
25
24
|
from typing import Any, Optional, Union
|
26
25
|
|
27
|
-
from .logger import log
|
28
|
-
|
29
26
|
OBJECT_REF_HELP_STR = """
|
30
27
|
\n\nThe object reference string should have the form <module>:<attribute>. Valid
|
31
28
|
examples include `client:app` and `project.package.module:wrapper.app`. It must
|
@@ -171,17 +168,6 @@ def load_app( # pylint: disable= too-many-branches
|
|
171
168
|
# Import the module
|
172
169
|
if module_str not in sys.modules:
|
173
170
|
module = importlib.import_module(module_str)
|
174
|
-
# Hack: `tabnet` does not work with `importlib.reload`
|
175
|
-
elif "tabnet" in sys.modules:
|
176
|
-
log(
|
177
|
-
WARN,
|
178
|
-
"Cannot reload module `%s` from disk due to compatibility issues "
|
179
|
-
"with the `tabnet` library. The module will be loaded from the "
|
180
|
-
"cache instead. If you experience issues, consider restarting "
|
181
|
-
"the application.",
|
182
|
-
module_str,
|
183
|
-
)
|
184
|
-
module = sys.modules[module_str]
|
185
171
|
else:
|
186
172
|
module = sys.modules[module_str]
|
187
173
|
_reload_modules(project_dir)
|
flwr/server/app.py
CHANGED
@@ -265,7 +265,7 @@ def run_superlink() -> None:
|
|
265
265
|
simulationio_address, _, _ = _format_address(args.simulationio_api_address)
|
266
266
|
|
267
267
|
# Obtain certificates
|
268
|
-
certificates = try_obtain_server_certificates(args
|
268
|
+
certificates = try_obtain_server_certificates(args)
|
269
269
|
|
270
270
|
# Disable the user auth TLS check if args.disable_oidc_tls_cert_verification is
|
271
271
|
# provided
|
@@ -353,17 +353,13 @@ def run_superlink() -> None:
|
|
353
353
|
) is None:
|
354
354
|
flwr_exit(ExitCode.COMMON_MISSING_EXTRA_REST)
|
355
355
|
|
356
|
-
_, ssl_certfile, ssl_keyfile = (
|
357
|
-
certificates if certificates is not None else (None, None, None)
|
358
|
-
)
|
359
|
-
|
360
356
|
fleet_thread = threading.Thread(
|
361
357
|
target=_run_fleet_api_rest,
|
362
358
|
args=(
|
363
359
|
host,
|
364
360
|
port,
|
365
|
-
ssl_keyfile,
|
366
|
-
ssl_certfile,
|
361
|
+
args.ssl_keyfile,
|
362
|
+
args.ssl_certfile,
|
367
363
|
state_factory,
|
368
364
|
ffs_factory,
|
369
365
|
num_workers,
|
{flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/RECORD
RENAMED
@@ -12,7 +12,7 @@ flwr/cli/install.py,sha256=-RnrYGejN_zyXXp_CoddSQwoQfRTWWyt9WYlxphJzyU,8180
|
|
12
12
|
flwr/cli/log.py,sha256=vcO-r5EIc127mOQ26uxKVITX-w_Zib7AxSVuuN70_JY,6671
|
13
13
|
flwr/cli/login/__init__.py,sha256=6_9zOzbPOAH72K2wX3-9dXTAbS7Mjpa5sEn2lA6eHHI,800
|
14
14
|
flwr/cli/login/login.py,sha256=iNnNF1bvV0n8Z-vNc89azFNA73JqKZlO1s5OF2atsTc,3917
|
15
|
-
flwr/cli/ls.py,sha256=
|
15
|
+
flwr/cli/ls.py,sha256=cm3NuY1sFq51xVRhUG0MbAfVTrRSjJ1HMIubde80LuY,11433
|
16
16
|
flwr/cli/new/__init__.py,sha256=pOQtPT9W4kCIttcKne5m-FtJbvTqdjTVJxzQ9AUYK8I,790
|
17
17
|
flwr/cli/new/new.py,sha256=scyyKt8mzkc3El1bypgkHjKwVQEc2-q4I50PxriPFdI,9922
|
18
18
|
flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
|
@@ -58,18 +58,18 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN
|
|
58
58
|
flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=SeIIo0rr_6ffn4Qx2xELD18jYXCkcW__NWtYEDXCICM,1843
|
59
59
|
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
|
60
60
|
flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
61
|
-
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=
|
62
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=
|
63
|
-
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=
|
64
|
-
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=
|
65
|
-
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=
|
66
|
-
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=
|
67
|
-
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=
|
68
|
-
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=
|
69
|
-
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=
|
61
|
+
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=66VcEv65u2o9P0N8Ys2DLA1C7hoviC7ItjRJGGXHYfk,2666
|
62
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=aMGH_6H4Ki8bCTyfB2tlChCe-_LUPIVqgrRYvPXMGok,1873
|
63
|
+
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=A5NfTb5imtwdAxIg5Og-cZnM8tPpFLqeI_LVJxu49pE,1143
|
64
|
+
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=Sq6WZ2rSVaCh0jVxKekPTTZAhBKhGi-SHELyFwe-Z4E,673
|
65
|
+
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=qDRaAmfibfIhbf43-j1kjJwpVAb-nd9o9N6KfWsyFZw,744
|
66
|
+
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=_gOb3yv8XuiYNaOVY0uEO6KNoshFE8ZLvlDgbPxkqS4,611
|
67
|
+
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=TNfLYgCA5vVNcmqbV2G2dsHeNjx4dXiDIcD8mNoxUMI,710
|
68
|
+
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=hVII9kdYRx_sbKhQC5WHDvhPhOdO5JW-JO9CNQc-hr0,686
|
69
|
+
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=ctdB84ZADY3LH6f88SX-iCSzRTDh_1vjSv-v2Oa5cgo,710
|
70
70
|
flwr/cli/run/__init__.py,sha256=cCsKVB0SFzh2b3QmGba6BHckB85xlhjh3mh4pBpACtY,790
|
71
71
|
flwr/cli/run/run.py,sha256=kEOYKin9qPJy8SODxcAvIWk-OskKPsxvcbvhDhf2VD4,8299
|
72
|
-
flwr/cli/stop.py,sha256=
|
72
|
+
flwr/cli/stop.py,sha256=E4TGynmYQss5iWJ_fjSdYIW8nrNta2KOiK4sfvHKO_g,4976
|
73
73
|
flwr/cli/utils.py,sha256=hd6XUqu4Ty3m0mEtulQb1f_JV-W65fV_1SGAYCe5Vxs,11226
|
74
74
|
flwr/client/__init__.py,sha256=DGDoO0AEAfz-0CUFmLdyUUweAS64-07AOnmDfWUefK4,1192
|
75
75
|
flwr/client/app.py,sha256=tNnef5wGVfqMiiGiWzAuULyy1QpvCKukiRmNi_a2cQc,34261
|
@@ -109,14 +109,14 @@ flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3
|
|
109
109
|
flwr/client/rest_client/connection.py,sha256=9_JDGHkmaiPgk6CmcQId56Ia1ucQfrqcpNOUObdZaZU,13008
|
110
110
|
flwr/client/run_info_store.py,sha256=ZN2Phi4DSLbSyzg8RmzJcVYh1g6eurHOmWRCT7GMtw4,4040
|
111
111
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
112
|
-
flwr/client/supernode/app.py,sha256=
|
112
|
+
flwr/client/supernode/app.py,sha256=oBbggh56HoieksBkTdDHAJC8VUFbrmGOP0-D9wdcZek,9265
|
113
113
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
114
114
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
115
115
|
flwr/common/address.py,sha256=9KNYE69WW_QVcyumsux3Qn1wmn4J7f13Y9nHASpvzbA,3018
|
116
|
-
flwr/common/args.py,sha256=
|
116
|
+
flwr/common/args.py,sha256=MgkTUXACuySHyNdxrb7-pK0_R-S2Q7W5MnE3onYUf5I,5183
|
117
117
|
flwr/common/auth_plugin/__init__.py,sha256=1Y8Oj3iB49IHDu9tvDih1J74Ygu7k85V9s2A4WORPyA,887
|
118
118
|
flwr/common/auth_plugin/auth_plugin.py,sha256=wgDorBUB4IkK6twQ8vNawRVz7BDPmKdXZBNLqhU9RSs,3871
|
119
|
-
flwr/common/config.py,sha256=
|
119
|
+
flwr/common/config.py,sha256=SAkG3BztnA6iupXxF3GAIpGmWVVCH0ptyMpC9yjr_14,13965
|
120
120
|
flwr/common/constant.py,sha256=mw2H-rTFI5Lwv8EK2dlW5RDAynQWeSawcwup2p0vLN4,6419
|
121
121
|
flwr/common/context.py,sha256=uJ-mnoC_8y_udEb3kAX-r8CPphNTWM72z1AlsvQEu54,2403
|
122
122
|
flwr/common/date.py,sha256=NHHpESce5wYqEwoDXf09gp9U9l_5Bmlh2BsOcwS-kDM,1554
|
@@ -130,7 +130,7 @@ flwr/common/exit_handlers.py,sha256=Dke87CC6d6b6kqkC2mF0I4JsP4mHhlQTFxkS4sKKgyw,
|
|
130
130
|
flwr/common/grpc.py,sha256=K60AIvIqH0CvkkiqBfw5HoxQfbFOL2DrhKPjbZ8raIE,9786
|
131
131
|
flwr/common/logger.py,sha256=Hund1C6bEhMw3GemlzuFK22tXZ27YeHLrFB0b4LP5f8,13041
|
132
132
|
flwr/common/message.py,sha256=Zv4ID2BLQsbff0F03DI_MeFoHbSqVZAdDD9NcKYv6Zo,13832
|
133
|
-
flwr/common/object_ref.py,sha256=
|
133
|
+
flwr/common/object_ref.py,sha256=Mv8OE6f9wmLs_KQWt8aPV5aw-g6fgWDfj28L2b8Jl-Y,9514
|
134
134
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
135
135
|
flwr/common/pyproject.py,sha256=vEAxl800XiJ1JNJDui8vuVV-08msnB6hLt7o95viZl0,1386
|
136
136
|
flwr/common/record/__init__.py,sha256=LUixpq0Z-lMJwCIu1-4u5HfvRPjRMRgoAc6YJQ6UEOs,1055
|
@@ -217,7 +217,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
217
217
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
218
218
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
219
219
|
flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
|
220
|
-
flwr/server/app.py,sha256=
|
220
|
+
flwr/server/app.py,sha256=H7TAfGDl4o8OJtM5_jCzveZXuPJjTXMEb4zuiUQyKeI,30535
|
221
221
|
flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
|
222
222
|
flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
|
223
223
|
flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
|
@@ -327,8 +327,8 @@ flwr/superexec/exec_servicer.py,sha256=X10ILT-AoGMrB3IgI2mBe9i-QcIVUAl9bucuqVOPY
|
|
327
327
|
flwr/superexec/exec_user_auth_interceptor.py,sha256=K06OU-l4LnYhTDg071hGJuOaQWEJbZsYi5qxUmmtiG0,3704
|
328
328
|
flwr/superexec/executor.py,sha256=_B55WW2TD1fBINpabSSDRenVHXYmvlfhv-k8hJKU4lQ,3115
|
329
329
|
flwr/superexec/simulation.py,sha256=WQDon15oqpMopAZnwRZoTICYCfHqtkvFSqiTQ2hLD_g,4088
|
330
|
-
flwr_nightly-1.
|
331
|
-
flwr_nightly-1.
|
332
|
-
flwr_nightly-1.
|
333
|
-
flwr_nightly-1.
|
334
|
-
flwr_nightly-1.
|
330
|
+
flwr_nightly-1.16.0.dev20250201.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
331
|
+
flwr_nightly-1.16.0.dev20250201.dist-info/METADATA,sha256=sZvEKS8wkSWFRGminMpW_2wH1B4OsQY1cm53-2vYfRU,15873
|
332
|
+
flwr_nightly-1.16.0.dev20250201.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
333
|
+
flwr_nightly-1.16.0.dev20250201.dist-info/entry_points.txt,sha256=JlNxX3qhaV18_2yj5a3kJW1ESxm31cal9iS_N_pf1Rk,538
|
334
|
+
flwr_nightly-1.16.0.dev20250201.dist-info/RECORD,,
|
{flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/LICENSE
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250130.dist-info → flwr_nightly-1.16.0.dev20250201.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|