flwr-nightly 1.8.0.dev20240323__py3-none-any.whl → 1.8.0.dev20240328__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.

Files changed (34) hide show
  1. flwr/client/app.py +35 -24
  2. flwr/client/client_app.py +4 -4
  3. flwr/client/grpc_client/connection.py +2 -1
  4. flwr/client/message_handler/message_handler.py +3 -2
  5. flwr/client/mod/secure_aggregation/secaggplus_mod.py +1 -1
  6. flwr/common/__init__.py +2 -0
  7. flwr/common/message.py +65 -20
  8. flwr/common/serde.py +8 -2
  9. flwr/proto/fleet_pb2.py +19 -15
  10. flwr/proto/fleet_pb2.pyi +28 -0
  11. flwr/proto/fleet_pb2_grpc.py +33 -0
  12. flwr/proto/fleet_pb2_grpc.pyi +10 -0
  13. flwr/proto/task_pb2.py +6 -6
  14. flwr/proto/task_pb2.pyi +8 -5
  15. flwr/server/compat/driver_client_proxy.py +25 -1
  16. flwr/server/driver/driver.py +6 -5
  17. flwr/server/superlink/driver/driver_servicer.py +6 -0
  18. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +11 -1
  19. flwr/server/superlink/fleet/message_handler/message_handler.py +14 -0
  20. flwr/server/superlink/fleet/vce/backend/raybackend.py +5 -4
  21. flwr/server/superlink/fleet/vce/vce_api.py +41 -25
  22. flwr/server/superlink/state/in_memory_state.py +38 -26
  23. flwr/server/superlink/state/sqlite_state.py +42 -21
  24. flwr/server/superlink/state/state.py +19 -0
  25. flwr/server/utils/validator.py +23 -9
  26. flwr/server/workflow/default_workflows.py +4 -4
  27. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +5 -4
  28. flwr/simulation/ray_transport/ray_actor.py +6 -2
  29. flwr/simulation/ray_transport/ray_client_proxy.py +2 -2
  30. {flwr_nightly-1.8.0.dev20240323.dist-info → flwr_nightly-1.8.0.dev20240328.dist-info}/METADATA +1 -1
  31. {flwr_nightly-1.8.0.dev20240323.dist-info → flwr_nightly-1.8.0.dev20240328.dist-info}/RECORD +34 -34
  32. {flwr_nightly-1.8.0.dev20240323.dist-info → flwr_nightly-1.8.0.dev20240328.dist-info}/LICENSE +0 -0
  33. {flwr_nightly-1.8.0.dev20240323.dist-info → flwr_nightly-1.8.0.dev20240328.dist-info}/WHEEL +0 -0
  34. {flwr_nightly-1.8.0.dev20240323.dist-info → flwr_nightly-1.8.0.dev20240328.dist-info}/entry_points.txt +0 -0
@@ -31,13 +31,21 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> List[str
31
31
  if not tasks_ins_res.HasField("task"):
32
32
  validation_errors.append("`task` does not set field `task`")
33
33
 
34
- # Created/delivered/TTL
35
- if tasks_ins_res.task.created_at != "":
36
- validation_errors.append("`created_at` must be an empty str")
34
+ # Created/delivered/TTL/Pushed
35
+ if (
36
+ tasks_ins_res.task.created_at < 1711497600.0
37
+ ): # unix timestamp of 27 March 2024 00h:00m:00s UTC
38
+ validation_errors.append(
39
+ "`created_at` must be a float that records the unix timestamp "
40
+ "in seconds when the message was created."
41
+ )
37
42
  if tasks_ins_res.task.delivered_at != "":
38
43
  validation_errors.append("`delivered_at` must be an empty str")
39
- if tasks_ins_res.task.ttl != "":
40
- validation_errors.append("`ttl` must be an empty str")
44
+ if tasks_ins_res.task.ttl <= 0:
45
+ validation_errors.append("`ttl` must be higher than zero")
46
+ if tasks_ins_res.task.pushed_at < 1711497600.0:
47
+ # unix timestamp of 27 March 2024 00h:00m:00s UTC
48
+ validation_errors.append("`pushed_at` is not a recent timestamp")
41
49
 
42
50
  # TaskIns specific
43
51
  if isinstance(tasks_ins_res, TaskIns):
@@ -66,8 +74,11 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> List[str
66
74
  # Content check
67
75
  if tasks_ins_res.task.task_type == "":
68
76
  validation_errors.append("`task_type` MUST be set")
69
- if not tasks_ins_res.task.HasField("recordset"):
70
- validation_errors.append("`recordset` MUST be set")
77
+ if not (
78
+ tasks_ins_res.task.HasField("recordset")
79
+ ^ tasks_ins_res.task.HasField("error")
80
+ ):
81
+ validation_errors.append("Either `recordset` or `error` MUST be set")
71
82
 
72
83
  # Ancestors
73
84
  if len(tasks_ins_res.task.ancestry) != 0:
@@ -106,8 +117,11 @@ def validate_task_ins_or_res(tasks_ins_res: Union[TaskIns, TaskRes]) -> List[str
106
117
  # Content check
107
118
  if tasks_ins_res.task.task_type == "":
108
119
  validation_errors.append("`task_type` MUST be set")
109
- if not tasks_ins_res.task.HasField("recordset"):
110
- validation_errors.append("`recordset` MUST be set")
120
+ if not (
121
+ tasks_ins_res.task.HasField("recordset")
122
+ ^ tasks_ins_res.task.HasField("error")
123
+ ):
124
+ validation_errors.append("Either `recordset` or `error` MUST be set")
111
125
 
112
126
  # Ancestors
113
127
  if len(tasks_ins_res.task.ancestry) == 0:
@@ -21,7 +21,7 @@ from logging import INFO
21
21
  from typing import Optional, cast
22
22
 
23
23
  import flwr.common.recordset_compat as compat
24
- from flwr.common import ConfigsRecord, Context, GetParametersIns, log
24
+ from flwr.common import DEFAULT_TTL, ConfigsRecord, Context, GetParametersIns, log
25
25
  from flwr.common.constant import MessageType, MessageTypeLegacy
26
26
 
27
27
  from ..compat.app_utils import start_update_client_manager_thread
@@ -127,7 +127,7 @@ def default_init_params_workflow(driver: Driver, context: Context) -> None:
127
127
  message_type=MessageTypeLegacy.GET_PARAMETERS,
128
128
  dst_node_id=random_client.node_id,
129
129
  group_id="0",
130
- ttl="",
130
+ ttl=DEFAULT_TTL,
131
131
  )
132
132
  ]
133
133
  )
@@ -226,7 +226,7 @@ def default_fit_workflow( # pylint: disable=R0914
226
226
  message_type=MessageType.TRAIN,
227
227
  dst_node_id=proxy.node_id,
228
228
  group_id=str(current_round),
229
- ttl="",
229
+ ttl=DEFAULT_TTL,
230
230
  )
231
231
  for proxy, fitins in client_instructions
232
232
  ]
@@ -306,7 +306,7 @@ def default_evaluate_workflow(driver: Driver, context: Context) -> None:
306
306
  message_type=MessageType.EVALUATE,
307
307
  dst_node_id=proxy.node_id,
308
308
  group_id=str(current_round),
309
- ttl="",
309
+ ttl=DEFAULT_TTL,
310
310
  )
311
311
  for proxy, evalins in client_instructions
312
312
  ]
@@ -22,6 +22,7 @@ from typing import Dict, List, Optional, Set, Tuple, Union, cast
22
22
 
23
23
  import flwr.common.recordset_compat as compat
24
24
  from flwr.common import (
25
+ DEFAULT_TTL,
25
26
  ConfigsRecord,
26
27
  Context,
27
28
  FitRes,
@@ -373,7 +374,7 @@ class SecAggPlusWorkflow:
373
374
  message_type=MessageType.TRAIN,
374
375
  dst_node_id=nid,
375
376
  group_id=str(cfg[WorkflowKey.CURRENT_ROUND]),
376
- ttl="",
377
+ ttl=DEFAULT_TTL,
377
378
  )
378
379
 
379
380
  log(
@@ -421,7 +422,7 @@ class SecAggPlusWorkflow:
421
422
  message_type=MessageType.TRAIN,
422
423
  dst_node_id=nid,
423
424
  group_id=str(cfg[WorkflowKey.CURRENT_ROUND]),
424
- ttl="",
425
+ ttl=DEFAULT_TTL,
425
426
  )
426
427
 
427
428
  # Broadcast public keys to clients and receive secret key shares
@@ -492,7 +493,7 @@ class SecAggPlusWorkflow:
492
493
  message_type=MessageType.TRAIN,
493
494
  dst_node_id=nid,
494
495
  group_id=str(cfg[WorkflowKey.CURRENT_ROUND]),
495
- ttl="",
496
+ ttl=DEFAULT_TTL,
496
497
  )
497
498
 
498
499
  log(
@@ -563,7 +564,7 @@ class SecAggPlusWorkflow:
563
564
  message_type=MessageType.TRAIN,
564
565
  dst_node_id=nid,
565
566
  group_id=str(current_round),
566
- ttl="",
567
+ ttl=DEFAULT_TTL,
567
568
  )
568
569
 
569
570
  log(
@@ -493,13 +493,17 @@ class BasicActorPool:
493
493
  self._future_to_actor[future] = actor
494
494
  return future
495
495
 
496
+ async def add_actor_back_to_pool(self, future: Any) -> None:
497
+ """Ad actor assigned to run future back into the pool."""
498
+ actor = self._future_to_actor.pop(future)
499
+ await self.pool.put(actor)
500
+
496
501
  async def fetch_result_and_return_actor_to_pool(
497
502
  self, future: Any
498
503
  ) -> Tuple[Message, Context]:
499
504
  """Pull result given a future and add actor back to pool."""
500
505
  # Get actor that ran job
501
- actor = self._future_to_actor.pop(future)
502
- await self.pool.put(actor)
506
+ await self.add_actor_back_to_pool(future)
503
507
  # Retrieve result for object store
504
508
  # Instead of doing ray.get(future) we await it
505
509
  _, out_mssg, updated_context = await future
@@ -23,7 +23,7 @@ from flwr import common
23
23
  from flwr.client import ClientFn
24
24
  from flwr.client.client_app import ClientApp
25
25
  from flwr.client.node_state import NodeState
26
- from flwr.common import Message, Metadata, RecordSet
26
+ from flwr.common import DEFAULT_TTL, Message, Metadata, RecordSet
27
27
  from flwr.common.constant import MessageType, MessageTypeLegacy
28
28
  from flwr.common.logger import log
29
29
  from flwr.common.recordset_compat import (
@@ -105,7 +105,7 @@ class RayActorClientProxy(ClientProxy):
105
105
  src_node_id=0,
106
106
  dst_node_id=int(self.cid),
107
107
  reply_to_message="",
108
- ttl=str(timeout) if timeout else "",
108
+ ttl=timeout if timeout else DEFAULT_TTL,
109
109
  message_type=message_type,
110
110
  partition_id=int(self.cid),
111
111
  ),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.8.0.dev20240323
3
+ Version: 1.8.0.dev20240328
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -28,16 +28,16 @@ flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
28
28
  flwr/cli/run/run.py,sha256=C7Yh-Y0f64PEabb9733jBKIhhOUFpcRmCZJIDtv-NG8,2329
29
29
  flwr/cli/utils.py,sha256=_V2BlFVNNG2naZrq227fZ8o4TxBN_hB-4fQsen9uQoo,2300
30
30
  flwr/client/__init__.py,sha256=futk_IdY_N1h8BTve4Iru51bxm7H1gv58ZPIXWi5XUA,1187
31
- flwr/client/app.py,sha256=xCCpP-fMEFdTEaSWOP93JPIDfjRhx5Z1uI1h6YlJteo,24784
31
+ flwr/client/app.py,sha256=bRrLIfn3MIZKfsVq8AlgYmhpI08UTioaOlyx6YLaLR4,25536
32
32
  flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
33
- flwr/client/client_app.py,sha256=AzSCU8ZiBtOLgcrGEJxIU4DV4Jf7WQHxY5QxESfWo-w,8079
33
+ flwr/client/client_app.py,sha256=30Tl_AOEi4CE8wEQbKJ3tWg4GfbsSoV1Ztc8iWE0ge4,8047
34
34
  flwr/client/dpfedavg_numpy_client.py,sha256=9Tnig4iml2J88HBKNahegjXjbfvIQyBtaIQaqjbeqsA,7435
35
35
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
36
- flwr/client/grpc_client/connection.py,sha256=5h8WD_gJgEDTwg-PNZRR4pm6LTS7eNvYKdNbq-uoi_U,8691
36
+ flwr/client/grpc_client/connection.py,sha256=w3Lble9-eCzNOR7fBUsVedVCK4ui9QPhK7i7Ew_a5Vk,8717
37
37
  flwr/client/grpc_rere_client/__init__.py,sha256=avn6W_vHEM_yZEB1S7hCZgnTbXb6ZujqRP_vAzyXu-0,752
38
38
  flwr/client/grpc_rere_client/connection.py,sha256=3kpnUbS06rNQ969EybGx7zZfQPc2JmCuViyrIt610V0,7421
39
39
  flwr/client/message_handler/__init__.py,sha256=abHvBRJJiiaAMNgeILQbMOa6h8WqMK2BcnvxwQZFpic,719
40
- flwr/client/message_handler/message_handler.py,sha256=SlIU-l6GgB3wfA1Qq2x7z1SSSCXO4SO4pM122QNyTvU,6516
40
+ flwr/client/message_handler/message_handler.py,sha256=ml_FlduAJ5pxO31n1tKRrWfQRSxkMgKLbwXXcRsNSos,6553
41
41
  flwr/client/message_handler/task_handler.py,sha256=ZDJBKmrn2grRMNl1rU1iGs7FiMHL5VmZiSp_6h9GHVU,1824
42
42
  flwr/client/mod/__init__.py,sha256=apqhs7bslrGgQK91JR56mEcwj5JihL0NF_XKQwqaQuo,1143
43
43
  flwr/client/mod/centraldp_mods.py,sha256=sm4XXFl1oeo8kazyHTR8uHzd4x6Roxk_jk482evgf-Y,5397
@@ -45,7 +45,7 @@ flwr/client/mod/comms_mods.py,sha256=hCj2mSey12D8rehhyGl4JwmVq8iFd-wlzZj8lzexGOs
45
45
  flwr/client/mod/localdp_mod.py,sha256=L2IPZqgNhH7kpSckvtAzm-qWJMZ7BrNL1D8l-Zq2Wb4,4918
46
46
  flwr/client/mod/secure_aggregation/__init__.py,sha256=Qo2R-NqsyoP0oX73TyDfQRu9P6DCNXhgqGbhmGIBaJA,849
47
47
  flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=wI9tuIEvMUETz-wVIEbPYvh-1nK9CEylBLGoVpNhL94,1095
48
- flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=RGQAHJbCduUUkusfcjh-GI-gyDOLW5vEXVXLvwNW2Ik,19707
48
+ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=fZTfIELkYS64lpgxQKL66s-QHjCn-159qfLoNoIMJjc,19699
49
49
  flwr/client/mod/utils.py,sha256=lvETHcCYsSWz7h8I772hCV_kZspxqlMqzriMZ-SxmKc,1226
50
50
  flwr/client/node_state.py,sha256=KTTs_l4I0jBM7IsSsbAGjhfL_yZC3QANbzyvyfZBRDM,1778
51
51
  flwr/client/node_state_tests.py,sha256=gPwz0zf2iuDSa11jedkur_u3Xm7lokIDG5ALD2MCvSw,2195
@@ -53,7 +53,7 @@ flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,1
53
53
  flwr/client/rest_client/__init__.py,sha256=ThwOnkMdzxo_UuyTI47Q7y9oSpuTgNT2OuFvJCfuDiw,735
54
54
  flwr/client/rest_client/connection.py,sha256=WGkml4gmrbbJ6OAmW3jARmL5nGaOoXo7JjWQbhPhizM,12422
55
55
  flwr/client/typing.py,sha256=c9EvjlEjasxn1Wqx6bGl6Xg6vM1gMFfmXht-E2i5J-k,1006
56
- flwr/common/__init__.py,sha256=2dhte32YQNGHyxUazJcZuVBT433KgUkJA0FMQ4PBWjQ,3669
56
+ flwr/common/__init__.py,sha256=dHOptgKxna78CEQLD5Yu0QIsoSgpIIw5AhIUZCHDWAU,3721
57
57
  flwr/common/address.py,sha256=iTAN9jtmIGMrWFnx9XZQl45ZEtQJVZZLYPRBSNVARGI,1882
58
58
  flwr/common/constant.py,sha256=vd4d9VRaft3j6hc3MCWuB4zu2_BVjbVOUfu7kLBy0_g,1954
59
59
  flwr/common/context.py,sha256=ounF-mWPPtXGwtae3sg5EhF58ScviOa3MVqxRpGVu-8,1313
@@ -64,7 +64,7 @@ flwr/common/dp.py,sha256=Hc3lLHihjexbJaD_ft31gdv9XRcwOTgDBwJzICuok3A,2004
64
64
  flwr/common/exit_handlers.py,sha256=2Nt0wLhc17KQQsLPFSRAjjhUiEFfJK6tNozdGiIY4Fs,2812
65
65
  flwr/common/grpc.py,sha256=HimjpTtIY3Vfqtlq3u-CYWjqAl9rSn0uo3A8JjhUmwQ,2273
66
66
  flwr/common/logger.py,sha256=Plhm9fsi4ewb90eGALQZ9xBkR0cGEsckX5RLSMEaS3M,6118
67
- flwr/common/message.py,sha256=Z-k3a1HgoyWBm3NS0_bphfYbJtJ8YqxfXR68AvXXkuA,9808
67
+ flwr/common/message.py,sha256=vgFSCOkPbl60iS4-XQJ8-rHL54MvNc2AwNSSxVl6qYY,11773
68
68
  flwr/common/object_ref.py,sha256=ELoUCAFO-vbjJC41CGpa-WBG2SLYe3ErW-d9YCG3zqA,4961
69
69
  flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
70
70
  flwr/common/pyproject.py,sha256=EI_ovbCHGmhYrdPx0RSDi5EkFZFof-8m1PA54c0ZTjc,1385
@@ -85,7 +85,7 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=66mNQCz64r7qzvXwFrX
85
85
  flwr/common/secure_aggregation/quantization.py,sha256=appui7GGrkRPsupF59TkapeV4Na_CyPi73JtJ1pimdI,2310
86
86
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=Fh7-n6pgL4TUnHpNYXo8iW-n5cOGQgQa-c7RcU80tqQ,2183
87
87
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=87bNZX6CmQekj935R4u3m5hsaEkkfKtGSA-VG2c-O9w,3221
88
- flwr/common/serde.py,sha256=tmREmZtV3af0tnx9vp45KWGlUUqoVQyJMszkUNvVkKM,22014
88
+ flwr/common/serde.py,sha256=Yn83kbSf9vJndTa5ldL4DR_bL_wy_bD4lTlD3ZbB658,22250
89
89
  flwr/common/telemetry.py,sha256=JkFB6WBOskqAJfzSM-l6tQfRiSi2oiysClfg0-5T7NY,7782
90
90
  flwr/common/typing.py,sha256=3Wu6Ol1Ja6Gb0WdlcXVEn1EHYJbc4oRRJA81vEegxBo,4382
91
91
  flwr/common/version.py,sha256=_RDSMGZPEuGKYViZuXPotDtXMvh4iyDH9XOCO4qtPO8,666
@@ -98,10 +98,10 @@ flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
98
98
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
99
99
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
100
100
  flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
101
- flwr/proto/fleet_pb2.py,sha256=8rKQHu6Oa9ki_NG6kRNGtfPPYZp5kKBZhPW696_kn84,3852
102
- flwr/proto/fleet_pb2.pyi,sha256=QXYs9M7_dABghdCMfk5Rjf4w0LsZGDeQ1ojH00XaQME,6182
103
- flwr/proto/fleet_pb2_grpc.py,sha256=hF1uPaioZzQMRCP9yPlv9LC0mi_DTuhn-IkQJzWIPCs,7505
104
- flwr/proto/fleet_pb2_grpc.pyi,sha256=mzhTmBwHa1mQoC5yDnUpdGG4kkdk47AlO2PCKxjMbC8,2183
101
+ flwr/proto/fleet_pb2.py,sha256=_FkDeb0JUCYlC6YyaKC4tZ74j5TS_s-aYZemAukAzdQ,4316
102
+ flwr/proto/fleet_pb2.pyi,sha256=T5zOGs6gnEvtgqu4msnLOd35jcRQ6t13QyyPK6OOuf0,7325
103
+ flwr/proto/fleet_pb2_grpc.py,sha256=U2UeEqWQ7VE58C1ngm_yVniiwBuXfnHmzITYPt6BEtA,9042
104
+ flwr/proto/fleet_pb2_grpc.pyi,sha256=Cd8oZqhK9ORMB7iKyW0NBvCeP8Bg1OZbnn_8GzDxEHU,2491
105
105
  flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
106
106
  flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
107
107
  flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -110,8 +110,8 @@ flwr/proto/recordset_pb2.py,sha256=un8L0kvBcgFXQIiQweOseeIJBjlOozUvQY9uTQ42Dqo,6
110
110
  flwr/proto/recordset_pb2.pyi,sha256=NPzCJWAj1xLWzeZ_xZ6uaObQjQfWGnnqlLtn4J-SoFY,14161
111
111
  flwr/proto/recordset_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
112
112
  flwr/proto/recordset_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
113
- flwr/proto/task_pb2.py,sha256=-UX3TqskOIRbPu8U3YwgW9ul2k9ZN6MJGgbIOX3pTqg,2431
114
- flwr/proto/task_pb2.pyi,sha256=IgXggFya0RpL64z2o2K_qLnZHyZ1mg_WzLxFwEKrpL0,4171
113
+ flwr/proto/task_pb2.py,sha256=6-HLTXleiG65fhlLZdvwEW30Bcgm46KO7E1NfLrl4NI,2472
114
+ flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
115
115
  flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
116
116
  flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
117
117
  flwr/proto/transport_pb2.py,sha256=cURzfpCgZvH7GEvBPLvTYijE3HvhK1MePjINk4xYArk,9781
@@ -126,11 +126,11 @@ flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2
126
126
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
127
127
  flwr/server/compat/app.py,sha256=3Skh76Rg80B4oME1dJOhZvn9eTfVmTNIQ0jCiZ6CzeQ,5271
128
128
  flwr/server/compat/app_utils.py,sha256=-Ey5fyRpovmp4nHglVbliITcbxzxX_0qdtZwwfMS4ZI,3450
129
- flwr/server/compat/driver_client_proxy.py,sha256=yOgaKZ6jlvqgewtjM8F906Rik8xqerxMptAhEzevWA0,6368
129
+ flwr/server/compat/driver_client_proxy.py,sha256=QWLl5YJwI6NVADwjQGQJqkLtCfPNT-aRH0NF9yeGEnA,7344
130
130
  flwr/server/compat/legacy_context.py,sha256=D2s7PvQoDnTexuRmf1uG9Von7GUj4Qqyr7qLklSlKAM,1766
131
131
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
132
132
  flwr/server/driver/__init__.py,sha256=yYyVX1FcDiDFM6rw0-DSZpuRy0EoWRfG9puwlQUswFA,820
133
- flwr/server/driver/driver.py,sha256=Z-GOTSUHCN24JRopIkKwJV_Pqm5LPqEltScaLDzQePA,9547
133
+ flwr/server/driver/driver.py,sha256=_crOuSbU9P5jKIjIJ4puTOr7-5sKHtSvNhHY995JN7M,9660
134
134
  flwr/server/driver/grpc_driver.py,sha256=D2n3_Es_DHFgQsq_TjYVEz8RYJJJYoe24E1vozaTFiE,4586
135
135
  flwr/server/history.py,sha256=hDsoBaA4kUa6d1yvDVXuLluBqOBKSm0_fVDtUtYJkmg,5121
136
136
  flwr/server/run_serverapp.py,sha256=3hoXa57T4L1vOWVWPSSdZ_UyRO-uTwUIrhha6TJAXMg,5592
@@ -164,7 +164,7 @@ flwr/server/strategy/strategy.py,sha256=g6VoIFogEviRub6G4QsKdIp6M_Ek6GhBhqcdNx5u
164
164
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
165
165
  flwr/server/superlink/driver/__init__.py,sha256=STB1_DASVEg7Cu6L7VYxTzV7UMkgtBkFim09Z82Dh8I,712
166
166
  flwr/server/superlink/driver/driver_grpc.py,sha256=1qSGDs1k_OVPWxp2ofxvQgtYXExrMeC3N_rNPVWH65M,1932
167
- flwr/server/superlink/driver/driver_servicer.py,sha256=iTXOSaj0YGw8GrqgRszVdUSjoIDVJR9F_BAgBw7-qjY,4574
167
+ flwr/server/superlink/driver/driver_servicer.py,sha256=Cu6c7pohrqFy7KNMtNbaJGc-JW0UYSABRGJJJIyfPaA,4761
168
168
  flwr/server/superlink/fleet/__init__.py,sha256=C6GCSD5eP5Of6_dIeSe1jx9HnV0icsvWyQ5EKAUHJRU,711
169
169
  flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=mgGJGjwT6VU7ovC1gdnnqttjyBPlNIcZnYRqx4K3IBQ,735
170
170
  flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=57b3UL5-baGdLwgCtB0dCUTTSbmmfMAXcXV5bjPZNWQ,5993
@@ -172,40 +172,40 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=LSOmabFXAQxKycQOlipl
172
172
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=kuD7R1yB1Ite0sNfvjsrnZu83LWGk8fP-yihE1mjQm0,4887
173
173
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=1QyBX5qcFPjMVlv7TrvnQkcET4muvg94Fy9hAQUBYnY,11818
174
174
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=bEJOMWbSlqkw-y5ZHtEXczhoSlAxErcRYffmTMQAV8M,758
175
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Mgb4WscpKrkmAVp-09MIzi8S0i_Bkcp88D0_1ief6Uw,2725
175
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=LC_ntiLZMIZkspwjtQ9_MZ4agzArebO4HIVJ3YOrFx8,3036
176
176
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=hEY0l61ojH8Iz30_K1btm1HJ6J49iZJSFUsVYqUTw3A,731
177
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=tr8077HGQIQOeCpsI1Z_EHsfq0wtySyAZGPhFZrubEA,2833
177
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=N5VqopkVuXWg0h1_qzINUQ59bFKq-CXbKSi5DmSSrxs,3161
178
178
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=VKDvDq5H8koOUztpmQacVzGJXPLEEkL1Vmolxt3mvnY,735
179
179
  flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=7JCs7NW4Qq8W5QhXxqsQNFiCLlRY-b_iD420vH1Mu-U,5906
180
180
  flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
181
181
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=oBIzmnrSSRvH_H0vRGEGWhWzQQwqe3zn6e13RsNwlIY,1466
182
182
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LJsKl7oixVvptcG98Rd9ejJycNWcEVB0ODvSreLGp-A,2260
183
- flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=BYgzVH1uz8nk6mOP6GhgSxjrdCe7xtkzb7nhPbKStFM,6317
184
- flwr/server/superlink/fleet/vce/vce_api.py,sha256=Yq4i9fduafnoWSHCLn0mmkCTS9oZqwycH8gbKa4bPXo,11168
183
+ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=TaT2EpbVEsIY0EDzF8obadyZaSXjD38TFGdDPI-ytD0,6375
184
+ flwr/server/superlink/fleet/vce/vce_api.py,sha256=EV4ISvHZPucVLD3lYVFF5fQ4yyxmoaoZMdp_1B2k6J8,11789
185
185
  flwr/server/superlink/state/__init__.py,sha256=ij-7Ms-hyordQdRmGQxY1-nVa4OhixJ0jr7_YDkys0s,1003
186
- flwr/server/superlink/state/in_memory_state.py,sha256=-dEhGm_y5zdamyRr57FrEJDgnNko2dytyqc8vW_q7vw,8265
187
- flwr/server/superlink/state/sqlite_state.py,sha256=Adc2g1DecAN9Cl9F8lekuTb885mIHiOi6sQv4nxbmSc,21203
188
- flwr/server/superlink/state/state.py,sha256=JtsI92HfdKd8KzBQ9Om7A7xwngDXVxtET2Bk9aQ7nao,5316
186
+ flwr/server/superlink/state/in_memory_state.py,sha256=XfdCGRzFut9xlf7AsDAhhAmBw-nKDBjmPWAI--espj0,8707
187
+ flwr/server/superlink/state/sqlite_state.py,sha256=1SR6Zz6ud0tSSx940gTfa0vct_GH2n0cX_vnhoAEMlQ,22005
188
+ flwr/server/superlink/state/state.py,sha256=mvyih06oUxe5QRUfaSmUuyIYLdP_tkoemNEq19Xt5G0,6036
189
189
  flwr/server/superlink/state/state_factory.py,sha256=91cSB-KOAFM37z7T098WxTkVeKNaAZ_mTI75snn2_tk,1654
190
190
  flwr/server/typing.py,sha256=2zSG-KuDAgwFPuzgVjTLDaEqJ8gXXGqFR2RD-qIk730,913
191
191
  flwr/server/utils/__init__.py,sha256=RQVbo-bcsVtp_lJBf7dL5w01FbLrr7v3YedeGp5_YMs,908
192
192
  flwr/server/utils/tensorboard.py,sha256=k0G6bqsLx7wfYbH2KtXsDYcOCfyIeE12-hefXA7lZdg,5485
193
- flwr/server/utils/validator.py,sha256=IJN2475yyD_i_9kg_SJ_JodIuZh58ufpWGUDQRAqu2s,4740
193
+ flwr/server/utils/validator.py,sha256=pzyXoOEEPSoYC2UEzened8IKSFRI-kIqqI0QlwRK9jk,5301
194
194
  flwr/server/workflow/__init__.py,sha256=SXY0XkwbkezFBxxrFB5hKUtmtAgnYISBkPouR1V71ss,902
195
195
  flwr/server/workflow/constant.py,sha256=q4DLdR8Krlxuewq2AQjwTL75hphxE5ODNz4AhViHMXk,1082
196
- flwr/server/workflow/default_workflows.py,sha256=IPzjPOCooFaFrFp8y7Sxu6oWW3XUrc1DSVsHK_a7IB4,12615
196
+ flwr/server/workflow/default_workflows.py,sha256=_zAS8yeT4UW2IY9TyWPx9w_C6fUHL79mO980S3UZITs,12655
197
197
  flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B-8M_dPlVSJuTbvXIbiO-Ic,880
198
198
  flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=wpAkYPId0nfK6SgpUAtsCni4_MQLd-uqJ81tUKu3xlI,5838
199
- flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=1ObaDAf6sliwGc3HZL1zUnnjJHxdd-mSWR-ED4qSguM,29134
199
+ flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=3TjJdhYA4xyR7e-cyVBdcGe9os7ErHHayoKBJaH8KcE,29187
200
200
  flwr/simulation/__init__.py,sha256=hpoKzdovrH0_Cf8HIcXxQxyUUb3BiSk-WUNLf5STHcc,1400
201
201
  flwr/simulation/app.py,sha256=WqJxdXTEuehwMW605p5NMmvBbKYx5tuqnV3Mp7jSWXM,13904
202
202
  flwr/simulation/ray_transport/__init__.py,sha256=FsaAnzC4cw4DqoouBCix6496k29jACkfeIam55BvW9g,734
203
- flwr/simulation/ray_transport/ray_actor.py,sha256=zRETW_xuCAOLRFaYnQ-q3IBSz0LIv_0RifGuhgWaYOg,19872
204
- flwr/simulation/ray_transport/ray_client_proxy.py,sha256=L49gtigsf4vTQgRiqzOgcPEuS_l-EuTj29Ohw6ekbSI,6721
203
+ flwr/simulation/ray_transport/ray_actor.py,sha256=OWjgYW--fswkEDqTP9L_cZblBeUVL59vNz5gvzPAHFk,20054
204
+ flwr/simulation/ray_transport/ray_client_proxy.py,sha256=oDu4sEPIOu39vrNi-fqDAe10xtNUXMO49bM2RWfRcyw,6738
205
205
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
206
206
  flwr/simulation/run_simulation.py,sha256=HiIH6aa_v56NfKQN5ZBd94NyVfaZNyFs43_kItYsQXU,15685
207
- flwr_nightly-1.8.0.dev20240323.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
208
- flwr_nightly-1.8.0.dev20240323.dist-info/METADATA,sha256=LFGWeKTHry2B9jKHvbVkAD0-NMvEDCAlREDnP8r6kAc,15257
209
- flwr_nightly-1.8.0.dev20240323.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
210
- flwr_nightly-1.8.0.dev20240323.dist-info/entry_points.txt,sha256=utu2wybGyYJSTtsB2ktY_gmy-XtMFo9EFZdishX0zR4,320
211
- flwr_nightly-1.8.0.dev20240323.dist-info/RECORD,,
207
+ flwr_nightly-1.8.0.dev20240328.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
208
+ flwr_nightly-1.8.0.dev20240328.dist-info/METADATA,sha256=8FreyB01iNsm1LCt2zh74ZE46oAFcKAieUIrZQEtTgI,15257
209
+ flwr_nightly-1.8.0.dev20240328.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
210
+ flwr_nightly-1.8.0.dev20240328.dist-info/entry_points.txt,sha256=utu2wybGyYJSTtsB2ktY_gmy-XtMFo9EFZdishX0zR4,320
211
+ flwr_nightly-1.8.0.dev20240328.dist-info/RECORD,,