flwr-nightly 1.12.0.dev20241010__py3-none-any.whl → 1.13.0.dev20241015__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- flwr/cli/new/templates/app/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/client/clientapp/app.py +4 -5
- flwr/client/grpc_adapter_client/connection.py +1 -1
- flwr/client/grpc_client/connection.py +1 -1
- flwr/client/grpc_rere_client/connection.py +1 -1
- flwr/client/node_state.py +1 -1
- flwr/client/rest_client/connection.py +1 -1
- flwr/client/supernode/app.py +12 -5
- flwr/common/config.py +1 -0
- flwr/common/logger.py +1 -1
- flwr/common/message.py +1 -1
- flwr/common/record/configsrecord.py +6 -0
- flwr/server/app.py +3 -2
- flwr/server/driver/driver.py +1 -1
- flwr/server/driver/grpc_driver.py +1 -1
- flwr/server/driver/inmemory_driver.py +1 -1
- flwr/server/server_app.py +1 -1
- flwr/server/strategy/dp_adaptive_clipping.py +2 -2
- flwr/server/strategy/dpfedavg_adaptive.py +1 -1
- flwr/server/strategy/dpfedavg_fixed.py +1 -1
- flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +2 -2
- flwr/server/superlink/fleet/vce/vce_api.py +8 -5
- flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
- flwr/simulation/run_simulation.py +4 -4
- {flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/METADATA +1 -1
- {flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/RECORD +37 -37
- {flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/entry_points.txt +0 -0
flwr/client/clientapp/app.py
CHANGED
|
@@ -132,11 +132,10 @@ def run_clientapp( # pylint: disable=R0914
|
|
|
132
132
|
)
|
|
133
133
|
|
|
134
134
|
try:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
)
|
|
135
|
+
# Load ClientApp
|
|
136
|
+
client_app: ClientApp = load_client_app_fn(
|
|
137
|
+
run.fab_id, run.fab_version, fab.hash_str if fab else ""
|
|
138
|
+
)
|
|
140
139
|
|
|
141
140
|
# Execute ClientApp
|
|
142
141
|
reply_message = client_app(message=message, context=context)
|
|
@@ -60,7 +60,7 @@ def on_channel_state_change(channel_connectivity: str) -> None:
|
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
@contextmanager
|
|
63
|
-
def grpc_connection( # pylint: disable=R0913,
|
|
63
|
+
def grpc_connection( # pylint: disable=R0913,R0915,too-many-positional-arguments
|
|
64
64
|
server_address: str,
|
|
65
65
|
insecure: bool,
|
|
66
66
|
retry_invoker: RetryInvoker, # pylint: disable=unused-argument
|
|
@@ -71,7 +71,7 @@ def on_channel_state_change(channel_connectivity: str) -> None:
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
@contextmanager
|
|
74
|
-
def grpc_request_response( # pylint: disable=R0913,
|
|
74
|
+
def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
75
75
|
server_address: str,
|
|
76
76
|
insecure: bool,
|
|
77
77
|
retry_invoker: RetryInvoker,
|
flwr/client/node_state.py
CHANGED
|
@@ -82,7 +82,7 @@ T = TypeVar("T", bound=GrpcMessage)
|
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
@contextmanager
|
|
85
|
-
def http_request_response( # pylint: disable
|
|
85
|
+
def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
86
86
|
server_address: str,
|
|
87
87
|
insecure: bool, # pylint: disable=unused-argument
|
|
88
88
|
retry_invoker: RetryInvoker,
|
flwr/client/supernode/app.py
CHANGED
|
@@ -48,13 +48,20 @@ from ..clientapp.utils import get_load_client_app_fn
|
|
|
48
48
|
|
|
49
49
|
def run_supernode() -> None:
|
|
50
50
|
"""Run Flower SuperNode."""
|
|
51
|
+
args = _parse_args_run_supernode().parse_args()
|
|
52
|
+
_warn_deprecated_server_arg(args)
|
|
53
|
+
|
|
51
54
|
log(INFO, "Starting Flower SuperNode")
|
|
52
55
|
|
|
53
56
|
event(EventType.RUN_SUPERNODE_ENTER)
|
|
54
57
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
# Check if both `--flwr-dir` and `--isolation` were set
|
|
59
|
+
if args.flwr_dir is not None and args.isolation is not None:
|
|
60
|
+
log(
|
|
61
|
+
WARN,
|
|
62
|
+
"Both `--flwr-dir` and `--isolation` were specified. "
|
|
63
|
+
"Ignoring `--flwr-dir`.",
|
|
64
|
+
)
|
|
58
65
|
|
|
59
66
|
root_certificates = _get_certificates(args)
|
|
60
67
|
load_fn = get_load_client_app_fn(
|
|
@@ -178,12 +185,12 @@ def _parse_args_run_supernode() -> argparse.ArgumentParser:
|
|
|
178
185
|
"--flwr-dir",
|
|
179
186
|
default=None,
|
|
180
187
|
help="""The path containing installed Flower Apps.
|
|
181
|
-
|
|
188
|
+
The default directory is:
|
|
182
189
|
|
|
183
190
|
- `$FLWR_HOME/` if `$FLWR_HOME` is defined
|
|
184
191
|
- `$XDG_DATA_HOME/.flwr/` if `$XDG_DATA_HOME` is defined
|
|
185
192
|
- `$HOME/.flwr/` in all other cases
|
|
186
|
-
|
|
193
|
+
""",
|
|
187
194
|
)
|
|
188
195
|
parser.add_argument(
|
|
189
196
|
"--isolation",
|
flwr/common/config.py
CHANGED
|
@@ -206,6 +206,7 @@ def parse_config_args(
|
|
|
206
206
|
# Regular expression to capture key-value pairs with possible quoted values
|
|
207
207
|
pattern = re.compile(r"(\S+?)=(\'[^\']*\'|\"[^\"]*\"|\S+)")
|
|
208
208
|
|
|
209
|
+
flat_overrides = {}
|
|
209
210
|
for config_line in config:
|
|
210
211
|
if config_line:
|
|
211
212
|
# .toml files aren't allowed alongside other configs
|
flwr/common/logger.py
CHANGED
|
@@ -111,7 +111,7 @@ FLOWER_LOGGER.addHandler(console_handler)
|
|
|
111
111
|
class CustomHTTPHandler(HTTPHandler):
|
|
112
112
|
"""Custom HTTPHandler which overrides the mapLogRecords method."""
|
|
113
113
|
|
|
114
|
-
# pylint: disable=too-many-arguments,bad-option-value,R1725
|
|
114
|
+
# pylint: disable=too-many-arguments,bad-option-value,R1725,R0917
|
|
115
115
|
def __init__(
|
|
116
116
|
self,
|
|
117
117
|
identifier: str,
|
flwr/common/message.py
CHANGED
|
@@ -52,7 +52,7 @@ class Metadata: # pylint: disable=too-many-instance-attributes
|
|
|
52
52
|
the receiving end.
|
|
53
53
|
"""
|
|
54
54
|
|
|
55
|
-
def __init__( # pylint: disable=too-many-arguments
|
|
55
|
+
def __init__( # pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
56
56
|
self,
|
|
57
57
|
run_id: int,
|
|
58
58
|
message_id: str,
|
|
@@ -128,6 +128,7 @@ class ConfigsRecord(TypedDict[str, ConfigsRecordValues]):
|
|
|
128
128
|
|
|
129
129
|
def get_var_bytes(value: ConfigsScalar) -> int:
|
|
130
130
|
"""Return Bytes of value passed."""
|
|
131
|
+
var_bytes = 0
|
|
131
132
|
if isinstance(value, bool):
|
|
132
133
|
var_bytes = 1
|
|
133
134
|
elif isinstance(value, (int, float)):
|
|
@@ -136,6 +137,11 @@ class ConfigsRecord(TypedDict[str, ConfigsRecordValues]):
|
|
|
136
137
|
)
|
|
137
138
|
if isinstance(value, (str, bytes)):
|
|
138
139
|
var_bytes = len(value)
|
|
140
|
+
if var_bytes == 0:
|
|
141
|
+
raise ValueError(
|
|
142
|
+
"Config values must be either `bool`, `int`, `float`, "
|
|
143
|
+
"`str`, or `bytes`"
|
|
144
|
+
)
|
|
139
145
|
return var_bytes
|
|
140
146
|
|
|
141
147
|
num_bytes = 0
|
flwr/server/app.py
CHANGED
|
@@ -199,12 +199,12 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
|
|
199
199
|
# pylint: disable=too-many-branches, too-many-locals, too-many-statements
|
|
200
200
|
def run_superlink() -> None:
|
|
201
201
|
"""Run Flower SuperLink (Driver API and Fleet API)."""
|
|
202
|
+
args = _parse_args_run_superlink().parse_args()
|
|
203
|
+
|
|
202
204
|
log(INFO, "Starting Flower SuperLink")
|
|
203
205
|
|
|
204
206
|
event(EventType.RUN_SUPERLINK_ENTER)
|
|
205
207
|
|
|
206
|
-
args = _parse_args_run_superlink().parse_args()
|
|
207
|
-
|
|
208
208
|
# Parse IP address
|
|
209
209
|
driver_address, _, _ = _format_address(args.driver_api_address)
|
|
210
210
|
|
|
@@ -542,6 +542,7 @@ def _run_fleet_api_grpc_adapter(
|
|
|
542
542
|
|
|
543
543
|
|
|
544
544
|
# pylint: disable=import-outside-toplevel,too-many-arguments
|
|
545
|
+
# pylint: disable=too-many-positional-arguments
|
|
545
546
|
def _run_fleet_api_rest(
|
|
546
547
|
host: str,
|
|
547
548
|
port: int,
|
flwr/server/driver/driver.py
CHANGED
|
@@ -158,7 +158,7 @@ class GrpcDriver(Driver):
|
|
|
158
158
|
):
|
|
159
159
|
raise ValueError(f"Invalid message: {message}")
|
|
160
160
|
|
|
161
|
-
def create_message( # pylint: disable=too-many-arguments
|
|
161
|
+
def create_message( # pylint: disable=too-many-arguments,R0917
|
|
162
162
|
self,
|
|
163
163
|
content: RecordSet,
|
|
164
164
|
message_type: str,
|
|
@@ -82,7 +82,7 @@ class InMemoryDriver(Driver):
|
|
|
82
82
|
self._init_run()
|
|
83
83
|
return Run(**vars(cast(Run, self._run)))
|
|
84
84
|
|
|
85
|
-
def create_message( # pylint: disable=too-many-arguments
|
|
85
|
+
def create_message( # pylint: disable=too-many-arguments,R0917
|
|
86
86
|
self,
|
|
87
87
|
content: RecordSet,
|
|
88
88
|
message_type: str,
|
flwr/server/server_app.py
CHANGED
|
@@ -88,7 +88,7 @@ class DifferentialPrivacyServerSideAdaptiveClipping(Strategy):
|
|
|
88
88
|
>>> )
|
|
89
89
|
"""
|
|
90
90
|
|
|
91
|
-
# pylint: disable=too-many-arguments,too-many-instance-attributes
|
|
91
|
+
# pylint: disable=too-many-arguments,too-many-instance-attributes,too-many-positional-arguments
|
|
92
92
|
def __init__(
|
|
93
93
|
self,
|
|
94
94
|
strategy: Strategy,
|
|
@@ -307,7 +307,7 @@ class DifferentialPrivacyClientSideAdaptiveClipping(Strategy):
|
|
|
307
307
|
>>> )
|
|
308
308
|
"""
|
|
309
309
|
|
|
310
|
-
# pylint: disable=too-many-arguments,too-many-instance-attributes
|
|
310
|
+
# pylint: disable=too-many-arguments,too-many-instance-attributes,too-many-positional-arguments
|
|
311
311
|
def __init__(
|
|
312
312
|
self,
|
|
313
313
|
strategy: Strategy,
|
|
@@ -39,7 +39,7 @@ class DPFedAvgAdaptive(DPFedAvgFixed):
|
|
|
39
39
|
This class is deprecated and will be removed in a future release.
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
|
-
# pylint: disable=too-many-arguments,too-many-instance-attributes
|
|
42
|
+
# pylint: disable=too-many-arguments,too-many-instance-attributes,too-many-positional-arguments
|
|
43
43
|
def __init__(
|
|
44
44
|
self,
|
|
45
45
|
strategy: Strategy,
|
|
@@ -36,7 +36,7 @@ class DPFedAvgFixed(Strategy):
|
|
|
36
36
|
This class is deprecated and will be removed in a future release.
|
|
37
37
|
"""
|
|
38
38
|
|
|
39
|
-
# pylint: disable=too-many-arguments,too-many-instance-attributes
|
|
39
|
+
# pylint: disable=too-many-arguments,too-many-instance-attributes,too-many-positional-arguments
|
|
40
40
|
def __init__(
|
|
41
41
|
self,
|
|
42
42
|
strategy: Strategy,
|
|
@@ -60,7 +60,7 @@ def valid_certificates(certificates: tuple[bytes, bytes, bytes]) -> bool:
|
|
|
60
60
|
return is_valid
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
def start_grpc_server( # pylint: disable=too-many-arguments
|
|
63
|
+
def start_grpc_server( # pylint: disable=too-many-arguments,R0917
|
|
64
64
|
client_manager: ClientManager,
|
|
65
65
|
server_address: str,
|
|
66
66
|
max_concurrent_workers: int = 1000,
|
|
@@ -156,7 +156,7 @@ def start_grpc_server( # pylint: disable=too-many-arguments
|
|
|
156
156
|
return server
|
|
157
157
|
|
|
158
158
|
|
|
159
|
-
def generic_create_grpc_server( # pylint: disable=too-many-arguments
|
|
159
|
+
def generic_create_grpc_server( # pylint: disable=too-many-arguments,R0917
|
|
160
160
|
servicer_and_add_fn: Union[
|
|
161
161
|
tuple[FleetServicer, AddServicerToServerFn],
|
|
162
162
|
tuple[GrpcAdapterServicer, AddServicerToServerFn],
|
|
@@ -172,6 +172,7 @@ def put_taskres_into_state(
|
|
|
172
172
|
pass
|
|
173
173
|
|
|
174
174
|
|
|
175
|
+
# pylint: disable=too-many-positional-arguments
|
|
175
176
|
def run_api(
|
|
176
177
|
app_fn: Callable[[], ClientApp],
|
|
177
178
|
backend_fn: Callable[[], Backend],
|
|
@@ -251,7 +252,7 @@ def run_api(
|
|
|
251
252
|
|
|
252
253
|
|
|
253
254
|
# pylint: disable=too-many-arguments,unused-argument,too-many-locals,too-many-branches
|
|
254
|
-
# pylint: disable=too-many-statements
|
|
255
|
+
# pylint: disable=too-many-statements,too-many-positional-arguments
|
|
255
256
|
def start_vce(
|
|
256
257
|
backend_name: str,
|
|
257
258
|
backend_config_json_stream: str,
|
|
@@ -267,6 +268,8 @@ def start_vce(
|
|
|
267
268
|
existing_nodes_mapping: Optional[NodeToPartitionMapping] = None,
|
|
268
269
|
) -> None:
|
|
269
270
|
"""Start Fleet API with the Simulation Engine."""
|
|
271
|
+
nodes_mapping = {}
|
|
272
|
+
|
|
270
273
|
if client_app_attr is not None and client_app is not None:
|
|
271
274
|
raise ValueError(
|
|
272
275
|
"Both `client_app_attr` and `client_app` are provided, "
|
|
@@ -340,17 +343,17 @@ def start_vce(
|
|
|
340
343
|
# Load ClientApp if needed
|
|
341
344
|
def _load() -> ClientApp:
|
|
342
345
|
|
|
346
|
+
if client_app:
|
|
347
|
+
return client_app
|
|
343
348
|
if client_app_attr:
|
|
344
|
-
|
|
349
|
+
return get_load_client_app_fn(
|
|
345
350
|
default_app_ref=client_app_attr,
|
|
346
351
|
app_path=app_dir,
|
|
347
352
|
flwr_dir=flwr_dir,
|
|
348
353
|
multi_app=False,
|
|
349
354
|
)(run.fab_id, run.fab_version, run.fab_hash)
|
|
350
355
|
|
|
351
|
-
|
|
352
|
-
app = client_app
|
|
353
|
-
return app
|
|
356
|
+
raise ValueError("Either `client_app_attr` or `client_app` must be provided")
|
|
354
357
|
|
|
355
358
|
app_fn = _load
|
|
356
359
|
|
|
@@ -48,7 +48,7 @@ from flwr.simulation.ray_transport.ray_actor import VirtualClientEngineActorPool
|
|
|
48
48
|
class RayActorClientProxy(ClientProxy):
|
|
49
49
|
"""Flower client proxy which delegates work using Ray."""
|
|
50
50
|
|
|
51
|
-
def __init__( # pylint: disable=too-many-arguments
|
|
51
|
+
def __init__( # pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
52
52
|
self,
|
|
53
53
|
client_fn: ClientFnExt,
|
|
54
54
|
node_id: int,
|
|
@@ -225,7 +225,7 @@ def run_simulation_from_cli() -> None:
|
|
|
225
225
|
|
|
226
226
|
|
|
227
227
|
# Entry point from Python session (script or notebook)
|
|
228
|
-
# pylint: disable=too-many-arguments
|
|
228
|
+
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
229
229
|
def run_simulation(
|
|
230
230
|
server_app: ServerApp,
|
|
231
231
|
client_app: ClientApp,
|
|
@@ -300,7 +300,7 @@ def run_simulation(
|
|
|
300
300
|
)
|
|
301
301
|
|
|
302
302
|
|
|
303
|
-
# pylint: disable=too-many-arguments
|
|
303
|
+
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
304
304
|
def run_serverapp_th(
|
|
305
305
|
server_app_attr: Optional[str],
|
|
306
306
|
server_app: Optional[ServerApp],
|
|
@@ -369,7 +369,7 @@ def run_serverapp_th(
|
|
|
369
369
|
return serverapp_th
|
|
370
370
|
|
|
371
371
|
|
|
372
|
-
# pylint: disable=too-many-locals
|
|
372
|
+
# pylint: disable=too-many-locals,too-many-positional-arguments
|
|
373
373
|
def _main_loop(
|
|
374
374
|
num_supernodes: int,
|
|
375
375
|
backend_name: str,
|
|
@@ -455,7 +455,7 @@ def _main_loop(
|
|
|
455
455
|
log(DEBUG, "Stopping Simulation Engine now.")
|
|
456
456
|
|
|
457
457
|
|
|
458
|
-
# pylint: disable=too-many-arguments,too-many-locals
|
|
458
|
+
# pylint: disable=too-many-arguments,too-many-locals,too-many-positional-arguments
|
|
459
459
|
def _run_simulation(
|
|
460
460
|
num_supernodes: int,
|
|
461
461
|
exit_event: EventType,
|
{flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/RECORD
RENAMED
|
@@ -51,15 +51,15 @@ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN
|
|
|
51
51
|
flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=SeIIo0rr_6ffn4Qx2xELD18jYXCkcW__NWtYEDXCICM,1843
|
|
52
52
|
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=SKXAZdgBnPpbAbJ90Rb7oQ5ilnopBx_j_JNFoUDeEAI,1732
|
|
53
53
|
flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
|
54
|
-
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=
|
|
55
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256
|
|
56
|
-
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=
|
|
57
|
-
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=
|
|
58
|
-
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=
|
|
59
|
-
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256
|
|
60
|
-
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=
|
|
61
|
-
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=
|
|
62
|
-
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=
|
|
54
|
+
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=8zSefvfRhuVo_ZLEDbIlLMQJa-dr2iIRhAgqwaaKMYk,2666
|
|
55
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=-oYa_Zgf9LEnyrxzSI6pL78rn2iWzYd6iJCtACU25CE,1853
|
|
56
|
+
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=foFjtZ8lI67RLAMxShdoph29i9IAT4jS0lW1wH3sWFQ,1143
|
|
57
|
+
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=hna-BiIVZvUtTb8-ptaGAHBXJrvVPqnh44NYt4dA_hk,673
|
|
58
|
+
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=GiRhllAQnMfH3mP4Cr9qpa1qvGwzbcULCa-QDVEbLOY,765
|
|
59
|
+
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=89B4qMlOI4MrRyzKRzB2ORHJIkyvGx7IeoFnY_TAfVc,612
|
|
60
|
+
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=LUsQsEVhCgGzKEBB5IewKjZOKtcsq9fUQW-7_NJpgwk,710
|
|
61
|
+
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=BiZPOKEoGiZOuxSHQY_nQHj3KH7wH7QAiVmpxGutOgk,686
|
|
62
|
+
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=Nl8CiFr_38lG5-XIXjs7tntfZlujTB4WMMIwm8clOmI,702
|
|
63
63
|
flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
|
|
64
64
|
flwr/cli/run/run.py,sha256=NMCeDfImxta1VEeBqqkP05xsuBK6YWFTd7Qj_bIEA2Y,8394
|
|
65
65
|
flwr/cli/utils.py,sha256=emMUdthvoHBTB0iGQp-oFBmA5wV46lw3y3FmfXQPCsc,4500
|
|
@@ -68,17 +68,17 @@ flwr/client/app.py,sha256=q-hExXwM3lru1TdYVE6HA3hKgwjhmbO_6Iq6oifVGpk,32712
|
|
|
68
68
|
flwr/client/client.py,sha256=gy6WVlMUFAp8oevN4xpQPX30vPOIYGVqdbuFlTWkyG4,9080
|
|
69
69
|
flwr/client/client_app.py,sha256=cTig-N00YzTucbo9zNi6I21J8PlbflU_8J_f5CI-Wpw,10390
|
|
70
70
|
flwr/client/clientapp/__init__.py,sha256=kZqChGnTChQ1WGSUkIlW2S5bc0d0mzDubCAmZUGRpEY,800
|
|
71
|
-
flwr/client/clientapp/app.py,sha256=
|
|
71
|
+
flwr/client/clientapp/app.py,sha256=h8Shr3zCJrM6zepuD1ddNxN9rXBjnqohMSSErlHo-ro,7857
|
|
72
72
|
flwr/client/clientapp/clientappio_servicer.py,sha256=5L6bjw_j3Mnx9kRFwYwxDNABKurBO5q1jZOWE_X11wQ,8522
|
|
73
73
|
flwr/client/clientapp/utils.py,sha256=Xg23Q7g7r9jrxXEbvJ9wXal_uAqYK3mi087u0QER6-I,4343
|
|
74
74
|
flwr/client/dpfedavg_numpy_client.py,sha256=4KsEvzavDKyVDU1V0kMqffTwu1lNdUCYQN-i0DTYVN8,7404
|
|
75
75
|
flwr/client/grpc_adapter_client/__init__.py,sha256=QyNWIbsq9DpyMk7oemiO1P3TBFfkfkctnJ1JoAkTl3s,742
|
|
76
|
-
flwr/client/grpc_adapter_client/connection.py,sha256=
|
|
76
|
+
flwr/client/grpc_adapter_client/connection.py,sha256=icI-q_FhL6rXKCyT8x7J_R45Z67dBq-EWXREGhRcIT8,4001
|
|
77
77
|
flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
|
|
78
|
-
flwr/client/grpc_client/connection.py,sha256=
|
|
78
|
+
flwr/client/grpc_client/connection.py,sha256=Y9yJkRvGypulerX9fviP4axF5XBTBnvYrsp2mv5OS9E,9411
|
|
79
79
|
flwr/client/grpc_rere_client/__init__.py,sha256=MK-oSoV3kwUEQnIwl0GN4OpiHR7eLOrMA8ikunET130,752
|
|
80
80
|
flwr/client/grpc_rere_client/client_interceptor.py,sha256=q08lIEeJLvvonNOiejNXvmySbPObteGnbDHhEKDmWzE,5380
|
|
81
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
|
81
|
+
flwr/client/grpc_rere_client/connection.py,sha256=RALwGBVQGudzNhQvLaaTNrwxABWeghzQO7FpFmUM9is,11156
|
|
82
82
|
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=sQo0I9T65t97LFGoW_PrmgaTbd18GFgi2DoAI5wQJ4k,5589
|
|
83
83
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
|
84
84
|
flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
|
|
@@ -92,17 +92,17 @@ flwr/client/mod/secure_aggregation/__init__.py,sha256=A7DzZ3uvXTUkuHBzrxJMWQQD4R
|
|
|
92
92
|
flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=wI9tuIEvMUETz-wVIEbPYvh-1nK9CEylBLGoVpNhL94,1095
|
|
93
93
|
flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=7cNXsY07ZA0M5_9VSc52F8JUoAoGaraNDA2rgaLvvFo,19680
|
|
94
94
|
flwr/client/mod/utils.py,sha256=dFcTHOjUuuiw34fcQlvyzytYD0sCv1w9x8fQX1Yo8Oc,1201
|
|
95
|
-
flwr/client/node_state.py,sha256
|
|
95
|
+
flwr/client/node_state.py,sha256=-AROBfIepxS-lsQd9BuyDwhkzkriYyo5B5VpaS5bP2k,3977
|
|
96
96
|
flwr/client/node_state_tests.py,sha256=-4fVsn7y-z9NYBuhq-cjepgxgVuPqqQgDOL4SofrdIo,2239
|
|
97
97
|
flwr/client/numpy_client.py,sha256=tqGyhIkeeZQGr65BR03B7TWgx4rW3FA7G2874D8z_VU,11167
|
|
98
98
|
flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3uRS-7Q,735
|
|
99
|
-
flwr/client/rest_client/connection.py,sha256=
|
|
99
|
+
flwr/client/rest_client/connection.py,sha256=k-RqgUFqidACAGlMFPIUM8aawXI5h2LvKUri2OAK7Bg,12817
|
|
100
100
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
|
101
|
-
flwr/client/supernode/app.py,sha256=
|
|
101
|
+
flwr/client/supernode/app.py,sha256=came3AQMOs4VBQ0yGc2Jn3Kgb5BEiP_Nno-3Sj9_0V4,12242
|
|
102
102
|
flwr/client/typing.py,sha256=dxoTBnTMfqXr5J7G3y-uNjqxYCddvxhu89spfj4Lm2U,1048
|
|
103
103
|
flwr/common/__init__.py,sha256=TVaoFEJE158aui1TPZQiJCDZX4RNHRyI8I55VC80HhI,3901
|
|
104
104
|
flwr/common/address.py,sha256=7kM2Rqjw86-c8aKwAvrXerWqznnVv4TFJ62aSAeTn10,3017
|
|
105
|
-
flwr/common/config.py,sha256=
|
|
105
|
+
flwr/common/config.py,sha256=nYA1vjiiqSWx5JjSdlQd1i_0N_Dh9kEGUse1Qze3JMs,7803
|
|
106
106
|
flwr/common/constant.py,sha256=cUP0lErfb0s1ACnErm_T5kIks0xnEi2X5UNnzmXRSW4,3757
|
|
107
107
|
flwr/common/context.py,sha256=5Bd9RCrhLkYZOVR7vr97OVhzVBHQkS1fUsYiIKTwpxU,2239
|
|
108
108
|
flwr/common/date.py,sha256=OcQuwpb2HxcblTqYm6H223ufop5UZw5N_fzalbpOVzY,891
|
|
@@ -111,13 +111,13 @@ flwr/common/differential_privacy_constants.py,sha256=c7b7tqgvT7yMK0XN9ndiTBs4mQf
|
|
|
111
111
|
flwr/common/dp.py,sha256=vddkvyjV2FhRoN4VuU2LeAM1UBn7dQB8_W-Qdiveal8,1978
|
|
112
112
|
flwr/common/exit_handlers.py,sha256=MracJaBeoCOC7TaXK9zCJQxhrMSx9ZtczK237qvhBpU,2806
|
|
113
113
|
flwr/common/grpc.py,sha256=6Yi28JjAll19nxYJlOT9B03RN8dvJZP9zUoR3RSmxoY,2487
|
|
114
|
-
flwr/common/logger.py,sha256=
|
|
115
|
-
flwr/common/message.py,sha256=
|
|
114
|
+
flwr/common/logger.py,sha256=PnO5x79HDZBwpzo2z70DBF3BrPuQasWfcmvbwCFunsI,8123
|
|
115
|
+
flwr/common/message.py,sha256=4O1m0OWXBAYZz05gKgEtnoJ94J1gjo7hCNHyUXThxRo,13831
|
|
116
116
|
flwr/common/object_ref.py,sha256=5lgWqYaJR28UdFc-iirWw9YqFXMfgkOOAdfJc1AVibE,8711
|
|
117
117
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
|
118
118
|
flwr/common/pyproject.py,sha256=EI_ovbCHGmhYrdPx0RSDi5EkFZFof-8m1PA54c0ZTjc,1385
|
|
119
119
|
flwr/common/record/__init__.py,sha256=ejDBQOIA0OkwZAC5cK_tTPHA4oAM0Ju7Oi13-NneMlE,1054
|
|
120
|
-
flwr/common/record/configsrecord.py,sha256=
|
|
120
|
+
flwr/common/record/configsrecord.py,sha256=i40jOzBx04ysZKECwaw4FdUXMdY9HgdY8GAqKdTO1Lw,6486
|
|
121
121
|
flwr/common/record/conversion_utils.py,sha256=n3I3SI2P6hUjyxbWNc0QAch-SEhfMK6Hm-UUaplAlUc,1393
|
|
122
122
|
flwr/common/record/metricsrecord.py,sha256=UywkEPbifiu_IyPUFoDJCi8WEVLujlqZERUWAWpc3vs,5752
|
|
123
123
|
flwr/common/record/parametersrecord.py,sha256=IjnewX8Ea6JXLRWcPMVole2sNjwzRVjBVvzoey5gqtw,7747
|
|
@@ -200,7 +200,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
|
200
200
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
|
201
201
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
202
202
|
flwr/server/__init__.py,sha256=cEg1oecBu4cKB69iJCqWEylC8b5XW47bl7rQiJsdTvM,1528
|
|
203
|
-
flwr/server/app.py,sha256=
|
|
203
|
+
flwr/server/app.py,sha256=T65THzt0VwIo3B4pF1ipiQVl0H8F3IG8bdYhHoLFbDI,24471
|
|
204
204
|
flwr/server/client_manager.py,sha256=7Ese0tgrH-i-ms363feYZJKwB8gWnXSmg_hYF2Bju4U,6227
|
|
205
205
|
flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
|
|
206
206
|
flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
|
|
@@ -210,22 +210,22 @@ flwr/server/compat/driver_client_proxy.py,sha256=Af0bRUEVZNcCYRxt3DjpLPdvVYpTgz6
|
|
|
210
210
|
flwr/server/compat/legacy_context.py,sha256=wBzBcfV6YO6IQGriM_FdJ5XZfiBBEEJdS_OdAiF47dY,1804
|
|
211
211
|
flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
|
|
212
212
|
flwr/server/driver/__init__.py,sha256=bikRv6CjTwSvYh7tf10gziU5o2YotOWhhftz2tr3KDc,886
|
|
213
|
-
flwr/server/driver/driver.py,sha256=
|
|
214
|
-
flwr/server/driver/grpc_driver.py,sha256=
|
|
215
|
-
flwr/server/driver/inmemory_driver.py,sha256=
|
|
213
|
+
flwr/server/driver/driver.py,sha256=KpLrWeF0zP9HBdo_mucPlNVj5eS0K8DDHRRY_58E1BM,5244
|
|
214
|
+
flwr/server/driver/grpc_driver.py,sha256=AhkqfXBSv8TnqBGxqj1nhkOxp6HVU0WaJq4YlqIz8Hw,9687
|
|
215
|
+
flwr/server/driver/inmemory_driver.py,sha256=JhUPoVDeg_icVYmEgnnaQn0ZaY0VXECxrL6y_rkSeX8,6644
|
|
216
216
|
flwr/server/history.py,sha256=qSb5_pPTrwofpSYGsZWzMPkl_4uJ4mJFWesxXDrEvDU,5026
|
|
217
217
|
flwr/server/run_serverapp.py,sha256=5zoXSzLWKAuhK33cLYN-y5LzTgKqIyioNmzs7MIrDOA,10498
|
|
218
218
|
flwr/server/server.py,sha256=1ZsFEptmAV-L2vP2etNC9Ed5CLSxpuKzUFkAPQ4l5Xc,17893
|
|
219
|
-
flwr/server/server_app.py,sha256=
|
|
219
|
+
flwr/server/server_app.py,sha256=RsgS6PRS5Z74cMUAHzsm8r3LWddwn00MjRs6rlacHt8,6297
|
|
220
220
|
flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
|
|
221
221
|
flwr/server/serverapp_components.py,sha256=-IV_CitOfrJclJj2jNdbN1Q65PyFmtKtrTIg1hc6WQw,2118
|
|
222
222
|
flwr/server/strategy/__init__.py,sha256=tQer2SwjDnvgFFuJMZM-S01Z615N5XK6MaCvpm4BMU0,2836
|
|
223
223
|
flwr/server/strategy/aggregate.py,sha256=iFZ8lp7PV_a2m9kywV-FK0iM33ofxavOs5TIaEQY8nU,13961
|
|
224
224
|
flwr/server/strategy/bulyan.py,sha256=DDNLLlTJCHgBtij7EpDsa852GHEYjjDB1iORACZO2KE,6513
|
|
225
|
-
flwr/server/strategy/dp_adaptive_clipping.py,sha256=
|
|
225
|
+
flwr/server/strategy/dp_adaptive_clipping.py,sha256=zrqA9OfQu4gwUkLCXbh59sPsDd_x2IhNs-BER_ITzNE,17447
|
|
226
226
|
flwr/server/strategy/dp_fixed_clipping.py,sha256=ILmO_AsoMpstOAYK9L6hJpqf7zE6erdMj_SD_-hHAFk,12834
|
|
227
|
-
flwr/server/strategy/dpfedavg_adaptive.py,sha256=
|
|
228
|
-
flwr/server/strategy/dpfedavg_fixed.py,sha256=
|
|
227
|
+
flwr/server/strategy/dpfedavg_adaptive.py,sha256=8_C0H99xztzzKLL_Gu6Pcuiv8yjs3EUJZyxYuZEBA2Y,4888
|
|
228
|
+
flwr/server/strategy/dpfedavg_fixed.py,sha256=DqYeduIgqmqjuJG9X3exoX-3SlPEb4ojCL9tlNMG5_A,7230
|
|
229
229
|
flwr/server/strategy/fault_tolerant_fedavg.py,sha256=VJkDxEIKycF3Ds-ia0lVVFZKM6_M5lG2EGSaTAUq1wM,5881
|
|
230
230
|
flwr/server/strategy/fedadagrad.py,sha256=0RwvPdv-mY6UJO16BAMb43NHqq4c4lr5iPAxzi_A8w8,6486
|
|
231
231
|
flwr/server/strategy/fedadam.py,sha256=V9FD3sHhOYk6kgrIzRnTG8g5FqsICX6xN8j_1pSHPc8,6744
|
|
@@ -258,7 +258,7 @@ flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dkSKQMuMTYh1qSnuN87cAPv
|
|
|
258
258
|
flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=xbvorZhCHBj0CvFWB7oUeHoY0o750hUkiS0DiTCGHDs,6020
|
|
259
259
|
flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=JkAH_nIZaqe_9kntrg26od_jaz5XdLFuvNMgGu8xk9Q,6485
|
|
260
260
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=h3EhqgelegVC4EjOXH5birmAnMoCBJcP7jpHYCnHZPk,4887
|
|
261
|
-
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=
|
|
261
|
+
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=R_479Hz2Drahu1BBOFzkZWwjY9H_7nXnM6HJJeEsibQ,12439
|
|
262
262
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=j2hyC342am-_Hgp1g80Y3fGDzfTI6n8QOOn2PyWf4eg,758
|
|
263
263
|
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=bgoLQEhahVHjdlRDk_58zyKFeMOziiPUXSbYMhOxybY,4757
|
|
264
264
|
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=pgSiH-qrTgDxu4M_jJu-8gvEQnxTdR-qIAawKgxjQ6M,8157
|
|
@@ -270,7 +270,7 @@ flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3
|
|
|
270
270
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=Onq16E2M2Wha2K1zvhcquT1jOveQL2cgIrgqWvAPH9Y,1436
|
|
271
271
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LBAQxnbfPAphVOVIvYMj0QIvVP5O-RQxKQlUGNUj974,2194
|
|
272
272
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DPSioTSKD3YGtS3uJsPD7Hn2Fw,7155
|
|
273
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
|
273
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=I8cukkP9P88aKoQfhqgv8r023vwrgUImrETY0MJKPRs,12832
|
|
274
274
|
flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
|
|
275
275
|
flwr/server/superlink/state/in_memory_state.py,sha256=yuyk8R9veNxaSFFhWQg9odUBYPO-1EzcKiulqcXRc1M,15668
|
|
276
276
|
flwr/server/superlink/state/sqlite_state.py,sha256=HJwiD3SMp7yVqcyer-nJbdQ5uS06Cs5qjuN79dSTJWM,35614
|
|
@@ -291,9 +291,9 @@ flwr/simulation/__init__.py,sha256=ybVBW3xT6cg_IasJV4_ymI3bVrCbFhw1mmcfrdfl3q0,1
|
|
|
291
291
|
flwr/simulation/app.py,sha256=EAMHVPKBAxiC2oMcxqS0zkO3FgQe-YRnaE74yJy6Was,15145
|
|
292
292
|
flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
|
|
293
293
|
flwr/simulation/ray_transport/ray_actor.py,sha256=9-XBguAm5IFqm2ddPFsQtnuuFN6lzqdb00SnCxGUGBo,18996
|
|
294
|
-
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=
|
|
294
|
+
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=G6XLDoicZBnch1OXJ9VXFkd0bCTAgaZ3xlIeGdumbgk,7337
|
|
295
295
|
flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
|
|
296
|
-
flwr/simulation/run_simulation.py,sha256=
|
|
296
|
+
flwr/simulation/run_simulation.py,sha256=MQ9UCYT-cQGG6CNXDl96R7cKuUKRfMRkjZUAkAUwdsU,22864
|
|
297
297
|
flwr/superexec/__init__.py,sha256=fcj366jh4RFby_vDwLroU4kepzqbnJgseZD_jUr_Mko,715
|
|
298
298
|
flwr/superexec/app.py,sha256=mKwlsysbtmGPuz4CpWAPDPWAEFZH3b8u0JKRkWpfzuw,6552
|
|
299
299
|
flwr/superexec/deployment.py,sha256=TbzOAAaY2sNt7O516w1GS6N5xvt0UV-dML74O6WA2O4,6344
|
|
@@ -301,8 +301,8 @@ flwr/superexec/exec_grpc.py,sha256=ZPq7EP55Vwj0kRcLVuTCokFqfIgBk-7YmDykZoMKi-c,1
|
|
|
301
301
|
flwr/superexec/exec_servicer.py,sha256=TRpwPVl7eI0Y_xlCY6DmVpAo0yFU1gLwzyIeqFw9pyk,4746
|
|
302
302
|
flwr/superexec/executor.py,sha256=-5J-ZLs-uArro3T2pCq0YQRC65cs18M888nufzdYE4E,2375
|
|
303
303
|
flwr/superexec/simulation.py,sha256=J6pw-RqCSiUed8I_3MasZH4tl57ZmDebPAHNnbb0-vE,7420
|
|
304
|
-
flwr_nightly-1.
|
|
305
|
-
flwr_nightly-1.
|
|
306
|
-
flwr_nightly-1.
|
|
307
|
-
flwr_nightly-1.
|
|
308
|
-
flwr_nightly-1.
|
|
304
|
+
flwr_nightly-1.13.0.dev20241015.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
305
|
+
flwr_nightly-1.13.0.dev20241015.dist-info/METADATA,sha256=0eeXtXRBiS2F-ioA0hJDZ-m7e0r9G8N_uFpLxEpGxgU,15618
|
|
306
|
+
flwr_nightly-1.13.0.dev20241015.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
307
|
+
flwr_nightly-1.13.0.dev20241015.dist-info/entry_points.txt,sha256=WUCbqhLEOzjx_lyATIM0-f0e8kOVaQjzwOvyOxHrMhs,434
|
|
308
|
+
flwr_nightly-1.13.0.dev20241015.dist-info/RECORD,,
|
{flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.12.0.dev20241010.dist-info → flwr_nightly-1.13.0.dev20241015.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|