flwr-nightly 1.21.0.dev20250905__py3-none-any.whl → 1.21.0.dev20250907__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 CHANGED
@@ -13,3 +13,22 @@
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
15
  """Public Flower App APIs."""
16
+
17
+
18
+ from flwr.common.context import Context
19
+ from flwr.common.message import Message
20
+ from flwr.common.record import ArrayRecord, ConfigRecord, MetricRecord, RecordDict
21
+
22
+ from .error import Error
23
+ from .metadata import Metadata
24
+
25
+ __all__ = [
26
+ "ArrayRecord",
27
+ "ConfigRecord",
28
+ "Context",
29
+ "Error",
30
+ "Message",
31
+ "Metadata",
32
+ "MetricRecord",
33
+ "RecordDict",
34
+ ]
@@ -1,8 +1,8 @@
1
1
  """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  import torch
4
- from flwr.client import ClientApp
5
- from flwr.common import ArrayRecord, Context, Message, MetricRecord, RecordDict
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.common import ArrayRecord, ConfigRecord, Context
5
- from flwr.server import Grid, ServerApp
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
@@ -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__ = ["fixedclipping_mod"]
23
+ __all__ = [
24
+ "ClientApp",
25
+ "fixedclipping_mod",
26
+ "mod",
27
+ ]
@@ -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 (
@@ -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
@@ -34,8 +34,8 @@ from flwr.common import (
34
34
  )
35
35
  from flwr.server import Grid
36
36
 
37
+ from ..exception import AggregationError
37
38
  from .fedavg import FedAvg
38
- from .strategy_utils import AggregationError
39
39
 
40
40
 
41
41
  # 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,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250905
3
+ Version: 1.21.0.dev20250907
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
@@ -1,6 +1,7 @@
1
1
  flwr/__init__.py,sha256=CXTKPZSm83CVKTxw9j_ge6AEVnqgd1rlcsm_2kPoVkU,1009
2
- flwr/app/__init__.py,sha256=VNahoTMYIbIQt8EMit-UvliLoJib7uSsvKANJJXUWzM,713
2
+ flwr/app/__init__.py,sha256=msr0FM9Iz56oZgWU3jjP58BKHxvo9tiDeiGLEbPWWeY,1086
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=iOTWSzArdw70QI7BEhRJbB-eNGjzdEOA020x6Q75OMU,2473
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=268EzqUOM0mdiXsf0WWniNu7DiDHh_JGHLe9o-t6ru4,1158
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
@@ -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=h8RNxAbCbdaLf_htSx-e5UCb2A0mLA-mpEX_6giZuU0,799
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
@@ -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=d42XiEwEhee_LttXEMOa9GFP81zvaufzGyt64VlCEo0,9841
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=dUGPpyO0YEJRIjwNw2YrUWXgsEj9JOUrP5OGm8bPX9k,774
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=talxGzeGSIIkLPtZk4i_qXZTksRoBeajrmeUbnGHTUY,6347
336
- flwr/serverapp/strategy/fedadam.py,sha256=TGLnxoJro758DUc9tAxBks9tSRtXDqy-4vWthiqscIo,7142
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=aIN5CtgsE88bAodN_M_pf_01a2vMIj9R_7CYwd8VeMU,8481
339
- flwr/serverapp/strategy/fedyogi.py,sha256=UQnEKVTpJiB_zbCREfI8CEHiuJMIRmEIu5DV50FG_5s,6657
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=C8vU8JqKhMylq102x5jjQITzv_X2Khfo-uXkPTpnHms,9779
343
- flwr/serverapp/strategy/strategy_utils_tests.py,sha256=taG6HwApwutkjUuMY3R8Ib48Xepw6g5xl9HEB_-leoY,9232
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
@@ -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.dev20250905.dist-info/METADATA,sha256=j_7UpChhN5B6nRj4Gelt99YjECPo5fbZV8k6K3B86Go,15967
405
- flwr_nightly-1.21.0.dev20250905.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
406
- flwr_nightly-1.21.0.dev20250905.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
407
- flwr_nightly-1.21.0.dev20250905.dist-info/RECORD,,
405
+ flwr_nightly-1.21.0.dev20250907.dist-info/METADATA,sha256=aXiTtgUb9RiTyRE9PmLM1etPKZRJ2B_1DbRko2ZfS54,15967
406
+ flwr_nightly-1.21.0.dev20250907.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
407
+ flwr_nightly-1.21.0.dev20250907.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
408
+ flwr_nightly-1.21.0.dev20250907.dist-info/RECORD,,
File without changes