flwr-nightly 1.19.0.dev20250522__tar.gz → 1.19.0.dev20250524__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 (360) hide show
  1. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/PKG-INFO +1 -1
  2. flwr_nightly-1.19.0.dev20250524/py/flwr/compat/server/app.py +174 -0
  3. flwr_nightly-1.19.0.dev20250524/py/flwr/proto/run_pb2.py +56 -0
  4. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2.pyi +0 -51
  5. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2.py +2 -2
  6. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2_grpc.py +0 -34
  7. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -13
  8. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/__init__.py +1 -1
  9. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/app.py +1 -150
  10. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +1 -31
  11. flwr_nightly-1.19.0.dev20250524/py/flwr/supernode/cli/__init__.py +20 -0
  12. flwr_nightly-1.19.0.dev20250522/py/flwr/client/supernode/app.py → flwr_nightly-1.19.0.dev20250524/py/flwr/supernode/cli/flower_supernode.py +2 -2
  13. {flwr_nightly-1.19.0.dev20250522/py/flwr/client → flwr_nightly-1.19.0.dev20250524/py/flwr/supernode}/start_client_internal.py +154 -163
  14. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/pyproject.toml +2 -2
  15. flwr_nightly-1.19.0.dev20250522/py/flwr/client/supernode/__init__.py +0 -22
  16. flwr_nightly-1.19.0.dev20250522/py/flwr/proto/run_pb2.py +0 -64
  17. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/README.md +0 -0
  18. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/__init__.py +0 -0
  19. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/__init__.py +0 -0
  20. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/error.py +0 -0
  21. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/metadata.py +0 -0
  22. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/__init__.py +0 -0
  23. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/app.py +0 -0
  24. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  25. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  26. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/build.py +0 -0
  27. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  28. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/config_utils.py +0 -0
  29. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/constant.py +0 -0
  30. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/example.py +0 -0
  31. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/install.py +0 -0
  32. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/log.py +0 -0
  33. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/login/__init__.py +0 -0
  34. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/login/login.py +0 -0
  35. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/ls.py +0 -0
  36. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/__init__.py +0 -0
  37. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/new.py +0 -0
  38. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/__init__.py +0 -0
  39. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  40. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  41. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  42. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  43. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  44. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  45. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  46. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  47. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  48. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  49. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  50. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  51. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  52. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  53. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  54. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  55. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  56. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  57. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  58. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  59. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  60. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  61. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  62. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  63. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  64. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  65. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  66. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  67. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  68. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  69. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  70. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  71. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  72. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  73. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  74. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  75. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  76. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  77. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  78. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  79. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  80. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  81. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  82. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  83. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  84. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  85. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  86. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  87. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  88. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  89. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  90. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/run/__init__.py +0 -0
  91. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/run/run.py +0 -0
  92. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/stop.py +0 -0
  93. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/utils.py +0 -0
  94. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/__init__.py +0 -0
  95. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/client.py +0 -0
  96. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/client_app.py +0 -0
  97. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/__init__.py +0 -0
  98. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/app.py +0 -0
  99. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  100. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/utils.py +0 -0
  101. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  102. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  103. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  104. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  105. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  106. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/connection.py +0 -0
  107. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  108. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/message_handler/__init__.py +0 -0
  109. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/message_handler/message_handler.py +0 -0
  110. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/__init__.py +0 -0
  111. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/centraldp_mods.py +0 -0
  112. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/comms_mods.py +0 -0
  113. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/localdp_mod.py +0 -0
  114. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  115. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  116. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  117. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/utils.py +0 -0
  118. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/numpy_client.py +0 -0
  119. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/rest_client/__init__.py +0 -0
  120. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/rest_client/connection.py +0 -0
  121. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/run_info_store.py +0 -0
  122. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/typing.py +0 -0
  123. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/clientapp/__init__.py +0 -0
  124. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/__init__.py +0 -0
  125. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/address.py +0 -0
  126. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/args.py +0 -0
  127. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/auth_plugin/__init__.py +0 -0
  128. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  129. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/config.py +0 -0
  130. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/constant.py +0 -0
  131. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/context.py +0 -0
  132. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/date.py +0 -0
  133. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/differential_privacy.py +0 -0
  134. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/differential_privacy_constants.py +0 -0
  135. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/dp.py +0 -0
  136. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  137. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  138. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/__init__.py +0 -0
  139. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/exit.py +0 -0
  140. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/exit_code.py +0 -0
  141. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit_handlers.py +0 -0
  142. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/grpc.py +0 -0
  143. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/heartbeat.py +0 -0
  144. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/inflatable.py +0 -0
  145. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/inflatable_grpc_utils.py +0 -0
  146. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/logger.py +0 -0
  147. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/message.py +0 -0
  148. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/object_ref.py +0 -0
  149. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/parameter.py +0 -0
  150. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/pyproject.py +0 -0
  151. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/__init__.py +0 -0
  152. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/array.py +0 -0
  153. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/arrayrecord.py +0 -0
  154. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/configrecord.py +0 -0
  155. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/conversion_utils.py +0 -0
  156. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/metricrecord.py +0 -0
  157. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/recorddict.py +0 -0
  158. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/typeddict.py +0 -0
  159. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/recorddict_compat.py +0 -0
  160. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/retry_invoker.py +0 -0
  161. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  162. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  163. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  164. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  165. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  166. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  167. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  168. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  169. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/serde.py +0 -0
  170. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/serde_utils.py +0 -0
  171. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/telemetry.py +0 -0
  172. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/typing.py +0 -0
  173. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/version.py +0 -0
  174. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/__init__.py +0 -0
  175. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/__init__.py +0 -0
  176. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/app.py +0 -0
  177. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  178. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  179. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/common/__init__.py +0 -0
  180. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/server/__init__.py +0 -0
  181. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/simulation/__init__.py +0 -0
  182. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/__init__.py +0 -0
  183. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2.py +0 -0
  184. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  185. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  186. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  187. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2.py +0 -0
  188. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2.pyi +0 -0
  189. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2_grpc.py +0 -0
  190. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  191. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2.py +0 -0
  192. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2.pyi +0 -0
  193. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2_grpc.py +0 -0
  194. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  195. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2.py +0 -0
  196. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2.pyi +0 -0
  197. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  198. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  199. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2.py +0 -0
  200. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2.pyi +0 -0
  201. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  202. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  203. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  204. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  205. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  206. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  207. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2.py +0 -0
  208. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  209. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  210. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  211. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2.py +0 -0
  212. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2.pyi +0 -0
  213. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2_grpc.py +0 -0
  214. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  215. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2.py +0 -0
  216. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2.pyi +0 -0
  217. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2_grpc.py +0 -0
  218. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  219. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2.py +0 -0
  220. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2.pyi +0 -0
  221. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2_grpc.py +0 -0
  222. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  223. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2.py +0 -0
  224. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  225. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  226. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  227. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2_grpc.py +0 -0
  228. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  229. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  230. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2.py +0 -0
  231. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  232. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  233. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  234. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2.py +0 -0
  235. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2.pyi +0 -0
  236. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  237. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  238. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/py.typed +0 -0
  239. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/client_manager.py +0 -0
  240. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/client_proxy.py +0 -0
  241. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/__init__.py +0 -0
  242. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/app.py +0 -0
  243. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/app_utils.py +0 -0
  244. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  245. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/legacy_context.py +0 -0
  246. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/criterion.py +0 -0
  247. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  248. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/__init__.py +0 -0
  249. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/grid.py +0 -0
  250. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/grpc_grid.py +0 -0
  251. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/inmemory_grid.py +0 -0
  252. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/history.py +0 -0
  253. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/run_serverapp.py +0 -0
  254. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server.py +0 -0
  255. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server_app.py +0 -0
  256. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server_config.py +0 -0
  257. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp/__init__.py +0 -0
  258. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp/app.py +0 -0
  259. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp_components.py +0 -0
  260. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/__init__.py +0 -0
  261. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/aggregate.py +0 -0
  262. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/bulyan.py +0 -0
  263. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  264. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  265. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  266. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  267. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  268. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedadagrad.py +0 -0
  269. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedadam.py +0 -0
  270. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavg.py +0 -0
  271. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavg_android.py +0 -0
  272. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavgm.py +0 -0
  273. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedmedian.py +0 -0
  274. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedopt.py +0 -0
  275. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedprox.py +0 -0
  276. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  277. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  278. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  279. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  280. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedyogi.py +0 -0
  281. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/krum.py +0 -0
  282. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/qfedavg.py +0 -0
  283. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/strategy.py +0 -0
  284. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/__init__.py +0 -0
  285. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/__init__.py +0 -0
  286. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  287. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/ffs.py +0 -0
  288. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  289. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  290. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  291. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  292. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  293. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  294. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  295. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  296. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  297. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  298. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  299. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  300. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  301. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  302. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  303. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  304. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  305. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  306. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  307. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  308. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  309. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  310. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  311. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  312. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  313. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  314. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  315. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  316. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  317. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  318. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  319. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  320. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/utils.py +0 -0
  321. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/typing.py +0 -0
  322. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/__init__.py +0 -0
  323. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/tensorboard.py +0 -0
  324. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/validator.py +0 -0
  325. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/__init__.py +0 -0
  326. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/constant.py +0 -0
  327. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/default_workflows.py +0 -0
  328. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  329. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  330. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  331. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/serverapp/__init__.py +0 -0
  332. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/__init__.py +0 -0
  333. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/app.py +0 -0
  334. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/legacy_app.py +0 -0
  335. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  336. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  337. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  338. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/utils.py +0 -0
  339. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/run_simulation.py +0 -0
  340. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/simulationio_connection.py +0 -0
  341. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/__init__.py +0 -0
  342. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/__init__.py +0 -0
  343. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  344. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/object_store.py +0 -0
  345. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  346. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/__init__.py +0 -0
  347. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/app.py +0 -0
  348. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/deployment.py +0 -0
  349. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_event_log_interceptor.py +0 -0
  350. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_grpc.py +0 -0
  351. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_servicer.py +0 -0
  352. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
  353. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/executor.py +0 -0
  354. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/simulation.py +0 -0
  355. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superlink/__init__.py +0 -0
  356. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/__init__.py +0 -0
  357. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/__init__.py +0 -0
  358. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  359. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  360. {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.19.0.dev20250522
3
+ Version: 1.19.0.dev20250524
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
@@ -0,0 +1,174 @@
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
+ """Flower server app."""
16
+
17
+
18
+ import sys
19
+ from logging import INFO
20
+ from typing import Optional
21
+
22
+ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
23
+ from flwr.common.address import parse_address
24
+ from flwr.common.constant import FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS
25
+ from flwr.common.exit_handlers import register_exit_handlers
26
+ from flwr.common.logger import log, warn_deprecated_feature
27
+ from flwr.server.client_manager import ClientManager
28
+ from flwr.server.history import History
29
+ from flwr.server.server import Server, init_defaults, run_fl
30
+ from flwr.server.server_config import ServerConfig
31
+ from flwr.server.strategy import Strategy
32
+ from flwr.server.superlink.fleet.grpc_bidi.grpc_server import start_grpc_server
33
+
34
+
35
+ def start_server( # pylint: disable=too-many-arguments,too-many-locals
36
+ *,
37
+ server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
38
+ server: Optional[Server] = None,
39
+ config: Optional[ServerConfig] = None,
40
+ strategy: Optional[Strategy] = None,
41
+ client_manager: Optional[ClientManager] = None,
42
+ grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
43
+ certificates: Optional[tuple[bytes, bytes, bytes]] = None,
44
+ ) -> History:
45
+ """Start a Flower server using the gRPC transport layer.
46
+
47
+ Warning
48
+ -------
49
+ This function is deprecated since 1.13.0. Use the :code:`flower-superlink` command
50
+ instead to start a SuperLink.
51
+
52
+ Parameters
53
+ ----------
54
+ server_address : Optional[str]
55
+ The IPv4 or IPv6 address of the server. Defaults to `"[::]:8080"`.
56
+ server : Optional[flwr.server.Server] (default: None)
57
+ A server implementation, either `flwr.server.Server` or a subclass
58
+ thereof. If no instance is provided, then `start_server` will create
59
+ one.
60
+ config : Optional[ServerConfig] (default: None)
61
+ Currently supported values are `num_rounds` (int, default: 1) and
62
+ `round_timeout` in seconds (float, default: None).
63
+ strategy : Optional[flwr.server.Strategy] (default: None).
64
+ An implementation of the abstract base class
65
+ `flwr.server.strategy.Strategy`. If no strategy is provided, then
66
+ `start_server` will use `flwr.server.strategy.FedAvg`.
67
+ client_manager : Optional[flwr.server.ClientManager] (default: None)
68
+ An implementation of the abstract base class
69
+ `flwr.server.ClientManager`. If no implementation is provided, then
70
+ `start_server` will use
71
+ `flwr.server.client_manager.SimpleClientManager`.
72
+ grpc_max_message_length : int (default: 536_870_912, this equals 512MB)
73
+ The maximum length of gRPC messages that can be exchanged with the
74
+ Flower clients. The default should be sufficient for most models.
75
+ Users who train very large models might need to increase this
76
+ value. Note that the Flower clients need to be started with the
77
+ same value (see `flwr.client.start_client`), otherwise clients will
78
+ not know about the increased limit and block larger messages.
79
+ certificates : Tuple[bytes, bytes, bytes] (default: None)
80
+ Tuple containing root certificate, server certificate, and private key
81
+ to start a secure SSL-enabled server. The tuple is expected to have
82
+ three bytes elements in the following order:
83
+
84
+ * CA certificate.
85
+ * server certificate.
86
+ * server private key.
87
+
88
+ Returns
89
+ -------
90
+ hist : flwr.server.history.History
91
+ Object containing training and evaluation metrics.
92
+
93
+ Examples
94
+ --------
95
+ Starting an insecure server::
96
+
97
+ start_server()
98
+
99
+ Starting a TLS-enabled server::
100
+
101
+ start_server(
102
+ certificates=(
103
+ Path("/crts/root.pem").read_bytes(),
104
+ Path("/crts/localhost.crt").read_bytes(),
105
+ Path("/crts/localhost.key").read_bytes()
106
+ )
107
+ )
108
+ """
109
+ msg = (
110
+ "flwr.server.start_server() is deprecated."
111
+ "\n\tInstead, use the `flower-superlink` CLI command to start a SuperLink "
112
+ "as shown below:"
113
+ "\n\n\t\t$ flower-superlink --insecure"
114
+ "\n\n\tTo view usage and all available options, run:"
115
+ "\n\n\t\t$ flower-superlink --help"
116
+ "\n\n\tUsing `start_server()` is deprecated."
117
+ )
118
+ warn_deprecated_feature(name=msg)
119
+
120
+ event(EventType.START_SERVER_ENTER)
121
+
122
+ # Parse IP address
123
+ parsed_address = parse_address(server_address)
124
+ if not parsed_address:
125
+ sys.exit(f"Server IP address ({server_address}) cannot be parsed.")
126
+ host, port, is_v6 = parsed_address
127
+ address = f"[{host}]:{port}" if is_v6 else f"{host}:{port}"
128
+
129
+ # Initialize server and server config
130
+ initialized_server, initialized_config = init_defaults(
131
+ server=server,
132
+ config=config,
133
+ strategy=strategy,
134
+ client_manager=client_manager,
135
+ )
136
+ log(
137
+ INFO,
138
+ "Starting Flower server, config: %s",
139
+ initialized_config,
140
+ )
141
+
142
+ # Start gRPC server
143
+ grpc_server = start_grpc_server(
144
+ client_manager=initialized_server.client_manager(),
145
+ server_address=address,
146
+ max_message_length=grpc_max_message_length,
147
+ certificates=certificates,
148
+ )
149
+ log(
150
+ INFO,
151
+ "Flower ECE: gRPC server running (%s rounds), SSL is %s",
152
+ initialized_config.num_rounds,
153
+ "enabled" if certificates is not None else "disabled",
154
+ )
155
+
156
+ # Graceful shutdown
157
+ register_exit_handlers(
158
+ event_type=EventType.START_SERVER_LEAVE,
159
+ exit_message="Flower server terminated gracefully.",
160
+ grpc_servers=[grpc_server],
161
+ )
162
+
163
+ # Start training
164
+ hist = run_fl(
165
+ server=initialized_server,
166
+ config=initialized_config,
167
+ )
168
+
169
+ # Stop the gRPC server
170
+ grpc_server.stop(grace=1)
171
+
172
+ event(EventType.START_SERVER_LEAVE)
173
+
174
+ return hist
@@ -0,0 +1,56 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/run.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
16
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
17
+ from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
18
+ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
19
+
20
+
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xce\x02\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x12\x12\n\npending_at\x18\x06 \x01(\t\x12\x13\n\x0bstarting_at\x18\x07 \x01(\t\x12\x12\n\nrunning_at\x18\x08 \x01(\t\x12\x13\n\x0b\x66inished_at\x18\t \x01(\t\x12%\n\x06status\x18\n \x01(\x0b\x32\x15.flwr.proto.RunStatus\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"?\n\rGetRunRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"F\n\x13GetRunStatusRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0f\n\x07run_ids\x18\x02 \x03(\x04\"\xb1\x01\n\x14GetRunStatusResponse\x12L\n\x0frun_status_dict\x18\x01 \x03(\x0b\x32\x33.flwr.proto.GetRunStatusResponse.RunStatusDictEntry\x1aK\n\x12RunStatusDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus:\x02\x38\x01\"-\n\x1bGetFederationOptionsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"T\n\x1cGetFederationOptionsResponse\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x01 \x01(\x0b\x32\x18.flwr.proto.ConfigRecordb\x06proto3')
22
+
23
+ _globals = globals()
24
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
25
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.run_pb2', _globals)
26
+ if _descriptor._USE_C_DESCRIPTORS == False:
27
+ DESCRIPTOR._options = None
28
+ _globals['_RUN_OVERRIDECONFIGENTRY']._options = None
29
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
30
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._options = None
31
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_options = b'8\001'
32
+ _globals['_RUN']._serialized_start=139
33
+ _globals['_RUN']._serialized_end=473
34
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=400
35
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=473
36
+ _globals['_RUNSTATUS']._serialized_start=475
37
+ _globals['_RUNSTATUS']._serialized_end=539
38
+ _globals['_GETRUNREQUEST']._serialized_start=541
39
+ _globals['_GETRUNREQUEST']._serialized_end=604
40
+ _globals['_GETRUNRESPONSE']._serialized_start=606
41
+ _globals['_GETRUNRESPONSE']._serialized_end=652
42
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_start=654
43
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_end=737
44
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=739
45
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=764
46
+ _globals['_GETRUNSTATUSREQUEST']._serialized_start=766
47
+ _globals['_GETRUNSTATUSREQUEST']._serialized_end=836
48
+ _globals['_GETRUNSTATUSRESPONSE']._serialized_start=839
49
+ _globals['_GETRUNSTATUSRESPONSE']._serialized_end=1016
50
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=941
51
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1016
52
+ _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_start=1018
53
+ _globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_end=1063
54
+ _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_start=1065
55
+ _globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_end=1149
56
+ # @@protoc_insertion_point(module_scope)
@@ -3,7 +3,6 @@
3
3
  isort:skip_file
4
4
  """
5
5
  import builtins
6
- import flwr.proto.fab_pb2
7
6
  import flwr.proto.node_pb2
8
7
  import flwr.proto.recorddict_pb2
9
8
  import flwr.proto.transport_pb2
@@ -94,56 +93,6 @@ class RunStatus(google.protobuf.message.Message):
94
93
  def ClearField(self, field_name: typing_extensions.Literal["details",b"details","status",b"status","sub_status",b"sub_status"]) -> None: ...
95
94
  global___RunStatus = RunStatus
96
95
 
97
- class CreateRunRequest(google.protobuf.message.Message):
98
- """CreateRun"""
99
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
100
- class OverrideConfigEntry(google.protobuf.message.Message):
101
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
102
- KEY_FIELD_NUMBER: builtins.int
103
- VALUE_FIELD_NUMBER: builtins.int
104
- key: typing.Text
105
- @property
106
- def value(self) -> flwr.proto.transport_pb2.Scalar: ...
107
- def __init__(self,
108
- *,
109
- key: typing.Text = ...,
110
- value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
111
- ) -> None: ...
112
- def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
113
- def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
114
-
115
- FAB_ID_FIELD_NUMBER: builtins.int
116
- FAB_VERSION_FIELD_NUMBER: builtins.int
117
- OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
118
- FAB_FIELD_NUMBER: builtins.int
119
- fab_id: typing.Text
120
- fab_version: typing.Text
121
- @property
122
- def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
123
- @property
124
- def fab(self) -> flwr.proto.fab_pb2.Fab: ...
125
- def __init__(self,
126
- *,
127
- fab_id: typing.Text = ...,
128
- fab_version: typing.Text = ...,
129
- override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
130
- fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
131
- ) -> None: ...
132
- def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ...
133
- def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ...
134
- global___CreateRunRequest = CreateRunRequest
135
-
136
- class CreateRunResponse(google.protobuf.message.Message):
137
- DESCRIPTOR: google.protobuf.descriptor.Descriptor
138
- RUN_ID_FIELD_NUMBER: builtins.int
139
- run_id: builtins.int
140
- def __init__(self,
141
- *,
142
- run_id: builtins.int = ...,
143
- ) -> None: ...
144
- def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
145
- global___CreateRunResponse = CreateRunResponse
146
-
147
96
  class GetRunRequest(google.protobuf.message.Message):
148
97
  """GetRun"""
149
98
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -20,7 +20,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
20
20
  from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
21
21
 
22
22
 
23
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"T\n\x16PushInsMessagesRequest\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x17PushInsMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\"=\n\x16PullResMessagesRequest\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"E\n\x17PullResMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\xb0\t\n\x0bServerAppIo\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushInsMessagesRequest\x1a#.flwr.proto.PushInsMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullResMessagesRequest\x1a#.flwr.proto.PullResMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x62\x06proto3')
23
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"T\n\x16PushInsMessagesRequest\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x17PushInsMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\"=\n\x16PullResMessagesRequest\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"E\n\x17PullResMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\xe4\x08\n\x0bServerAppIo\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushInsMessagesRequest\x1a#.flwr.proto.PushInsMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullResMessagesRequest\x1a#.flwr.proto.PullResMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x62\x06proto3')
24
24
 
25
25
  _globals = globals()
26
26
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -48,5 +48,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
48
48
  _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=787
49
49
  _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=817
50
50
  _globals['_SERVERAPPIO']._serialized_start=820
51
- _globals['_SERVERAPPIO']._serialized_end=2020
51
+ _globals['_SERVERAPPIO']._serialized_end=1944
52
52
  # @@protoc_insertion_point(module_scope)
@@ -19,11 +19,6 @@ class ServerAppIoStub(object):
19
19
  Args:
20
20
  channel: A grpc.Channel.
21
21
  """
22
- self.CreateRun = channel.unary_unary(
23
- '/flwr.proto.ServerAppIo/CreateRun',
24
- request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
25
- response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
26
- )
27
22
  self.GetNodes = channel.unary_unary(
28
23
  '/flwr.proto.ServerAppIo/GetNodes',
29
24
  request_serializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.SerializeToString,
@@ -94,13 +89,6 @@ class ServerAppIoStub(object):
94
89
  class ServerAppIoServicer(object):
95
90
  """Missing associated documentation comment in .proto file."""
96
91
 
97
- def CreateRun(self, request, context):
98
- """Request run_id
99
- """
100
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
101
- context.set_details('Method not implemented!')
102
- raise NotImplementedError('Method not implemented!')
103
-
104
92
  def GetNodes(self, request, context):
105
93
  """Return a set of nodes
106
94
  """
@@ -195,11 +183,6 @@ class ServerAppIoServicer(object):
195
183
 
196
184
  def add_ServerAppIoServicer_to_server(servicer, server):
197
185
  rpc_method_handlers = {
198
- 'CreateRun': grpc.unary_unary_rpc_method_handler(
199
- servicer.CreateRun,
200
- request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
201
- response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
202
- ),
203
186
  'GetNodes': grpc.unary_unary_rpc_method_handler(
204
187
  servicer.GetNodes,
205
188
  request_deserializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.FromString,
@@ -275,23 +258,6 @@ def add_ServerAppIoServicer_to_server(servicer, server):
275
258
  class ServerAppIo(object):
276
259
  """Missing associated documentation comment in .proto file."""
277
260
 
278
- @staticmethod
279
- def CreateRun(request,
280
- target,
281
- options=(),
282
- channel_credentials=None,
283
- call_credentials=None,
284
- insecure=False,
285
- compression=None,
286
- wait_for_ready=None,
287
- timeout=None,
288
- metadata=None):
289
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/CreateRun',
290
- flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
291
- flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
292
- options, channel_credentials,
293
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
294
-
295
261
  @staticmethod
296
262
  def GetNodes(request,
297
263
  target,
@@ -13,11 +13,6 @@ import grpc
13
13
 
14
14
  class ServerAppIoStub:
15
15
  def __init__(self, channel: grpc.Channel) -> None: ...
16
- CreateRun: grpc.UnaryUnaryMultiCallable[
17
- flwr.proto.run_pb2.CreateRunRequest,
18
- flwr.proto.run_pb2.CreateRunResponse]
19
- """Request run_id"""
20
-
21
16
  GetNodes: grpc.UnaryUnaryMultiCallable[
22
17
  flwr.proto.serverappio_pb2.GetNodesRequest,
23
18
  flwr.proto.serverappio_pb2.GetNodesResponse]
@@ -85,14 +80,6 @@ class ServerAppIoStub:
85
80
 
86
81
 
87
82
  class ServerAppIoServicer(metaclass=abc.ABCMeta):
88
- @abc.abstractmethod
89
- def CreateRun(self,
90
- request: flwr.proto.run_pb2.CreateRunRequest,
91
- context: grpc.ServicerContext,
92
- ) -> flwr.proto.run_pb2.CreateRunResponse:
93
- """Request run_id"""
94
- pass
95
-
96
83
  @abc.abstractmethod
97
84
  def GetNodes(self,
98
85
  request: flwr.proto.serverappio_pb2.GetNodesRequest,
@@ -15,9 +15,9 @@
15
15
  """Flower server."""
16
16
 
17
17
 
18
+ from ..compat.server.app import start_server as start_server # Deprecated
18
19
  from . import strategy
19
20
  from . import workflow as workflow
20
- from .app import start_server as start_server
21
21
  from .client_manager import ClientManager as ClientManager
22
22
  from .client_manager import SimpleClientManager as SimpleClientManager
23
23
  from .compat import LegacyContext as LegacyContext
@@ -43,7 +43,6 @@ from flwr.common.constant import (
43
43
  AUTH_TYPE_YAML_KEY,
44
44
  CLIENT_OCTET,
45
45
  EXEC_API_DEFAULT_SERVER_ADDRESS,
46
- FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
47
46
  FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
48
47
  FLEET_API_REST_DEFAULT_ADDRESS,
49
48
  ISOLATION_MODE_PROCESS,
@@ -60,7 +59,7 @@ from flwr.common.event_log_plugin import EventLogWriterPlugin
60
59
  from flwr.common.exit import ExitCode, flwr_exit
61
60
  from flwr.common.exit_handlers import register_exit_handlers
62
61
  from flwr.common.grpc import generic_create_grpc_server
63
- from flwr.common.logger import log, warn_deprecated_feature
62
+ from flwr.common.logger import log
64
63
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
65
64
  public_key_to_bytes,
66
65
  )
@@ -75,14 +74,8 @@ from flwr.supercore.object_store import ObjectStoreFactory
75
74
  from flwr.superexec.app import load_executor
76
75
  from flwr.superexec.exec_grpc import run_exec_api_grpc
77
76
 
78
- from .client_manager import ClientManager
79
- from .history import History
80
- from .server import Server, init_defaults, run_fl
81
- from .server_config import ServerConfig
82
- from .strategy import Strategy
83
77
  from .superlink.ffs.ffs_factory import FfsFactory
84
78
  from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
85
- from .superlink.fleet.grpc_bidi.grpc_server import start_grpc_server
86
79
  from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
87
80
  from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
88
81
  from .superlink.linkstate import LinkStateFactory
@@ -124,148 +117,6 @@ except ImportError:
124
117
  )
125
118
 
126
119
 
127
- def start_server( # pylint: disable=too-many-arguments,too-many-locals
128
- *,
129
- server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
130
- server: Optional[Server] = None,
131
- config: Optional[ServerConfig] = None,
132
- strategy: Optional[Strategy] = None,
133
- client_manager: Optional[ClientManager] = None,
134
- grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
135
- certificates: Optional[tuple[bytes, bytes, bytes]] = None,
136
- ) -> History:
137
- """Start a Flower server using the gRPC transport layer.
138
-
139
- Warning
140
- -------
141
- This function is deprecated since 1.13.0. Use the :code:`flower-superlink` command
142
- instead to start a SuperLink.
143
-
144
- Parameters
145
- ----------
146
- server_address : Optional[str]
147
- The IPv4 or IPv6 address of the server. Defaults to `"[::]:8080"`.
148
- server : Optional[flwr.server.Server] (default: None)
149
- A server implementation, either `flwr.server.Server` or a subclass
150
- thereof. If no instance is provided, then `start_server` will create
151
- one.
152
- config : Optional[ServerConfig] (default: None)
153
- Currently supported values are `num_rounds` (int, default: 1) and
154
- `round_timeout` in seconds (float, default: None).
155
- strategy : Optional[flwr.server.Strategy] (default: None).
156
- An implementation of the abstract base class
157
- `flwr.server.strategy.Strategy`. If no strategy is provided, then
158
- `start_server` will use `flwr.server.strategy.FedAvg`.
159
- client_manager : Optional[flwr.server.ClientManager] (default: None)
160
- An implementation of the abstract base class
161
- `flwr.server.ClientManager`. If no implementation is provided, then
162
- `start_server` will use
163
- `flwr.server.client_manager.SimpleClientManager`.
164
- grpc_max_message_length : int (default: 536_870_912, this equals 512MB)
165
- The maximum length of gRPC messages that can be exchanged with the
166
- Flower clients. The default should be sufficient for most models.
167
- Users who train very large models might need to increase this
168
- value. Note that the Flower clients need to be started with the
169
- same value (see `flwr.client.start_client`), otherwise clients will
170
- not know about the increased limit and block larger messages.
171
- certificates : Tuple[bytes, bytes, bytes] (default: None)
172
- Tuple containing root certificate, server certificate, and private key
173
- to start a secure SSL-enabled server. The tuple is expected to have
174
- three bytes elements in the following order:
175
-
176
- * CA certificate.
177
- * server certificate.
178
- * server private key.
179
-
180
- Returns
181
- -------
182
- hist : flwr.server.history.History
183
- Object containing training and evaluation metrics.
184
-
185
- Examples
186
- --------
187
- Starting an insecure server::
188
-
189
- start_server()
190
-
191
- Starting a TLS-enabled server::
192
-
193
- start_server(
194
- certificates=(
195
- Path("/crts/root.pem").read_bytes(),
196
- Path("/crts/localhost.crt").read_bytes(),
197
- Path("/crts/localhost.key").read_bytes()
198
- )
199
- )
200
- """
201
- msg = (
202
- "flwr.server.start_server() is deprecated."
203
- "\n\tInstead, use the `flower-superlink` CLI command to start a SuperLink "
204
- "as shown below:"
205
- "\n\n\t\t$ flower-superlink --insecure"
206
- "\n\n\tTo view usage and all available options, run:"
207
- "\n\n\t\t$ flower-superlink --help"
208
- "\n\n\tUsing `start_server()` is deprecated."
209
- )
210
- warn_deprecated_feature(name=msg)
211
-
212
- event(EventType.START_SERVER_ENTER)
213
-
214
- # Parse IP address
215
- parsed_address = parse_address(server_address)
216
- if not parsed_address:
217
- sys.exit(f"Server IP address ({server_address}) cannot be parsed.")
218
- host, port, is_v6 = parsed_address
219
- address = f"[{host}]:{port}" if is_v6 else f"{host}:{port}"
220
-
221
- # Initialize server and server config
222
- initialized_server, initialized_config = init_defaults(
223
- server=server,
224
- config=config,
225
- strategy=strategy,
226
- client_manager=client_manager,
227
- )
228
- log(
229
- INFO,
230
- "Starting Flower server, config: %s",
231
- initialized_config,
232
- )
233
-
234
- # Start gRPC server
235
- grpc_server = start_grpc_server(
236
- client_manager=initialized_server.client_manager(),
237
- server_address=address,
238
- max_message_length=grpc_max_message_length,
239
- certificates=certificates,
240
- )
241
- log(
242
- INFO,
243
- "Flower ECE: gRPC server running (%s rounds), SSL is %s",
244
- initialized_config.num_rounds,
245
- "enabled" if certificates is not None else "disabled",
246
- )
247
-
248
- # Graceful shutdown
249
- register_exit_handlers(
250
- event_type=EventType.START_SERVER_LEAVE,
251
- exit_message="Flower server terminated gracefully.",
252
- grpc_servers=[grpc_server],
253
- )
254
-
255
- # Start training
256
- hist = run_fl(
257
- server=initialized_server,
258
- config=initialized_config,
259
- )
260
-
261
- # Stop the gRPC server
262
- grpc_server.stop(grace=1)
263
-
264
- event(EventType.START_SERVER_LEAVE)
265
-
266
- return hist
267
-
268
-
269
120
  # pylint: disable=too-many-branches, too-many-locals, too-many-statements
270
121
  def run_superlink() -> None:
271
122
  """Run Flower SuperLink (ServerAppIo API and Fleet API)."""