flwr-nightly 1.9.0.dev20240416__py3-none-any.whl → 1.9.0.dev20240420__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

Files changed (36) hide show
  1. flwr/cli/{flower_toml.py → config_utils.py} +40 -7
  2. flwr/cli/new/new.py +9 -5
  3. flwr/cli/new/templates/app/.gitignore.tpl +160 -0
  4. flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +56 -0
  5. flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +18 -0
  6. flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +4 -0
  7. flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +4 -0
  8. flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +4 -0
  9. flwr/cli/run/run.py +2 -2
  10. flwr/client/__init__.py +2 -0
  11. flwr/client/app.py +7 -53
  12. flwr/client/grpc_client/connection.py +2 -1
  13. flwr/client/grpc_rere_client/connection.py +16 -2
  14. flwr/client/rest_client/connection.py +87 -168
  15. flwr/client/supernode/__init__.py +22 -0
  16. flwr/client/supernode/app.py +107 -0
  17. flwr/common/record/recordset.py +67 -28
  18. flwr/common/telemetry.py +4 -0
  19. flwr/server/app.py +5 -5
  20. flwr/server/compat/app_utils.py +1 -1
  21. flwr/server/compat/driver_client_proxy.py +4 -2
  22. flwr/server/driver/__init__.py +0 -2
  23. flwr/server/driver/abc_driver.py +140 -0
  24. flwr/server/driver/driver.py +124 -21
  25. flwr/server/superlink/driver/driver_servicer.py +1 -1
  26. flwr/server/superlink/fleet/message_handler/message_handler.py +4 -1
  27. flwr/server/superlink/state/in_memory_state.py +13 -4
  28. flwr/server/superlink/state/sqlite_state.py +17 -5
  29. flwr/server/superlink/state/state.py +21 -3
  30. {flwr_nightly-1.9.0.dev20240416.dist-info → flwr_nightly-1.9.0.dev20240420.dist-info}/METADATA +1 -1
  31. {flwr_nightly-1.9.0.dev20240416.dist-info → flwr_nightly-1.9.0.dev20240420.dist-info}/RECORD +34 -32
  32. {flwr_nightly-1.9.0.dev20240416.dist-info → flwr_nightly-1.9.0.dev20240420.dist-info}/entry_points.txt +1 -0
  33. flwr/cli/new/templates/app/flower.toml.tpl +0 -13
  34. flwr/server/driver/grpc_driver.py +0 -129
  35. {flwr_nightly-1.9.0.dev20240416.dist-info → flwr_nightly-1.9.0.dev20240420.dist-info}/LICENSE +0 -0
  36. {flwr_nightly-1.9.0.dev20240416.dist-info → flwr_nightly-1.9.0.dev20240420.dist-info}/WHEEL +0 -0
@@ -1,38 +1,38 @@
1
1
  flwr/__init__.py,sha256=VmBWedrCxqmt4QvUHBLqyVEH6p7zaFMD_oCHerXHSVw,937
2
2
  flwr/cli/__init__.py,sha256=cZJVgozlkC6Ni2Hd_FAIrqefrkCGOV18fikToq-6iLw,720
3
3
  flwr/cli/app.py,sha256=38thPnMydBmNAxNE9mz4By-KdRUhJfoUgeDuAxMYF_U,1095
4
+ flwr/cli/config_utils.py,sha256=1wTPQqOU2fKeU4FP5KyG0xMa0F-qy8x1m2WvztPORb4,5597
4
5
  flwr/cli/example.py,sha256=1bGDYll3BXQY2kRqSN-oICqS5n1b9m0g0RvXTopXHl4,2215
5
- flwr/cli/flower_toml.py,sha256=gypY4zOe6Mx_Xzz5vsSzGRppWBaCnipiksBTrox_r3k,4675
6
6
  flwr/cli/new/__init__.py,sha256=cQzK1WH4JP2awef1t2UQ2xjl1agVEz9rwutV18SWV1k,789
7
- flwr/cli/new/new.py,sha256=gxl4j0b9Ojsh5vcjmwPxEY4wrxDQg8JaLs7-Q61xvFM,5300
7
+ flwr/cli/new/new.py,sha256=OHTOpuHRqmafsoV_Hv1V1544mZz54Z0qDRRtMT3dR-M,5380
8
8
  flwr/cli/new/templates/__init__.py,sha256=4luU8RL-CK8JJCstQ_ON809W9bNTkY1l9zSaPKBkgwY,725
9
+ flwr/cli/new/templates/app/.gitignore.tpl,sha256=XixnHdyeMB2vwkGtGnwHqoWpH-9WChdyG0GXe57duhc,3078
9
10
  flwr/cli/new/templates/app/README.md.tpl,sha256=_qGtgpKYKoCJVjQnvlBMKvFs_1gzTcL908I3KJg0oAM,668
10
11
  flwr/cli/new/templates/app/__init__.py,sha256=DU7QMY7IhMQyuwm_tja66xU0KXTWQFqzfTqwg-_NJdE,729
11
12
  flwr/cli/new/templates/app/code/__init__.py,sha256=EM6vfvgAILKPaPn7H1wMV1Wi01WyZCP_Eg6NxD6oWg8,736
12
13
  flwr/cli/new/templates/app/code/__init__.py.tpl,sha256=olwrBeJemHNBWvjc6gJURloFRqW40dAy7FRQA5pDqHU,21
13
14
  flwr/cli/new/templates/app/code/client.numpy.py.tpl,sha256=mTh7Y_jOJrPUvDYHVJy4wJCnjXZV_q-jlDkB07U5GSk,521
14
15
  flwr/cli/new/templates/app/code/client.pytorch.py.tpl,sha256=671daPcdZaC4Z5k-dqmCovfb2_FShGmqfjwaR8y6EC8,1173
15
- flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=d6J5VM681d0j4hj1Duaj1WQyeFoyCiEZh4o4J8zH-_M,48
16
+ flwr/cli/new/templates/app/code/client.tensorflow.py.tpl,sha256=N9SbnI65r2K9FHV_wn4JSpmVeyYpD0qEMehbHcGm4t0,1911
16
17
  flwr/cli/new/templates/app/code/server.numpy.py.tpl,sha256=fRxrDXV7pB1aDhQUXMBmrCsC1zp0uKwsBxZBx1JzbHA,248
17
18
  flwr/cli/new/templates/app/code/server.pytorch.py.tpl,sha256=xtKvUivNMzgOcLSOtnjWouJzIFbXdUQVYMm27uwyJpI,594
18
- flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=d6J5VM681d0j4hj1Duaj1WQyeFoyCiEZh4o4J8zH-_M,48
19
+ flwr/cli/new/templates/app/code/server.tensorflow.py.tpl,sha256=GUGH8c_6cxgUB9obVJPaA4thxI7OVXsItyfQDsn9E5k,371
19
20
  flwr/cli/new/templates/app/code/task.pytorch.py.tpl,sha256=NvajdZN-eTyfdqKK0v2MrvWITXw9BjJ3Ri5c1haPJDs,3684
20
- flwr/cli/new/templates/app/flower.toml.tpl,sha256=gJ5MZ7zaiaVvIEt5X_kkU-SU2NmeXkAZ9NXJS00-Axw,269
21
- flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=00Qp7cQhOvW0Bx7j82mIP9BXT6D0ysbzqZHDEPoZQyU,390
22
- flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=A2AqU5lh2VBHOCX_S7rTMYZc5JmPqwEVIg9KsIjLgh8,459
23
- flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=vLmeOFCIvMVUoIDgGtLinAUQy6jKjqmgHKcuEqhVYkw,438
21
+ flwr/cli/new/templates/app/pyproject.numpy.toml.tpl,sha256=0oTH0lY7q-PpRV4HA5woxJ1eWIgZRFcFsHa7-1lULIQ,489
22
+ flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl,sha256=GYbMAFD90JBRvy8fJbLU7nDITD3sxHv1TncQrg6mjEE,558
23
+ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=7I8BYtE28cnc7ZiOlOp6_zeLsjLRlwa0Y4sjoP7r9VU,537
24
24
  flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
25
- flwr/cli/run/run.py,sha256=C7Yh-Y0f64PEabb9733jBKIhhOUFpcRmCZJIDtv-NG8,2329
25
+ flwr/cli/run/run.py,sha256=qxXgShEXHONx-Gjpl515HF60QzRA-Ygpj2sbl0bZUAA,2331
26
26
  flwr/cli/utils.py,sha256=33m5ELefA43VhJwtBHW5ntWkP7X5Tk_5A2s1OcaSBYg,4153
27
- flwr/client/__init__.py,sha256=futk_IdY_N1h8BTve4Iru51bxm7H1gv58ZPIXWi5XUA,1187
28
- flwr/client/app.py,sha256=B48cQa-kb_0WzdtufTXuaoEyrynGWMQCqxdUz_sAKek,26193
27
+ flwr/client/__init__.py,sha256=8LuIrd2GGWJXG2CFWihywicJtntIvCoPLssIUnHqZaA,1262
28
+ flwr/client/app.py,sha256=zs5yeFavIIX-407b25xLapVruprohKSB0Ckk0CjW1Vw,24670
29
29
  flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
30
30
  flwr/client/client_app.py,sha256=-Cs0084tLQUoBCeYZdG2KgU7cjp95_ZJ4MfjoaN4Fzk,8636
31
31
  flwr/client/dpfedavg_numpy_client.py,sha256=9Tnig4iml2J88HBKNahegjXjbfvIQyBtaIQaqjbeqsA,7435
32
32
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
33
- flwr/client/grpc_client/connection.py,sha256=w3Lble9-eCzNOR7fBUsVedVCK4ui9QPhK7i7Ew_a5Vk,8717
33
+ flwr/client/grpc_client/connection.py,sha256=7MfyR6hEq3u46wK3s0vP3eubFq19pKZJCG3EFw_i4T4,8775
34
34
  flwr/client/grpc_rere_client/__init__.py,sha256=avn6W_vHEM_yZEB1S7hCZgnTbXb6ZujqRP_vAzyXu-0,752
35
- flwr/client/grpc_rere_client/connection.py,sha256=JaQIQYUJnmZHfqrGBxYZmEtyC-rUdCCaK1HrMcOXEig,8560
35
+ flwr/client/grpc_rere_client/connection.py,sha256=IEGkM0MymZ1tyL6yAL4ic5ZpGy_zg9bJBVf5KCSL2iY,9052
36
36
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
37
37
  flwr/client/message_handler/__init__.py,sha256=abHvBRJJiiaAMNgeILQbMOa6h8WqMK2BcnvxwQZFpic,719
38
38
  flwr/client/message_handler/message_handler.py,sha256=ml_FlduAJ5pxO31n1tKRrWfQRSxkMgKLbwXXcRsNSos,6553
@@ -49,7 +49,9 @@ flwr/client/node_state.py,sha256=KTTs_l4I0jBM7IsSsbAGjhfL_yZC3QANbzyvyfZBRDM,177
49
49
  flwr/client/node_state_tests.py,sha256=gPwz0zf2iuDSa11jedkur_u3Xm7lokIDG5ALD2MCvSw,2195
50
50
  flwr/client/numpy_client.py,sha256=u76GWAdHmJM88Agm2EgLQSvO8Jnk225mJTk-_TmPjFE,10283
51
51
  flwr/client/rest_client/__init__.py,sha256=ThwOnkMdzxo_UuyTI47Q7y9oSpuTgNT2OuFvJCfuDiw,735
52
- flwr/client/rest_client/connection.py,sha256=rDLQlymPOZYT4cqOaw8sejlMhmlzyqJL-UrZqyWHv8s,14482
52
+ flwr/client/rest_client/connection.py,sha256=ZxTFVDXlONqKTX6uYgxshoEWqzqVcQ8QQ2hKS93oLM8,11302
53
+ flwr/client/supernode/__init__.py,sha256=D5swXxemuRbA2rB_T9B8LwJW-_PucXwmlFQQerwIUv0,793
54
+ flwr/client/supernode/app.py,sha256=JXRZ76JdyAkhfaEEqsMiONWVQ0bn8YqzZg9oHC4Qfko,3436
53
55
  flwr/client/typing.py,sha256=c9EvjlEjasxn1Wqx6bGl6Xg6vM1gMFfmXht-E2i5J-k,1006
54
56
  flwr/common/__init__.py,sha256=dHOptgKxna78CEQLD5Yu0QIsoSgpIIw5AhIUZCHDWAU,3721
55
57
  flwr/common/address.py,sha256=iTAN9jtmIGMrWFnx9XZQl45ZEtQJVZZLYPRBSNVARGI,1882
@@ -71,7 +73,7 @@ flwr/common/record/configsrecord.py,sha256=VKeFEYa6cneyStqQlUOaKj12by5ZI_NXYR25L
71
73
  flwr/common/record/conversion_utils.py,sha256=n3I3SI2P6hUjyxbWNc0QAch-SEhfMK6Hm-UUaplAlUc,1393
72
74
  flwr/common/record/metricsrecord.py,sha256=Yv99oRa3LzFgSfwl903S8sB8rAgr3Sv6i6ovW7pdHsA,3923
73
75
  flwr/common/record/parametersrecord.py,sha256=WSqtRrYvI-mRzkEwv5s-EG-yE5uizJ8zy9aczwRG-1E,4849
74
- flwr/common/record/recordset.py,sha256=o5UwLubotz1KE9HCoEIP5kK0f0dlIzpFpS1xeQvxo08,3016
76
+ flwr/common/record/recordset.py,sha256=o3cXGGEFYRqzO8AzYmFxf5cb4CZIkaw-_lSk4kfTg0Q,4553
75
77
  flwr/common/record/typeddict.py,sha256=2NW8JF27p1uNWaqDbJ7bMkItA5x4ygYT8aHrf8NaqnE,3879
76
78
  flwr/common/recordset_compat.py,sha256=BjxeuvlCaP94yIiKOyFFTRBUH_lprFWSLo8U8q3BDbs,13798
77
79
  flwr/common/retry_invoker.py,sha256=dQY5fPIKhy9OiFswZhLxA9fB455u-DYCvDVcFJmrPDk,11707
@@ -84,7 +86,7 @@ flwr/common/secure_aggregation/quantization.py,sha256=appui7GGrkRPsupF59TkapeV4N
84
86
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=Fh7-n6pgL4TUnHpNYXo8iW-n5cOGQgQa-c7RcU80tqQ,2183
85
87
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=87bNZX6CmQekj935R4u3m5hsaEkkfKtGSA-VG2c-O9w,3221
86
88
  flwr/common/serde.py,sha256=Yn83kbSf9vJndTa5ldL4DR_bL_wy_bD4lTlD3ZbB658,22250
87
- flwr/common/telemetry.py,sha256=JkFB6WBOskqAJfzSM-l6tQfRiSi2oiysClfg0-5T7NY,7782
89
+ flwr/common/telemetry.py,sha256=Q84hW6l6MCtD8sgQI4sUcp-N-zqAo607jyApeXC5RpM,7865
88
90
  flwr/common/typing.py,sha256=3Wu6Ol1Ja6Gb0WdlcXVEn1EHYJbc4oRRJA81vEegxBo,4382
89
91
  flwr/common/version.py,sha256=_RDSMGZPEuGKYViZuXPotDtXMvh4iyDH9XOCO4qtPO8,666
90
92
  flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
@@ -118,18 +120,18 @@ flwr/proto/transport_pb2_grpc.py,sha256=vLN3EHtx2aEEMCO4f1Upu-l27BPzd3-5pV-u8wPc
118
120
  flwr/proto/transport_pb2_grpc.pyi,sha256=AGXf8RiIiW2J5IKMlm_3qT3AzcDa4F3P5IqUjve_esA,766
119
121
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
122
  flwr/server/__init__.py,sha256=dNLbXIERZ6X9aA_Bit3R9AARwcaZZzEfDuFmEx8VVOE,1785
121
- flwr/server/app.py,sha256=8rQMxWg3RprQb_ttPK45TumhZPrk6w4EBACxWO4Na8Q,24302
123
+ flwr/server/app.py,sha256=FriloRrkDHTlB5G7EBn6sH4v5GhiYFf_ZhbdROgjKbY,24199
122
124
  flwr/server/client_manager.py,sha256=T8UDSRJBVD3fyIDI7NTAA-NA7GPrMNNgH2OAF54RRxE,6127
123
125
  flwr/server/client_proxy.py,sha256=4G-oTwhb45sfWLx2uZdcXD98IZwdTS6F88xe3akCdUg,2399
124
126
  flwr/server/compat/__init__.py,sha256=VxnJtJyOjNFQXMNi9hIuzNlZM5n0Hj1p3aq_Pm2udw4,892
125
127
  flwr/server/compat/app.py,sha256=3Skh76Rg80B4oME1dJOhZvn9eTfVmTNIQ0jCiZ6CzeQ,5271
126
- flwr/server/compat/app_utils.py,sha256=GGmGApka7J9wHY2tiU_ZDejNvtfW_CZ9NZtb8L30M90,3496
127
- flwr/server/compat/driver_client_proxy.py,sha256=QWLl5YJwI6NVADwjQGQJqkLtCfPNT-aRH0NF9yeGEnA,7344
128
+ flwr/server/compat/app_utils.py,sha256=S-M4sGIiZPXXgKFLjlbFP2yN7d-oIj6DaiJNPIZ2z3A,3503
129
+ flwr/server/compat/driver_client_proxy.py,sha256=XbiGCBGIyZbEaY4Ayu70DwOQHNCVOFBQOeRu8AxfGOw,7365
128
130
  flwr/server/compat/legacy_context.py,sha256=D2s7PvQoDnTexuRmf1uG9Von7GUj4Qqyr7qLklSlKAM,1766
129
131
  flwr/server/criterion.py,sha256=ypbAexbztzGUxNen9RCHF91QeqiEQix4t4Ih3E-42MM,1061
130
- flwr/server/driver/__init__.py,sha256=yYyVX1FcDiDFM6rw0-DSZpuRy0EoWRfG9puwlQUswFA,820
131
- flwr/server/driver/driver.py,sha256=AwAxgYRx-FI6NvI5ukmdGlEmQRyp5GZSElFnDZhelj8,10106
132
- flwr/server/driver/grpc_driver.py,sha256=D2n3_Es_DHFgQsq_TjYVEz8RYJJJYoe24E1vozaTFiE,4586
132
+ flwr/server/driver/__init__.py,sha256=TTW0bqKrbv8l2Nem2UbLsugW__ahkxULpRqA4eWpu98,766
133
+ flwr/server/driver/abc_driver.py,sha256=t9SSSDlo9wT_y2Nl7waGYMTm2VlkvK3_bOb7ggPPlho,5090
134
+ flwr/server/driver/driver.py,sha256=STP6X_uDKaK9yB5YqX1Ch4-xcCwaQPe260OhMsPsgiM,13928
133
135
  flwr/server/history.py,sha256=hDsoBaA4kUa6d1yvDVXuLluBqOBKSm0_fVDtUtYJkmg,5121
134
136
  flwr/server/run_serverapp.py,sha256=3hoXa57T4L1vOWVWPSSdZ_UyRO-uTwUIrhha6TJAXMg,5592
135
137
  flwr/server/server.py,sha256=UnBRlI6AGTj0nKeRtEQ3IalM3TJmggMKXhDyn8yKZNk,17664
@@ -162,7 +164,7 @@ flwr/server/strategy/strategy.py,sha256=g6VoIFogEviRub6G4QsKdIp6M_Ek6GhBhqcdNx5u
162
164
  flwr/server/superlink/__init__.py,sha256=8tHYCfodUlRD8PCP9fHgvu8cz5N31A2QoRVL0jDJ15E,707
163
165
  flwr/server/superlink/driver/__init__.py,sha256=STB1_DASVEg7Cu6L7VYxTzV7UMkgtBkFim09Z82Dh8I,712
164
166
  flwr/server/superlink/driver/driver_grpc.py,sha256=1qSGDs1k_OVPWxp2ofxvQgtYXExrMeC3N_rNPVWH65M,1932
165
- flwr/server/superlink/driver/driver_servicer.py,sha256=Cu6c7pohrqFy7KNMtNbaJGc-JW0UYSABRGJJJIyfPaA,4761
167
+ flwr/server/superlink/driver/driver_servicer.py,sha256=IKx3rC8s2193iCJxLEc_njndTtidkVM7Vk-RWjGngl0,4780
166
168
  flwr/server/superlink/fleet/__init__.py,sha256=C6GCSD5eP5Of6_dIeSe1jx9HnV0icsvWyQ5EKAUHJRU,711
167
169
  flwr/server/superlink/fleet/grpc_bidi/__init__.py,sha256=mgGJGjwT6VU7ovC1gdnnqttjyBPlNIcZnYRqx4K3IBQ,735
168
170
  flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py,sha256=57b3UL5-baGdLwgCtB0dCUTTSbmmfMAXcXV5bjPZNWQ,5993
@@ -172,7 +174,7 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=1QyBX5qcFPjMVlv7Trvn
172
174
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=bEJOMWbSlqkw-y5ZHtEXczhoSlAxErcRYffmTMQAV8M,758
173
175
  flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=YGn1IPpuX-6NDgaG1UbyREbI9iAyKDimZuNeWxbG6s0,3387
174
176
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=hEY0l61ojH8Iz30_K1btm1HJ6J49iZJSFUsVYqUTw3A,731
175
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=NfhM-xgIhKqcD2pOkZqwv-zbAB999uVYCjYPtWzo9u4,3473
177
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=lG3BkiONcikDVowK0An06V7p2SNkwGbWE5hfN2xlsZw,3622
176
178
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=VKDvDq5H8koOUztpmQacVzGJXPLEEkL1Vmolxt3mvnY,735
177
179
  flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=8gNziOjBA8ygTzfVPYiNkg_qxr-T822Q_Lbo9g2tVyk,7621
178
180
  flwr/server/superlink/fleet/vce/__init__.py,sha256=36MHKiefnJeyjwMQzVUK4m06Ojon3WDcwZGQsAcyVhQ,783
@@ -181,9 +183,9 @@ flwr/server/superlink/fleet/vce/backend/backend.py,sha256=LJsKl7oixVvptcG98Rd9ej
181
183
  flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=TaT2EpbVEsIY0EDzF8obadyZaSXjD38TFGdDPI-ytD0,6375
182
184
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=c2J2m6v1jDyuAhiBArdZNIk4cbiZNFJkpKlBJFEQq-c,12454
183
185
  flwr/server/superlink/state/__init__.py,sha256=ij-7Ms-hyordQdRmGQxY1-nVa4OhixJ0jr7_YDkys0s,1003
184
- flwr/server/superlink/state/in_memory_state.py,sha256=lZPoAwyZE0LcKgef8rFa5dzekIhs2q_TPGv7iddJNKI,9586
185
- flwr/server/superlink/state/sqlite_state.py,sha256=z2jF0UV0VMsVyVIpT_7v13ji6wuFJSmyNbYZhxwelbE,23985
186
- flwr/server/superlink/state/state.py,sha256=1cboTXmRGu3r4ebdNby-Ht3qVwAfLgc563YF6awvPSw,6058
186
+ flwr/server/superlink/state/in_memory_state.py,sha256=OXpTb7ER7fnI55cFmcux2cLN6U_ACYjmRHkhYVHW2Ww,10083
187
+ flwr/server/superlink/state/sqlite_state.py,sha256=xDyvtuInAsLq65czbqLrLOv4ec61XxH_FhW_Q2NXrgM,24580
188
+ flwr/server/superlink/state/state.py,sha256=AsORTtR5Y5sRpxKPG0iueWOvnY0uISXgpAsyPSMgZXY,6762
187
189
  flwr/server/superlink/state/state_factory.py,sha256=91cSB-KOAFM37z7T098WxTkVeKNaAZ_mTI75snn2_tk,1654
188
190
  flwr/server/superlink/state/utils.py,sha256=qhIjBu5_rqm9GLMB6QS5TIRrMDVs85lmY17BqZ1ccLk,2207
189
191
  flwr/server/typing.py,sha256=2zSG-KuDAgwFPuzgVjTLDaEqJ8gXXGqFR2RD-qIk730,913
@@ -203,8 +205,8 @@ flwr/simulation/ray_transport/ray_actor.py,sha256=_wv2eP7qxkCZ-6rMyYWnjLrGPBZRxj
203
205
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=oDu4sEPIOu39vrNi-fqDAe10xtNUXMO49bM2RWfRcyw,6738
204
206
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
205
207
  flwr/simulation/run_simulation.py,sha256=HiIH6aa_v56NfKQN5ZBd94NyVfaZNyFs43_kItYsQXU,15685
206
- flwr_nightly-1.9.0.dev20240416.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
207
- flwr_nightly-1.9.0.dev20240416.dist-info/METADATA,sha256=OJeC2fIcMuJ2PuYVGFMOZ7FzxDf4lQkX666xeoiEiow,15260
208
- flwr_nightly-1.9.0.dev20240416.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
209
- flwr_nightly-1.9.0.dev20240416.dist-info/entry_points.txt,sha256=utu2wybGyYJSTtsB2ktY_gmy-XtMFo9EFZdishX0zR4,320
210
- flwr_nightly-1.9.0.dev20240416.dist-info/RECORD,,
208
+ flwr_nightly-1.9.0.dev20240420.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
209
+ flwr_nightly-1.9.0.dev20240420.dist-info/METADATA,sha256=xxYZp-8KwhbZqeNsEFC-ngcjxMxaG-7IgMBw164-oBQ,15260
210
+ flwr_nightly-1.9.0.dev20240420.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
211
+ flwr_nightly-1.9.0.dev20240420.dist-info/entry_points.txt,sha256=DBrrf685V2W9NbbchQwvuqBEpj5ik8tMZNoZg_W2bZY,363
212
+ flwr_nightly-1.9.0.dev20240420.dist-info/RECORD,,
@@ -5,5 +5,6 @@ flower-fleet-api=flwr.server:run_fleet_api
5
5
  flower-server-app=flwr.server:run_server_app
6
6
  flower-simulation=flwr.simulation:run_simulation_from_cli
7
7
  flower-superlink=flwr.server:run_superlink
8
+ flower-supernode=flwr.client:run_supernode
8
9
  flwr=flwr.cli.app:app
9
10
 
@@ -1,13 +0,0 @@
1
- [project]
2
- name = "$project_name"
3
- version = "1.0.0"
4
- description = ""
5
- license = "Apache-2.0"
6
- authors = [
7
- "The Flower Authors <hello@flower.ai>",
8
- ]
9
- readme = "README.md"
10
-
11
- [flower.components]
12
- serverapp = "$project_name.server:app"
13
- clientapp = "$project_name.client:app"
@@ -1,129 +0,0 @@
1
- # Copyright 2023 Flower Labs GmbH. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # ==============================================================================
15
- """Flower driver service client."""
16
-
17
-
18
- from logging import DEBUG, ERROR, WARNING
19
- from typing import Optional
20
-
21
- import grpc
22
-
23
- from flwr.common import EventType, event
24
- from flwr.common.grpc import create_channel
25
- from flwr.common.logger import log
26
- from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
27
- CreateRunRequest,
28
- CreateRunResponse,
29
- GetNodesRequest,
30
- GetNodesResponse,
31
- PullTaskResRequest,
32
- PullTaskResResponse,
33
- PushTaskInsRequest,
34
- PushTaskInsResponse,
35
- )
36
- from flwr.proto.driver_pb2_grpc import DriverStub # pylint: disable=E0611
37
-
38
- DEFAULT_SERVER_ADDRESS_DRIVER = "[::]:9091"
39
-
40
- ERROR_MESSAGE_DRIVER_NOT_CONNECTED = """
41
- [Driver] Error: Not connected.
42
-
43
- Call `connect()` on the `GrpcDriver` instance before calling any of the other
44
- `GrpcDriver` methods.
45
- """
46
-
47
-
48
- class GrpcDriver:
49
- """`GrpcDriver` provides access to the gRPC Driver API/service."""
50
-
51
- def __init__(
52
- self,
53
- driver_service_address: str = DEFAULT_SERVER_ADDRESS_DRIVER,
54
- root_certificates: Optional[bytes] = None,
55
- ) -> None:
56
- self.driver_service_address = driver_service_address
57
- self.root_certificates = root_certificates
58
- self.channel: Optional[grpc.Channel] = None
59
- self.stub: Optional[DriverStub] = None
60
-
61
- def connect(self) -> None:
62
- """Connect to the Driver API."""
63
- event(EventType.DRIVER_CONNECT)
64
- if self.channel is not None or self.stub is not None:
65
- log(WARNING, "Already connected")
66
- return
67
- self.channel = create_channel(
68
- server_address=self.driver_service_address,
69
- insecure=(self.root_certificates is None),
70
- root_certificates=self.root_certificates,
71
- )
72
- self.stub = DriverStub(self.channel)
73
- log(DEBUG, "[Driver] Connected to %s", self.driver_service_address)
74
-
75
- def disconnect(self) -> None:
76
- """Disconnect from the Driver API."""
77
- event(EventType.DRIVER_DISCONNECT)
78
- if self.channel is None or self.stub is None:
79
- log(DEBUG, "Already disconnected")
80
- return
81
- channel = self.channel
82
- self.channel = None
83
- self.stub = None
84
- channel.close()
85
- log(DEBUG, "[Driver] Disconnected")
86
-
87
- def create_run(self, req: CreateRunRequest) -> CreateRunResponse:
88
- """Request for run ID."""
89
- # Check if channel is open
90
- if self.stub is None:
91
- log(ERROR, ERROR_MESSAGE_DRIVER_NOT_CONNECTED)
92
- raise ConnectionError("`GrpcDriver` instance not connected")
93
-
94
- # Call Driver API
95
- res: CreateRunResponse = self.stub.CreateRun(request=req)
96
- return res
97
-
98
- def get_nodes(self, req: GetNodesRequest) -> GetNodesResponse:
99
- """Get client IDs."""
100
- # Check if channel is open
101
- if self.stub is None:
102
- log(ERROR, ERROR_MESSAGE_DRIVER_NOT_CONNECTED)
103
- raise ConnectionError("`GrpcDriver` instance not connected")
104
-
105
- # Call gRPC Driver API
106
- res: GetNodesResponse = self.stub.GetNodes(request=req)
107
- return res
108
-
109
- def push_task_ins(self, req: PushTaskInsRequest) -> PushTaskInsResponse:
110
- """Schedule tasks."""
111
- # Check if channel is open
112
- if self.stub is None:
113
- log(ERROR, ERROR_MESSAGE_DRIVER_NOT_CONNECTED)
114
- raise ConnectionError("`GrpcDriver` instance not connected")
115
-
116
- # Call gRPC Driver API
117
- res: PushTaskInsResponse = self.stub.PushTaskIns(request=req)
118
- return res
119
-
120
- def pull_task_res(self, req: PullTaskResRequest) -> PullTaskResResponse:
121
- """Get task results."""
122
- # Check if channel is open
123
- if self.stub is None:
124
- log(ERROR, ERROR_MESSAGE_DRIVER_NOT_CONNECTED)
125
- raise ConnectionError("`GrpcDriver` instance not connected")
126
-
127
- # Call Driver API
128
- res: PullTaskResResponse = self.stub.PullTaskRes(request=req)
129
- return res