flwr 1.22.0__py3-none-any.whl → 1.24.0__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.
Files changed (301) hide show
  1. flwr/__init__.py +16 -5
  2. flwr/app/error.py +2 -2
  3. flwr/app/exception.py +3 -3
  4. flwr/cli/app.py +34 -1
  5. flwr/cli/app_cmd/__init__.py +23 -0
  6. flwr/cli/app_cmd/publish.py +285 -0
  7. flwr/cli/app_cmd/review.py +252 -0
  8. flwr/cli/auth_plugin/__init__.py +15 -6
  9. flwr/cli/auth_plugin/auth_plugin.py +94 -0
  10. flwr/cli/auth_plugin/noop_auth_plugin.py +101 -0
  11. flwr/cli/auth_plugin/oidc_cli_plugin.py +46 -32
  12. flwr/cli/build.py +166 -53
  13. flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +29 -11
  14. flwr/cli/config_utils.py +101 -13
  15. flwr/cli/federation/__init__.py +24 -0
  16. flwr/cli/federation/ls.py +140 -0
  17. flwr/cli/federation/show.py +317 -0
  18. flwr/cli/install.py +91 -13
  19. flwr/cli/log.py +54 -11
  20. flwr/cli/login/login.py +41 -27
  21. flwr/cli/ls.py +177 -133
  22. flwr/cli/new/new.py +175 -40
  23. flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -0
  24. flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  25. flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  26. flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  27. flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  28. flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  29. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  30. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +3 -3
  31. flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +1 -1
  32. flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  33. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +2 -2
  34. flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +1 -1
  35. flwr/cli/pull.py +12 -7
  36. flwr/cli/run/run.py +82 -31
  37. flwr/cli/run_utils.py +130 -0
  38. flwr/cli/stop.py +27 -9
  39. flwr/cli/supernode/__init__.py +25 -0
  40. flwr/cli/supernode/ls.py +268 -0
  41. flwr/cli/supernode/register.py +190 -0
  42. flwr/cli/supernode/unregister.py +140 -0
  43. flwr/cli/utils.py +464 -81
  44. flwr/client/__init__.py +2 -1
  45. flwr/client/dpfedavg_numpy_client.py +4 -1
  46. flwr/client/grpc_adapter_client/connection.py +12 -15
  47. flwr/client/grpc_rere_client/connection.py +68 -41
  48. flwr/client/grpc_rere_client/grpc_adapter.py +34 -14
  49. flwr/client/grpc_rere_client/{client_interceptor.py → node_auth_client_interceptor.py} +5 -7
  50. flwr/client/message_handler/message_handler.py +2 -2
  51. flwr/client/mod/secure_aggregation/secaggplus_mod.py +10 -8
  52. flwr/client/numpy_client.py +1 -1
  53. flwr/client/rest_client/connection.py +94 -51
  54. flwr/client/run_info_store.py +4 -5
  55. flwr/client/typing.py +1 -1
  56. flwr/clientapp/__init__.py +1 -2
  57. flwr/{client → clientapp}/client_app.py +9 -10
  58. flwr/clientapp/mod/centraldp_mods.py +16 -17
  59. flwr/clientapp/mod/localdp_mod.py +8 -9
  60. flwr/clientapp/typing.py +1 -1
  61. flwr/{client/clientapp → clientapp}/utils.py +4 -4
  62. flwr/common/address.py +1 -2
  63. flwr/common/args.py +3 -4
  64. flwr/common/config.py +13 -16
  65. flwr/common/constant.py +56 -13
  66. flwr/common/differential_privacy.py +3 -4
  67. flwr/common/event_log_plugin/event_log_plugin.py +3 -4
  68. flwr/common/exit/exit.py +15 -2
  69. flwr/common/exit/exit_code.py +39 -10
  70. flwr/common/exit/exit_handler.py +6 -2
  71. flwr/common/exit/signal_handler.py +5 -5
  72. flwr/common/grpc.py +6 -6
  73. flwr/common/inflatable_protobuf_utils.py +1 -1
  74. flwr/common/inflatable_utils.py +48 -31
  75. flwr/common/logger.py +19 -19
  76. flwr/common/message.py +4 -4
  77. flwr/common/object_ref.py +7 -7
  78. flwr/common/record/array.py +6 -6
  79. flwr/common/record/arrayrecord.py +18 -21
  80. flwr/common/record/configrecord.py +3 -3
  81. flwr/common/record/recorddict.py +5 -5
  82. flwr/common/record/typeddict.py +9 -2
  83. flwr/common/recorddict_compat.py +7 -10
  84. flwr/common/retry_invoker.py +20 -20
  85. flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -89
  86. flwr/common/secure_aggregation/ndarrays_arithmetic.py +3 -3
  87. flwr/common/serde.py +9 -6
  88. flwr/common/serde_utils.py +2 -2
  89. flwr/common/telemetry.py +9 -5
  90. flwr/common/typing.py +59 -43
  91. flwr/compat/client/app.py +39 -38
  92. flwr/compat/client/grpc_client/connection.py +13 -13
  93. flwr/compat/server/app.py +5 -6
  94. flwr/proto/appio_pb2.py +13 -3
  95. flwr/proto/appio_pb2.pyi +134 -65
  96. flwr/proto/appio_pb2_grpc.py +20 -0
  97. flwr/proto/appio_pb2_grpc.pyi +27 -0
  98. flwr/proto/clientappio_pb2.py +17 -7
  99. flwr/proto/clientappio_pb2.pyi +15 -0
  100. flwr/proto/clientappio_pb2_grpc.py +206 -40
  101. flwr/proto/clientappio_pb2_grpc.pyi +168 -53
  102. flwr/proto/control_pb2.py +72 -40
  103. flwr/proto/control_pb2.pyi +319 -87
  104. flwr/proto/control_pb2_grpc.py +339 -28
  105. flwr/proto/control_pb2_grpc.pyi +209 -37
  106. flwr/proto/error_pb2.py +13 -3
  107. flwr/proto/error_pb2.pyi +24 -6
  108. flwr/proto/error_pb2_grpc.py +20 -0
  109. flwr/proto/error_pb2_grpc.pyi +27 -0
  110. flwr/proto/fab_pb2.py +24 -10
  111. flwr/proto/fab_pb2.pyi +68 -20
  112. flwr/proto/fab_pb2_grpc.py +20 -0
  113. flwr/proto/fab_pb2_grpc.pyi +27 -0
  114. flwr/proto/federation_pb2.py +38 -0
  115. flwr/proto/federation_pb2.pyi +56 -0
  116. flwr/proto/federation_pb2_grpc.py +24 -0
  117. flwr/proto/federation_pb2_grpc.pyi +31 -0
  118. flwr/proto/fleet_pb2.py +45 -27
  119. flwr/proto/fleet_pb2.pyi +186 -70
  120. flwr/proto/fleet_pb2_grpc.py +277 -66
  121. flwr/proto/fleet_pb2_grpc.pyi +201 -55
  122. flwr/proto/grpcadapter_pb2.py +14 -4
  123. flwr/proto/grpcadapter_pb2.pyi +38 -16
  124. flwr/proto/grpcadapter_pb2_grpc.py +35 -4
  125. flwr/proto/grpcadapter_pb2_grpc.pyi +38 -7
  126. flwr/proto/heartbeat_pb2.py +17 -7
  127. flwr/proto/heartbeat_pb2.pyi +51 -22
  128. flwr/proto/heartbeat_pb2_grpc.py +20 -0
  129. flwr/proto/heartbeat_pb2_grpc.pyi +27 -0
  130. flwr/proto/log_pb2.py +13 -3
  131. flwr/proto/log_pb2.pyi +34 -11
  132. flwr/proto/log_pb2_grpc.py +20 -0
  133. flwr/proto/log_pb2_grpc.pyi +27 -0
  134. flwr/proto/message_pb2.py +15 -5
  135. flwr/proto/message_pb2.pyi +154 -86
  136. flwr/proto/message_pb2_grpc.py +20 -0
  137. flwr/proto/message_pb2_grpc.pyi +27 -0
  138. flwr/proto/node_pb2.py +16 -4
  139. flwr/proto/node_pb2.pyi +77 -4
  140. flwr/proto/node_pb2_grpc.py +20 -0
  141. flwr/proto/node_pb2_grpc.pyi +27 -0
  142. flwr/proto/recorddict_pb2.py +13 -3
  143. flwr/proto/recorddict_pb2.pyi +184 -107
  144. flwr/proto/recorddict_pb2_grpc.py +20 -0
  145. flwr/proto/recorddict_pb2_grpc.pyi +27 -0
  146. flwr/proto/run_pb2.py +40 -31
  147. flwr/proto/run_pb2.pyi +149 -84
  148. flwr/proto/run_pb2_grpc.py +20 -0
  149. flwr/proto/run_pb2_grpc.pyi +27 -0
  150. flwr/proto/serverappio_pb2.py +13 -3
  151. flwr/proto/serverappio_pb2.pyi +32 -8
  152. flwr/proto/serverappio_pb2_grpc.py +246 -65
  153. flwr/proto/serverappio_pb2_grpc.pyi +221 -85
  154. flwr/proto/simulationio_pb2.py +16 -8
  155. flwr/proto/simulationio_pb2.pyi +15 -0
  156. flwr/proto/simulationio_pb2_grpc.py +162 -41
  157. flwr/proto/simulationio_pb2_grpc.pyi +149 -55
  158. flwr/proto/transport_pb2.py +20 -10
  159. flwr/proto/transport_pb2.pyi +249 -160
  160. flwr/proto/transport_pb2_grpc.py +35 -4
  161. flwr/proto/transport_pb2_grpc.pyi +38 -8
  162. flwr/server/app.py +173 -127
  163. flwr/server/client_manager.py +4 -5
  164. flwr/server/client_proxy.py +10 -11
  165. flwr/server/compat/app.py +4 -5
  166. flwr/server/compat/app_utils.py +2 -1
  167. flwr/server/compat/grid_client_proxy.py +10 -12
  168. flwr/server/compat/legacy_context.py +3 -4
  169. flwr/server/fleet_event_log_interceptor.py +2 -1
  170. flwr/server/grid/grid.py +2 -3
  171. flwr/server/grid/grpc_grid.py +10 -8
  172. flwr/server/grid/inmemory_grid.py +4 -4
  173. flwr/server/run_serverapp.py +2 -3
  174. flwr/server/server.py +34 -39
  175. flwr/server/server_app.py +7 -8
  176. flwr/server/server_config.py +1 -2
  177. flwr/server/serverapp/app.py +34 -28
  178. flwr/server/serverapp_components.py +4 -5
  179. flwr/server/strategy/aggregate.py +9 -8
  180. flwr/server/strategy/bulyan.py +13 -11
  181. flwr/server/strategy/dp_adaptive_clipping.py +16 -20
  182. flwr/server/strategy/dp_fixed_clipping.py +12 -17
  183. flwr/server/strategy/dpfedavg_adaptive.py +3 -4
  184. flwr/server/strategy/dpfedavg_fixed.py +6 -10
  185. flwr/server/strategy/fault_tolerant_fedavg.py +14 -13
  186. flwr/server/strategy/fedadagrad.py +18 -14
  187. flwr/server/strategy/fedadam.py +16 -14
  188. flwr/server/strategy/fedavg.py +16 -17
  189. flwr/server/strategy/fedavg_android.py +15 -15
  190. flwr/server/strategy/fedavgm.py +21 -18
  191. flwr/server/strategy/fedmedian.py +2 -3
  192. flwr/server/strategy/fedopt.py +11 -10
  193. flwr/server/strategy/fedprox.py +10 -9
  194. flwr/server/strategy/fedtrimmedavg.py +12 -11
  195. flwr/server/strategy/fedxgb_bagging.py +13 -11
  196. flwr/server/strategy/fedxgb_cyclic.py +6 -6
  197. flwr/server/strategy/fedxgb_nn_avg.py +4 -4
  198. flwr/server/strategy/fedyogi.py +16 -14
  199. flwr/server/strategy/krum.py +12 -11
  200. flwr/server/strategy/qfedavg.py +16 -15
  201. flwr/server/strategy/strategy.py +6 -9
  202. flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +19 -8
  203. flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -2
  204. flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +3 -4
  205. flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +10 -12
  206. flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +1 -3
  207. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +136 -42
  208. flwr/server/superlink/fleet/grpc_rere/{server_interceptor.py → node_auth_server_interceptor.py} +28 -51
  209. flwr/server/superlink/fleet/message_handler/message_handler.py +100 -49
  210. flwr/server/superlink/fleet/rest_rere/rest_api.py +54 -33
  211. flwr/server/superlink/fleet/vce/backend/backend.py +2 -2
  212. flwr/server/superlink/fleet/vce/backend/raybackend.py +6 -6
  213. flwr/server/superlink/fleet/vce/vce_api.py +32 -13
  214. flwr/server/superlink/linkstate/in_memory_linkstate.py +266 -207
  215. flwr/server/superlink/linkstate/linkstate.py +161 -62
  216. flwr/server/superlink/linkstate/linkstate_factory.py +24 -6
  217. flwr/server/superlink/linkstate/sqlite_linkstate.py +698 -638
  218. flwr/server/superlink/linkstate/utils.py +9 -60
  219. flwr/server/superlink/serverappio/serverappio_grpc.py +1 -2
  220. flwr/server/superlink/serverappio/serverappio_servicer.py +28 -23
  221. flwr/server/superlink/simulation/simulationio_grpc.py +1 -2
  222. flwr/server/superlink/simulation/simulationio_servicer.py +19 -14
  223. flwr/server/superlink/utils.py +4 -6
  224. flwr/server/typing.py +1 -1
  225. flwr/server/utils/tensorboard.py +15 -8
  226. flwr/server/utils/validator.py +2 -3
  227. flwr/server/workflow/default_workflows.py +5 -5
  228. flwr/server/workflow/secure_aggregation/secagg_workflow.py +2 -4
  229. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +12 -10
  230. flwr/serverapp/strategy/bulyan.py +16 -15
  231. flwr/serverapp/strategy/dp_adaptive_clipping.py +12 -11
  232. flwr/serverapp/strategy/dp_fixed_clipping.py +11 -14
  233. flwr/serverapp/strategy/fedadagrad.py +10 -11
  234. flwr/serverapp/strategy/fedadam.py +10 -11
  235. flwr/serverapp/strategy/fedavg.py +9 -10
  236. flwr/serverapp/strategy/fedavgm.py +17 -16
  237. flwr/serverapp/strategy/fedmedian.py +2 -2
  238. flwr/serverapp/strategy/fedopt.py +10 -11
  239. flwr/serverapp/strategy/fedprox.py +7 -8
  240. flwr/serverapp/strategy/fedtrimmedavg.py +9 -9
  241. flwr/serverapp/strategy/fedxgb_bagging.py +3 -3
  242. flwr/serverapp/strategy/fedxgb_cyclic.py +9 -9
  243. flwr/serverapp/strategy/fedyogi.py +9 -11
  244. flwr/serverapp/strategy/krum.py +7 -7
  245. flwr/serverapp/strategy/multikrum.py +9 -9
  246. flwr/serverapp/strategy/qfedavg.py +17 -16
  247. flwr/serverapp/strategy/strategy.py +6 -9
  248. flwr/serverapp/strategy/strategy_utils.py +7 -8
  249. flwr/simulation/app.py +46 -42
  250. flwr/simulation/legacy_app.py +12 -12
  251. flwr/simulation/ray_transport/ray_actor.py +11 -12
  252. flwr/simulation/ray_transport/ray_client_proxy.py +12 -13
  253. flwr/simulation/run_simulation.py +44 -43
  254. flwr/simulation/simulationio_connection.py +4 -4
  255. flwr/supercore/cli/flower_superexec.py +3 -4
  256. flwr/supercore/constant.py +52 -0
  257. flwr/supercore/corestate/corestate.py +24 -3
  258. flwr/supercore/corestate/in_memory_corestate.py +138 -0
  259. flwr/supercore/corestate/sqlite_corestate.py +157 -0
  260. flwr/supercore/ffs/disk_ffs.py +1 -2
  261. flwr/supercore/ffs/ffs.py +1 -2
  262. flwr/supercore/ffs/ffs_factory.py +1 -2
  263. flwr/{common → supercore}/heartbeat.py +20 -25
  264. flwr/supercore/object_store/in_memory_object_store.py +1 -6
  265. flwr/supercore/object_store/object_store.py +1 -2
  266. flwr/supercore/object_store/object_store_factory.py +27 -8
  267. flwr/supercore/object_store/sqlite_object_store.py +253 -0
  268. flwr/{client/clientapp → supercore/primitives}/__init__.py +1 -1
  269. flwr/supercore/primitives/asymmetric.py +117 -0
  270. flwr/supercore/primitives/asymmetric_ed25519.py +175 -0
  271. flwr/supercore/sqlite_mixin.py +159 -0
  272. flwr/supercore/superexec/plugin/base_exec_plugin.py +1 -2
  273. flwr/supercore/superexec/plugin/exec_plugin.py +3 -3
  274. flwr/supercore/superexec/run_superexec.py +9 -13
  275. flwr/supercore/utils.py +20 -0
  276. flwr/superlink/artifact_provider/artifact_provider.py +1 -2
  277. flwr/{common → superlink}/auth_plugin/__init__.py +6 -6
  278. flwr/superlink/auth_plugin/auth_plugin.py +88 -0
  279. flwr/superlink/auth_plugin/noop_auth_plugin.py +84 -0
  280. flwr/superlink/federation/__init__.py +24 -0
  281. flwr/superlink/federation/federation_manager.py +64 -0
  282. flwr/superlink/federation/noop_federation_manager.py +71 -0
  283. flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +41 -32
  284. flwr/superlink/servicer/control/control_event_log_interceptor.py +7 -7
  285. flwr/superlink/servicer/control/control_grpc.py +18 -17
  286. flwr/superlink/servicer/control/control_license_interceptor.py +3 -3
  287. flwr/superlink/servicer/control/control_servicer.py +239 -63
  288. flwr/supernode/cli/flower_supernode.py +74 -26
  289. flwr/supernode/nodestate/in_memory_nodestate.py +60 -49
  290. flwr/supernode/nodestate/nodestate.py +7 -8
  291. flwr/supernode/nodestate/nodestate_factory.py +7 -4
  292. flwr/supernode/runtime/run_clientapp.py +43 -24
  293. flwr/supernode/servicer/clientappio/clientappio_servicer.py +40 -10
  294. flwr/supernode/start_client_internal.py +175 -51
  295. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/METADATA +8 -8
  296. flwr-1.24.0.dist-info/RECORD +454 -0
  297. flwr/common/auth_plugin/auth_plugin.py +0 -149
  298. flwr/supercore/object_store/utils.py +0 -43
  299. flwr-1.22.0.dist-info/RECORD +0 -428
  300. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/WHEEL +0 -0
  301. {flwr-1.22.0.dist-info → flwr-1.24.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,454 @@
1
+ flwr/__init__.py,sha256=qWcOJi_qjNUCo-63r8MwgeZmHt_LhbXWgGyXIcIqGw4,1333
2
+ flwr/app/__init__.py,sha256=Pqg1iWx_TiBuGYeGJnS1QgYYWcAnPnZ2h4Y5iacNSls,1195
3
+ flwr/app/error.py,sha256=Kpn6-JZCq8V3Ff-tNaJ4mnv30KEgqGTqrosfX9dLOak,2329
4
+ flwr/app/exception.py,sha256=k-OOZDZihv20mcZleY0CA4pBGJryTWZlrTgnweZVE3A,1267
5
+ flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
6
+ flwr/cli/__init__.py,sha256=EfMGmHoobET6P2blBt_eOByXL8299MgFfB7XNdaPQ6I,720
7
+ flwr/cli/app.py,sha256=4qmEhpM5tuc77CNkE7CUPXr8d13S_A6Vau91GUTelGw,3167
8
+ flwr/cli/app_cmd/__init__.py,sha256=O_vTzS2u-n27fBYnDbjTMMKQQ2Bz80Y4JqGBHSAnK40,856
9
+ flwr/cli/app_cmd/publish.py,sha256=nnXU3rlh15dZ1Vn0LKZsOZcMvQ6ESN1GGWw9bqRhjBA,9688
10
+ flwr/cli/app_cmd/review.py,sha256=eiyKtAkydbs75Puxm0hVBvecV30hNt1toauZSOP_KI0,8504
11
+ flwr/cli/auth_plugin/__init__.py,sha256=qpebWV9uLpx72_J8yTVgT1DlH2Y9MK_RraDoTYEqv-w,1359
12
+ flwr/cli/auth_plugin/auth_plugin.py,sha256=H3y8oErskZxp5WdDCkFuj4B7C2ql6NLCqXns7T1YDtw,2994
13
+ flwr/cli/auth_plugin/noop_auth_plugin.py,sha256=jxCKUKs5yFb3W2p2ZUN9b7k9otVDk56Uzohr3n9Jwek,3242
14
+ flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=vEBe_a1KWdV0USAurw-LjAwVzB_TuN3lsMTA4lKN6ok,5722
15
+ flwr/cli/build.py,sha256=A9lzUNuGqLNId6PQppSWSlbMACl_LeW5Ispp9DuuX6k,10383
16
+ flwr/cli/cli_account_auth_interceptor.py,sha256=mXgxThpZjU_2Xlae9xT8ewOw60GeE64comDd57asLIY,3680
17
+ flwr/cli/config_utils.py,sha256=Yt7Y9dHSNULrRjrmNgUFuzx9ehdPj7wVokj3QcjzxFI,11155
18
+ flwr/cli/constant.py,sha256=LtxufmhkEqNWQ9doWbbbkUKa12vN_RK_Of5u0So-GHA,1729
19
+ flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
20
+ flwr/cli/federation/__init__.py,sha256=Nx1muSlCUZkUCBLFH-nkdx1ku-LtnKsEJ2PmnMwpGn4,836
21
+ flwr/cli/federation/ls.py,sha256=56Rk81YDfeeAdeca3o5cUmp0a6ntkLNK9f_CRD-4ZtU,4939
22
+ flwr/cli/federation/show.py,sha256=qwcubck0YcUpxuTRyAJF2YPVSlMiMJN500Wf3DB-MAk,10002
23
+ flwr/cli/install.py,sha256=yhgUWd_Psyc18DaoQHEQ5Ji45ZQ-3LclueM9uRxUEPw,10063
24
+ flwr/cli/log.py,sha256=ZWveENLdDC0Dm10YIMcc3qdGV1aO-2YZXyHBhnB6ofI,7848
25
+ flwr/cli/login/__init__.py,sha256=B1SXKU3HCQhWfFDMJhlC7FOl8UsvH4mxysxeBnrfyUE,800
26
+ flwr/cli/login/login.py,sha256=_nJKmDNVUkWRW6GnzTTNm3BmwCVjSxswtngHQfcDmZ4,4623
27
+ flwr/cli/ls.py,sha256=IReCUJLBofsroCSq2kJo2EOkipiOgz81lo1-HlYPjL4,11889
28
+ flwr/cli/new/__init__.py,sha256=QA1E2QtzPvFCjLTUHnFnJbufuFiGyT_0Y53Wpbvg1F0,790
29
+ flwr/cli/new/new.py,sha256=Q2fv9aspTeGDKHZt3EwZK7eFqyjBvUNxX-CMRUpwcDU,14619
30
+ flwr/cli/new/templates/__init__.py,sha256=FpjWCfIySU2DB4kh0HOXLAjlZNNFDTVU4w3HoE2TzcI,725
31
+ flwr/cli/new/templates/app/.gitignore.tpl,sha256=HZJcGQoxp7aUzaPg8Uqch3kNrIESwr9yjimDxJYgXVY,3104
32
+ flwr/cli/new/templates/app/LICENSE.tpl,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
33
+ flwr/cli/new/templates/app/README.baseline.md.tpl,sha256=oClo5eR0iLuPzBT7uS3ikhNRAnySz_lhkHFElixKyJM,9640
34
+ flwr/cli/new/templates/app/README.flowertune.md.tpl,sha256=2-W0HAseLWOe1JJU0TsNocp63D14N7jLwWhtYjxlfxs,3494
35
+ flwr/cli/new/templates/app/README.md.tpl,sha256=uI8vUMCEGA1-WJ8-9EUFCnNtofWFkJNOxaR1V6r_Su4,1908
36
+ flwr/cli/new/templates/app/__init__.py,sha256=LbR0ksGiF566JcHM_H5m1Tc4-oYUEilWFlcXR-Oe6bI,729
37
+ flwr/cli/new/templates/app/code/__init__.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
38
+ flwr/cli/new/templates/app/code/__init__.py,sha256=zXa2YU1swzHxOKDQbwlDMEwVPOUswVeosjkiXNMTgFo,736
39
+ flwr/cli/new/templates/app/code/__init__.py.tpl,sha256=J0Gn74E7khpLyKJVNqOPu7ev93vkcu1PZugsbxtABMw,52
40
+ flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl,sha256=mKIS8MK_X8T9NlmcX1-_c9Bbexc-ueqDIBI7uN6c4dE,45
41
+ flwr/cli/new/templates/app/code/client.baseline.py.tpl,sha256=w8xYWhVAb5AFDLj206Nxz5U-xbzDBv0px2FFvE5wRTM,2438
42
+ flwr/cli/new/templates/app/code/client.huggingface.py.tpl,sha256=SIZZ3s-6u8IU8cFfsqu6ZU8zjhfI1m1SWauOSUcW8TA,3015
43
+ flwr/cli/new/templates/app/code/client.jax.py.tpl,sha256=uFCIPwAHYiRAgh2W3nRni_Oig02ZzRF-ofUG5O19zcE,2125
44
+ flwr/cli/new/templates/app/code/client.mlx.py.tpl,sha256=CHU2IBIzI2YENZZuvTsAlSdL94DK19wMYMIhr-JgwZ8,3422
45
+ flwr/cli/new/templates/app/code/client.numpy.py.tpl,sha256=1_WEoOPe9jJeK-7FZgYuDUqY8mC0vxgqA83d-h201Gk,1381
46
+ flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256=fYoh-dTu07LkqNYvwcxQnbgVvH4Yo4eiGEcyHECbsnU,2473
47
+ flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl,sha256=fuxVmZpjHIueNy_aHWF81531vmi8DGu4CYjYDqmUwWo,1705
48
+ flwr/cli/new/templates/app/code/client.sklearn.py.tpl,sha256=0qqEe-RRjkHGOH8gsD9e83ae-kyyYixhyBgzVHjYpzk,3500
49
+ flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=8o55KXpsbF_rv6o98ZNYJDCazjwMp_RPTaSzDfT7Qlw,2682
50
+ flwr/cli/new/templates/app/code/client.xgboost.py.tpl,sha256=-ipRV8gqpbEg7Mht77Yyqs1viL-3JYSVZR47I7xeG4c,3493
51
+ flwr/cli/new/templates/app/code/dataset.baseline.py.tpl,sha256=jbd_exHAk2-Blu_kVutjPO6a_dkJQWb232zxSeXIZ1k,1453
52
+ flwr/cli/new/templates/app/code/flwr_tune/__init__.py,sha256=Xq5fEn5yZkw6HAJi10T_3HRBoqN5_5pNqJHY4wXvD5k,748
53
+ flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl,sha256=p6BzTbP-mXkFANiVC7iz3YlskOidWaLC341IJyrUotQ,2951
54
+ flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl,sha256=1NA2Sf-EviNtOaYN4dnFk6v2tcZVsY3-eXY84wOXVng,3059
55
+ flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl,sha256=UCLEKUpXarkz9tMFtDrxmLv6QuKe5zCimTuoopQedUM,1717
56
+ flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl,sha256=qe9Om3P2ERvvSj2NN5RSEKgNgztWatCpWtC8SkS_T_M,2420
57
+ flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl,sha256=M6CzBY-gtIqLOu2xTtABXOVgBnqKOu7d6Vn2sazmYuI,2444
58
+ flwr/cli/new/templates/app/code/model.baseline.py.tpl,sha256=P6jTuN9reJfdthiN3mOUHiA4xrtDh5TTUcAV6210-hU,2104
59
+ flwr/cli/new/templates/app/code/server.baseline.py.tpl,sha256=hliBSfHSzg4bi6PxMlj4oGFfvzvi-4DzoaI67VZbJeQ,1111
60
+ flwr/cli/new/templates/app/code/server.huggingface.py.tpl,sha256=_2Mv-SqGSMf7sMdbMEmvROzedvNaVHvhIIO3eYAhVYU,1252
61
+ flwr/cli/new/templates/app/code/server.jax.py.tpl,sha256=RW-rh7ogcJ3_BD66bJxTw-ZoP7c-4SK8hVHc-e0SSVY,1029
62
+ flwr/cli/new/templates/app/code/server.mlx.py.tpl,sha256=J8rIe6RL2ndODVJD79xShRKBH70HljFSCi4s_RJ-xLQ,1200
63
+ flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=T3hcKbPw3uL5lXEP-MuVJXIBXjzva5sWJXfpQqarUwA,955
64
+ flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=epARqfcQ-EQsdZwaaaUp5y4OSTBT6CiFGlNRocw-23A,1158
65
+ flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl,sha256=gvBsGA_Jg9kAH8xTxjzTjMcvBtciuccOwQFbO7ey8tU,916
66
+ flwr/cli/new/templates/app/code/server.sklearn.py.tpl,sha256=ehQ5VRgBn92WeFl6kupwJnuxSNkKvE-EvKde6A9mNQo,1377
67
+ flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=2-WTOPd-ewdLd9QmSlflIH7ix7zxAzPEOZoyiPBOy8c,1010
68
+ flwr/cli/new/templates/app/code/server.xgboost.py.tpl,sha256=fwtCRyCG2hDSH1zVMyZv7zA7wsdKNPfpugDSZjxCs5Q,1746
69
+ flwr/cli/new/templates/app/code/strategy.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
70
+ flwr/cli/new/templates/app/code/task.huggingface.py.tpl,sha256=piBbY3Dg60bQnCg15uzMw0QiL5SDOYX4YhQouy-X2zI,3164
71
+ flwr/cli/new/templates/app/code/task.jax.py.tpl,sha256=Fb0XgdTAQplM-ZCusI081XA9asO3gHptH772S-Xcyy8,1525
72
+ flwr/cli/new/templates/app/code/task.mlx.py.tpl,sha256=YxH5z4s5kOh5_9DIY9pvzqURckLDfgdanTA68_iM_Wo,2946
73
+ flwr/cli/new/templates/app/code/task.numpy.py.tpl,sha256=CwUJPnN3z6GjP8-KVGWzx7RYRJsl0wLFZ72xscvl3RM,126
74
+ flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=Mc-O7kLdBYSz4dLtrJGFh8_Is5agq7hMfHH8G5So9fM,3461
75
+ flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl,sha256=XlJqA4Ix_PloO_zJLhjiN5vDj16w3I4CPVGdmbe8asE,3800
76
+ flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=vHdhtMp0FHxbYafXyhDT9aKmmmA0Jvpx5Oum1Yu9lWY,1850
77
+ flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=impgWN7MfztmcWF4xh1llcZGsgTvrb1HD5ZE0t-8U08,1731
78
+ flwr/cli/new/templates/app/code/task.xgboost.py.tpl,sha256=0xO8jQvrHuB1llVDopQPOmt5Hn6rBw8umzoNwiZZs-o,2135
79
+ flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
80
+ flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=yj8Hwa6TCk_p4LzGLICfan0kr9XY84GUAYKsnBrp9po,3182
81
+ flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=I1kerPViFarJCJy9bMJ8iUzyjjyN8YuCr4NKIOQOOlU,2501
82
+ flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=sp1cCcsZMyPPfM_2TOCHdnEUSEEVMIyDJIUp3u9Y5HI,2020
83
+ flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=Q96m1Taa1G1yvQAmc0JXqo1zBxK6ZbyTlChxUSjJN_0,1471
84
+ flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=LSO9_NWq-awCnDlRc2p-q82QqJtGUETHDOt_yF7mvSM,1542
85
+ flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=W0S-ICbndTu5WpvuPQPH4ipR4va76Acv9sRz7P460C8,1409
86
+ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=MsoW2HVqVcdfa7hGahnV87Ee198GsxB48_b6WGXkP4E,1490
87
+ flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl,sha256=WID8ekdB7wlPYryrlcCPM0xw2kzubwqFc6_yiIeoY74,1508
88
+ flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=8yQeX0yvLLpqjm6TOksrL9JmqaZE3WWs7nJrlO7Ssas,1484
89
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=0EOfQ24SXAiWd-z-1r3Ad9vscCrjKfe5-tgev55XURs,1500
90
+ flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl,sha256=YwgeVboJ8Q9xqCoEa-fUa8-rWZltBe0u_KyfEzn8n-c,1661
91
+ flwr/cli/pull.py,sha256=WRQOVxovWNX0kRnjUwCyFwyVmAEQY54EpQKFGEGUVUk,3530
92
+ flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
93
+ flwr/cli/run/run.py,sha256=mL97D-4EbRlqVdB83oUPYyj_ZSiQuJ1k7zy8jQGLkQA,10018
94
+ flwr/cli/run_utils.py,sha256=m1qgQdUZptL3ejIOHI0RF_-_3PxhiebEQh1DkG60xl4,4164
95
+ flwr/cli/stop.py,sha256=g5Tnkf-Xl0VYafvALtI7Zl4kRSc9Vg4DckaWj4sXsjE,5477
96
+ flwr/cli/supernode/__init__.py,sha256=DBkjoPo2hS2Y-ghJxwLbrAbCQFBgD82_Itl2_892UBo,917
97
+ flwr/cli/supernode/ls.py,sha256=8wxiwizKq_xXsDk2be6zYpeN-Giz6rO02s4l2y41R0k,8834
98
+ flwr/cli/supernode/register.py,sha256=2aQTT2wEp2pxxuIacC6FQkN8q_QKifZhWjD7LNw1R2A,6527
99
+ flwr/cli/supernode/unregister.py,sha256=PXugcJJrM7cP3HbULjgcO22DciDP2uWN7YNgce4hv5E,4632
100
+ flwr/cli/utils.py,sha256=OREEBMdKL2xWolhePtp_z_aQ7n5tHKQH9vr55XLv56E,24527
101
+ flwr/client/__init__.py,sha256=xwkPJfdeWxIIfmiPE5vnmnY_JbTlErP0Qs9eBP6qRFg,1252
102
+ flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
103
+ flwr/client/dpfedavg_numpy_client.py,sha256=ELDHyEJcTB-FlLhHC-JXy8HuB3ZFHfT0HL3g1VSWY5w,7451
104
+ flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
105
+ flwr/client/grpc_adapter_client/connection.py,sha256=2EqYS2srRVFWRKcLVjM4nnSnEglbXb_SrY8HOrIvhY4,4228
106
+ flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
107
+ flwr/client/grpc_rere_client/connection.py,sha256=3iaO4ouFt3H-ql2GyqoMqVa-wHMtjejIv6vDoeIYMeo,13711
108
+ flwr/client/grpc_rere_client/grpc_adapter.py,sha256=NlYVdKSyZ2hrKdYgIsz3-kmMaQI3Nj2fe3gXeTMyZjM,7565
109
+ flwr/client/grpc_rere_client/node_auth_client_interceptor.py,sha256=rIUo64KOSYMC-GlfTvIYgeouAX8i6eOd5Rq2Yi9UFMY,2437
110
+ flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
111
+ flwr/client/message_handler/message_handler.py,sha256=GL-h_kxlh88RlZhnDEiSRH5sifZ42zLCJL9MbcW-YMg,6528
112
+ flwr/client/mod/__init__.py,sha256=AtV4Y5UGuYqJdTg7bJ--KtfOZUYLGDPMy616LvtP5W4,1151
113
+ flwr/client/mod/centraldp_mods.py,sha256=ha5j0vDT7Mi8Ke5iz-hMn3H_H1jnXW10EswoyKYrRag,5422
114
+ flwr/client/mod/comms_mods.py,sha256=ehp0AF-nGXxQOtm4G5Ts_7RTP04x5Y8PmA1Myfrjuro,3479
115
+ flwr/client/mod/localdp_mod.py,sha256=GzVQrydejUfFDgnIIEIwrUU2DgvhN990LUnoydm9Tpo,5008
116
+ flwr/client/mod/secure_aggregation/__init__.py,sha256=k8HYXvqu3pd_V3eZ0_5wwH52o-C6XJCPbT4n4anYyWY,849
117
+ flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=y54DvpM2-DWUiEYqgwZ0DssC1VVRCJEfGgST7O3OcwM,1095
118
+ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=8dK3v58tZztbdxzWW6VCFm06mIJwXVeIqxQmpIT7ZR0,19753
119
+ flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
120
+ flwr/client/numpy_client.py,sha256=0RqxyVRAo_6oc8eZqSPC10chJk8hjz-8aUpgxCre950,9590
121
+ flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
122
+ flwr/client/rest_client/connection.py,sha256=BNMS0DU2sl5M1651Nh-re1iiuR4hDvIetd2s-cOyETM,17416
123
+ flwr/client/run_info_store.py,sha256=3lINm9f7f6tgZJ3Dx-e9E9DrVhrrjXNYii0RnBDS79w,4002
124
+ flwr/client/typing.py,sha256=SfM-8BWSQww_PSU-B1ScRDDWCyjgI0QF8WGRpfPBUYs,1057
125
+ flwr/clientapp/__init__.py,sha256=dsXH29kvCk1meJj9UYMCIak8zehuuhVp0uDJ2COU_1c,829
126
+ flwr/clientapp/client_app.py,sha256=0izMnoamP6zVienJixN2qKzwt_WYm9vC22ekzrpYZ6Q,16870
127
+ flwr/clientapp/mod/__init__.py,sha256=w18mDPUmjlm5P_er2GJ7l6Zbh8qyiHfMKoVqXxaTxdE,1024
128
+ flwr/clientapp/mod/centraldp_mods.py,sha256=a40NONArH35n6WXC14eMejEsPzrZICnAF3Ct4bF-C2A,8900
129
+ flwr/clientapp/mod/localdp_mod.py,sha256=CHh0SJOSWSD6In9p9yOFbE7S4eH1m-aQcStT8ZIXeuI,5597
130
+ flwr/clientapp/typing.py,sha256=Ld2rsD40SvIRD1Z_IdAGaYSbRtkgXZ5CPFIkJJ3Ao-A,862
131
+ flwr/clientapp/utils.py,sha256=UEb3DFpAsAaG1ARU34D3L8njn4k1iPg-qpHl_Hyo8zA,4340
132
+ flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
133
+ flwr/common/address.py,sha256=AEy6G8dSADGGRMrLqqC_eAM_3Kwn9DzcStIVU_fHzIg,4085
134
+ flwr/common/args.py,sha256=1ehgieKUQ9AtNcu2S5y501jB_mJ8mPA7GXiS3imGdgM,5799
135
+ flwr/common/config.py,sha256=H0MxI_gpNVhzKvgIZKrYEVevk3NScQgcFSXeTRryBS8,13908
136
+ flwr/common/constant.py,sha256=FXrYiMbQMCO0a-5ek0_tsUBg5KMQXxgavvVzowyN5dQ,10358
137
+ flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
138
+ flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
139
+ flwr/common/differential_privacy.py,sha256=HiW2qQa5mCQfE0oePapFp3q0uZzjoHKthp5UrkRFtY8,6143
140
+ flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxFk-P7pviFguy9KvQ0,1074
141
+ flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
142
+ flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
143
+ flwr/common/event_log_plugin/event_log_plugin.py,sha256=uJYR363nVzjfJePay3UHwaifwgBx2rAbKHHAuQC10VU,2014
144
+ flwr/common/exit/__init__.py,sha256=8W7xaO1iw0vacgmQW7FTFbSh7csNv6XfsgIlnIbNF6U,978
145
+ flwr/common/exit/exit.py,sha256=L0_FicBMm5VhLBBV-qZUn8TJy1rXDPSx-6OTuzbP_1Y,4015
146
+ flwr/common/exit/exit_code.py,sha256=1S_LJNdo2lai3tjAYgZgNjN5jcIyU60Y1a-IDfUZVAM,6702
147
+ flwr/common/exit/exit_handler.py,sha256=zUAXHtp4rYK_sbkgsqS5zrVAzJUiSBrB-a4Ay3vSPE8,2302
148
+ flwr/common/exit/signal_handler.py,sha256=o_e33v9kP0jz13q-8BZDrKF7vNCzOApvDPZ3-nTXfIc,3697
149
+ flwr/common/grpc.py,sha256=ZTA3jol8iQTaUXPspJXrdOTkRMc6q2oS-Sa7jcDMCtM,9784
150
+ flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
151
+ flwr/common/inflatable_protobuf_utils.py,sha256=GTX9yoEAXhKPwcKc4ltmJHUvARFsC4qvkoNCMHqpVtc,5065
152
+ flwr/common/inflatable_utils.py,sha256=nooSMLLiOcHGqFx9n1Il_dAp76JIKyc36ibnkijwELE,19540
153
+ flwr/common/logger.py,sha256=nAfGWqT6b39tzEPe74L7qCgyPmxeJNYwVvTyHi5Tb-4,12981
154
+ flwr/common/message.py,sha256=TGQE_sDvWQNlRTmBoFPIb6KzKgGq0v0J3aQiGhdsZqA,19912
155
+ flwr/common/object_ref.py,sha256=aw6BLQlZRVqcfuyX2bScc71ZTRZtrBIAHyxYfplTkNE,9081
156
+ flwr/common/parameter.py,sha256=UVw6sOgehEFhFs4uUCMl2kfVq1PD6ncmWgPLMsZPKPE,2095
157
+ flwr/common/pyproject.py,sha256=2SU6yJW7059SbMXgzjOdK1GZRWO6AixDH7BmdxbMvHI,1386
158
+ flwr/common/record/__init__.py,sha256=cNGccdDoxttqgnUgyKRIqLWULjW-NaSmOufVxtXq-sw,1197
159
+ flwr/common/record/array.py,sha256=muWtpy5hj8eqwKVz1rANdPV2gWBjFmkQYyl0XTPfBnc,15035
160
+ flwr/common/record/arraychunk.py,sha256=gU5h6uP7H_06Z14wNixtwH2FvepQkl9FpALXg9qcbhM,1936
161
+ flwr/common/record/arrayrecord.py,sha256=WovAEEX215EOlrbbNZ1aIqvvtsQ3YUet1mKMBrHmyGk,17908
162
+ flwr/common/record/configrecord.py,sha256=cDIM-AnTSo716JLPzYuFEczREtnx2bfF9uSxau4IWwc,9766
163
+ flwr/common/record/conversion_utils.py,sha256=wbNCzy7oAqaA3-arhls_EqRZYXRC4YrWIoE-Gy82fJ0,1191
164
+ flwr/common/record/metricrecord.py,sha256=KOyJjJbvFV6IwBPbgm92FZ_0_hXpMHuwfCi1rh5Zddk,8954
165
+ flwr/common/record/recorddict.py,sha256=OEXv_zzlteeAULR5bE152x2DxRQsbIy8XBHJhlnjYxg,14980
166
+ flwr/common/record/typeddict.py,sha256=fFoVhD_ERqSoHP6iJ7GpLTzbv7QFw_YT3vsm_ZkXwV4,4131
167
+ flwr/common/recorddict_compat.py,sha256=1M7M9tm_wSUyHRxeZVEELp1c9nlWPySc6GQECBFdrpQ,14024
168
+ flwr/common/retry_invoker.py,sha256=VkT91iOhSHu4Ioc2fhxeHP4AhwzIvZYeIsnpqKYGoqw,15217
169
+ flwr/common/secure_aggregation/__init__.py,sha256=MgW6uHGhyFLBAYQqa1Vzs5n2Gc0d4yEw1_NmerFir70,731
170
+ flwr/common/secure_aggregation/crypto/__init__.py,sha256=5E4q4-Fw0CNz4tLah_QHj7m_rDeM4ucHcFlPWB_Na3Q,738
171
+ flwr/common/secure_aggregation/crypto/shamir.py,sha256=N8pPa5cEksowNoAqfFm5SP3IuxuVi9GGMa3JOtPniQY,3954
172
+ flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=fc8h7ST3mSq4d0u89vAdcxSsfspdsmOpQRba0VBn3zg,2718
173
+ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=Of0Y3A_pG5jzO4WUH_87frYT2Wgfj1D2PVzs0XHdwO0,2994
174
+ flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
175
+ flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
176
+ flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
177
+ flwr/common/serde.py,sha256=b3myxiIvKtpsuvBYoiNa5ywFFfKgL5ESNVehRiEl_yk,22059
178
+ flwr/common/serde_utils.py,sha256=Vk49PnZWRgo0NrvBhFqH-Li7sMFVVgyrs3Ck7kHB-ZE,5820
179
+ flwr/common/telemetry.py,sha256=H05fpO7nOvvb2FSGOsGIIwMbBaQo59FBgwqk0YafW9M,8921
180
+ flwr/common/typing.py,sha256=MX0vtznZfRRU0FPQQtbS_xkzaUbOhK2kD9pbDMAcNIs,7178
181
+ flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
182
+ flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
183
+ flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
184
+ flwr/compat/client/app.py,sha256=g73kBoqNmaPXWl-5omH65qwst-R09GuyVlwAAvEUW64,27111
185
+ flwr/compat/client/grpc_client/__init__.py,sha256=MDOckOODn-FJnkkFEfb2JO-2G97wrBr_TTqht-LhOcY,735
186
+ flwr/compat/client/grpc_client/connection.py,sha256=HSf_Jc-3oWpdYcNxBnu52uFUJSRPJZrbdlCkhDV5gUk,9115
187
+ flwr/compat/common/__init__.py,sha256=OMnKw4ad0qYMSIA9LZRa2gOkhSOXwAZCpAHnBQE_hFc,746
188
+ flwr/compat/server/__init__.py,sha256=TGVSoOTuf5T5JHUVrK5wuorQF7L6Wvdem8B4uufvMJY,746
189
+ flwr/compat/server/app.py,sha256=T-Huxf2RZ6pOB3BJY3kZHKIEjRmNrIrYXMZrGPOBCBc,6442
190
+ flwr/compat/simulation/__init__.py,sha256=MApGa-tysDDw34iSdxZ7TWOKtGJM-z3i8fIRJa0qbZ8,750
191
+ flwr/proto/__init__.py,sha256=S3VbQzVwNC1P-3_9EdrXuwgptO-BVuuAe20Z_OUc1cQ,683
192
+ flwr/proto/appio_pb2.py,sha256=GhleCmuqLiDqvumA0qgVl37NTwuan_K_XpUKStXZxwU,4274
193
+ flwr/proto/appio_pb2.pyi,sha256=pbrd1mRg0q7mbGqkJYYX1-GwzhiSnuZpjrAJU5im0Og,9512
194
+ flwr/proto/appio_pb2_grpc.py,sha256=f8jZU97X0SNIz4PQ9qj43yAhgVzmaGInItUCOAGZ7tU,897
195
+ flwr/proto/appio_pb2_grpc.pyi,sha256=M-7_sdP1mjiKKC4o13hXUx5sEnX3BXSIXgovr9tNVCg,1071
196
+ flwr/proto/clientappio_pb2.py,sha256=7-BA0kgQtCGskopHdqc5QbPx7gMBp0g_bT-CykD-klc,2920
197
+ flwr/proto/clientappio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
198
+ flwr/proto/clientappio_pb2_grpc.py,sha256=lPU9DN2yCVoiKpzGIjQMonNQacKL1skmQRtOqiBUjR8,22011
199
+ flwr/proto/clientappio_pb2_grpc.pyi,sha256=3vOOTv4v66HtiZ1t5xUpBqjsBdFzZ7lLGMR4e5eHlUg,9403
200
+ flwr/proto/control_pb2.py,sha256=RSrFkLnCxmrW9HXv8Qj2H7_34568HU9uKe9D23uPnBE,9231
201
+ flwr/proto/control_pb2.pyi,sha256=tTdf9mOD_rrN96l9uh8rBPc1-sTGHOdiAhtIY9mGtZc,16528
202
+ flwr/proto/control_pb2_grpc.py,sha256=XDGrK2tIT_AcopBnygjddXZRdBTtxP29q-9mK63PsP4,23321
203
+ flwr/proto/control_pb2_grpc.pyi,sha256=BewVuWjGRp4_x5h-ikQBo13OO2-t8LALPNEE5CdfkiU,10110
204
+ flwr/proto/error_pb2.py,sha256=yU22xOnidohZg2dAI4RPdCb04UVu-3B4NfujLPCRauA,1329
205
+ flwr/proto/error_pb2.pyi,sha256=Tu-keFBb_RNNefd4BAyXmiGxZjxmsbM31K6VeGEuMDE,1383
206
+ flwr/proto/error_pb2_grpc.py,sha256=7yWEIZXS_2itZjlZvUJI8qyYvKu51fhdUGHtzhd7S_s,897
207
+ flwr/proto/error_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
208
+ flwr/proto/fab_pb2.py,sha256=QDkVHGRGmugjQQUiN8A_okppZ5e2pJi5KipjnWmF6e4,2320
209
+ flwr/proto/fab_pb2.pyi,sha256=PUUZ1FHeTwXxjVmTX14Vx5gmgRSFvoW_e5v_Z5qkT54,3948
210
+ flwr/proto/fab_pb2_grpc.py,sha256=jmhCnnwSqBpZ0329XGUGARbcz5sHrr0WrXwccqzc3Vs,895
211
+ flwr/proto/fab_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
212
+ flwr/proto/federation_pb2.py,sha256=x8hwIFsw87e7STmvq5qL90RmcImCGw5oOqbke7xaykA,1670
213
+ flwr/proto/federation_pb2.pyi,sha256=_At18SzwJjlf3k3FXjVi3Op59rs2i5XcIeBSPlvfXr0,2215
214
+ flwr/proto/federation_pb2_grpc.py,sha256=HPErt9uXJPbY8jLtTNFr941z82uMm7cOx10hTHgcwZM,902
215
+ flwr/proto/federation_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
216
+ flwr/proto/fleet_pb2.py,sha256=5uzFvGiLkuR2VMuT6QKR4lxRC7K27G09wTbwxchbsYU,6486
217
+ flwr/proto/fleet_pb2.pyi,sha256=5_yam3FKsjqMgYKbRWxAZhlEk6SsslOh5TBiLisn8Mk,10163
218
+ flwr/proto/fleet_pb2_grpc.py,sha256=oR-Tw12sQiAQ_jhqGsGASPG6jdMg0Rgwb7_z_NknOOk,23702
219
+ flwr/proto/fleet_pb2_grpc.pyi,sha256=k3C0pxqvparcfrFoCWkb0gVhVeDLh4y8dH2zUa7GbQE,10227
220
+ flwr/proto/grpcadapter_pb2.py,sha256=sPB1FbcNIjw5plvQqhd_vynO0-59n9U7G882l6o1z6Y,2101
221
+ flwr/proto/grpcadapter_pb2.pyi,sha256=NjfvCSu8_sG3zqbHUvZFJR5G5Z9AzwUVvUWbaqWe9ao,2417
222
+ flwr/proto/grpcadapter_pb2_grpc.py,sha256=iM2tGp_qw7j97vkF4-hiWgmwEA9qzEn_roSkkTeePa0,3636
223
+ flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=Aw4PA1BEPCD97MvQLjih80Yxu2sYyubd9400irYBL1I,2057
224
+ flwr/proto/heartbeat_pb2.py,sha256=a_mbIgR5eWS6CIOJQkp0b99emeUAGafsGcBq-syNtR8,2110
225
+ flwr/proto/heartbeat_pb2.pyi,sha256=v89OLfQuvgGORIXnc-WNhrXWJjrpCtxi29t7mT6Lg3E,3096
226
+ flwr/proto/heartbeat_pb2_grpc.py,sha256=9vqnvsBXCm6NhVQOb0vxEnNKzM2TZ3g8Cnjj7ukY-x4,901
227
+ flwr/proto/heartbeat_pb2_grpc.pyi,sha256=M-7_sdP1mjiKKC4o13hXUx5sEnX3BXSIXgovr9tNVCg,1071
228
+ flwr/proto/log_pb2.py,sha256=Zwxi_yx3brrbsPKUpBtktlx97qFi76pFUp5w7vm6_Ok,1636
229
+ flwr/proto/log_pb2.pyi,sha256=T8iHTtwfdZBmKK7kEW_Xw5KZzLmHSMOk54lxu8Kk1ow,2122
230
+ flwr/proto/log_pb2_grpc.py,sha256=qTM9EcJDpwR2IQZ85u1S08Tfw1aYKqDWgDmCG_TJbEw,895
231
+ flwr/proto/log_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
232
+ flwr/proto/message_pb2.py,sha256=Dx0BQdHq3q0IKEbo-g-byx3cDhuZJ-a7ewzrNDO1Awk,5459
233
+ flwr/proto/message_pb2.pyi,sha256=DkASBfAdGsZASSfLDS9C7Mu9riCq0NF-LLmvEzE55AM,12005
234
+ flwr/proto/message_pb2_grpc.py,sha256=-9qS3bR2BKoiN9A1HmYimZWHfnH5my8-Mm2WqFZGxrI,899
235
+ flwr/proto/message_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
236
+ flwr/proto/node_pb2.py,sha256=bT1dLQe2E4ThxJAugxEIFlnHpUcQc2exJthjLveSpZ8,2038
237
+ flwr/proto/node_pb2.pyi,sha256=pm0wAjrmnNE1r3u2OIuGKeoczfUOWr6_y7omyOWVcjs,4506
238
+ flwr/proto/node_pb2_grpc.py,sha256=Nzgzrw-b47rEO3isovapKbBRG5FtTpJBfLSOX_y3ARg,896
239
+ flwr/proto/node_pb2_grpc.pyi,sha256=vDzlebnigJ9ZwoTU7_WLohHn20x9U2h4AOXCi0ryLW0,1071
240
+ flwr/proto/recorddict_pb2.py,sha256=L2mNSyIVWA2dcI1xWI3gj0nktuDHYgxbbLuVRQKVU74,5540
241
+ flwr/proto/recorddict_pb2.pyi,sha256=BYgVNk985Ww4dCXCjDGg1YU6q7MuMqbDa0usGVH3ktg,15208
242
+ flwr/proto/recorddict_pb2_grpc.py,sha256=kw9_kXNcRe3y6j6HquG1P1MqccFFAogfi48djxbOLDE,902
243
+ flwr/proto/recorddict_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
244
+ flwr/proto/run_pb2.py,sha256=k7sHGZl1Z8C1IQ7paVHYWR_T3pEhFwf2RR6VBVbD6-M,4970
245
+ flwr/proto/run_pb2.pyi,sha256=w0f2rg3EA0XsQEvMMA25gH8rKJbVunlgSeC1DewbUmQ,10393
246
+ flwr/proto/run_pb2_grpc.py,sha256=l5u1Ww6JxVLVN784Z2OQbkQ-tAf5yYGh6QbNDc4F5II,895
247
+ flwr/proto/run_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
248
+ flwr/proto/serverappio_pb2.py,sha256=fqZA5baD7lerWBn1Pb9PWhXlDvsb8pLOJ99DV4cYh-4,4045
249
+ flwr/proto/serverappio_pb2.pyi,sha256=KpVM8B_O0M3RFJ-DtnNlQapJs4V-7pHcdEb2G3ECbhE,1998
250
+ flwr/proto/serverappio_pb2_grpc.py,sha256=fKBfYvUzGj1GUWg2XAmecMI8uRkPeXwXBI4u5KMCXXE,30987
251
+ flwr/proto/serverappio_pb2_grpc.pyi,sha256=2YmbFoWfgvdH6nKxHcPVwpfy3yBsJIvlXOd1V9nE2vc,12927
252
+ flwr/proto/simulationio_pb2.py,sha256=wlgTZYceR_LMOmbWpXQSU5yF3IksrxfrTz1WoiHNo9w,2787
253
+ flwr/proto/simulationio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
254
+ flwr/proto/simulationio_pb2_grpc.py,sha256=whIX3jigGIUm_RnbFsEfphLD0kI82dpT1jIimGm-Foc,20091
255
+ flwr/proto/simulationio_pb2_grpc.pyi,sha256=20ZjvlsLohqxIrtsMhml5jMlmDJjle_-PGuvLE1v568,8639
256
+ flwr/proto/transport_pb2.py,sha256=xqDF2oI0PzAndH17O80SQkyOT_QF9m7CQ0166He7UDQ,10122
257
+ flwr/proto/transport_pb2.pyi,sha256=A-AzbyDAyp4hzJCuC6MOA1NewkFmtuhPwFCjPKqQP0Q,22450
258
+ flwr/proto/transport_pb2_grpc.py,sha256=jYsbV3KYdp4TaNfWxv3ljFEvB-Yjsa8MIPtTH-vVPPk,3600
259
+ flwr/proto/transport_pb2_grpc.pyi,sha256=qd2cOXq6HBZtwRfPpKuni27NGMJCAxyP5R95Vk8WWDU,2073
260
+ flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
+ flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
262
+ flwr/server/app.py,sha256=4jU7qSA-Oa1miBZuFK08-5fMGbi2KofybAnts4kTrzI,31777
263
+ flwr/server/client_manager.py,sha256=3WOqNWh5dlqPRG-DMGwXiyvGNEYS_jKqXKkFIkMqWLQ,6187
264
+ flwr/server/client_proxy.py,sha256=QS_RGgjSZ8V4StAHH8zc7W9_os2FyO4wNqkbylQMBTY,2341
265
+ flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
266
+ flwr/server/compat/app.py,sha256=gCQF6yFX4T95BRU5TWFxKnscRFjdvx4H5VFoG-4IudU,3283
267
+ flwr/server/compat/app_utils.py,sha256=YtJ8U86DIspODFyXjMRvQtcjlGbA5TvOLLadlzu-8ik,4618
268
+ flwr/server/compat/grid_client_proxy.py,sha256=uotPC-tZnHVBtV1QD049Zl142Gx-kmd9FkGSuHU4r34,4891
269
+ flwr/server/compat/legacy_context.py,sha256=uT1XAX6Jqxza7IpDLg8bUnGhYCAWqnTPLi1rZTMh1J0,1767
270
+ flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
271
+ flwr/server/fleet_event_log_interceptor.py,sha256=SfJ6J4K_8ZQtGQaNUqmcemdS4dTsWwiSMhoM62SmvlQ,3977
272
+ flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
273
+ flwr/server/grid/grid.py,sha256=OeP1Kz0lhCZbKh2foZziADmc4fwhJ3e12etSpqYJWnk,6591
274
+ flwr/server/grid/grpc_grid.py,sha256=ShrGOol6qkjjfDziuLFQUapIEOZF4oaS3XmTHbB0AmM,15390
275
+ flwr/server/grid/inmemory_grid.py,sha256=Zw-OaTRqcqNiTnF1E7tqimtLF4I1m9kdbl-CgNxPDJQ,6170
276
+ flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
277
+ flwr/server/run_serverapp.py,sha256=9CJzb7QiF9K8ubu79whVwyoMLzYdrwtu18LOsOECL6A,2029
278
+ flwr/server/server.py,sha256=Oqv3WZ92KN9XTS6vqcYFTEvJM0sHZfkUmNM8xgbhZBE,17698
279
+ flwr/server/server_app.py,sha256=udSNhp5Syg0XJj-AnfqPGkBkg9zuPaSgm1LCL_4PYkc,9469
280
+ flwr/server/server_config.py,sha256=anmj2Rf18kM1chyl-9myRLDS77YVKTS6MpsDh2nIFOY,1318
281
+ flwr/server/serverapp/__init__.py,sha256=xcC0T_MQSMS9cicUzUUpMNCOsF2d8Oh_8jvnoBLuZvo,800
282
+ flwr/server/serverapp/app.py,sha256=pVbVwskQHULC5lvL-uDbKK67LVbYoJpT-H_e-w89qFU,9975
283
+ flwr/server/serverapp_components.py,sha256=b8GbqXkiEsiOw61gGITVj6eFpl66upEf7eMjDu1Oo-M,2078
284
+ flwr/server/strategy/__init__.py,sha256=HhsSWMWaC7oCb2g7Kqn1MBKdrfvgi8VxACy9ZL706Q0,2836
285
+ flwr/server/strategy/aggregate.py,sha256=ebIKolvRzSGwVKbxSZtofGSQAIT8LRddMW2c33mXQ2w,14070
286
+ flwr/server/strategy/bulyan.py,sha256=LqwImM22hfb4U22mJX4_t2Jj1cUEY2W8pYqmbk9lDKA,6499
287
+ flwr/server/strategy/dp_adaptive_clipping.py,sha256=_QwaXBzsZhwHtk-wvbNszOUfai1dKVGDjRtCD2pvoNY,17365
288
+ flwr/server/strategy/dp_fixed_clipping.py,sha256=zlnylug4L8S2YaR4OwTdqE-CXl3W7WZw1IegVeUdcec,12729
289
+ flwr/server/strategy/dpfedavg_adaptive.py,sha256=IZ2XdH3-fZDxS-0vFxCsgCk7iN0BQ8uWgO_UrJFh94k,4841
290
+ flwr/server/strategy/dpfedavg_fixed.py,sha256=hUyhv5x41p5lRIwefoUJNDUGqYR-__Fu_-VMdAY0luY,7157
291
+ flwr/server/strategy/fault_tolerant_fedavg.py,sha256=4_gHDackYuqa9vv-xJcVgIM6SDlUfi-KVDS8IOjPMn0,5848
292
+ flwr/server/strategy/fedadagrad.py,sha256=itF4KKoLeyX_Jwke_3vIeitB-60zh9xrDn--2CEf3Ok,6551
293
+ flwr/server/strategy/fedadam.py,sha256=8GF1bnSwAY4mjUArk7Zfw3k1YYTD_e3B9xNjgXF1YnI,7301
294
+ flwr/server/strategy/fedavg.py,sha256=Amn82nT80rWoNfg_6rsbKHNQgbcyxxQbwtG_QPHIlys,11727
295
+ flwr/server/strategy/fedavg_android.py,sha256=eHUBDSLir1pLN_77PQcqiQJ5UZtdVuutzXRe0T2704M,9736
296
+ flwr/server/strategy/fedavgm.py,sha256=uqR2rnfcMlCeLN0JMa53THVB-dIymEN9qTJMlE_uVaI,8203
297
+ flwr/server/strategy/fedmedian.py,sha256=P6pCn1plJTsQaJuom0DAUV0i4vfY6OfcXaU_YoBDIr0,2641
298
+ flwr/server/strategy/fedopt.py,sha256=ElvCwQsdEN7Kj5pj3fiXJ_XJrKuyJ1lPyD5Zwq5COA8,5218
299
+ flwr/server/strategy/fedprox.py,sha256=gr4JKaoCVyKfBZYtngh3Pg6ik72bX4dj3HH_fxOO6yQ,6835
300
+ flwr/server/strategy/fedtrimmedavg.py,sha256=iebHu_-FX2MNCheAHXkoRUYEcP127_AJq_p5zEHhTuA,5847
301
+ flwr/server/strategy/fedxgb_bagging.py,sha256=yZybB-vHQ12kexLfar_uTrYfPsNwibDF8OjO82ejdNM,6052
302
+ flwr/server/strategy/fedxgb_cyclic.py,sha256=1_bAioq6QP5tGZO7E2JR0k1fcOYWGljm5avklukrH0A,5550
303
+ flwr/server/strategy/fedxgb_nn_avg.py,sha256=n_LGcnFbg0qd58nK0ahaF3TyYk4jIdDGmFBJxIdVGmY,4007
304
+ flwr/server/strategy/fedyogi.py,sha256=Qz7CqxyH4q3i1R41eM9dvp26mUfV9tqZJoMYX0-9J-A,6825
305
+ flwr/server/strategy/krum.py,sha256=zuIdVx-0yBSlSwCktixE47hzeM0FFDhc7Wg9dxwA07Q,6242
306
+ flwr/server/strategy/qfedavg.py,sha256=GTWhAIiZZay48WlNIkzeliAjx-luvMG_9tPlgrhG_OU,10108
307
+ flwr/server/strategy/strategy.py,sha256=Ni737DYbjxe-iC_VWZA91GEHi1h-n6kmccMmFdsSF18,7451
308
+ flwr/server/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
309
+ flwr/server/superlink/fleet/__init__.py,sha256=Uiwr33yfW_eL-pEfj80c_JUhIKRkCPsN1JSs2v4aglU,711
310
+ flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=fUu1V63YrzjxAOZnBJx99WjuD4Mro7dJIFH-1V4NLV8,742
311
+ flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=sbZ0J_a7FinqlKILjAY6f7qlPE8zt696K22C2NCkKS4,5554
312
+ flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dOM49q1b9MrtUr5jldjEnQ38NhcUyYs-zC3gsJb1TtI,735
313
+ flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=fUumpuU-n1PVH-BEcPA-VMXAzyXh1u10vZriB6vx3V8,6003
314
+ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=cKb4bHfvoku34sfWmcVzJ04MQ49bIcTQ0GeH6TmVVCE,6448
315
+ flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=01p58US63-eMmKm_KHeFQqbCHBjeL9pEfgqGI-r3Dw8,4828
316
+ flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=6uraD1bcZGYs9uXWUa46THUKUBnAknIxckiGAt036kc,5142
317
+ flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
318
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=DtHuDP7fvgO-iamI48ACr0TQcD20eBYwMicHKIjhmXQ,12583
319
+ flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py,sha256=h3pPs--wdiomaCuGOg5fr3wwYVfwi-PK-tVArrr_bg8,5669
320
+ flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
321
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=XZSrjTB_7J_dL5PEPjQ9T2abxTJJZ_aBlPE-tUHGrVc,10703
322
+ flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
323
+ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=cDWDQBf79F9tZ1mXOErc-nsnY4zFP9Tcv7Fs-bQIdiU,9616
324
+ flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
325
+ flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
326
+ flwr/server/superlink/fleet/vce/backend/backend.py,sha256=HPOXhT40bFwCA9pz8w2sATdamgNVotXNO8p1ZRCOg7M,2205
327
+ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=LhVmM2Mi6kOskOyDFnbIb7AH304J0eUU1r2B32bzUFc,7193
328
+ flwr/server/superlink/fleet/vce/vce_api.py,sha256=A62Vx3r71bNI-v10IUen_27fDJoYXsOyvBM3JrkTvho,13609
329
+ flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
330
+ flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=tPpet43VBXOeHK0VUXeNXEM7CtQ6lDSja5PG9PGb17M,30649
331
+ flwr/server/superlink/linkstate/linkstate.py,sha256=NfPD0_IElqxq9c3DuEzMFxdIERMocupSwY_aYI5mGeg,16079
332
+ flwr/server/superlink/linkstate/linkstate_factory.py,sha256=dtn3xvp4uGek_vtbHyLnn0OZNOcQn6_dpNNX-r8lwAc,2866
333
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=4j4rM7lA6FGFUMlhRGT_OKDPEQDZITjj9uAuxYeDsZQ,48816
334
+ flwr/server/superlink/linkstate/utils.py,sha256=ZKaunvXhzb4eqxy91zH3xlF22cpNimeRzTJCNdoZ57s,14019
335
+ flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
336
+ flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=2NFPynJMpYpT9C98Fr4n0QrTTjWBWbeUzlHcc6pg2kY,2279
337
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=EF306zWTfb-h4bie9ZKTZSRdgfLdJQVZ0Vbj5fw4keM,20252
338
+ flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
339
+ flwr/server/superlink/simulation/simulationio_grpc.py,sha256=fHFW8SOR4iyfBxQeYOXWwqUStGsv0P4EAIVkBk69BN4,2174
340
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=140iEJZ0lCw0bWNI4B6VSvMXGz0bVUeaCnDW-372_zw,10161
341
+ flwr/server/superlink/utils.py,sha256=pdeB9dm21e5D2Vuymme8069VWW5XuWZfi1LAm7nKjeQ,2400
342
+ flwr/server/typing.py,sha256=qr04ihK3cARvw2Cz64axwzbdCbLtK8R5DDtlh5kWXEU,1020
343
+ flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
344
+ flwr/server/utils/tensorboard.py,sha256=Troy_uoxLPyydVsQQuIAFoAn17MHwMXyERy7CeFjJAk,5750
345
+ flwr/server/utils/validator.py,sha256=ZDHWtDa2yFzicfUStIIzno8AZEeTCwERjBbuv_StAMs,3638
346
+ flwr/server/workflow/__init__.py,sha256=N8G_xCBVrlV39Eov56bwImKMUTsqsaEoTCFYIQ0q8Bg,902
347
+ flwr/server/workflow/constant.py,sha256=4t2MTvOJUlByJfuD9yZjl8Xn5SwBJQDBi15DphztXe8,1082
348
+ flwr/server/workflow/default_workflows.py,sha256=m3BnXUVjxUc4tU1pE-7Gf224l8dffnRQGSyPwLX_1Xg,13865
349
+ flwr/server/workflow/secure_aggregation/__init__.py,sha256=vGkycLb65CxdaMkKsANxQE6AS4urfZKvwcS3r1Vln_c,880
350
+ flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=oHNhvHiu1ZxoU31HdVjvhT1uDz-Q5E2HiTbyG34foQk,5794
351
+ flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=4tc7PoFmIN1rilIbelXTbIyd1PWXE1UDEoFQ3qvMpKE,29509
352
+ flwr/serverapp/__init__.py,sha256=ZujKNXULwhWYQhFnxOOT5Wi9MRq2JCWFhAAj7ouiQ78,884
353
+ flwr/serverapp/exception.py,sha256=5cuH-2AafvihzosWDdDjuMmHdDqZ1XxHvCqZXNBVklw,1334
354
+ flwr/serverapp/strategy/__init__.py,sha256=dezK2TKSffjjBVXW18ATRxJLTuQ7I2M1dPuNi5y-_6c,1968
355
+ flwr/serverapp/strategy/bulyan.py,sha256=disdrk0vCUPWlDvBlVMvHaral9v_hikxpQetVZV5a_Q,9292
356
+ flwr/serverapp/strategy/dp_adaptive_clipping.py,sha256=iddSwnw1qxNmtYtckvcfGsnVZ_bmyMMYd6biYmIZ_8s,13599
357
+ flwr/serverapp/strategy/dp_fixed_clipping.py,sha256=1zJOxJhNFPIJRXneelCsTlx6La7BQAlquWuofa-oHtc,12696
358
+ flwr/serverapp/strategy/fedadagrad.py,sha256=oewW2lxZ3YEo8lAI4KtjU-yp4r3bOFTybq4XjwlXYRg,6185
359
+ flwr/serverapp/strategy/fedadam.py,sha256=jIUytggs5CUxOZ6ZUnt_ajDxHIa1dwrLbdX-3zQ1oHM,6980
360
+ flwr/serverapp/strategy/fedavg.py,sha256=Lm0VCj2P97-LOT7gw4EtdXXBwfkG3hxF5CAcJsTALiQ,11996
361
+ flwr/serverapp/strategy/fedavgm.py,sha256=cynjt6sEnqKIegOQAgWcgoVktCbVbrzxSyJdewEe1qM,8370
362
+ flwr/serverapp/strategy/fedmedian.py,sha256=qkf1kzTs6eSC2lZhXDLGR9M5NAKy01sSvnBQffvMmWQ,4482
363
+ flwr/serverapp/strategy/fedopt.py,sha256=pJ8SYeS1pgnRbv95NT7kN3gAJ3SVI6XAKppTDOvPdkI,8438
364
+ flwr/serverapp/strategy/fedprox.py,sha256=aKOze73dOSyfbkmHSk4tv44TQkPrlmEKaP8V6z7zO5s,6998
365
+ flwr/serverapp/strategy/fedtrimmedavg.py,sha256=Qvt0r1RjLrCa5Y-p6Xbj0rPtBjzPqoO5x1wLp4zEv1o,7150
366
+ flwr/serverapp/strategy/fedxgb_bagging.py,sha256=7eWYGjrFpxfvDFjHsqSmJ8FxYiaE7aJ2ZKSShzLRen4,5170
367
+ flwr/serverapp/strategy/fedxgb_cyclic.py,sha256=YeSp6iFbaCFM8P43dxuWR2XVtnWUpWPwYtEWO0aEZDg,8734
368
+ flwr/serverapp/strategy/fedyogi.py,sha256=7WvtD5XULRr-tlCd7QoLRss2ThlljXOv3SNc5U2f-OU,6494
369
+ flwr/serverapp/strategy/krum.py,sha256=3q8Y0SmrAEz0PnLVjm3iMTsK9Gb0PWav2JujR_GmAwk,4845
370
+ flwr/serverapp/strategy/multikrum.py,sha256=UvOyvp6Za8DWz5IK-yuV7Ur1UGq2bGqH_Gp-8M6W2Go,9847
371
+ flwr/serverapp/strategy/qfedavg.py,sha256=Pa12mDicCYYwZGsNKlW_aBESOmWSQXbClNjvq6VlHIo,10212
372
+ flwr/serverapp/strategy/result.py,sha256=E0Hl2VLnZAgQJjE2GDoKsK7JX-kPPU2KXc47Axt6hGw,4295
373
+ flwr/serverapp/strategy/strategy.py,sha256=ofnwlYt_XBtO6rhVbU9NpWPa9v1gLasp9HUAN9EFKsw,10718
374
+ flwr/serverapp/strategy/strategy_utils.py,sha256=xF8h_udVgWoHwa3C1DIeyb8XlrowDHRcptPrUJGZmhc,10825
375
+ flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1556
376
+ flwr/simulation/app.py,sha256=m1dujMWWHsUukD_hzlvvrjOJ2QM1f8-Y03EvfF2pD2Y,10403
377
+ flwr/simulation/legacy_app.py,sha256=JDGL6cAitI9HdnQkCG7_Lsd96LMesSrFlegEZ_hDGKY,15808
378
+ flwr/simulation/ray_transport/__init__.py,sha256=ogd-0AMv2U-wBZ1r3sHWaDIOIrVqr88Xi6C8o4Dviy0,734
379
+ flwr/simulation/ray_transport/ray_actor.py,sha256=HTX-Vj6z_FjMWyk1Fvbi25MRblfougW_2AM4Po4DXk4,19099
380
+ flwr/simulation/ray_transport/ray_client_proxy.py,sha256=fxLnkLythTP6LnR8IqNqu-7odcPDqk34pjzXQBWjElw,7442
381
+ flwr/simulation/ray_transport/utils.py,sha256=KrexpWYCF-dAF3UHc9yDbPQWO-ahMT-BbD8nURLgiHk,2393
382
+ flwr/simulation/run_simulation.py,sha256=UjA_XnEhqt5cun1HlygiyRrd4HVJd-w5lhBLzEA4dmk,20766
383
+ flwr/simulation/simulationio_connection.py,sha256=cS7yTOa5yeK-bQ2YjS9eJCXL8SOItEkiJD5sN5mBb_Y,3475
384
+ flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
385
+ flwr/supercore/app_utils.py,sha256=K76Zt6R670b1hUmxOsNc1WUCVYvF7lejXPcCO9K0Q0g,1753
386
+ flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
387
+ flwr/supercore/cli/flower_superexec.py,sha256=IQIGzxgaeLNMNzGXGemfYK3lp8God5bTkXpVkbeP_ig,6109
388
+ flwr/supercore/constant.py,sha256=me9ymgv1FoccFQpsQcQBECHv8A5Gdf_bnx8rtJQ_o5s,2201
389
+ flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
390
+ flwr/supercore/corestate/corestate.py,sha256=EZg4gPXqVOXwS7t0tlPfedajoWj5T80oeDBNxpV2y2I,2874
391
+ flwr/supercore/corestate/in_memory_corestate.py,sha256=9qa6RuRZfCp6vs-ARYdiZjCL31VOAAxw0a_VkBXR5zY,5116
392
+ flwr/supercore/corestate/sqlite_corestate.py,sha256=2SAikyNG0dgxOUtQsy9WS5XCDibndw6y4xPGK61seWE,5740
393
+ flwr/supercore/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
394
+ flwr/supercore/ffs/disk_ffs.py,sha256=IWFjikDs8BOfHIgFgOGI6p4Xl7U3n8lGbocmIibepcg,3241
395
+ flwr/supercore/ffs/ffs.py,sha256=Q71OLKYIuuhe_XDTqku03qozUfDBQ5Lxg-MbpGDPHlk,2364
396
+ flwr/supercore/ffs/ffs_factory.py,sha256=tPwVDWMddgo45X8tk1lBCTkmJenWBbRagjWfx7UsYuE,1459
397
+ flwr/supercore/grpc_health/__init__.py,sha256=rCPZ7ucPY9NXBWuhb9iKs2D-yZ0rQ5YkJ7LlOeahN9A,948
398
+ flwr/supercore/grpc_health/health_server.py,sha256=bwNzQ1eQJWmzeSJwqa0zrD5s_Cut00vKdSSk8NhPI2c,1808
399
+ flwr/supercore/grpc_health/simple_health_servicer.py,sha256=C5QN_cR_VBqbhva1eP8zyZ6YwS5Q9APKl6WgM03jAC0,1531
400
+ flwr/supercore/heartbeat.py,sha256=S4lEJYH058UOUZto13mr5gI5ah-J7FMgtwMzLerOHNI,5655
401
+ flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
402
+ flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
403
+ flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
404
+ flwr/supercore/object_store/in_memory_object_store.py,sha256=-DU6n1Ef3EmllHY9SzeXw57ftoU0mR_6or4NIDSZlcs,9322
405
+ flwr/supercore/object_store/object_store.py,sha256=XLo-xe258TmCel9dNLCJepFjXaQtEi0wBqzU9YsyJVg,5221
406
+ flwr/supercore/object_store/object_store_factory.py,sha256=vcLJP7nVuIoRuGNImePA-MK8QvH18FtThSZSniA3k6Y,2323
407
+ flwr/supercore/object_store/sqlite_object_store.py,sha256=oDfqGe6TEr1HT6_ZoxLoi7T1qEF2_GBKmfKh3yKux_Y,10251
408
+ flwr/supercore/primitives/__init__.py,sha256=Tx8GOjnmMo8Y74RsDGrMpfr-E0Nl8dcUDF784_ge6F8,745
409
+ flwr/supercore/primitives/asymmetric.py,sha256=1643niHYj3uEbfPd06VuMHwN3tKVwg0uVyR3RhTdWIU,3778
410
+ flwr/supercore/primitives/asymmetric_ed25519.py,sha256=eIhOTMibQW0FJX4MXdplHdL3HcfCiKuFu2mQ8GQTUz8,5025
411
+ flwr/supercore/sqlite_mixin.py,sha256=ZvtqDLRwCMzyrPsOTpAwJeHSpthrrtvEfUmWZmss6OA,5317
412
+ flwr/supercore/superexec/__init__.py,sha256=XKX208hZ6a9gZ4KT9kMqfpCtp_8VGxekzKFfHSu2esQ,707
413
+ flwr/supercore/superexec/plugin/__init__.py,sha256=GNwq8uNdE8RB7ywEFRAvKjLFzgS3YXgz39-HBGsemWw,1035
414
+ flwr/supercore/superexec/plugin/base_exec_plugin.py,sha256=QmTr7AJTZO1cfmoVRjZUEhSlxNCou-XotGFAXkCqwWQ,2043
415
+ flwr/supercore/superexec/plugin/clientapp_exec_plugin.py,sha256=9FT6ufEqV5K9g4FaAB9lVDbIv-VCH5LcxT4YKy23roE,1035
416
+ flwr/supercore/superexec/plugin/exec_plugin.py,sha256=iRRZcnTcM3wMwkkUElmfFka31aJrZgtoQEf0E7dPp9Q,2751
417
+ flwr/supercore/superexec/plugin/serverapp_exec_plugin.py,sha256=IwRzdPV-cSKwrP2krGh0De4IkAuxsmgK0WU6J-2GXqM,1035
418
+ flwr/supercore/superexec/plugin/simulation_exec_plugin.py,sha256=upn5zE-YKkl_jTw8RzmeyQ58PU_UAlQ7CqnBXXdng8I,1060
419
+ flwr/supercore/superexec/run_superexec.py,sha256=yeV6_eI0XFfPyNwnlgqchR9jI80FzSI80oyekrIlO2M,7144
420
+ flwr/supercore/utils.py,sha256=KOvqGhRZ1if9AEg_eb0klwp7_smXkTwwGhAUpeGORWA,1841
421
+ flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
422
+ flwr/superlink/artifact_provider/__init__.py,sha256=pgZEcVPKRE874LSu3cgy0HbwSJBIpVy_HxQOmne4PAs,810
423
+ flwr/superlink/artifact_provider/artifact_provider.py,sha256=Gt1UUojVOa4WDgv8unU20MoETSMd5rSPF9eIITBNJY0,1236
424
+ flwr/superlink/auth_plugin/__init__.py,sha256=ApYBHnDmtv5gVrnxdFq97zC58O1icqHogK2Dz6o8DVI,1000
425
+ flwr/superlink/auth_plugin/auth_plugin.py,sha256=xLqAYFG7sjAhYgyeTvvEY6fSMjPRq0offmTDRYpIs78,2956
426
+ flwr/superlink/auth_plugin/noop_auth_plugin.py,sha256=0MWjNXZdz6zGRfitlnZfVKu4sKVn0HhJvnp09c3xVUA,2962
427
+ flwr/superlink/federation/__init__.py,sha256=A1pFFvkEQrHzvRAOstr2o7nphx3JbuJgkNRFKJ9qD3M,890
428
+ flwr/superlink/federation/federation_manager.py,sha256=-Vu1v_WWhWK7wgKEQua24lw9a6iPxG89VI-jqLO5E4g,2322
429
+ flwr/superlink/federation/noop_federation_manager.py,sha256=Hc6_YVlMZZkdElS8bawi85eCTHOzVPUZVe9Dmrl2DW8,2881
430
+ flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
431
+ flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
432
+ flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=AJs7GE-fyUBLcUEUzB058TpFzC7gyDOL17THvYkJTn8,6529
433
+ flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=r9LjF5VkrE1sZIcml-sO2uOPAwpvr6dj4tFchqoDcR4,5965
434
+ flwr/superlink/servicer/control/control_grpc.py,sha256=Hkkse7BAZ6dHJTfc1bO_zQI3Qd67fQMO0-bjf4fs6X0,4140
435
+ flwr/superlink/servicer/control/control_license_interceptor.py,sha256=8d28soJ0mLLhpSGCpuY2YzgbX0vVO7Sqe2DcApEgILc,3336
436
+ flwr/superlink/servicer/control/control_servicer.py,sha256=YRceYBgxIhLvvSK7QriFCVHMgl61pdxXWTa-GA4dVnM,22773
437
+ flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
438
+ flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
439
+ flwr/supernode/cli/flower_supernode.py,sha256=1HdhlGaVo51_7w3AL1hE5zfIVJMow0Ngi_F3Js01djs,10815
440
+ flwr/supernode/cli/flwr_clientapp.py,sha256=W3tAyqSfeHbPhqBC4Pfo9bsyFdkBKPqdKlhGmeUKwKg,3173
441
+ flwr/supernode/nodestate/__init__.py,sha256=CyLLObbmmVgfRO88UCM0VMait1dL57mUauUDfuSHsbU,976
442
+ flwr/supernode/nodestate/in_memory_nodestate.py,sha256=_SDshB4JebO5pWScdrkF4xdxw1kMH_BH9scvyg385_M,7987
443
+ flwr/supernode/nodestate/nodestate.py,sha256=NwnORCF3xBpIf996tq2h9v4vtVpJZsIHkXxUc2NnGzs,4998
444
+ flwr/supernode/nodestate/nodestate_factory.py,sha256=i-1cv42R9LBM1nyasTHuTHSqlyJxVSRtUK2BMzqT-Ss,1631
445
+ flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
446
+ flwr/supernode/runtime/run_clientapp.py,sha256=-JsN3h7jQC12vzDBmImzYmyccI3LveIu-Z7eE-QNF-Y,9461
447
+ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
448
+ flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
449
+ flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=beWxBHsOKyDRwSldSYac5ZF7oueCrZXC2j_qve3-tQ4,11327
450
+ flwr/supernode/start_client_internal.py,sha256=kY_i6JJlD8VzuGtk4AzfM5La-3GQg4lpyuwQUh1pFCM,25930
451
+ flwr-1.24.0.dist-info/METADATA,sha256=vvDO-VQc7CUw_ObmirfE5wxVIA3LNtz_fjB3L1DzhNg,14593
452
+ flwr-1.24.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
453
+ flwr-1.24.0.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
454
+ flwr-1.24.0.dist-info/RECORD,,
@@ -1,149 +0,0 @@
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
- """Abstract classes for Flower User Auth Plugin."""
16
-
17
-
18
- from abc import ABC, abstractmethod
19
- from collections.abc import Sequence
20
- from pathlib import Path
21
- from typing import Optional, Union
22
-
23
- from flwr.common.typing import AccountInfo
24
- from flwr.proto.control_pb2_grpc import ControlStub
25
-
26
- from ..typing import UserAuthCredentials, UserAuthLoginDetails
27
-
28
-
29
- class ControlAuthPlugin(ABC):
30
- """Abstract Flower Auth Plugin class for ControlServicer.
31
-
32
- Parameters
33
- ----------
34
- user_auth_config_path : Path
35
- Path to the YAML file containing the authentication configuration.
36
- verify_tls_cert : bool
37
- Boolean indicating whether to verify the TLS certificate
38
- when making requests to the server.
39
- """
40
-
41
- @abstractmethod
42
- def __init__(
43
- self,
44
- user_auth_config_path: Path,
45
- verify_tls_cert: bool,
46
- ):
47
- """Abstract constructor."""
48
-
49
- @abstractmethod
50
- def get_login_details(self) -> Optional[UserAuthLoginDetails]:
51
- """Get the login details."""
52
-
53
- @abstractmethod
54
- def validate_tokens_in_metadata(
55
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
56
- ) -> tuple[bool, Optional[AccountInfo]]:
57
- """Validate authentication tokens in the provided metadata."""
58
-
59
- @abstractmethod
60
- def get_auth_tokens(self, device_code: str) -> Optional[UserAuthCredentials]:
61
- """Get authentication tokens."""
62
-
63
- @abstractmethod
64
- def refresh_tokens(
65
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
66
- ) -> tuple[
67
- Optional[Sequence[tuple[str, Union[str, bytes]]]], Optional[AccountInfo]
68
- ]:
69
- """Refresh authentication tokens in the provided metadata."""
70
-
71
-
72
- class ControlAuthzPlugin(ABC): # pylint: disable=too-few-public-methods
73
- """Abstract Flower Authorization Plugin class for ControlServicer.
74
-
75
- Parameters
76
- ----------
77
- user_auth_config_path : Path
78
- Path to the YAML file containing the authorization configuration.
79
- verify_tls_cert : bool
80
- Boolean indicating whether to verify the TLS certificate
81
- when making requests to the server.
82
- """
83
-
84
- @abstractmethod
85
- def __init__(self, user_auth_config_path: Path, verify_tls_cert: bool):
86
- """Abstract constructor."""
87
-
88
- @abstractmethod
89
- def verify_user_authorization(self, account_info: AccountInfo) -> bool:
90
- """Verify user authorization request."""
91
-
92
-
93
- class CliAuthPlugin(ABC):
94
- """Abstract Flower Auth Plugin class for CLI.
95
-
96
- Parameters
97
- ----------
98
- credentials_path : Path
99
- Path to the user's authentication credentials file.
100
- """
101
-
102
- @staticmethod
103
- @abstractmethod
104
- def login(
105
- login_details: UserAuthLoginDetails,
106
- control_stub: ControlStub,
107
- ) -> UserAuthCredentials:
108
- """Authenticate the user and retrieve authentication credentials.
109
-
110
- Parameters
111
- ----------
112
- login_details : UserAuthLoginDetails
113
- An object containing the user's login details.
114
- control_stub : ControlStub
115
- A stub for executing RPC calls to the server.
116
-
117
- Returns
118
- -------
119
- UserAuthCredentials
120
- The authentication credentials obtained after login.
121
- """
122
-
123
- @abstractmethod
124
- def __init__(self, credentials_path: Path):
125
- """Abstract constructor."""
126
-
127
- @abstractmethod
128
- def store_tokens(self, credentials: UserAuthCredentials) -> None:
129
- """Store authentication tokens to the `credentials_path`.
130
-
131
- The credentials, including tokens, will be saved as a JSON file
132
- at `credentials_path`.
133
- """
134
-
135
- @abstractmethod
136
- def load_tokens(self) -> None:
137
- """Load authentication tokens from the `credentials_path`."""
138
-
139
- @abstractmethod
140
- def write_tokens_to_metadata(
141
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
142
- ) -> Sequence[tuple[str, Union[str, bytes]]]:
143
- """Write authentication tokens to the provided metadata."""
144
-
145
- @abstractmethod
146
- def read_tokens_from_metadata(
147
- self, metadata: Sequence[tuple[str, Union[str, bytes]]]
148
- ) -> Optional[UserAuthCredentials]:
149
- """Read authentication tokens from the provided metadata."""