flwr 1.22.0__py3-none-any.whl → 1.23.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.
- flwr/cli/app.py +15 -1
- flwr/cli/auth_plugin/__init__.py +15 -6
- flwr/cli/auth_plugin/auth_plugin.py +95 -0
- flwr/cli/auth_plugin/noop_auth_plugin.py +58 -0
- flwr/cli/auth_plugin/oidc_cli_plugin.py +16 -25
- flwr/cli/build.py +118 -47
- flwr/cli/{cli_user_auth_interceptor.py → cli_account_auth_interceptor.py} +6 -5
- flwr/cli/log.py +2 -2
- flwr/cli/login/login.py +34 -23
- flwr/cli/ls.py +13 -9
- flwr/cli/new/new.py +187 -35
- flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +1 -1
- flwr/cli/pull.py +2 -2
- flwr/cli/run/run.py +11 -7
- flwr/cli/stop.py +2 -2
- flwr/cli/supernode/__init__.py +25 -0
- flwr/cli/supernode/ls.py +260 -0
- flwr/cli/supernode/register.py +185 -0
- flwr/cli/supernode/unregister.py +138 -0
- flwr/cli/utils.py +92 -69
- flwr/client/__init__.py +2 -1
- flwr/client/grpc_adapter_client/connection.py +6 -8
- flwr/client/grpc_rere_client/connection.py +59 -31
- flwr/client/grpc_rere_client/grpc_adapter.py +28 -12
- flwr/client/grpc_rere_client/{client_interceptor.py → node_auth_client_interceptor.py} +3 -6
- flwr/client/mod/secure_aggregation/secaggplus_mod.py +7 -5
- flwr/client/rest_client/connection.py +82 -37
- flwr/clientapp/__init__.py +1 -2
- flwr/{client/clientapp → clientapp}/utils.py +1 -1
- flwr/common/constant.py +53 -13
- flwr/common/exit/exit_code.py +20 -10
- flwr/common/inflatable_utils.py +10 -10
- flwr/common/record/array.py +3 -3
- flwr/common/record/arrayrecord.py +10 -1
- flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -89
- flwr/common/serde.py +4 -2
- flwr/common/typing.py +7 -6
- flwr/compat/client/app.py +1 -1
- flwr/compat/client/grpc_client/connection.py +2 -2
- flwr/proto/control_pb2.py +48 -35
- flwr/proto/control_pb2.pyi +71 -5
- flwr/proto/control_pb2_grpc.py +102 -0
- flwr/proto/control_pb2_grpc.pyi +39 -0
- flwr/proto/fab_pb2.py +11 -7
- flwr/proto/fab_pb2.pyi +21 -1
- flwr/proto/fleet_pb2.py +31 -23
- flwr/proto/fleet_pb2.pyi +63 -23
- flwr/proto/fleet_pb2_grpc.py +98 -28
- flwr/proto/fleet_pb2_grpc.pyi +45 -13
- flwr/proto/node_pb2.py +3 -1
- flwr/proto/node_pb2.pyi +48 -0
- flwr/server/app.py +139 -114
- flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +17 -7
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +132 -38
- flwr/server/superlink/fleet/grpc_rere/{server_interceptor.py → node_auth_server_interceptor.py} +27 -51
- flwr/server/superlink/fleet/message_handler/message_handler.py +67 -22
- flwr/server/superlink/fleet/rest_rere/rest_api.py +52 -31
- flwr/server/superlink/fleet/vce/backend/backend.py +1 -1
- flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -1
- flwr/server/superlink/fleet/vce/vce_api.py +18 -5
- flwr/server/superlink/linkstate/in_memory_linkstate.py +167 -73
- flwr/server/superlink/linkstate/linkstate.py +107 -24
- flwr/server/superlink/linkstate/linkstate_factory.py +2 -1
- flwr/server/superlink/linkstate/sqlite_linkstate.py +306 -255
- flwr/server/superlink/linkstate/utils.py +3 -54
- flwr/server/superlink/serverappio/serverappio_servicer.py +2 -2
- flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
- flwr/server/utils/validator.py +2 -3
- flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +4 -2
- flwr/simulation/ray_transport/ray_actor.py +1 -1
- flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
- flwr/simulation/run_simulation.py +3 -2
- flwr/supercore/constant.py +22 -0
- flwr/supercore/object_store/in_memory_object_store.py +0 -4
- flwr/supercore/object_store/object_store_factory.py +26 -6
- flwr/supercore/object_store/sqlite_object_store.py +252 -0
- flwr/{client/clientapp → supercore/primitives}/__init__.py +1 -1
- flwr/supercore/primitives/asymmetric.py +117 -0
- flwr/supercore/primitives/asymmetric_ed25519.py +165 -0
- flwr/supercore/sqlite_mixin.py +156 -0
- flwr/supercore/utils.py +20 -0
- flwr/{common → superlink}/auth_plugin/__init__.py +6 -6
- flwr/superlink/auth_plugin/auth_plugin.py +91 -0
- flwr/superlink/auth_plugin/noop_auth_plugin.py +87 -0
- flwr/superlink/servicer/control/{control_user_auth_interceptor.py → control_account_auth_interceptor.py} +19 -19
- flwr/superlink/servicer/control/control_event_log_interceptor.py +1 -1
- flwr/superlink/servicer/control/control_grpc.py +13 -11
- flwr/superlink/servicer/control/control_servicer.py +152 -60
- flwr/supernode/cli/flower_supernode.py +19 -26
- flwr/supernode/runtime/run_clientapp.py +2 -2
- flwr/supernode/servicer/clientappio/clientappio_servicer.py +1 -1
- flwr/supernode/start_client_internal.py +17 -9
- {flwr-1.22.0.dist-info → flwr-1.23.0.dist-info}/METADATA +1 -1
- {flwr-1.22.0.dist-info → flwr-1.23.0.dist-info}/RECORD +107 -96
- flwr/common/auth_plugin/auth_plugin.py +0 -149
- /flwr/{client → clientapp}/client_app.py +0 -0
- {flwr-1.22.0.dist-info → flwr-1.23.0.dist-info}/WHEEL +0 -0
- {flwr-1.22.0.dist-info → flwr-1.23.0.dist-info}/entry_points.txt +0 -0
|
@@ -4,21 +4,23 @@ flwr/app/error.py,sha256=0PwA-E_CAs5P_nWAA0kksVO1A44t4CNLEf7u-Su-uJ0,2342
|
|
|
4
4
|
flwr/app/exception.py,sha256=WX45Yviu_CmYrYd8JHNjRkSsb-g4Br7XvVLKuVxwSdI,1298
|
|
5
5
|
flwr/app/metadata.py,sha256=rdMBn0zhIOYmCvmGENQWSQqDwcxwsMJzCle4PQdlc_Y,7331
|
|
6
6
|
flwr/cli/__init__.py,sha256=EfMGmHoobET6P2blBt_eOByXL8299MgFfB7XNdaPQ6I,720
|
|
7
|
-
flwr/cli/app.py,sha256=
|
|
8
|
-
flwr/cli/auth_plugin/__init__.py,sha256=
|
|
9
|
-
flwr/cli/auth_plugin/
|
|
10
|
-
flwr/cli/
|
|
11
|
-
flwr/cli/
|
|
7
|
+
flwr/cli/app.py,sha256=ugwVO5xD8w39EI6vSu9deMZAk8KCjPD85j_xNXq1RyY,2475
|
|
8
|
+
flwr/cli/auth_plugin/__init__.py,sha256=qpebWV9uLpx72_J8yTVgT1DlH2Y9MK_RraDoTYEqv-w,1359
|
|
9
|
+
flwr/cli/auth_plugin/auth_plugin.py,sha256=LK-DYGk8J85Mjsbc5BX9ueDVOOPcFSo9cKWJX25X-QI,3050
|
|
10
|
+
flwr/cli/auth_plugin/noop_auth_plugin.py,sha256=KRyxoYtrzOWAIlSuXznli9gqL-rmHSG3zESmYSCQ_rg,2093
|
|
11
|
+
flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=9Oyd23g-2vgsXhRQdqG9JNocPylGXZM4UVPBB6l0GXA,5147
|
|
12
|
+
flwr/cli/build.py,sha256=G3pbe1IlwXZQPM8ZbzpvkhOwuhYQUxhkOF09VVUV3GI,9601
|
|
13
|
+
flwr/cli/cli_account_auth_interceptor.py,sha256=o_D6-al3TgLRUAX2OZhzLlYF_LXDsK5dLkjbi082JNU,3131
|
|
12
14
|
flwr/cli/config_utils.py,sha256=o75PJzgCTl9FdFo_I9OjCB02-ykK0VWZdhIAeR0A8QA,9130
|
|
13
15
|
flwr/cli/constant.py,sha256=LtxufmhkEqNWQ9doWbbbkUKa12vN_RK_Of5u0So-GHA,1729
|
|
14
16
|
flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
|
|
15
17
|
flwr/cli/install.py,sha256=Jr883qR7qssVpUr3hEOEcLK-dfW67Rsve3lZchjA9RU,8180
|
|
16
|
-
flwr/cli/log.py,sha256=
|
|
18
|
+
flwr/cli/log.py,sha256=3qVYY30QqchfnKRTeeRw2ojBUj_nwvfnZkdBr4lmjpc,6541
|
|
17
19
|
flwr/cli/login/__init__.py,sha256=B1SXKU3HCQhWfFDMJhlC7FOl8UsvH4mxysxeBnrfyUE,800
|
|
18
|
-
flwr/cli/login/login.py,sha256=
|
|
19
|
-
flwr/cli/ls.py,sha256=
|
|
20
|
+
flwr/cli/login/login.py,sha256=XeA6K9rZn3CBvtiFP3XWTAk7s8766BCqHvCsO_tJEuY,4558
|
|
21
|
+
flwr/cli/ls.py,sha256=MUlWSjO0yhVTupN5Fr0zvdvRqfRBGWliuoyWA0D-Pzg,11107
|
|
20
22
|
flwr/cli/new/__init__.py,sha256=QA1E2QtzPvFCjLTUHnFnJbufuFiGyT_0Y53Wpbvg1F0,790
|
|
21
|
-
flwr/cli/new/new.py,sha256=
|
|
23
|
+
flwr/cli/new/new.py,sha256=NOzI72lLAk1U9-g54Re04DBpgK81JOqMiXHRE5l-_Fo,15301
|
|
22
24
|
flwr/cli/new/templates/__init__.py,sha256=FpjWCfIySU2DB4kh0HOXLAjlZNNFDTVU4w3HoE2TzcI,725
|
|
23
25
|
flwr/cli/new/templates/app/.gitignore.tpl,sha256=HZJcGQoxp7aUzaPg8Uqch3kNrIESwr9yjimDxJYgXVY,3104
|
|
24
26
|
flwr/cli/new/templates/app/LICENSE.tpl,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
|
@@ -69,34 +71,35 @@ flwr/cli/new/templates/app/code/task.sklearn.py.tpl,sha256=vHdhtMp0FHxbYafXyhDT9
|
|
|
69
71
|
flwr/cli/new/templates/app/code/task.tensorflow.py.tpl,sha256=impgWN7MfztmcWF4xh1llcZGsgTvrb1HD5ZE0t-8U08,1731
|
|
70
72
|
flwr/cli/new/templates/app/code/task.xgboost.py.tpl,sha256=0xO8jQvrHuB1llVDopQPOmt5Hn6rBw8umzoNwiZZs-o,2135
|
|
71
73
|
flwr/cli/new/templates/app/code/utils.baseline.py.tpl,sha256=YkHAgppUeD2BnBoGfVB6dEvBfjuIPGsU1gw4CiUi3qA,40
|
|
72
|
-
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=
|
|
73
|
-
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=
|
|
74
|
-
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=
|
|
75
|
-
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=
|
|
76
|
-
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=
|
|
77
|
-
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=
|
|
78
|
-
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=
|
|
79
|
-
flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl,sha256=
|
|
80
|
-
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=
|
|
81
|
-
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=
|
|
82
|
-
flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl,sha256=
|
|
83
|
-
flwr/cli/pull.py,sha256=
|
|
74
|
+
flwr/cli/new/templates/app/pyproject.baseline.toml.tpl,sha256=7t57rL9zAjCC0Vd1T2LMkPXvl2x0V0iVDTap4oC66LY,3182
|
|
75
|
+
flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl,sha256=iwUlPEC2DsDuIuY3FZmEDxqKkUqcWTLFZXxObFGAXEU,2501
|
|
76
|
+
flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl,sha256=PiQemjUmmLWCdjiZylXFTZer7VhqxqT4_BXbDYw1uh4,2020
|
|
77
|
+
flwr/cli/new/templates/app/pyproject.jax.toml.tpl,sha256=S6PvrDW1JPGnVs6Nfn2e6GHg0taZKt3bTmM-5KKyUpo,1471
|
|
78
|
+
flwr/cli/new/templates/app/pyproject.mlx.toml.tpl,sha256=K00iuPOuqJBGgNE-eFiv5-bahM6PwKtf-6g7lH7FBx8,1542
|
|
79
|
+
flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=1ptnw1a7wcb3UxbDVquudZ79Z6oTbJl6q33KAGq0cEo,1409
|
|
80
|
+
flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=TEqf7kWd4tsN3TbNNosN0o2DAWn4W2OFHqipCf-5gCU,1490
|
|
81
|
+
flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl,sha256=ZWW31QEdrqIvIIWn0UFEYUkgufgDnWQtMSgDGOnWgv8,1508
|
|
82
|
+
flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl,sha256=Elh5bUTVBNRG1aDTrgQcZgjfrXcIaVXH00UduNJDZ2U,1484
|
|
83
|
+
flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=g7SYiAJr6Uhwg4ZsQI2qsLVeizU8vd0CzR0_jka99_A,1508
|
|
84
|
+
flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl,sha256=yAJ9jL2q6U_XXYwwUT9fpIqIKFuQR_Kgg82GpWfQ5J8,1661
|
|
85
|
+
flwr/cli/pull.py,sha256=sT3-f2zf7JcXfB-pHWLXmENrOzJeUDBoqK3oruJxzao,3352
|
|
84
86
|
flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
|
|
85
|
-
flwr/cli/run/run.py,sha256=
|
|
86
|
-
flwr/cli/stop.py,sha256=
|
|
87
|
-
flwr/cli/
|
|
88
|
-
flwr/
|
|
87
|
+
flwr/cli/run/run.py,sha256=2QYhD4o0CfChN68eV0MFZULP3G1DoQInNKrWsupu0Dw,8386
|
|
88
|
+
flwr/cli/stop.py,sha256=W7ynTYLm0-_1nC5Il4IaZTji6A3GCCm_0R-HQUudAsI,4988
|
|
89
|
+
flwr/cli/supernode/__init__.py,sha256=DBkjoPo2hS2Y-ghJxwLbrAbCQFBgD82_Itl2_892UBo,917
|
|
90
|
+
flwr/cli/supernode/ls.py,sha256=OVEs9zPSomxxiwCg1Jz8AN5MkZJDf3xAE-lxCG22zyE,8640
|
|
91
|
+
flwr/cli/supernode/register.py,sha256=8xLsaJWHGrFtqxPTEMkvQdlgWd5hqQZu94b_jpCN_A0,6419
|
|
92
|
+
flwr/cli/supernode/unregister.py,sha256=qbrAMbzjLhOJNQ_ndSqBLQp1up9LrxBN1ngwg97Vbj4,4578
|
|
93
|
+
flwr/cli/utils.py,sha256=66RqZdF0DKsqmR4ZqE9zZ1bX6opdxD2U50GV41WQDoY,14864
|
|
94
|
+
flwr/client/__init__.py,sha256=Q0MIF442vLIGSkcwHKq_sIfECQynLARJrumAscq2Q6E,1241
|
|
89
95
|
flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
|
|
90
|
-
flwr/client/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
|
91
|
-
flwr/client/clientapp/__init__.py,sha256=Zw9qP5nHFnJ9K1dcR4cdY0fRqN-FaMYFSHJFXoFpUvo,711
|
|
92
|
-
flwr/client/clientapp/utils.py,sha256=LsiW1OL2VPcjom3xN29pgBQC0UrttQ-xWL_GF1fkKDo,4344
|
|
93
96
|
flwr/client/dpfedavg_numpy_client.py,sha256=3hul067cT2E9jBhzp7bFnFAZ_D2nWcIUEdHYE05FpzU,7404
|
|
94
97
|
flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
|
|
95
|
-
flwr/client/grpc_adapter_client/connection.py,sha256=
|
|
98
|
+
flwr/client/grpc_adapter_client/connection.py,sha256=CWYk7g_teEXWLt8BV2CNiwbQGtMVx7QCSVViTnoeUB0,4311
|
|
96
99
|
flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
|
|
97
|
-
flwr/client/grpc_rere_client/
|
|
98
|
-
flwr/client/grpc_rere_client/
|
|
99
|
-
flwr/client/grpc_rere_client/
|
|
100
|
+
flwr/client/grpc_rere_client/connection.py,sha256=LqRbo_rkZsPIiIT1goclNYDIsdsEfIz3qrQGPU6QNoY,13771
|
|
101
|
+
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=1s1suFIGxAbx6UiIZH-VtLpZlkct5FI4OF4bb589A0o,7358
|
|
102
|
+
flwr/client/grpc_rere_client/node_auth_client_interceptor.py,sha256=EdTyb5ThFrpkeyXy9_nTKH7E9GnfAdXjcNZ_-uxt1AA,2410
|
|
100
103
|
flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
|
|
101
104
|
flwr/client/message_handler/message_handler.py,sha256=X9SXX6et97Lw9_DGD93HKsEBGNjXClcFgc_5aLK0oiU,6541
|
|
102
105
|
flwr/client/mod/__init__.py,sha256=AtV4Y5UGuYqJdTg7bJ--KtfOZUYLGDPMy616LvtP5W4,1151
|
|
@@ -105,25 +108,25 @@ flwr/client/mod/comms_mods.py,sha256=ehp0AF-nGXxQOtm4G5Ts_7RTP04x5Y8PmA1Myfrjuro
|
|
|
105
108
|
flwr/client/mod/localdp_mod.py,sha256=GzVQrydejUfFDgnIIEIwrUU2DgvhN990LUnoydm9Tpo,5008
|
|
106
109
|
flwr/client/mod/secure_aggregation/__init__.py,sha256=k8HYXvqu3pd_V3eZ0_5wwH52o-C6XJCPbT4n4anYyWY,849
|
|
107
110
|
flwr/client/mod/secure_aggregation/secagg_mod.py,sha256=y54DvpM2-DWUiEYqgwZ0DssC1VVRCJEfGgST7O3OcwM,1095
|
|
108
|
-
flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=
|
|
111
|
+
flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=Ib-HlhZOXB6-hAWGZ0IpbK7mIr1A5j2qpc8IRu-MxLU,19714
|
|
109
112
|
flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
|
|
110
113
|
flwr/client/numpy_client.py,sha256=Qq6ghsIAop2slKqAfgiI5NiHJ4LIxGmrik3Ror4_XVc,9581
|
|
111
114
|
flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
|
|
112
|
-
flwr/client/rest_client/connection.py,sha256=
|
|
115
|
+
flwr/client/rest_client/connection.py,sha256=Tz-NfYobR-cTZ4FBsbwD9XYnpC-uOmqQe3CPMODqM3w,17507
|
|
113
116
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
|
114
117
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
|
115
|
-
flwr/clientapp/__init__.py,sha256=
|
|
118
|
+
flwr/clientapp/__init__.py,sha256=dsXH29kvCk1meJj9UYMCIak8zehuuhVp0uDJ2COU_1c,829
|
|
119
|
+
flwr/clientapp/client_app.py,sha256=zVhi-l3chAb06ozFsKwix3hU_RpOLjST13Ha50AVIPE,16918
|
|
116
120
|
flwr/clientapp/mod/__init__.py,sha256=w18mDPUmjlm5P_er2GJ7l6Zbh8qyiHfMKoVqXxaTxdE,1024
|
|
117
121
|
flwr/clientapp/mod/centraldp_mods.py,sha256=bL2NMxbin9nj2OYSHbuOvIPk0rKH6xyAxG-pbtP9ISY,8954
|
|
118
122
|
flwr/clientapp/mod/localdp_mod.py,sha256=L3kQK3kjc-vwlhJcBwFIK6EiwBYlpHQkv4jiR7K9abQ,5642
|
|
119
123
|
flwr/clientapp/typing.py,sha256=x1GvXWy112RqZh27liJqz-yZ7SSCOwiOSmAQsUxk9MY,853
|
|
124
|
+
flwr/clientapp/utils.py,sha256=K_cqX4PvrifMHi_wKpwnwXQqmjKX_FEfv6Ji85B9ce0,4347
|
|
120
125
|
flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
|
121
126
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
|
122
127
|
flwr/common/args.py,sha256=Nq2u4yePbkSY0CWFamn0hZY6Rms8G1xYDeDGIcLIITE,5849
|
|
123
|
-
flwr/common/auth_plugin/__init__.py,sha256=DktrRcGZrRarLf7Jb_UlHtOyLp9_-kEplyq6PS5-vOA,988
|
|
124
|
-
flwr/common/auth_plugin/auth_plugin.py,sha256=mM7SuphO4OsVAVJR1GErYVgYT83ZjxDzS_gha12bT9E,4855
|
|
125
128
|
flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
|
|
126
|
-
flwr/common/constant.py,sha256=
|
|
129
|
+
flwr/common/constant.py,sha256=du408_dylfRx6H-YXzpc_2BvpI1bnFUcz0RiQryM_n8,10254
|
|
127
130
|
flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
|
|
128
131
|
flwr/common/date.py,sha256=1ZT2cRSpC2DJqprOVTLXYCR_O2_OZR0zXO_brJ3LqWc,1554
|
|
129
132
|
flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHERM-EoE,6148
|
|
@@ -133,23 +136,23 @@ flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86
|
|
|
133
136
|
flwr/common/event_log_plugin/event_log_plugin.py,sha256=4SkVa1Ic-sPlICJShBuggXmXDcQtWQ1KDby4kthFNF0,2064
|
|
134
137
|
flwr/common/exit/__init__.py,sha256=8W7xaO1iw0vacgmQW7FTFbSh7csNv6XfsgIlnIbNF6U,978
|
|
135
138
|
flwr/common/exit/exit.py,sha256=DcXJfbpW1g-pQJqSZmps-1MZydd7T7RaarghIf2e4tU,3636
|
|
136
|
-
flwr/common/exit/exit_code.py,sha256=
|
|
139
|
+
flwr/common/exit/exit_code.py,sha256=Q49GmNGakPDbGAUR8V84MTgLrNf4EqKIoQSwrzhYS0o,5912
|
|
137
140
|
flwr/common/exit/exit_handler.py,sha256=uzDdWwhKgc1w5csZS52b86kjmEApmDZKwMn_X0zDZZo,2126
|
|
138
141
|
flwr/common/exit/signal_handler.py,sha256=wqxykrwgmpFzmEMhpnlM7RtO0PnqIvYiSB1qYahZ5Sk,3710
|
|
139
142
|
flwr/common/grpc.py,sha256=nHnFC7E84pZVTvd6BhcSYWnGd0jf8t5UmGea04qvilM,9806
|
|
140
143
|
flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
|
|
141
144
|
flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
|
|
142
145
|
flwr/common/inflatable_protobuf_utils.py,sha256=JtRqp-fV47goDM2y8JRQ7AmwwjeGaWexwoMWLcxX5gE,5056
|
|
143
|
-
flwr/common/inflatable_utils.py,sha256=
|
|
146
|
+
flwr/common/inflatable_utils.py,sha256=1ibsNLvjbXtRSWu9pjBbL__F6N3vyUM4dgJKperlwYs,19116
|
|
144
147
|
flwr/common/logger.py,sha256=kP7Cbs2WuYFK83Wsx5o9qc9mj8jDSyUK3BfRjvxhSTQ,13049
|
|
145
148
|
flwr/common/message.py,sha256=xAL7iZN5-n-xPQpgoSFvxNrzs8fmiiPfoU0DjNQEhRw,19953
|
|
146
149
|
flwr/common/object_ref.py,sha256=p3SfTeqo3Aj16SkB-vsnNn01zswOPdGNBitcbRnqmUk,9134
|
|
147
150
|
flwr/common/parameter.py,sha256=UVw6sOgehEFhFs4uUCMl2kfVq1PD6ncmWgPLMsZPKPE,2095
|
|
148
151
|
flwr/common/pyproject.py,sha256=2SU6yJW7059SbMXgzjOdK1GZRWO6AixDH7BmdxbMvHI,1386
|
|
149
152
|
flwr/common/record/__init__.py,sha256=cNGccdDoxttqgnUgyKRIqLWULjW-NaSmOufVxtXq-sw,1197
|
|
150
|
-
flwr/common/record/array.py,sha256=
|
|
153
|
+
flwr/common/record/array.py,sha256=wI-2UmUXelxWAQJLV0n5I_G1453wpCebi5fn95Kn3FI,15077
|
|
151
154
|
flwr/common/record/arraychunk.py,sha256=gU5h6uP7H_06Z14wNixtwH2FvepQkl9FpALXg9qcbhM,1936
|
|
152
|
-
flwr/common/record/arrayrecord.py,sha256=
|
|
155
|
+
flwr/common/record/arrayrecord.py,sha256=HpNM9NmOoGhjuo5CfxrrjL3uJevpXZLkyq_wPhJW1No,18278
|
|
153
156
|
flwr/common/record/configrecord.py,sha256=G7U0q39kB0Kyi0zMxFmPxcVemL9NgwVS1qjvI4BRQuU,9763
|
|
154
157
|
flwr/common/record/conversion_utils.py,sha256=wbNCzy7oAqaA3-arhls_EqRZYXRC4YrWIoE-Gy82fJ0,1191
|
|
155
158
|
flwr/common/record/metricrecord.py,sha256=KOyJjJbvFV6IwBPbgm92FZ_0_hXpMHuwfCi1rh5Zddk,8954
|
|
@@ -160,21 +163,21 @@ flwr/common/retry_invoker.py,sha256=uQeDcgoTgmFwhJ0mkDE2eNz2acF9eShaqMOO5boGrPQ,
|
|
|
160
163
|
flwr/common/secure_aggregation/__init__.py,sha256=MgW6uHGhyFLBAYQqa1Vzs5n2Gc0d4yEw1_NmerFir70,731
|
|
161
164
|
flwr/common/secure_aggregation/crypto/__init__.py,sha256=5E4q4-Fw0CNz4tLah_QHj7m_rDeM4ucHcFlPWB_Na3Q,738
|
|
162
165
|
flwr/common/secure_aggregation/crypto/shamir.py,sha256=N8pPa5cEksowNoAqfFm5SP3IuxuVi9GGMa3JOtPniQY,3954
|
|
163
|
-
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=
|
|
166
|
+
flwr/common/secure_aggregation/crypto/symmetric_encryption.py,sha256=fc8h7ST3mSq4d0u89vAdcxSsfspdsmOpQRba0VBn3zg,2718
|
|
164
167
|
flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3mpDr33En8UmW9oJcxcS_6oh0,3013
|
|
165
168
|
flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
|
|
166
169
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
|
|
167
170
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
|
|
168
|
-
flwr/common/serde.py,sha256=
|
|
171
|
+
flwr/common/serde.py,sha256=WdEMQzZ3G3mBh8aAYNNQ8oKSahn9UaHtCwE-qt97EmE,22032
|
|
169
172
|
flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
|
|
170
173
|
flwr/common/telemetry.py,sha256=xfx3KLFQKy0Qx8P7MAsOQxr5J3sEAQF5Kr5J-4jPz-o,8859
|
|
171
|
-
flwr/common/typing.py,sha256=
|
|
174
|
+
flwr/common/typing.py,sha256=7tec-6Wa6ygwJl-NkXKgb3QehU9AvYn-IzNrGffli74,6986
|
|
172
175
|
flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
|
|
173
176
|
flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
|
|
174
177
|
flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
|
|
175
|
-
flwr/compat/client/app.py,sha256=
|
|
178
|
+
flwr/compat/client/app.py,sha256=d-BlxXzkabQq8f0w82k_pQf1hSuze7rIWbZFfjm6sUI,27129
|
|
176
179
|
flwr/compat/client/grpc_client/__init__.py,sha256=MDOckOODn-FJnkkFEfb2JO-2G97wrBr_TTqht-LhOcY,735
|
|
177
|
-
flwr/compat/client/grpc_client/connection.py,sha256=
|
|
180
|
+
flwr/compat/client/grpc_client/connection.py,sha256=h6Y9Gf6XFeKaowqM8aSYp8u5KC5T-tOiYfK1gCIGsns,9195
|
|
178
181
|
flwr/compat/common/__init__.py,sha256=OMnKw4ad0qYMSIA9LZRa2gOkhSOXwAZCpAHnBQE_hFc,746
|
|
179
182
|
flwr/compat/server/__init__.py,sha256=TGVSoOTuf5T5JHUVrK5wuorQF7L6Wvdem8B4uufvMJY,746
|
|
180
183
|
flwr/compat/server/app.py,sha256=l6G2T2uwBjoXO3bRuI5mAzazRQNtJHUkpCwXOigoM8Y,6485
|
|
@@ -188,22 +191,22 @@ flwr/proto/clientappio_pb2.py,sha256=vJjzwWydhg7LruK8cvRAeVQeHPsJztgdIW9nyiPBZF0
|
|
|
188
191
|
flwr/proto/clientappio_pb2.pyi,sha256=XbFvpZvvrS7QcH5AFXfpRGl4hQvhd3QdKO6x0oTlCCU,165
|
|
189
192
|
flwr/proto/clientappio_pb2_grpc.py,sha256=iobNROP0qvn5zddx7k-uIi_dJWP3T_BRp_kbKq086i8,17550
|
|
190
193
|
flwr/proto/clientappio_pb2_grpc.pyi,sha256=Ytf1O1ktKB0Vsuc3AWLIErGjIJYokzKYzi2uA7mdMeg,4785
|
|
191
|
-
flwr/proto/control_pb2.py,sha256=
|
|
192
|
-
flwr/proto/control_pb2.pyi,sha256=
|
|
193
|
-
flwr/proto/control_pb2_grpc.py,sha256=
|
|
194
|
-
flwr/proto/control_pb2_grpc.pyi,sha256=
|
|
194
|
+
flwr/proto/control_pb2.py,sha256=2qpywkFGFCkCyjAx9QF4w6VX5UeV7Oe6e82vjmK7e_k,7746
|
|
195
|
+
flwr/proto/control_pb2.pyi,sha256=NyYUnJh-rhP_NBZMhwauV4va2lwI-J6KQWamY8QiYm8,13484
|
|
196
|
+
flwr/proto/control_pb2_grpc.py,sha256=wLjMi8GNQ5VR7IbNdDbHC0A1QMzA_0CegBzaOO1dlo0,17152
|
|
197
|
+
flwr/proto/control_pb2_grpc.pyi,sha256=L1HGnIXWu0Q7WQ1ONWffaQ69jHtWQ6cyEUcxINL8_Uc,4801
|
|
195
198
|
flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
|
|
196
199
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
197
200
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
198
201
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
199
|
-
flwr/proto/fab_pb2.py,sha256=
|
|
200
|
-
flwr/proto/fab_pb2.pyi,sha256=
|
|
202
|
+
flwr/proto/fab_pb2.py,sha256=AQAUJmTt31Kq-lJQid3CJpQPrply2-OA_aSHokpVF84,2070
|
|
203
|
+
flwr/proto/fab_pb2.pyi,sha256=GOxeDi-UYzQVwIEzRk9YkzkriowmNdibZu3jMMtBPFo,3273
|
|
201
204
|
flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
202
205
|
flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
203
|
-
flwr/proto/fleet_pb2.py,sha256=
|
|
204
|
-
flwr/proto/fleet_pb2.pyi,sha256=
|
|
205
|
-
flwr/proto/fleet_pb2_grpc.py,sha256=
|
|
206
|
-
flwr/proto/fleet_pb2_grpc.pyi,sha256=
|
|
206
|
+
flwr/proto/fleet_pb2.py,sha256=Uyk6_j7T2UFMXSTHoXI17bfqmpFjQD8gqxTZLC_7eWQ,6234
|
|
207
|
+
flwr/proto/fleet_pb2.pyi,sha256=851WCN3UPzPQrlTAoDLhTsqucW4CYdQbpYmIEA91ZUs,9380
|
|
208
|
+
flwr/proto/fleet_pb2_grpc.py,sha256=GKBHMa6j__vpArCgALT_1p47FVuPurgpYDG7ZjFgjls,20853
|
|
209
|
+
flwr/proto/fleet_pb2_grpc.pyi,sha256=uO5EmcGdzw6VDsifmb5rCbs7FmyyOGs4bNfitFNONik,5773
|
|
207
210
|
flwr/proto/grpcadapter_pb2.py,sha256=PJ8DtfeV29g_y4Z3aNZlSZocLqSxeLmTsYCdOZDYCiE,1843
|
|
208
211
|
flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
|
|
209
212
|
flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
|
|
@@ -220,8 +223,8 @@ flwr/proto/message_pb2.py,sha256=giymevXYEUdpIO-3A0XKsmRabXW1xSz0sIo5oOlbQ8Y,519
|
|
|
220
223
|
flwr/proto/message_pb2.pyi,sha256=EzXZHy2mtabofrd_ZgKSI6M4QH-soIaRZIZBPwBGPv0,11260
|
|
221
224
|
flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
222
225
|
flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
223
|
-
flwr/proto/node_pb2.py,sha256=
|
|
224
|
-
flwr/proto/node_pb2.pyi,sha256=
|
|
226
|
+
flwr/proto/node_pb2.py,sha256=jrl_48OTF6WljhMtQEaEPJaRgaCDiTD0lpqiQRU84Ps,1756
|
|
227
|
+
flwr/proto/node_pb2.pyi,sha256=6dO8qLMX51tcS6mv5ez3WzRcY3I0oSNE7-VzKbrqYms,3832
|
|
225
228
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
226
229
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
227
230
|
flwr/proto/recorddict_pb2.py,sha256=eVkcnxMTFa3rvknRNiFuJ8z8xxPqgw7bV04aFiTe1j4,5290
|
|
@@ -246,7 +249,7 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
|
|
|
246
249
|
flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
|
|
247
250
|
flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
248
251
|
flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
|
|
249
|
-
flwr/server/app.py,sha256=
|
|
252
|
+
flwr/server/app.py,sha256=vnRG6PxZYOqi6VKbDxD0wRaDoNq2Ip3TYV3HjDew1I0,30940
|
|
250
253
|
flwr/server/client_manager.py,sha256=5jCGavVli7XdupvWWo7ru3PdFTlRU8IGvHFSSoUVLRs,6227
|
|
251
254
|
flwr/server/client_proxy.py,sha256=sv0E9AldBYOvc3pusqFh-GnyreeMfsXQ1cuTtxTq_wY,2399
|
|
252
255
|
flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
|
|
@@ -295,47 +298,47 @@ flwr/server/strategy/strategy.py,sha256=n4r52i5gK4KGToZvcJUeWuEif1tuI0HZUT3YJPTC
|
|
|
295
298
|
flwr/server/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
|
296
299
|
flwr/server/superlink/fleet/__init__.py,sha256=Uiwr33yfW_eL-pEfj80c_JUhIKRkCPsN1JSs2v4aglU,711
|
|
297
300
|
flwr/server/superlink/fleet/grpc_adapter/__init__.py,sha256=fUu1V63YrzjxAOZnBJx99WjuD4Mro7dJIFH-1V4NLV8,742
|
|
298
|
-
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=
|
|
301
|
+
flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py,sha256=1XGkP6DKEKf-GehK8lGhPIACmHz4wsbOXx9wLaxaj44,5527
|
|
299
302
|
flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=dOM49q1b9MrtUr5jldjEnQ38NhcUyYs-zC3gsJb1TtI,735
|
|
300
303
|
flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=UKEp-3YBaTvNt7vKZW7KLgK5xsAiO7jxU-omG7CaO_s,6021
|
|
301
304
|
flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O9SRAwIvfiroo8mPmqUc2EZc,6485
|
|
302
305
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
|
|
303
306
|
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
|
|
304
307
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
|
|
305
|
-
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=
|
|
306
|
-
flwr/server/superlink/fleet/grpc_rere/
|
|
308
|
+
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=0zGUnRVJp06YLtI-G1-3tPQg3K-fcIASixJlYMaz8qg,12561
|
|
309
|
+
flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py,sha256=Q1t2cGLPrp_jw0_x3BZTc-SxeLP6BzRaEJZQFH075dA,5641
|
|
307
310
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
|
|
308
|
-
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=
|
|
311
|
+
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=kI32sOH6hhYjCadVttiwEPVDhQ0XquAPOjjr63svomw,10225
|
|
309
312
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
|
|
310
|
-
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=
|
|
313
|
+
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=FK-xehmTfOBNjOLSeTYv-YDeyPvkiQI4UQhbwyYWt60,9616
|
|
311
314
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
|
|
312
315
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
|
|
313
|
-
flwr/server/superlink/fleet/vce/backend/backend.py,sha256
|
|
314
|
-
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=
|
|
315
|
-
flwr/server/superlink/fleet/vce/vce_api.py,sha256=
|
|
316
|
+
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=cSrHZ5SjCCvy4vI0pgsyjtx3cDMuMQve8KcKkK-dWWo,2196
|
|
317
|
+
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=cBZYTmfiAsb1HmVUmOQXYLU-UJmJTFWkj1wW4RYRDuc,7218
|
|
318
|
+
flwr/server/superlink/fleet/vce/vce_api.py,sha256=7dJdxRjXttXfZSflZHd-TwX9278ZzrdJxmmWbRiEH_I,13389
|
|
316
319
|
flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
|
|
317
|
-
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=
|
|
318
|
-
flwr/server/superlink/linkstate/linkstate.py,sha256=
|
|
319
|
-
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=
|
|
320
|
-
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=
|
|
321
|
-
flwr/server/superlink/linkstate/utils.py,sha256=
|
|
320
|
+
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=MXzR3L3GQm6nfdzgsXn-vA6xf_pTtdB1gEfdkDCNgXM,31964
|
|
321
|
+
flwr/server/superlink/linkstate/linkstate.py,sha256=DabTgFFissJhT_MCPiluz5eFrS3c412q8FnRqQrAidY,15945
|
|
322
|
+
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=KVBpc8UxVrJCQ7IkOjVZVWb-kqWx08AGVi7qXzZS190,2126
|
|
323
|
+
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=QTD1v8RwymNV1lokPlnrzXyjzfVwoK7dKKcfpTiEryE,47609
|
|
324
|
+
flwr/server/superlink/linkstate/utils.py,sha256=ZtyqSo4HzGrHXW3Wn_4irYMpIiq4onNI2XCIVOOJmJM,13971
|
|
322
325
|
flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
|
|
323
326
|
flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=-I7kBbr4w4ZVYwBZoAIle-xHKthFnZrsVfxa6WR8uxA,2310
|
|
324
|
-
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=
|
|
327
|
+
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=3N1_7wKFzif1e3mBZuzzdORPaaN9Y5F-JrpS7mI3bSM,20116
|
|
325
328
|
flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
|
|
326
329
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=VqWKxjpd4bCgPFKsgtIZPk9YcG0kc1EEmr5k20EKty4,2205
|
|
327
|
-
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=
|
|
330
|
+
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=xX-QnSvAL3kp4JKnUKmDSPnR9iD1eDtJL4JfsZx2ua8,10003
|
|
328
331
|
flwr/server/superlink/utils.py,sha256=zXmyU2o535b9dgz-TvFklzfuQk4irNnMtiK8vT4Dm1c,2454
|
|
329
332
|
flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
|
|
330
333
|
flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
|
|
331
334
|
flwr/server/utils/tensorboard.py,sha256=3z3MeF0cu_U6ghNgRd0UQ5bunyDQKxCLpIpEdGMoCJ0,5466
|
|
332
|
-
flwr/server/utils/validator.py,sha256=
|
|
335
|
+
flwr/server/utils/validator.py,sha256=ZDHWtDa2yFzicfUStIIzno8AZEeTCwERjBbuv_StAMs,3638
|
|
333
336
|
flwr/server/workflow/__init__.py,sha256=N8G_xCBVrlV39Eov56bwImKMUTsqsaEoTCFYIQ0q8Bg,902
|
|
334
337
|
flwr/server/workflow/constant.py,sha256=4t2MTvOJUlByJfuD9yZjl8Xn5SwBJQDBi15DphztXe8,1082
|
|
335
338
|
flwr/server/workflow/default_workflows.py,sha256=RlD26dXbSksY-23f3ZspnN1YU1DOhDYOchMTEQvqFrM,13900
|
|
336
339
|
flwr/server/workflow/secure_aggregation/__init__.py,sha256=vGkycLb65CxdaMkKsANxQE6AS4urfZKvwcS3r1Vln_c,880
|
|
337
340
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=b_pKk7gmbahwyj0ftOOLXvu-AMtRHEc82N9PJTEO8dc,5839
|
|
338
|
-
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=
|
|
341
|
+
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=SqAIIOsETxay-SCwGnhOUO3dkxanQaqdZD2Ex7M-wvE,29513
|
|
339
342
|
flwr/serverapp/__init__.py,sha256=ZujKNXULwhWYQhFnxOOT5Wi9MRq2JCWFhAAj7ouiQ78,884
|
|
340
343
|
flwr/serverapp/exception.py,sha256=5cuH-2AafvihzosWDdDjuMmHdDqZ1XxHvCqZXNBVklw,1334
|
|
341
344
|
flwr/serverapp/strategy/__init__.py,sha256=dezK2TKSffjjBVXW18ATRxJLTuQ7I2M1dPuNi5y-_6c,1968
|
|
@@ -363,16 +366,16 @@ flwr/simulation/__init__.py,sha256=Gg6OsP1Z-ixc3-xxzvl7j7rz2Fijy9rzyEPpxgAQCeM,1
|
|
|
363
366
|
flwr/simulation/app.py,sha256=b_bDyZFwBf2zpKs37Vmd5cFJSzDRE0fL-8uqA0UkAv4,10393
|
|
364
367
|
flwr/simulation/legacy_app.py,sha256=nMISQqW0otJL1-2Kfd94O6BLlGS2IEmEPKTM2WGKrIs,15861
|
|
365
368
|
flwr/simulation/ray_transport/__init__.py,sha256=ogd-0AMv2U-wBZ1r3sHWaDIOIrVqr88Xi6C8o4Dviy0,734
|
|
366
|
-
flwr/simulation/ray_transport/ray_actor.py,sha256=
|
|
367
|
-
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=
|
|
369
|
+
flwr/simulation/ray_transport/ray_actor.py,sha256=z8XB_Pq9k5FrEUaBFpU_Oi0ATpSr5YCGBvnAGjb91nM,19150
|
|
370
|
+
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=eiQ75U-w82HDS728drEejo4ueJL-ZVLs8bZxuLcWKxU,7509
|
|
368
371
|
flwr/simulation/ray_transport/utils.py,sha256=KrexpWYCF-dAF3UHc9yDbPQWO-ahMT-BbD8nURLgiHk,2393
|
|
369
|
-
flwr/simulation/run_simulation.py,sha256=
|
|
372
|
+
flwr/simulation/run_simulation.py,sha256=VwCIEJx0vVRhAm0Tt-0VJ74PJjY5tUkoUz6bIEKf004,20726
|
|
370
373
|
flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
|
|
371
374
|
flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
|
|
372
375
|
flwr/supercore/app_utils.py,sha256=K76Zt6R670b1hUmxOsNc1WUCVYvF7lejXPcCO9K0Q0g,1753
|
|
373
376
|
flwr/supercore/cli/__init__.py,sha256=EDl2aO-fuQfxSbL-T1W9RAfA2N0hpWHmqX_GSwblJbQ,845
|
|
374
377
|
flwr/supercore/cli/flower_superexec.py,sha256=JtqYrEWVu3BxLkjavsdohTOwvMwzuFqWP5j4Mo9dqsk,6155
|
|
375
|
-
flwr/supercore/constant.py,sha256=
|
|
378
|
+
flwr/supercore/constant.py,sha256=LZiryorWpCNvry55EiQinPHazPVhIQHmxdSQMaPu_R4,1374
|
|
376
379
|
flwr/supercore/corestate/__init__.py,sha256=Vau6-L_JG5QzNqtCTa9xCKGGljc09wY8avZmIjSJemg,774
|
|
377
380
|
flwr/supercore/corestate/corestate.py,sha256=rDAWWeG5DcpCyQso9Z3RhwL4zr2IroPlRMcDzqoSu8s,2328
|
|
378
381
|
flwr/supercore/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
|
|
@@ -385,10 +388,15 @@ flwr/supercore/grpc_health/simple_health_servicer.py,sha256=C5QN_cR_VBqbhva1eP8z
|
|
|
385
388
|
flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
|
|
386
389
|
flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
|
|
387
390
|
flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
|
|
388
|
-
flwr/supercore/object_store/in_memory_object_store.py,sha256=
|
|
391
|
+
flwr/supercore/object_store/in_memory_object_store.py,sha256=SovEdiW4xAPsEeOKIzdaGAJ1L4loCT3fiwn592jtOUA,9353
|
|
389
392
|
flwr/supercore/object_store/object_store.py,sha256=J-rI3X7ET-F6dqOyM-UfHKCCQtPJ_EnYW62H_1txts0,5252
|
|
390
|
-
flwr/supercore/object_store/object_store_factory.py,sha256=
|
|
393
|
+
flwr/supercore/object_store/object_store_factory.py,sha256=vOj60FXhiJGzZeVNQkgLyAj098vNvpMDqu5HC3kP2hc,2354
|
|
394
|
+
flwr/supercore/object_store/sqlite_object_store.py,sha256=cL0e2I6PkLhWTpXiKFbT7GwPNlZcCd496Dft8KWkBUg,10315
|
|
391
395
|
flwr/supercore/object_store/utils.py,sha256=DcPbrb9PenloAPoQRiKiXX9DrDfpXcSyY0cZpgn4PeQ,1680
|
|
396
|
+
flwr/supercore/primitives/__init__.py,sha256=Tx8GOjnmMo8Y74RsDGrMpfr-E0Nl8dcUDF784_ge6F8,745
|
|
397
|
+
flwr/supercore/primitives/asymmetric.py,sha256=wpO0o0G_vStRknFitw2SqyIBSzaBfuXfMc44u-UcxTs,3774
|
|
398
|
+
flwr/supercore/primitives/asymmetric_ed25519.py,sha256=R8ua4NXknm6-2GyR3E4lF_uHexWhtsYi7EIKbzapOVc,4609
|
|
399
|
+
flwr/supercore/sqlite_mixin.py,sha256=_oVI4cXZ1cV42RtaBJ2gzT2HvMwwsW-e8jBAgrzpWNo,5072
|
|
392
400
|
flwr/supercore/superexec/__init__.py,sha256=XKX208hZ6a9gZ4KT9kMqfpCtp_8VGxekzKFfHSu2esQ,707
|
|
393
401
|
flwr/supercore/superexec/plugin/__init__.py,sha256=GNwq8uNdE8RB7ywEFRAvKjLFzgS3YXgz39-HBGsemWw,1035
|
|
394
402
|
flwr/supercore/superexec/plugin/base_exec_plugin.py,sha256=fL-Ufc9Dp56OhWOzNSJUc7HumbkuSDYqZKwde2opG4g,2074
|
|
@@ -397,32 +405,35 @@ flwr/supercore/superexec/plugin/exec_plugin.py,sha256=4WtCQ4bsuFRlfCbg91ZcPAsX8h
|
|
|
397
405
|
flwr/supercore/superexec/plugin/serverapp_exec_plugin.py,sha256=IwRzdPV-cSKwrP2krGh0De4IkAuxsmgK0WU6J-2GXqM,1035
|
|
398
406
|
flwr/supercore/superexec/plugin/simulation_exec_plugin.py,sha256=upn5zE-YKkl_jTw8RzmeyQ58PU_UAlQ7CqnBXXdng8I,1060
|
|
399
407
|
flwr/supercore/superexec/run_superexec.py,sha256=JiwKq9s_WPpk0S9MSi1lIgMZU120NOZLf4GlObHzI_k,7217
|
|
400
|
-
flwr/supercore/utils.py,sha256=
|
|
408
|
+
flwr/supercore/utils.py,sha256=KOvqGhRZ1if9AEg_eb0klwp7_smXkTwwGhAUpeGORWA,1841
|
|
401
409
|
flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
|
402
410
|
flwr/superlink/artifact_provider/__init__.py,sha256=pgZEcVPKRE874LSu3cgy0HbwSJBIpVy_HxQOmne4PAs,810
|
|
403
411
|
flwr/superlink/artifact_provider/artifact_provider.py,sha256=Gnlg2M2SOqCruji2B0U3ov68NJWKin9scmnWJTiSnNA,1267
|
|
412
|
+
flwr/superlink/auth_plugin/__init__.py,sha256=ApYBHnDmtv5gVrnxdFq97zC58O1icqHogK2Dz6o8DVI,1000
|
|
413
|
+
flwr/superlink/auth_plugin/auth_plugin.py,sha256=mKaR2HanhKHmVrcvGqTUv47ut458QgqVU6enU4myB7Y,3038
|
|
414
|
+
flwr/superlink/auth_plugin/noop_auth_plugin.py,sha256=BQ1v1jFZen7AHh6Gwr9arElW3e9aAAKgOO4zKikbd_4,3044
|
|
404
415
|
flwr/superlink/servicer/__init__.py,sha256=ZC-kILcUGeh6IxJsfu24cTzUqIGXmQfEKsGfhsnhBpM,717
|
|
405
416
|
flwr/superlink/servicer/control/__init__.py,sha256=qhUTMt_Mg4lxslCJYn5hDSrA-lXf5ya3617BT8kR-2Y,803
|
|
406
|
-
flwr/superlink/servicer/control/
|
|
407
|
-
flwr/superlink/servicer/control/
|
|
417
|
+
flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=Tbi4WVfWlNsOO-NNbe9iLdYp0thkO5xisi5O8ebzuCs,6252
|
|
418
|
+
flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=5uBl6VcJlUOgCF0d4kmsmJc1Rs1qxyouaZv0-uH2axs,5969
|
|
419
|
+
flwr/superlink/servicer/control/control_grpc.py,sha256=MRCaX4I2a5ogjKmhtFs6Mj-VdWemxL2h3gU9QbQmvCA,4183
|
|
408
420
|
flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
|
|
409
|
-
flwr/superlink/servicer/control/control_servicer.py,sha256=
|
|
410
|
-
flwr/superlink/servicer/control/control_user_auth_interceptor.py,sha256=9Aqhrt_UX80FXbIQVXUrqDHs5rD5CA7vEn0Bh-zPiYU,6232
|
|
421
|
+
flwr/superlink/servicer/control/control_servicer.py,sha256=93-lZ2pSjbpod-zhu_5ZSOK2ZZVTiBT-0mzl53pFlLw,19454
|
|
411
422
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
|
412
423
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
|
413
|
-
flwr/supernode/cli/flower_supernode.py,sha256=
|
|
424
|
+
flwr/supernode/cli/flower_supernode.py,sha256=3XJ_VRGSiQIwIcDp62B3J7aFvKQyGRzTGiq9JMXFF8Y,8629
|
|
414
425
|
flwr/supernode/cli/flwr_clientapp.py,sha256=W3tAyqSfeHbPhqBC4Pfo9bsyFdkBKPqdKlhGmeUKwKg,3173
|
|
415
426
|
flwr/supernode/nodestate/__init__.py,sha256=CyLLObbmmVgfRO88UCM0VMait1dL57mUauUDfuSHsbU,976
|
|
416
427
|
flwr/supernode/nodestate/in_memory_nodestate.py,sha256=rr_tg7YXhf_seYFipSB59TAfheKPratx3rrvHUOJ80g,7343
|
|
417
428
|
flwr/supernode/nodestate/nodestate.py,sha256=jCOewZyctecMxsM0-_-pQwef9P3O5QjnKCgCGyx2PK4,5047
|
|
418
429
|
flwr/supernode/nodestate/nodestate_factory.py,sha256=UYTDCcwK_baHUmkzkJDxL0UEqvtTfOMlQRrROMCd0Xo,1430
|
|
419
430
|
flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1qioxu4,718
|
|
420
|
-
flwr/supernode/runtime/run_clientapp.py,sha256=
|
|
431
|
+
flwr/supernode/runtime/run_clientapp.py,sha256=BuaAKTzRuFmNX-IJky3kJzoWMmZkz9joHodbz_wmgpA,8771
|
|
421
432
|
flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
|
|
422
433
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
|
|
423
|
-
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=
|
|
424
|
-
flwr/supernode/start_client_internal.py,sha256=
|
|
425
|
-
flwr-1.
|
|
426
|
-
flwr-1.
|
|
427
|
-
flwr-1.
|
|
428
|
-
flwr-1.
|
|
434
|
+
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=ZvKosLV7GN1_fOF-tOmhqFQysYQywCysRc-m23DVIWA,10265
|
|
435
|
+
flwr/supernode/start_client_internal.py,sha256=opgc3fQPNbCRKQJ39NNYHWsygx6WDsc-n_1t6nvRmdc,21317
|
|
436
|
+
flwr-1.23.0.dist-info/METADATA,sha256=fGZnu4ZuJlYvwbYTIRZ7eizBKddPg8PFSDjWuHpULYk,14539
|
|
437
|
+
flwr-1.23.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
438
|
+
flwr-1.23.0.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
|
|
439
|
+
flwr-1.23.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."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|