flwr-nightly 1.21.0.dev20250905__py3-none-any.whl → 1.21.0.dev20250908__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/app/__init__.py +28 -0
- flwr/cli/new/templates/app/code/client.pytorch_msg_api.py.tpl +2 -2
- flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl +2 -2
- flwr/cli/utils.py +18 -7
- flwr/clientapp/__init__.py +9 -1
- flwr/common/constant.py +1 -0
- flwr/server/serverapp/app.py +1 -1
- flwr/serverapp/__init__.py +6 -0
- flwr/serverapp/exception.py +38 -0
- flwr/serverapp/strategy/fedadagrad.py +1 -1
- flwr/serverapp/strategy/fedadam.py +1 -1
- flwr/serverapp/strategy/fedopt.py +1 -1
- flwr/serverapp/strategy/fedyogi.py +1 -1
- flwr/serverapp/strategy/strategy_utils.py +1 -20
- flwr/serverapp/strategy/strategy_utils_tests.py +1 -1
- flwr/superlink/servicer/control/control_servicer.py +3 -2
- {flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/METADATA +1 -1
- {flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/RECORD +21 -20
- /flwr/{common → app}/exception.py +0 -0
- {flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/entry_points.txt +0 -0
flwr/app/__init__.py
CHANGED
@@ -13,3 +13,31 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
15
|
"""Public Flower App APIs."""
|
16
|
+
|
17
|
+
|
18
|
+
from flwr.common.constant import MessageType
|
19
|
+
from flwr.common.context import Context
|
20
|
+
from flwr.common.message import Message
|
21
|
+
from flwr.common.record import (
|
22
|
+
Array,
|
23
|
+
ArrayRecord,
|
24
|
+
ConfigRecord,
|
25
|
+
MetricRecord,
|
26
|
+
RecordDict,
|
27
|
+
)
|
28
|
+
|
29
|
+
from .error import Error
|
30
|
+
from .metadata import Metadata
|
31
|
+
|
32
|
+
__all__ = [
|
33
|
+
"Array",
|
34
|
+
"ArrayRecord",
|
35
|
+
"ConfigRecord",
|
36
|
+
"Context",
|
37
|
+
"Error",
|
38
|
+
"Message",
|
39
|
+
"MessageType",
|
40
|
+
"Metadata",
|
41
|
+
"MetricRecord",
|
42
|
+
"RecordDict",
|
43
|
+
]
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"""$project_name: A Flower / $framework_str app."""
|
2
2
|
|
3
3
|
import torch
|
4
|
-
from flwr.
|
5
|
-
from flwr.
|
4
|
+
from flwr.app import ArrayRecord, Context, Message, MetricRecord, RecordDict
|
5
|
+
from flwr.clientapp import ClientApp
|
6
6
|
|
7
7
|
from $import_name.task import Net, load_data
|
8
8
|
from $import_name.task import test as test_fn
|
@@ -1,8 +1,8 @@
|
|
1
1
|
"""$project_name: A Flower / $framework_str app."""
|
2
2
|
|
3
3
|
import torch
|
4
|
-
from flwr.
|
5
|
-
from flwr.
|
4
|
+
from flwr.app import ArrayRecord, ConfigRecord, Context
|
5
|
+
from flwr.serverapp import Grid, ServerApp
|
6
6
|
from flwr.serverapp.strategy import FedAvg
|
7
7
|
|
8
8
|
from $import_name.task import Net
|
flwr/cli/utils.py
CHANGED
@@ -32,6 +32,7 @@ from flwr.common.constant import (
|
|
32
32
|
AUTH_TYPE_JSON_KEY,
|
33
33
|
CREDENTIALS_DIR,
|
34
34
|
FLWR_DIR,
|
35
|
+
NO_USER_AUTH_MESSAGE,
|
35
36
|
RUN_ID_NOT_FOUND_MESSAGE,
|
36
37
|
)
|
37
38
|
from flwr.common.grpc import (
|
@@ -312,11 +313,21 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
|
|
312
313
|
)
|
313
314
|
raise typer.Exit(code=1) from None
|
314
315
|
if e.code() == grpc.StatusCode.UNIMPLEMENTED:
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
316
|
+
if e.details() == NO_USER_AUTH_MESSAGE: # pylint: disable=E1101
|
317
|
+
typer.secho(
|
318
|
+
"❌ User authentication is not enabled on this SuperLink.",
|
319
|
+
fg=typer.colors.RED,
|
320
|
+
bold=True,
|
321
|
+
)
|
322
|
+
else:
|
323
|
+
typer.secho(
|
324
|
+
"❌ The SuperLink cannot process this request. Please verify that "
|
325
|
+
"you set the address to its Control API endpoint correctly in your "
|
326
|
+
"`pyproject.toml`, and ensure that the Flower versions used by "
|
327
|
+
"the CLI and SuperLink are compatible.",
|
328
|
+
fg=typer.colors.RED,
|
329
|
+
bold=True,
|
330
|
+
)
|
320
331
|
raise typer.Exit(code=1) from None
|
321
332
|
if e.code() == grpc.StatusCode.PERMISSION_DENIED:
|
322
333
|
typer.secho(
|
@@ -324,7 +335,7 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
|
|
324
335
|
fg=typer.colors.RED,
|
325
336
|
bold=True,
|
326
337
|
)
|
327
|
-
# pylint: disable=E1101
|
338
|
+
# pylint: disable-next=E1101
|
328
339
|
typer.secho(e.details(), fg=typer.colors.RED, bold=True)
|
329
340
|
raise typer.Exit(code=1) from None
|
330
341
|
if e.code() == grpc.StatusCode.UNAVAILABLE:
|
@@ -337,7 +348,7 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]:
|
|
337
348
|
raise typer.Exit(code=1) from None
|
338
349
|
if (
|
339
350
|
e.code() == grpc.StatusCode.NOT_FOUND
|
340
|
-
and e.details() == RUN_ID_NOT_FOUND_MESSAGE
|
351
|
+
and e.details() == RUN_ID_NOT_FOUND_MESSAGE # pylint: disable=E1101
|
341
352
|
):
|
342
353
|
typer.secho(
|
343
354
|
"❌ Run ID not found.",
|
flwr/clientapp/__init__.py
CHANGED
@@ -14,6 +14,14 @@
|
|
14
14
|
# ==============================================================================
|
15
15
|
"""Public Flower ClientApp APIs."""
|
16
16
|
|
17
|
+
|
18
|
+
from flwr.client import mod
|
19
|
+
from flwr.client.client_app import ClientApp
|
20
|
+
|
17
21
|
from .centraldp_mods import fixedclipping_mod
|
18
22
|
|
19
|
-
__all__ = [
|
23
|
+
__all__ = [
|
24
|
+
"ClientApp",
|
25
|
+
"fixedclipping_mod",
|
26
|
+
"mod",
|
27
|
+
]
|
flwr/common/constant.py
CHANGED
@@ -154,6 +154,7 @@ PULL_BACKOFF_CAP = 10 # Maximum backoff time for pulling objects
|
|
154
154
|
|
155
155
|
# ControlServicer constants
|
156
156
|
RUN_ID_NOT_FOUND_MESSAGE = "Run ID not found"
|
157
|
+
NO_USER_AUTH_MESSAGE = "ControlServicer initialized without user authentication"
|
157
158
|
|
158
159
|
|
159
160
|
class MessageType:
|
flwr/server/serverapp/app.py
CHANGED
@@ -21,6 +21,7 @@ from pathlib import Path
|
|
21
21
|
from queue import Queue
|
22
22
|
from typing import Optional
|
23
23
|
|
24
|
+
from flwr.app.exception import AppExitException
|
24
25
|
from flwr.cli.config_utils import get_fab_metadata
|
25
26
|
from flwr.cli.install import install_from_fab
|
26
27
|
from flwr.cli.utils import get_sha256_hash
|
@@ -37,7 +38,6 @@ from flwr.common.constant import (
|
|
37
38
|
Status,
|
38
39
|
SubStatus,
|
39
40
|
)
|
40
|
-
from flwr.common.exception import AppExitException
|
41
41
|
from flwr.common.exit import ExitCode, add_exit_handler, flwr_exit
|
42
42
|
from flwr.common.heartbeat import HeartbeatSender, get_grpc_app_heartbeat_fn
|
43
43
|
from flwr.common.logger import (
|
flwr/serverapp/__init__.py
CHANGED
@@ -14,8 +14,14 @@
|
|
14
14
|
# ==============================================================================
|
15
15
|
"""Public Flower ServerApp APIs."""
|
16
16
|
|
17
|
+
|
18
|
+
from flwr.server.grid import Grid
|
19
|
+
from flwr.server.server_app import ServerApp
|
20
|
+
|
17
21
|
from . import strategy
|
18
22
|
|
19
23
|
__all__ = [
|
24
|
+
"Grid",
|
25
|
+
"ServerApp",
|
20
26
|
"strategy",
|
21
27
|
]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Flower ServerApp exceptions."""
|
16
|
+
|
17
|
+
|
18
|
+
from flwr.app.exception import AppExitException
|
19
|
+
from flwr.common.exit import ExitCode
|
20
|
+
|
21
|
+
|
22
|
+
class InconsistentMessageReplies(AppExitException):
|
23
|
+
"""Exception triggered when replies are inconsistent and therefore aggregation must
|
24
|
+
be skipped."""
|
25
|
+
|
26
|
+
exit_code = ExitCode.SERVERAPP_STRATEGY_PRECONDITION_UNMET
|
27
|
+
|
28
|
+
def __init__(self, reason: str):
|
29
|
+
super().__init__(reason)
|
30
|
+
|
31
|
+
|
32
|
+
class AggregationError(AppExitException):
|
33
|
+
"""Exception triggered when aggregation fails."""
|
34
|
+
|
35
|
+
exit_code = ExitCode.SERVERAPP_STRATEGY_AGGREGATION_ERROR
|
36
|
+
|
37
|
+
def __init__(self, reason: str):
|
38
|
+
super().__init__(reason)
|
@@ -27,8 +27,8 @@ import numpy as np
|
|
27
27
|
|
28
28
|
from flwr.common import Array, ArrayRecord, Message, MetricRecord, RecordDict
|
29
29
|
|
30
|
+
from ..exception import AggregationError
|
30
31
|
from .fedopt import FedOpt
|
31
|
-
from .strategy_utils import AggregationError
|
32
32
|
|
33
33
|
|
34
34
|
# pylint: disable=line-too-long
|
@@ -27,8 +27,8 @@ import numpy as np
|
|
27
27
|
|
28
28
|
from flwr.common import Array, ArrayRecord, Message, MetricRecord, RecordDict
|
29
29
|
|
30
|
+
from ..exception import AggregationError
|
30
31
|
from .fedopt import FedOpt
|
31
|
-
from .strategy_utils import AggregationError
|
32
32
|
|
33
33
|
|
34
34
|
# pylint: disable=line-too-long
|
@@ -26,8 +26,8 @@ import numpy as np
|
|
26
26
|
|
27
27
|
from flwr.common import Array, ArrayRecord, Message, MetricRecord, RecordDict
|
28
28
|
|
29
|
+
from ..exception import AggregationError
|
29
30
|
from .fedopt import FedOpt
|
30
|
-
from .strategy_utils import AggregationError
|
31
31
|
|
32
32
|
|
33
33
|
# pylint: disable=line-too-long
|
@@ -30,28 +30,9 @@ from flwr.common import (
|
|
30
30
|
RecordDict,
|
31
31
|
log,
|
32
32
|
)
|
33
|
-
from flwr.common.exception import AppExitException
|
34
|
-
from flwr.common.exit import ExitCode
|
35
33
|
from flwr.server import Grid
|
36
34
|
|
37
|
-
|
38
|
-
class InconsistentMessageReplies(AppExitException):
|
39
|
-
"""Exception triggered when replies are inconsistent and therefore aggregation must
|
40
|
-
be skipped."""
|
41
|
-
|
42
|
-
exit_code = ExitCode.SERVERAPP_STRATEGY_PRECONDITION_UNMET
|
43
|
-
|
44
|
-
def __init__(self, reason: str):
|
45
|
-
super().__init__(reason)
|
46
|
-
|
47
|
-
|
48
|
-
class AggregationError(AppExitException):
|
49
|
-
"""Exception triggered when aggregation fails."""
|
50
|
-
|
51
|
-
exit_code = ExitCode.SERVERAPP_STRATEGY_AGGREGATION_ERROR
|
52
|
-
|
53
|
-
def __init__(self, reason: str):
|
54
|
-
super().__init__(reason)
|
35
|
+
from ..exception import InconsistentMessageReplies
|
55
36
|
|
56
37
|
|
57
38
|
def config_to_str(config: ConfigRecord) -> str:
|
@@ -23,8 +23,8 @@ from parameterized import parameterized
|
|
23
23
|
|
24
24
|
from flwr.common import Array, ArrayRecord, ConfigRecord, MetricRecord, RecordDict
|
25
25
|
|
26
|
+
from ..exception import InconsistentMessageReplies
|
26
27
|
from .strategy_utils import (
|
27
|
-
InconsistentMessageReplies,
|
28
28
|
aggregate_arrayrecords,
|
29
29
|
aggregate_metricrecords,
|
30
30
|
config_to_str,
|
@@ -29,6 +29,7 @@ from flwr.common.auth_plugin import ControlAuthPlugin
|
|
29
29
|
from flwr.common.constant import (
|
30
30
|
FAB_MAX_SIZE,
|
31
31
|
LOG_STREAM_INTERVAL,
|
32
|
+
NO_USER_AUTH_MESSAGE,
|
32
33
|
RUN_ID_NOT_FOUND_MESSAGE,
|
33
34
|
Status,
|
34
35
|
SubStatus,
|
@@ -291,7 +292,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
291
292
|
if self.auth_plugin is None:
|
292
293
|
context.abort(
|
293
294
|
grpc.StatusCode.UNIMPLEMENTED,
|
294
|
-
|
295
|
+
NO_USER_AUTH_MESSAGE,
|
295
296
|
)
|
296
297
|
raise grpc.RpcError() # This line is unreachable
|
297
298
|
|
@@ -318,7 +319,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
|
|
318
319
|
if self.auth_plugin is None:
|
319
320
|
context.abort(
|
320
321
|
grpc.StatusCode.UNIMPLEMENTED,
|
321
|
-
|
322
|
+
NO_USER_AUTH_MESSAGE,
|
322
323
|
)
|
323
324
|
raise grpc.RpcError() # This line is unreachable
|
324
325
|
|
{flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.21.0.
|
3
|
+
Version: 1.21.0.dev20250908
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
{flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/RECORD
RENAMED
@@ -1,6 +1,7 @@
|
|
1
1
|
flwr/__init__.py,sha256=CXTKPZSm83CVKTxw9j_ge6AEVnqgd1rlcsm_2kPoVkU,1009
|
2
|
-
flwr/app/__init__.py,sha256=
|
2
|
+
flwr/app/__init__.py,sha256=Pqg1iWx_TiBuGYeGJnS1QgYYWcAnPnZ2h4Y5iacNSls,1195
|
3
3
|
flwr/app/error.py,sha256=0PwA-E_CAs5P_nWAA0kksVO1A44t4CNLEf7u-Su-uJ0,2342
|
4
|
+
flwr/app/exception.py,sha256=dAKSNrdh9YqKZTdYaN8hts4dAMVZHfNDV-ytzYby0LQ,1246
|
4
5
|
flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
|
5
6
|
flwr/cli/__init__.py,sha256=EfMGmHoobET6P2blBt_eOByXL8299MgFfB7XNdaPQ6I,720
|
6
7
|
flwr/cli/app.py,sha256=AKCP45Dkbpvdil_4Ir9S93L3HP3iUOnHmcZjscoM8uU,1856
|
@@ -35,7 +36,7 @@ flwr/cli/new/templates/app/code/client.jax.py.tpl,sha256=4EkcGGmbPAa6dgw8GYII-Gf
|
|
35
36
|
flwr/cli/new/templates/app/code/client.mlx.py.tpl,sha256=gOxt_QUTfGFpofdNaxdwTSLZlkTWHPYGix2OGHC1hYE,2376
|
36
37
|
flwr/cli/new/templates/app/code/client.numpy.py.tpl,sha256=DKcnz5-KUf693Va056QTKVofFV3ozJZutK4rQyfvRXc,548
|
37
38
|
flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256=fuxVmZpjHIueNy_aHWF81531vmi8DGu4CYjYDqmUwWo,1705
|
38
|
-
flwr/cli/new/templates/app/code/client.pytorch_msg_api.py.tpl,sha256=
|
39
|
+
flwr/cli/new/templates/app/code/client.pytorch_msg_api.py.tpl,sha256=fYoh-dTu07LkqNYvwcxQnbgVvH4Yo4eiGEcyHECbsnU,2473
|
39
40
|
flwr/cli/new/templates/app/code/client.sklearn.py.tpl,sha256=MfhMN-hayGCc3cZ1XpN0A6f67GRveI_tGbq5kjOeP0Q,1871
|
40
41
|
flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=yBiiU7B9Kf70U52cPkNs_dUpYrrTwbUi2os-PAyheaM,1680
|
41
42
|
flwr/cli/new/templates/app/code/dataset.baseline.py.tpl,sha256=jbd_exHAk2-Blu_kVutjPO6a_dkJQWb232zxSeXIZ1k,1453
|
@@ -52,7 +53,7 @@ flwr/cli/new/templates/app/code/server.jax.py.tpl,sha256=IHk57syZhvO4nWVHGxE9S8f
|
|
52
53
|
flwr/cli/new/templates/app/code/server.mlx.py.tpl,sha256=GAqalaI-U2uRdttNeRn75k1FzdEW3rmgT-ywuKkFdK4,988
|
53
54
|
flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=xbQlLCKutnOqlbLQPZsaL9WM7vnebTceiU8a0HaUcZk,740
|
54
55
|
flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=gvBsGA_Jg9kAH8xTxjzTjMcvBtciuccOwQFbO7ey8tU,916
|
55
|
-
flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl,sha256=
|
56
|
+
flwr/cli/new/templates/app/code/server.pytorch_msg_api.py.tpl,sha256=epARqfcQ-EQsdZwaaaUp5y4OSTBT6CiFGlNRocw-23A,1158
|
56
57
|
flwr/cli/new/templates/app/code/server.sklearn.py.tpl,sha256=JoDYjPU99aKTTfjKsCtKHzMICiOR9pi8JGVBsxFpWO4,1133
|
57
58
|
flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=xMhQ7AumowgLkgUilgjVK7IbpRhPjslhVJU-vID6NY8,856
|
58
59
|
flwr/cli/new/templates/app/code/strategy.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
@@ -78,7 +79,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=mK8wOWqoQOVxZG6-
|
|
78
79
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
79
80
|
flwr/cli/run/run.py,sha256=ECa0kup9dn15O70H74QdgUsEaeErbzDqVX_U0zZO5IM,8173
|
80
81
|
flwr/cli/stop.py,sha256=TR9F61suTxNUzGIktUdoBhXwdRtCdvzGhy3qCuvcfBg,5000
|
81
|
-
flwr/cli/utils.py,sha256=
|
82
|
+
flwr/cli/utils.py,sha256=tTI8PyJdA8BU1PoTS8ZItdCM5EVTeze_Z1zumffYY6A,12963
|
82
83
|
flwr/client/__init__.py,sha256=boIhKaK6I977zrILmoTutNx94x5jB0e6F1gnAjaRJnI,1250
|
83
84
|
flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
|
84
85
|
flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
@@ -106,7 +107,7 @@ flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMy
|
|
106
107
|
flwr/client/rest_client/connection.py,sha256=fyiS1aXTv71jWczx7mSco94LYJTBXgTF-p2PnAk3CL8,15784
|
107
108
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
108
109
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
109
|
-
flwr/clientapp/__init__.py,sha256=
|
110
|
+
flwr/clientapp/__init__.py,sha256=m_5SENAoZN7G1q7EgBEM4uYb7D90b4CvQe-bOZAN2QY,909
|
110
111
|
flwr/clientapp/centraldp_mods.py,sha256=M8vvdrjfLVsFLMd9JXqD_-P08q9jsNOgu_4AAs-X9Zk,4626
|
111
112
|
flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
112
113
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
@@ -114,7 +115,7 @@ flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
|
|
114
115
|
flwr/common/auth_plugin/__init__.py,sha256=DktrRcGZrRarLf7Jb_UlHtOyLp9_-kEplyq6PS5-vOA,988
|
115
116
|
flwr/common/auth_plugin/auth_plugin.py,sha256=mM7SuphO4OsVAVJR1GErYVgYT83ZjxDzS_gha12bT9E,4855
|
116
117
|
flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
|
117
|
-
flwr/common/constant.py,sha256=
|
118
|
+
flwr/common/constant.py,sha256=FXG5HqwQG-mQXgfptHn4jTaXD4Y_kyDA1ntTKcp0qfs,8850
|
118
119
|
flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
|
119
120
|
flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
|
120
121
|
flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHERM-EoE,6148
|
@@ -122,7 +123,6 @@ flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxF
|
|
122
123
|
flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
|
123
124
|
flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
|
124
125
|
flwr/common/event_log_plugin/event_log_plugin.py,sha256=4SkVa1Ic-sPlICJShBuggXmXDcQtWQ1KDby4kthFNF0,2064
|
125
|
-
flwr/common/exception.py,sha256=dAKSNrdh9YqKZTdYaN8hts4dAMVZHfNDV-ytzYby0LQ,1246
|
126
126
|
flwr/common/exit/__init__.py,sha256=8W7xaO1iw0vacgmQW7FTFbSh7csNv6XfsgIlnIbNF6U,978
|
127
127
|
flwr/common/exit/exit.py,sha256=DcXJfbpW1g-pQJqSZmps-1MZydd7T7RaarghIf2e4tU,3636
|
128
128
|
flwr/common/exit/exit_code.py,sha256=e8O71zIqVT1H84mNBeenTz7S39yPZSpZQm-xUenpzN4,5249
|
@@ -258,7 +258,7 @@ flwr/server/server.py,sha256=39m4FSN2T-uVA-no9nstN0eWW0co-IUUAIMmpd3V7Jc,17893
|
|
258
258
|
flwr/server/server_app.py,sha256=8uagoZX-3CY3tazPqkIV9jY-cN0YrRRrDmVe23o0AV0,9515
|
259
259
|
flwr/server/server_config.py,sha256=e_6ddh0riwOJsdNn2BFev344uMWfDk9n7dyjNpPgm1w,1349
|
260
260
|
flwr/server/serverapp/__init__.py,sha256=xcC0T_MQSMS9cicUzUUpMNCOsF2d8Oh_8jvnoBLuZvo,800
|
261
|
-
flwr/server/serverapp/app.py,sha256=
|
261
|
+
flwr/server/serverapp/app.py,sha256=yq70fTTXKxlDrQoXeuw14cQ-d-QmFy3AVcfnhGI0HNA,9838
|
262
262
|
flwr/server/serverapp_components.py,sha256=dfSqmrsVy3arKXpl3ZIBQWdV8rehfIms8aJooyzdmEM,2118
|
263
263
|
flwr/server/strategy/__init__.py,sha256=HhsSWMWaC7oCb2g7Kqn1MBKdrfvgi8VxACy9ZL706Q0,2836
|
264
264
|
flwr/server/strategy/aggregate.py,sha256=smlKKy-uFUuuFR12vlclucnwSQWRz78R79-Km4RWqbw,13978
|
@@ -328,19 +328,20 @@ flwr/server/workflow/default_workflows.py,sha256=RlD26dXbSksY-23f3ZspnN1YU1DOhDY
|
|
328
328
|
flwr/server/workflow/secure_aggregation/__init__.py,sha256=vGkycLb65CxdaMkKsANxQE6AS4urfZKvwcS3r1Vln_c,880
|
329
329
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=b_pKk7gmbahwyj0ftOOLXvu-AMtRHEc82N9PJTEO8dc,5839
|
330
330
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=DkayCsnlAya6Y2PZsueLgoUCMRtV-GbnW08RfWx_SXM,29460
|
331
|
-
flwr/serverapp/__init__.py,sha256=
|
331
|
+
flwr/serverapp/__init__.py,sha256=ZujKNXULwhWYQhFnxOOT5Wi9MRq2JCWFhAAj7ouiQ78,884
|
332
332
|
flwr/serverapp/dp_fixed_clipping.py,sha256=wbP4W7CaUHXdll8ZSVUnTBSEWrnWM00CGk63rOR-Q2s,12133
|
333
|
+
flwr/serverapp/exception.py,sha256=5cuH-2AafvihzosWDdDjuMmHdDqZ1XxHvCqZXNBVklw,1334
|
333
334
|
flwr/serverapp/strategy/__init__.py,sha256=yAYBZUkp4aNmcTLsvormEc9HyO34oEoFN45LiHgujE0,1229
|
334
335
|
flwr/serverapp/strategy/dp_fixed_clipping.py,sha256=wbP4W7CaUHXdll8ZSVUnTBSEWrnWM00CGk63rOR-Q2s,12133
|
335
|
-
flwr/serverapp/strategy/fedadagrad.py,sha256=
|
336
|
-
flwr/serverapp/strategy/fedadam.py,sha256=
|
336
|
+
flwr/serverapp/strategy/fedadagrad.py,sha256=fD65P6OEERa_pxq847e1UZpA083AcWR44XavYB0naGM,6343
|
337
|
+
flwr/serverapp/strategy/fedadam.py,sha256=s3xPIqhopy6yPTeFxevSPnc7a6BcKnKsvo2AaO6Z_xs,7138
|
337
338
|
flwr/serverapp/strategy/fedavg.py,sha256=C8UUvLTjodMpGRb4PNej5gW2cPbXsPKebGX1zPfAMUo,11020
|
338
|
-
flwr/serverapp/strategy/fedopt.py,sha256=
|
339
|
-
flwr/serverapp/strategy/fedyogi.py,sha256=
|
339
|
+
flwr/serverapp/strategy/fedopt.py,sha256=kqT0uV2IUE93O72XEVa1JJo61dcwbZEoT9KmYTjR2tE,8477
|
340
|
+
flwr/serverapp/strategy/fedyogi.py,sha256=1Ripr4Hi2cdeTOLiFOXtMKvOxR3BsUQwc7bbTrXN4LM,6653
|
340
341
|
flwr/serverapp/strategy/result.py,sha256=E0Hl2VLnZAgQJjE2GDoKsK7JX-kPPU2KXc47Axt6hGw,4295
|
341
342
|
flwr/serverapp/strategy/strategy.py,sha256=8uJGGm1ROLZERQ_dkRS7Z_rs-yK6XCE0UxXtIdFiEWk,10789
|
342
|
-
flwr/serverapp/strategy/strategy_utils.py,sha256=
|
343
|
-
flwr/serverapp/strategy/strategy_utils_tests.py,sha256=
|
343
|
+
flwr/serverapp/strategy/strategy_utils.py,sha256=o_1ksJsIQr6KgSQS_SOz3ZjarjnhwQBYzA6L0z171uI,9214
|
344
|
+
flwr/serverapp/strategy/strategy_utils_tests.py,sha256=5aJE3qXG0QuIHskPI2H0L3I5an-7yHLrcjcjDYJIK3A,9251
|
344
345
|
flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1556
|
345
346
|
flwr/simulation/app.py,sha256=LbGLMvN9Ap119yBqsUcNNmVLRnCySnr4VechqcQ1hpA,10401
|
346
347
|
flwr/simulation/legacy_app.py,sha256=nMISQqW0otJL1-2Kfd94O6BLlGS2IEmEPKTM2WGKrIs,15861
|
@@ -385,7 +386,7 @@ flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5
|
|
385
386
|
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=HauUd7Xq-b1TFZmZVl9wpBITfDttn8-1_KhlEq-HJ8M,5966
|
386
387
|
flwr/superlink/servicer/control/control_grpc.py,sha256=DUGArJvH3oZasutEU55NtYm0ZukPEO92UKhzOGu3qu8,4079
|
387
388
|
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
|
388
|
-
flwr/superlink/servicer/control/control_servicer.py,sha256=
|
389
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=RFttpc1O0pYBaru1SXE6v3hUoNfgR3_ijN02bSVhDsM,13914
|
389
390
|
flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
|
390
391
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
391
392
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
@@ -401,7 +402,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
|
|
401
402
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
402
403
|
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
|
403
404
|
flwr/supernode/start_client_internal.py,sha256=Y9S1-QlO2WP6eo4JvWzIpfaCoh2aoE7bjEYyxNNnlyg,20777
|
404
|
-
flwr_nightly-1.21.0.
|
405
|
-
flwr_nightly-1.21.0.
|
406
|
-
flwr_nightly-1.21.0.
|
407
|
-
flwr_nightly-1.21.0.
|
405
|
+
flwr_nightly-1.21.0.dev20250908.dist-info/METADATA,sha256=sOTcMr6_KLxcsaYqX3eou2bVcol4pTiC94t3qJOKZAA,15967
|
406
|
+
flwr_nightly-1.21.0.dev20250908.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
407
|
+
flwr_nightly-1.21.0.dev20250908.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
408
|
+
flwr_nightly-1.21.0.dev20250908.dist-info/RECORD,,
|
File without changes
|
{flwr_nightly-1.21.0.dev20250905.dist-info → flwr_nightly-1.21.0.dev20250908.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|