flwr 1.19.0__tar.gz → 1.20.0__tar.gz

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 (394) hide show
  1. {flwr-1.19.0 → flwr-1.20.0}/PKG-INFO +2 -1
  2. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/build.py +15 -5
  3. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/new.py +12 -4
  4. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +2 -0
  5. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/README.md.tpl +5 -0
  6. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +14 -3
  7. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +13 -1
  8. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +21 -2
  9. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +52 -0
  10. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +56 -0
  11. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +49 -0
  12. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +53 -0
  13. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +52 -0
  14. flwr-1.20.0/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +53 -0
  15. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/run/run.py +45 -38
  16. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/utils.py +12 -5
  17. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_adapter_client/connection.py +11 -4
  18. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_rere_client/connection.py +92 -117
  19. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/rest_client/connection.py +131 -164
  20. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/constant.py +3 -1
  21. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/exit/exit_code.py +16 -1
  22. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/grpc.py +12 -1
  23. flwr-1.19.0/py/flwr/common/inflatable_grpc_utils.py → flwr-1.20.0/py/flwr/common/inflatable_protobuf_utils.py +52 -10
  24. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/inflatable_utils.py +191 -24
  25. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/array.py +101 -22
  26. flwr-1.20.0/py/flwr/common/record/arraychunk.py +59 -0
  27. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/serde.py +0 -28
  28. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/client/app.py +14 -31
  29. flwr-1.20.0/py/flwr/proto/appio_pb2.py +43 -0
  30. flwr-1.19.0/py/flwr/proto/serverappio_pb2.pyi → flwr-1.20.0/py/flwr/proto/appio_pb2.pyi +45 -83
  31. flwr-1.20.0/py/flwr/proto/clientappio_pb2.py +38 -0
  32. flwr-1.20.0/py/flwr/proto/clientappio_pb2.pyi +54 -0
  33. flwr-1.20.0/py/flwr/proto/clientappio_pb2_grpc.py +376 -0
  34. flwr-1.20.0/py/flwr/proto/clientappio_pb2_grpc.pyi +147 -0
  35. flwr-1.20.0/py/flwr/proto/fleet_pb2.py +53 -0
  36. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/fleet_pb2.pyi +6 -36
  37. flwr-1.20.0/py/flwr/proto/run_pb2_grpc.py +4 -0
  38. flwr-1.20.0/py/flwr/proto/run_pb2_grpc.pyi +4 -0
  39. flwr-1.20.0/py/flwr/proto/serverappio_pb2.py +37 -0
  40. flwr-1.20.0/py/flwr/proto/serverappio_pb2.pyi +37 -0
  41. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/serverappio_pb2_grpc.py +39 -38
  42. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/serverappio_pb2_grpc.pyi +21 -20
  43. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/app.py +1 -1
  44. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/fleet_event_log_interceptor.py +4 -0
  45. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/grid/grpc_grid.py +91 -54
  46. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/serverapp/app.py +27 -17
  47. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +8 -0
  48. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +1 -1
  49. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -5
  50. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +10 -16
  51. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +1 -2
  52. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +1 -1
  53. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +35 -43
  54. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/simulation/simulationio_grpc.py +1 -1
  55. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
  56. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/utils.py +0 -35
  57. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/app.py +8 -0
  58. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/run_simulation.py +17 -0
  59. {flwr-1.19.0/py/flwr/server/superlink → flwr-1.20.0/py/flwr/supercore}/ffs/disk_ffs.py +1 -1
  60. flwr-1.20.0/py/flwr/supercore/grpc_health/__init__.py +22 -0
  61. flwr-1.20.0/py/flwr/supercore/grpc_health/simple_health_servicer.py +38 -0
  62. flwr-1.20.0/py/flwr/supercore/license_plugin/__init__.py +22 -0
  63. flwr-1.20.0/py/flwr/supercore/license_plugin/license_plugin.py +26 -0
  64. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supercore/object_store/in_memory_object_store.py +31 -31
  65. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supercore/object_store/object_store.py +20 -42
  66. flwr-1.20.0/py/flwr/supercore/object_store/utils.py +43 -0
  67. flwr-1.20.0/py/flwr/supercore/scheduler/__init__.py +22 -0
  68. flwr-1.20.0/py/flwr/supercore/scheduler/plugin.py +71 -0
  69. flwr-1.20.0/py/flwr/supercore/utils.py +32 -0
  70. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/deployment.py +1 -2
  71. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/exec_event_log_interceptor.py +4 -0
  72. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/exec_grpc.py +18 -2
  73. flwr-1.20.0/py/flwr/superexec/exec_license_interceptor.py +82 -0
  74. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/exec_servicer.py +10 -1
  75. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/exec_user_auth_interceptor.py +10 -2
  76. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/executor.py +1 -1
  77. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/simulation.py +1 -2
  78. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/cli/flower_supernode.py +0 -7
  79. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/cli/flwr_clientapp.py +10 -3
  80. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/nodestate/in_memory_nodestate.py +11 -2
  81. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/nodestate/nodestate.py +15 -0
  82. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/runtime/run_clientapp.py +110 -33
  83. flwr-1.20.0/py/flwr/supernode/scheduler/__init__.py +22 -0
  84. flwr-1.20.0/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py +49 -0
  85. flwr-1.20.0/py/flwr/supernode/servicer/clientappio/__init__.py +22 -0
  86. flwr-1.20.0/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +303 -0
  87. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/start_client_internal.py +202 -104
  88. {flwr-1.19.0 → flwr-1.20.0}/pyproject.toml +2 -1
  89. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -35
  90. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -39
  91. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -32
  92. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -36
  93. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -35
  94. flwr-1.19.0/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -36
  95. flwr-1.19.0/py/flwr/common/inflatable_rest_utils.py +0 -99
  96. flwr-1.19.0/py/flwr/proto/clientappio_pb2.py +0 -45
  97. flwr-1.19.0/py/flwr/proto/clientappio_pb2.pyi +0 -132
  98. flwr-1.19.0/py/flwr/proto/clientappio_pb2_grpc.py +0 -135
  99. flwr-1.19.0/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -53
  100. flwr-1.19.0/py/flwr/proto/fleet_pb2.py +0 -61
  101. flwr-1.19.0/py/flwr/proto/serverappio_pb2.py +0 -60
  102. flwr-1.19.0/py/flwr/supernode/servicer/clientappio/__init__.py +0 -24
  103. flwr-1.19.0/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -244
  104. {flwr-1.19.0 → flwr-1.20.0}/README.md +0 -0
  105. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/__init__.py +0 -0
  106. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/app/__init__.py +0 -0
  107. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/app/error.py +0 -0
  108. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/app/metadata.py +0 -0
  109. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/__init__.py +0 -0
  110. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/app.py +0 -0
  111. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  112. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  113. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  114. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/config_utils.py +0 -0
  115. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/constant.py +0 -0
  116. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/example.py +0 -0
  117. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/install.py +0 -0
  118. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/log.py +0 -0
  119. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/login/__init__.py +0 -0
  120. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/login/login.py +0 -0
  121. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/ls.py +0 -0
  122. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/__init__.py +0 -0
  123. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/__init__.py +0 -0
  124. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  125. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  126. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  127. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  128. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  129. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  130. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  131. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  132. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  133. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  134. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  135. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  136. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  137. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  138. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  139. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  140. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  141. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  142. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  143. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  144. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  145. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  146. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  147. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  148. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  149. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  150. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  151. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  152. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  153. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  154. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  155. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  156. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  157. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  158. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  159. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  160. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  161. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  162. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  163. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  164. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/run/__init__.py +0 -0
  165. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/cli/stop.py +0 -0
  166. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/__init__.py +0 -0
  167. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/client.py +0 -0
  168. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/client_app.py +0 -0
  169. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/clientapp/__init__.py +0 -0
  170. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/clientapp/utils.py +0 -0
  171. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  172. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  173. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  174. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  175. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  176. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/message_handler/__init__.py +0 -0
  177. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/message_handler/message_handler.py +0 -0
  178. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/__init__.py +0 -0
  179. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/centraldp_mods.py +0 -0
  180. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/comms_mods.py +0 -0
  181. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/localdp_mod.py +0 -0
  182. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  183. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  184. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  185. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/mod/utils.py +0 -0
  186. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/numpy_client.py +0 -0
  187. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/rest_client/__init__.py +0 -0
  188. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/run_info_store.py +0 -0
  189. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/client/typing.py +0 -0
  190. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/clientapp/__init__.py +0 -0
  191. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/__init__.py +0 -0
  192. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/address.py +0 -0
  193. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/args.py +0 -0
  194. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/auth_plugin/__init__.py +0 -0
  195. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  196. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/config.py +0 -0
  197. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/context.py +0 -0
  198. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/date.py +0 -0
  199. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/differential_privacy.py +0 -0
  200. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/differential_privacy_constants.py +0 -0
  201. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/dp.py +0 -0
  202. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  203. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  204. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/exit/__init__.py +0 -0
  205. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/exit/exit.py +0 -0
  206. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/exit_handlers.py +0 -0
  207. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/heartbeat.py +0 -0
  208. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/inflatable.py +0 -0
  209. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/logger.py +0 -0
  210. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/message.py +0 -0
  211. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/object_ref.py +0 -0
  212. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/parameter.py +0 -0
  213. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/pyproject.py +0 -0
  214. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/__init__.py +0 -0
  215. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/arrayrecord.py +0 -0
  216. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/configrecord.py +0 -0
  217. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/conversion_utils.py +0 -0
  218. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/metricrecord.py +0 -0
  219. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/recorddict.py +0 -0
  220. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/record/typeddict.py +0 -0
  221. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/recorddict_compat.py +0 -0
  222. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/retry_invoker.py +0 -0
  223. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  224. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  225. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  226. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  227. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  228. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  229. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  230. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  231. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/serde_utils.py +0 -0
  232. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/telemetry.py +0 -0
  233. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/typing.py +0 -0
  234. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/common/version.py +0 -0
  235. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/__init__.py +0 -0
  236. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/client/__init__.py +0 -0
  237. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  238. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  239. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/common/__init__.py +0 -0
  240. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/server/__init__.py +0 -0
  241. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/server/app.py +0 -0
  242. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/compat/simulation/__init__.py +0 -0
  243. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/__init__.py +0 -0
  244. /flwr-1.19.0/py/flwr/proto/error_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/appio_pb2_grpc.py +0 -0
  245. /flwr-1.19.0/py/flwr/proto/error_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  246. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/error_pb2.py +0 -0
  247. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/error_pb2.pyi +0 -0
  248. /flwr-1.19.0/py/flwr/proto/fab_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/error_pb2_grpc.py +0 -0
  249. /flwr-1.19.0/py/flwr/proto/fab_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  250. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/exec_pb2.py +0 -0
  251. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/exec_pb2.pyi +0 -0
  252. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/exec_pb2_grpc.py +0 -0
  253. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  254. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/fab_pb2.py +0 -0
  255. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/fab_pb2.pyi +0 -0
  256. /flwr-1.19.0/py/flwr/proto/heartbeat_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/fab_pb2_grpc.py +0 -0
  257. /flwr-1.19.0/py/flwr/proto/heartbeat_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  258. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  259. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  260. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  261. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  262. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  263. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  264. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/heartbeat_pb2.py +0 -0
  265. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  266. /flwr-1.19.0/py/flwr/proto/log_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  267. /flwr-1.19.0/py/flwr/proto/log_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  268. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/log_pb2.py +0 -0
  269. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/log_pb2.pyi +0 -0
  270. /flwr-1.19.0/py/flwr/proto/message_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/log_pb2_grpc.py +0 -0
  271. /flwr-1.19.0/py/flwr/proto/message_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  272. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/message_pb2.py +0 -0
  273. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/message_pb2.pyi +0 -0
  274. /flwr-1.19.0/py/flwr/proto/node_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/message_pb2_grpc.py +0 -0
  275. /flwr-1.19.0/py/flwr/proto/node_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  276. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/node_pb2.py +0 -0
  277. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/node_pb2.pyi +0 -0
  278. /flwr-1.19.0/py/flwr/proto/recorddict_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/node_pb2_grpc.py +0 -0
  279. /flwr-1.19.0/py/flwr/proto/recorddict_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  280. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/recorddict_pb2.py +0 -0
  281. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  282. /flwr-1.19.0/py/flwr/proto/run_pb2_grpc.py → /flwr-1.20.0/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  283. /flwr-1.19.0/py/flwr/proto/run_pb2_grpc.pyi → /flwr-1.20.0/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  284. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/run_pb2.py +0 -0
  285. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/run_pb2.pyi +0 -0
  286. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/simulationio_pb2.py +0 -0
  287. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  288. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  289. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  290. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/transport_pb2.py +0 -0
  291. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/transport_pb2.pyi +0 -0
  292. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  293. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  294. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/py.typed +0 -0
  295. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/__init__.py +0 -0
  296. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/client_manager.py +0 -0
  297. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/client_proxy.py +0 -0
  298. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/compat/__init__.py +0 -0
  299. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/compat/app.py +0 -0
  300. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/compat/app_utils.py +0 -0
  301. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  302. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/compat/legacy_context.py +0 -0
  303. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/criterion.py +0 -0
  304. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/grid/__init__.py +0 -0
  305. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/grid/grid.py +0 -0
  306. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/grid/inmemory_grid.py +0 -0
  307. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/history.py +0 -0
  308. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/run_serverapp.py +0 -0
  309. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/server.py +0 -0
  310. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/server_app.py +0 -0
  311. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/server_config.py +0 -0
  312. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/serverapp/__init__.py +0 -0
  313. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/serverapp_components.py +0 -0
  314. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/__init__.py +0 -0
  315. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/aggregate.py +0 -0
  316. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/bulyan.py +0 -0
  317. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  318. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  319. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  320. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  321. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  322. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedadagrad.py +0 -0
  323. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedadam.py +0 -0
  324. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedavg.py +0 -0
  325. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedavg_android.py +0 -0
  326. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedavgm.py +0 -0
  327. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedmedian.py +0 -0
  328. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedopt.py +0 -0
  329. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedprox.py +0 -0
  330. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  331. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  332. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  333. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  334. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/fedyogi.py +0 -0
  335. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/krum.py +0 -0
  336. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/qfedavg.py +0 -0
  337. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/strategy/strategy.py +0 -0
  338. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/__init__.py +0 -0
  339. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  340. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  341. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  342. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  343. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  344. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  345. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  346. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  347. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  348. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  349. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  350. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  351. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  352. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  353. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  354. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  355. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  356. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  357. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  358. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  359. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  360. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  361. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  362. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/typing.py +0 -0
  363. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/utils/__init__.py +0 -0
  364. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/utils/tensorboard.py +0 -0
  365. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/utils/validator.py +0 -0
  366. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/__init__.py +0 -0
  367. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/constant.py +0 -0
  368. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/default_workflows.py +0 -0
  369. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  370. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  371. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  372. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/serverapp/__init__.py +0 -0
  373. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/__init__.py +0 -0
  374. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/legacy_app.py +0 -0
  375. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  376. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  377. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  378. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/ray_transport/utils.py +0 -0
  379. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/simulation/simulationio_connection.py +0 -0
  380. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supercore/__init__.py +0 -0
  381. {flwr-1.19.0/py/flwr/server/superlink → flwr-1.20.0/py/flwr/supercore}/ffs/__init__.py +0 -0
  382. {flwr-1.19.0/py/flwr/server/superlink → flwr-1.20.0/py/flwr/supercore}/ffs/ffs.py +0 -0
  383. {flwr-1.19.0/py/flwr/server/superlink → flwr-1.20.0/py/flwr/supercore}/ffs/ffs_factory.py +0 -0
  384. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supercore/object_store/__init__.py +0 -0
  385. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  386. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/__init__.py +0 -0
  387. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superexec/app.py +0 -0
  388. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/superlink/__init__.py +0 -0
  389. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/__init__.py +0 -0
  390. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/cli/__init__.py +0 -0
  391. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/nodestate/__init__.py +0 -0
  392. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  393. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/runtime/__init__.py +0 -0
  394. {flwr-1.19.0 → flwr-1.20.0}/py/flwr/supernode/servicer/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr
3
- Version: 1.19.0
3
+ Version: 1.20.0
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -34,6 +34,7 @@ Provides-Extra: simulation
34
34
  Requires-Dist: click (<8.2.0)
35
35
  Requires-Dist: cryptography (>=44.0.1,<45.0.0)
36
36
  Requires-Dist: grpcio (>=1.62.3,<2.0.0,!=1.65.0)
37
+ Requires-Dist: grpcio-health-checking (>=1.62.3,<2.0.0)
37
38
  Requires-Dist: iterators (>=0.0.2,<0.0.3)
38
39
  Requires-Dist: numpy (>=1.26.0,<3.0.0)
39
40
  Requires-Dist: pathspec (>=0.12.1,<0.13.0)
@@ -25,7 +25,12 @@ import pathspec
25
25
  import tomli_w
26
26
  import typer
27
27
 
28
- from flwr.common.constant import FAB_ALLOWED_EXTENSIONS, FAB_DATE, FAB_HASH_TRUNCATION
28
+ from flwr.common.constant import (
29
+ FAB_ALLOWED_EXTENSIONS,
30
+ FAB_DATE,
31
+ FAB_HASH_TRUNCATION,
32
+ FAB_MAX_SIZE,
33
+ )
29
34
 
30
35
  from .config_utils import load as load_toml
31
36
  from .config_utils import load_and_validate
@@ -57,7 +62,7 @@ def build(
57
62
  Optional[Path],
58
63
  typer.Option(help="Path of the Flower App to bundle into a FAB"),
59
64
  ] = None,
60
- ) -> tuple[str, str]:
65
+ ) -> None:
61
66
  """Build a Flower App into a Flower App Bundle (FAB).
62
67
 
63
68
  You can run ``flwr build`` without any arguments to bundle the app located in the
@@ -119,8 +124,6 @@ def build(
119
124
  f"🎊 Successfully built {fab_filename}", fg=typer.colors.GREEN, bold=True
120
125
  )
121
126
 
122
- return fab_filename, fab_hash
123
-
124
127
 
125
128
  def build_fab(app: Path) -> tuple[bytes, str, dict[str, Any]]:
126
129
  """Build a FAB in memory and return the bytes, hash, and config.
@@ -181,7 +184,7 @@ def build_fab(app: Path) -> tuple[bytes, str, dict[str, Any]]:
181
184
  # Read the file content manually
182
185
  file_contents = file_path.read_bytes()
183
186
 
184
- archive_path = str(file_path.relative_to(app))
187
+ archive_path = str(file_path.relative_to(app)).replace("\\", "/")
185
188
  write_to_zip(fab_file, archive_path, file_contents)
186
189
 
187
190
  # Calculate file info
@@ -193,6 +196,13 @@ def build_fab(app: Path) -> tuple[bytes, str, dict[str, Any]]:
193
196
  write_to_zip(fab_file, ".info/CONTENT", list_file_content)
194
197
 
195
198
  fab_bytes = fab_buffer.getvalue()
199
+ if len(fab_bytes) > FAB_MAX_SIZE:
200
+ raise ValueError(
201
+ f"FAB size exceeds maximum allowed size of {FAB_MAX_SIZE:,} bytes."
202
+ "To reduce the package size, consider ignoring unnecessary files "
203
+ "via your `.gitignore` file or excluding them from the build."
204
+ )
205
+
196
206
  fab_hash = hashlib.sha256(fab_bytes).hexdigest()
197
207
 
198
208
  return fab_bytes, fab_hash, config
@@ -271,28 +271,36 @@ def new(
271
271
 
272
272
  prompt = typer.style(
273
273
  "🎊 Flower App creation successful.\n\n"
274
- "To run your Flower App, use the following command:\n\n",
274
+ "To run your Flower App, first install its dependencies:\n\n",
275
275
  fg=typer.colors.GREEN,
276
276
  bold=True,
277
277
  )
278
278
 
279
279
  _add = " huggingface-cli login\n" if llm_challenge_str else ""
280
+
280
281
  prompt += typer.style(
281
- _add + f" flwr run {package_name}\n\n",
282
+ f" cd {package_name} && pip install -e .\n" + _add + "\n",
282
283
  fg=typer.colors.BRIGHT_CYAN,
283
284
  bold=True,
284
285
  )
285
286
 
286
287
  prompt += typer.style(
287
- "If you haven't installed all dependencies yet, follow these steps:\n\n",
288
+ "then, run the app:\n\n ",
288
289
  fg=typer.colors.GREEN,
289
290
  bold=True,
290
291
  )
291
292
 
292
293
  prompt += typer.style(
293
- f" cd {package_name}\n" + " pip install -e .\n" + _add + " flwr run .\n",
294
+ "\tflwr run .\n\n",
294
295
  fg=typer.colors.BRIGHT_CYAN,
295
296
  bold=True,
296
297
  )
297
298
 
299
+ prompt += typer.style(
300
+ "💡 Check the README in your app directory to learn how to\n"
301
+ "customize it and how to run it using the Deployment Runtime.\n",
302
+ fg=typer.colors.GREEN,
303
+ bold=True,
304
+ )
305
+
298
306
  print(prompt)
@@ -21,6 +21,8 @@ Project dependencies are defined in `pyproject.toml`. Install them in an activat
21
21
  pip install -e .
22
22
  ```
23
23
 
24
+ > **Tip:** Learn how to configure your `pyproject.toml` file for Flower apps in [this guide](https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html).
25
+
24
26
  ## Experimental setup
25
27
 
26
28
  The dataset is divided into $num_clients partitions in an IID fashion, a partition is assigned to each ClientApp.
@@ -2,10 +2,15 @@
2
2
 
3
3
  ## Install dependencies and project
4
4
 
5
+ The dependencies are listed in the `pyproject.toml` and you can install them as follows:
6
+
5
7
  ```bash
6
8
  pip install -e .
7
9
  ```
8
10
 
11
+ > **Tip:** Your `pyproject.toml` file can define more than just the dependencies of your Flower app. You can also use it to specify hyperparameters for your runs and control which Flower Runtime is used. By default, it uses the Simulation Runtime, but you can switch to the Deployment Runtime when needed.
12
+ > Learn more in the [TOML configuration guide](https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html).
13
+
9
14
  ## Run with the Simulation Engine
10
15
 
11
16
  In the `$project_name` directory, use `flwr run` to run a local simulation:
@@ -1,3 +1,8 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
1
6
  [build-system]
2
7
  requires = ["hatchling"]
3
8
  build-backend = "hatchling.build"
@@ -7,11 +12,12 @@ name = "$package_name"
7
12
  version = "1.0.0"
8
13
  description = ""
9
14
  license = "Apache-2.0"
15
+ # Dependencies for your Flower App
10
16
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
17
+ "flwr[simulation]>=1.20.0",
12
18
  "flwr-datasets[vision]>=0.5.0",
13
- "torch==2.6.0",
14
- "torchvision==0.21.0",
19
+ "torch==2.7.1",
20
+ "torchvision==0.22.1",
15
21
  ]
16
22
 
17
23
  [tool.hatch.metadata]
@@ -117,18 +123,23 @@ packages = ["."]
117
123
  [tool.flwr.app]
118
124
  publisher = "$username"
119
125
 
126
+ # Point to your ServerApp and ClientApp objects
127
+ # Format: "<module>:<object>"
120
128
  [tool.flwr.app.components]
121
129
  serverapp = "$import_name.server_app:app"
122
130
  clientapp = "$import_name.client_app:app"
123
131
 
132
+ # Custom config values accessible via `context.run_config`
124
133
  [tool.flwr.app.config]
125
134
  num-server-rounds = 3
126
135
  fraction-fit = 0.5
127
136
  local-epochs = 1
128
137
 
138
+ # Default federation to use when running the app
129
139
  [tool.flwr.federations]
130
140
  default = "local-simulation"
131
141
 
142
+ # Local simulation federation with 10 virtual SuperNodes
132
143
  [tool.flwr.federations.local-simulation]
133
144
  options.num-supernodes = 10
134
145
  options.backend.client-resources.num-cpus = 2
@@ -1,3 +1,8 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
1
6
  [build-system]
2
7
  requires = ["hatchling"]
3
8
  build-backend = "hatchling.build"
@@ -7,8 +12,9 @@ name = "$package_name"
7
12
  version = "1.0.0"
8
13
  description = ""
9
14
  license = "Apache-2.0"
15
+ # Dependencies for your Flower App
10
16
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
17
+ "flwr[simulation]>=1.20.0",
12
18
  "flwr-datasets>=0.5.0",
13
19
  "torch==2.4.0",
14
20
  "trl==0.8.1",
@@ -27,10 +33,13 @@ packages = ["."]
27
33
  [tool.flwr.app]
28
34
  publisher = "$username"
29
35
 
36
+ # Point to your ServerApp and ClientApp objects
37
+ # Format: "<module>:<object>"
30
38
  [tool.flwr.app.components]
31
39
  serverapp = "$import_name.server_app:app"
32
40
  clientapp = "$import_name.client_app:app"
33
41
 
42
+ # Custom config values accessible via `context.run_config`
34
43
  [tool.flwr.app.config]
35
44
  model.name = "mistralai/Mistral-7B-v0.3"
36
45
  model.quantization = 4
@@ -56,12 +65,15 @@ strategy.fraction-fit = $fraction_fit
56
65
  strategy.fraction-evaluate = 0.0
57
66
  num-server-rounds = 200
58
67
 
68
+ # Dataset config (static for FlowerTune LLM Leaderboard)
59
69
  [tool.flwr.app.config.static]
60
70
  dataset.name = "$dataset_name"
61
71
 
72
+ # Default federation to use when running the app
62
73
  [tool.flwr.federations]
63
74
  default = "local-simulation"
64
75
 
76
+ # Local simulation federation with $num_clients virtual SuperNodes
65
77
  [tool.flwr.federations.local-simulation]
66
78
  options.num-supernodes = $num_clients
67
79
  options.backend.client-resources.num-cpus = 6
@@ -1,3 +1,8 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
1
6
  [build-system]
2
7
  requires = ["hatchling"]
3
8
  build-backend = "hatchling.build"
@@ -7,10 +12,11 @@ name = "$package_name"
7
12
  version = "1.0.0"
8
13
  description = ""
9
14
  license = "Apache-2.0"
15
+ # Dependencies for your Flower App
10
16
  dependencies = [
11
- "flwr[simulation]>=1.19.0",
17
+ "flwr[simulation]>=1.20.0",
12
18
  "flwr-datasets>=0.5.0",
13
- "torch==2.5.1",
19
+ "torch==2.7.1",
14
20
  "transformers>=4.30.0,<5.0",
15
21
  "evaluate>=0.4.0,<1.0",
16
22
  "datasets>=2.0.0, <3.0",
@@ -23,10 +29,13 @@ packages = ["."]
23
29
  [tool.flwr.app]
24
30
  publisher = "$username"
25
31
 
32
+ # Point to your ServerApp and ClientApp objects
33
+ # Format: "<module>:<object>"
26
34
  [tool.flwr.app.components]
27
35
  serverapp = "$import_name.server_app:app"
28
36
  clientapp = "$import_name.client_app:app"
29
37
 
38
+ # Custom config values accessible via `context.run_config`
30
39
  [tool.flwr.app.config]
31
40
  num-server-rounds = 3
32
41
  fraction-fit = 0.5
@@ -34,13 +43,23 @@ local-epochs = 1
34
43
  model-name = "prajjwal1/bert-tiny" # Set a larger model if you have access to more GPU resources
35
44
  num-labels = 2
36
45
 
46
+ # Default federation to use when running the app
37
47
  [tool.flwr.federations]
38
48
  default = "localhost"
39
49
 
50
+ # Local simulation federation with 10 virtual SuperNodes
40
51
  [tool.flwr.federations.localhost]
41
52
  options.num-supernodes = 10
42
53
 
54
+ # Local simulation federation with 10 virtual SuperNodes
55
+ # making use of GPUs
43
56
  [tool.flwr.federations.localhost-gpu]
44
57
  options.num-supernodes = 10
45
58
  options.backend.client-resources.num-cpus = 4 # each ClientApp assumes to use 4CPUs
46
59
  options.backend.client-resources.num-gpus = 0.25 # at most 4 ClientApps will run in a given GPU
60
+
61
+ # Remote federation example for use with SuperLink
62
+ [tool.flwr.federations.remote-federation]
63
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
64
+ insecure = true # Remove this line to enable TLS
65
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,52 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "jax==0.4.30",
19
+ "jaxlib==0.4.30",
20
+ "scikit-learn==1.6.1",
21
+ ]
22
+
23
+ [tool.hatch.build.targets.wheel]
24
+ packages = ["."]
25
+
26
+ [tool.flwr.app]
27
+ publisher = "$username"
28
+
29
+ # Point to your ServerApp and ClientApp objects
30
+ # Format: "<module>:<object>"
31
+ [tool.flwr.app.components]
32
+ serverapp = "$import_name.server_app:app"
33
+ clientapp = "$import_name.client_app:app"
34
+
35
+ # Custom config values accessible via `context.run_config`
36
+ [tool.flwr.app.config]
37
+ num-server-rounds = 3
38
+ input-dim = 3
39
+
40
+ # Default federation to use when running the app
41
+ [tool.flwr.federations]
42
+ default = "local-simulation"
43
+
44
+ # Local simulation federation with 10 virtual SuperNodes
45
+ [tool.flwr.federations.local-simulation]
46
+ options.num-supernodes = 10
47
+
48
+ # Remote federation example for use with SuperLink
49
+ [tool.flwr.federations.remote-federation]
50
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
51
+ insecure = true # Remove this line to enable TLS
52
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,56 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "flwr-datasets[vision]>=0.5.0",
19
+ "mlx==0.26.5",
20
+ ]
21
+
22
+ [tool.hatch.build.targets.wheel]
23
+ packages = ["."]
24
+
25
+ [tool.flwr.app]
26
+ publisher = "$username"
27
+
28
+ # Point to your ServerApp and ClientApp objects
29
+ # Format: "<module>:<object>"
30
+ [tool.flwr.app.components]
31
+ serverapp = "$import_name.server_app:app"
32
+ clientapp = "$import_name.client_app:app"
33
+
34
+ # Custom config values accessible via `context.run_config`
35
+ [tool.flwr.app.config]
36
+ num-server-rounds = 3
37
+ local-epochs = 1
38
+ num-layers = 2
39
+ input-dim = 784 # 28*28
40
+ hidden-dim = 32
41
+ batch-size = 256
42
+ lr = 0.1
43
+
44
+ # Default federation to use when running the app
45
+ [tool.flwr.federations]
46
+ default = "local-simulation"
47
+
48
+ # Local simulation federation with 10 virtual SuperNodes
49
+ [tool.flwr.federations.local-simulation]
50
+ options.num-supernodes = 10
51
+
52
+ # Remote federation example for use with SuperLink
53
+ [tool.flwr.federations.remote-federation]
54
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
55
+ insecure = true # Remove this line to enable TLS
56
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,49 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "numpy>=2.0.2",
19
+ ]
20
+
21
+ [tool.hatch.build.targets.wheel]
22
+ packages = ["."]
23
+
24
+ [tool.flwr.app]
25
+ publisher = "$username"
26
+
27
+ # Point to your ServerApp and ClientApp objects
28
+ # Format: "<module>:<object>"
29
+ [tool.flwr.app.components]
30
+ serverapp = "$import_name.server_app:app"
31
+ clientapp = "$import_name.client_app:app"
32
+
33
+ # Custom config values accessible via `context.run_config`
34
+ [tool.flwr.app.config]
35
+ num-server-rounds = 3
36
+
37
+ # Default federation to use when running the app
38
+ [tool.flwr.federations]
39
+ default = "local-simulation"
40
+
41
+ # Local simulation federation with 10 virtual SuperNodes
42
+ [tool.flwr.federations.local-simulation]
43
+ options.num-supernodes = 10
44
+
45
+ # Remote federation example for use with SuperLink
46
+ [tool.flwr.federations.remote-federation]
47
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
48
+ insecure = true # Remove this line to enable TLS
49
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,53 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "flwr-datasets[vision]>=0.5.0",
19
+ "torch==2.7.1",
20
+ "torchvision==0.22.1",
21
+ ]
22
+
23
+ [tool.hatch.build.targets.wheel]
24
+ packages = ["."]
25
+
26
+ [tool.flwr.app]
27
+ publisher = "$username"
28
+
29
+ # Point to your ServerApp and ClientApp objects
30
+ # Format: "<module>:<object>"
31
+ [tool.flwr.app.components]
32
+ serverapp = "$import_name.server_app:app"
33
+ clientapp = "$import_name.client_app:app"
34
+
35
+ # Custom config values accessible via `context.run_config`
36
+ [tool.flwr.app.config]
37
+ num-server-rounds = 3
38
+ fraction-fit = 0.5
39
+ local-epochs = 1
40
+
41
+ # Default federation to use when running the app
42
+ [tool.flwr.federations]
43
+ default = "local-simulation"
44
+
45
+ # Local simulation federation with 10 virtual SuperNodes
46
+ [tool.flwr.federations.local-simulation]
47
+ options.num-supernodes = 10
48
+
49
+ # Remote federation example for use with SuperLink
50
+ [tool.flwr.federations.remote-federation]
51
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
52
+ insecure = true # Remove this line to enable TLS
53
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,52 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "flwr-datasets[vision]>=0.5.0",
19
+ "scikit-learn>=1.6.1",
20
+ ]
21
+
22
+ [tool.hatch.build.targets.wheel]
23
+ packages = ["."]
24
+
25
+ [tool.flwr.app]
26
+ publisher = "$username"
27
+
28
+ # Point to your ServerApp and ClientApp objects
29
+ # Format: "<module>:<object>"
30
+ [tool.flwr.app.components]
31
+ serverapp = "$import_name.server_app:app"
32
+ clientapp = "$import_name.client_app:app"
33
+
34
+ # Custom config values accessible via `context.run_config`
35
+ [tool.flwr.app.config]
36
+ num-server-rounds = 3
37
+ penalty = "l2"
38
+ local-epochs = 1
39
+
40
+ # Default federation to use when running the app
41
+ [tool.flwr.federations]
42
+ default = "local-simulation"
43
+
44
+ # Local simulation federation with 10 virtual SuperNodes
45
+ [tool.flwr.federations.local-simulation]
46
+ options.num-supernodes = 10
47
+
48
+ # Remote federation example for use with SuperLink
49
+ [tool.flwr.federations.remote-federation]
50
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
51
+ insecure = true # Remove this line to enable TLS
52
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup
@@ -0,0 +1,53 @@
1
+ # =====================================================================
2
+ # For a full TOML configuration guide, check the Flower docs:
3
+ # https://flower.ai/docs/framework/how-to-configure-pyproject-toml.html
4
+ # =====================================================================
5
+
6
+ [build-system]
7
+ requires = ["hatchling"]
8
+ build-backend = "hatchling.build"
9
+
10
+ [project]
11
+ name = "$package_name"
12
+ version = "1.0.0"
13
+ description = ""
14
+ license = "Apache-2.0"
15
+ # Dependencies for your Flower App
16
+ dependencies = [
17
+ "flwr[simulation]>=1.20.0",
18
+ "flwr-datasets[vision]>=0.5.0",
19
+ "tensorflow>=2.11.1,<2.18.0",
20
+ ]
21
+
22
+ [tool.hatch.build.targets.wheel]
23
+ packages = ["."]
24
+
25
+ [tool.flwr.app]
26
+ publisher = "$username"
27
+
28
+ # Point to your ServerApp and ClientApp objects
29
+ # Format: "<module>:<object>"
30
+ [tool.flwr.app.components]
31
+ serverapp = "$import_name.server_app:app"
32
+ clientapp = "$import_name.client_app:app"
33
+
34
+ # Custom config values accessible via `context.run_config`
35
+ [tool.flwr.app.config]
36
+ num-server-rounds = 3
37
+ local-epochs = 1
38
+ batch-size = 32
39
+ verbose = false
40
+
41
+ # Default federation to use when running the app
42
+ [tool.flwr.federations]
43
+ default = "local-simulation"
44
+
45
+ # Local simulation federation with 10 virtual SuperNodes
46
+ [tool.flwr.federations.local-simulation]
47
+ options.num-supernodes = 10
48
+
49
+ # Remote federation example for use with SuperLink
50
+ [tool.flwr.federations.remote-federation]
51
+ address = "<SUPERLINK-ADDRESS>:<PORT>"
52
+ insecure = true # Remove this line to enable TLS
53
+ # root-certificates = "<PATH/TO/ca.crt>" # For TLS setup