flwr-nightly 1.21.0.dev20250730__tar.gz → 1.21.0.dev20250801__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 (384) hide show
  1. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/PKG-INFO +1 -1
  2. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/connection.py +1 -12
  3. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/rest_client/connection.py +3 -0
  4. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/args.py +2 -6
  5. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/retry_invoker.py +30 -11
  6. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/app.py +2 -2
  7. flwr_nightly-1.21.0.dev20250801/py/flwr/superexec/deployment.py +20 -0
  8. flwr_nightly-1.21.0.dev20250801/py/flwr/superexec/simulation.py +20 -0
  9. flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor/__init__.py +28 -0
  10. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/app.py +1 -1
  11. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/deployment.py +0 -3
  12. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/simulation.py +0 -3
  13. flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/__init__.py +15 -0
  14. flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec/__init__.py +22 -0
  15. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_event_log_interceptor.py +1 -1
  16. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_grpc.py +5 -5
  17. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_license_interceptor.py +1 -1
  18. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_servicer.py +3 -3
  19. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_user_auth_interceptor.py +1 -1
  20. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/start_client_internal.py +10 -41
  21. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/pyproject.toml +1 -1
  22. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/README.md +0 -0
  23. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/__init__.py +0 -0
  24. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/__init__.py +0 -0
  25. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/error.py +0 -0
  26. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/metadata.py +0 -0
  27. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/__init__.py +0 -0
  28. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/app.py +0 -0
  29. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  30. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  31. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/build.py +0 -0
  32. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  33. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/config_utils.py +0 -0
  34. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/constant.py +0 -0
  35. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/example.py +0 -0
  36. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/install.py +0 -0
  37. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/log.py +0 -0
  38. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/__init__.py +0 -0
  39. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/login.py +0 -0
  40. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/ls.py +0 -0
  41. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/__init__.py +0 -0
  42. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/new.py +0 -0
  43. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/__init__.py +0 -0
  44. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  45. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  46. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  47. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  48. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  49. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  50. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  51. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  52. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  53. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  54. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  55. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  56. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  57. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  58. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  59. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  60. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  61. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  63. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  64. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  65. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  66. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  67. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  68. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  69. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  70. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  71. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  72. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  73. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  74. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  75. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  76. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  77. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  78. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  79. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  80. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  81. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  82. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  83. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  84. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  85. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  86. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  87. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  88. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  89. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  90. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  91. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  92. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  93. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  94. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  95. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/run/__init__.py +0 -0
  96. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/run/run.py +0 -0
  97. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/stop.py +0 -0
  98. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/utils.py +0 -0
  99. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/__init__.py +0 -0
  100. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/client.py +0 -0
  101. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/client_app.py +0 -0
  102. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/clientapp/__init__.py +0 -0
  103. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/clientapp/utils.py +0 -0
  104. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  105. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  106. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  107. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  108. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  109. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  110. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/message_handler/__init__.py +0 -0
  111. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/message_handler/message_handler.py +0 -0
  112. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/__init__.py +0 -0
  113. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/centraldp_mods.py +0 -0
  114. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/comms_mods.py +0 -0
  115. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/localdp_mod.py +0 -0
  116. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  117. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  118. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  119. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/utils.py +0 -0
  120. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/numpy_client.py +0 -0
  121. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/rest_client/__init__.py +0 -0
  122. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/run_info_store.py +0 -0
  123. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/typing.py +0 -0
  124. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/clientapp/__init__.py +0 -0
  125. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/__init__.py +0 -0
  126. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/address.py +0 -0
  127. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/auth_plugin/__init__.py +0 -0
  128. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  129. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/config.py +0 -0
  130. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/constant.py +0 -0
  131. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/context.py +0 -0
  132. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/date.py +0 -0
  133. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/differential_privacy.py +0 -0
  134. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/differential_privacy_constants.py +0 -0
  135. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/dp.py +0 -0
  136. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  137. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  138. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/__init__.py +0 -0
  139. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/exit.py +0 -0
  140. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/exit_code.py +0 -0
  141. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit_handlers.py +0 -0
  142. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/grpc.py +0 -0
  143. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/heartbeat.py +0 -0
  144. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable.py +0 -0
  145. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  146. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable_utils.py +0 -0
  147. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/logger.py +0 -0
  148. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/message.py +0 -0
  149. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/object_ref.py +0 -0
  150. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/parameter.py +0 -0
  151. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/pyproject.py +0 -0
  152. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/__init__.py +0 -0
  153. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/array.py +0 -0
  154. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/arraychunk.py +0 -0
  155. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/arrayrecord.py +0 -0
  156. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/configrecord.py +0 -0
  157. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/conversion_utils.py +0 -0
  158. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/metricrecord.py +0 -0
  159. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/recorddict.py +0 -0
  160. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/typeddict.py +0 -0
  161. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/recorddict_compat.py +0 -0
  162. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  163. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  164. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  165. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  166. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  167. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  168. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  169. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  170. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/serde.py +0 -0
  171. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/serde_utils.py +0 -0
  172. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/telemetry.py +0 -0
  173. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/typing.py +0 -0
  174. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/version.py +0 -0
  175. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/__init__.py +0 -0
  176. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/__init__.py +0 -0
  177. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/app.py +0 -0
  178. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  179. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  180. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/common/__init__.py +0 -0
  181. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/server/__init__.py +0 -0
  182. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/server/app.py +0 -0
  183. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/simulation/__init__.py +0 -0
  184. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/__init__.py +0 -0
  185. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2.py +0 -0
  186. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2.pyi +0 -0
  187. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  188. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  189. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2.py +0 -0
  190. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  191. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  192. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  193. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2.py +0 -0
  194. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2.pyi +0 -0
  195. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2_grpc.py +0 -0
  196. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  197. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2.py +0 -0
  198. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2.pyi +0 -0
  199. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2_grpc.py +0 -0
  200. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  201. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2.py +0 -0
  202. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2.pyi +0 -0
  203. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  204. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  205. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2.py +0 -0
  206. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2.pyi +0 -0
  207. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  210. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  211. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  212. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  213. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2.py +0 -0
  214. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  215. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  216. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  217. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2.py +0 -0
  218. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2.pyi +0 -0
  219. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2_grpc.py +0 -0
  220. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  221. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2.py +0 -0
  222. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2.pyi +0 -0
  223. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2_grpc.py +0 -0
  224. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  225. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2.py +0 -0
  226. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2.pyi +0 -0
  227. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2_grpc.py +0 -0
  228. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  229. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2.py +0 -0
  230. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  231. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  232. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  233. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2.py +0 -0
  234. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2.pyi +0 -0
  235. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2_grpc.py +0 -0
  236. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  237. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2.py +0 -0
  238. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  239. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  240. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  241. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2.py +0 -0
  242. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  243. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  244. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  245. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2.py +0 -0
  246. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2.pyi +0 -0
  247. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  248. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  249. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/py.typed +0 -0
  250. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/__init__.py +0 -0
  251. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/client_manager.py +0 -0
  252. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/client_proxy.py +0 -0
  253. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/__init__.py +0 -0
  254. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/app.py +0 -0
  255. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/app_utils.py +0 -0
  256. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  257. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/legacy_context.py +0 -0
  258. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/criterion.py +0 -0
  259. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  260. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/__init__.py +0 -0
  261. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/grid.py +0 -0
  262. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/grpc_grid.py +0 -0
  263. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/inmemory_grid.py +0 -0
  264. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/history.py +0 -0
  265. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/run_serverapp.py +0 -0
  266. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server.py +0 -0
  267. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server_app.py +0 -0
  268. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server_config.py +0 -0
  269. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp/__init__.py +0 -0
  270. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp/app.py +0 -0
  271. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp_components.py +0 -0
  272. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/__init__.py +0 -0
  273. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/aggregate.py +0 -0
  274. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/bulyan.py +0 -0
  275. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  276. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  277. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  278. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  279. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  280. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedadagrad.py +0 -0
  281. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedadam.py +0 -0
  282. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavg.py +0 -0
  283. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavg_android.py +0 -0
  284. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavgm.py +0 -0
  285. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedmedian.py +0 -0
  286. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedopt.py +0 -0
  287. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedprox.py +0 -0
  288. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  289. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  290. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  291. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  292. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedyogi.py +0 -0
  293. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/krum.py +0 -0
  294. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/qfedavg.py +0 -0
  295. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/strategy.py +0 -0
  296. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/__init__.py +0 -0
  297. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  298. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  299. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  300. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  301. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  302. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  303. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  304. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  305. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  306. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  307. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  308. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  309. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  310. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  311. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  312. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  313. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  314. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  315. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  316. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  317. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  318. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  319. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  320. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  321. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  322. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  323. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  324. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  325. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
  326. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  327. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  328. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  329. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/utils.py +0 -0
  330. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/typing.py +0 -0
  331. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/__init__.py +0 -0
  332. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/tensorboard.py +0 -0
  333. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/validator.py +0 -0
  334. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/__init__.py +0 -0
  335. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/constant.py +0 -0
  336. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/default_workflows.py +0 -0
  337. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  338. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  339. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  340. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/serverapp/__init__.py +0 -0
  341. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/__init__.py +0 -0
  342. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/app.py +0 -0
  343. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/legacy_app.py +0 -0
  344. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  345. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  346. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  347. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/utils.py +0 -0
  348. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/run_simulation.py +0 -0
  349. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/simulationio_connection.py +0 -0
  350. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/__init__.py +0 -0
  351. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/__init__.py +0 -0
  352. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
  353. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/ffs.py +0 -0
  354. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  355. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  356. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  357. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  358. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  359. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/__init__.py +0 -0
  360. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  361. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/object_store.py +0 -0
  362. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  363. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/utils.py +0 -0
  364. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/scheduler/__init__.py +0 -0
  365. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/scheduler/plugin.py +0 -0
  366. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/utils.py +0 -0
  367. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/superexec/__init__.py +0 -0
  368. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/superlink/__init__.py +0 -0
  369. {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/executor.py +0 -0
  370. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/__init__.py +0 -0
  371. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/__init__.py +0 -0
  372. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/flower_supernode.py +0 -0
  373. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  374. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/__init__.py +0 -0
  375. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  376. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  377. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  378. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/runtime/__init__.py +0 -0
  379. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
  380. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/scheduler/__init__.py +0 -0
  381. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py +0 -0
  382. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/__init__.py +0 -0
  383. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  384. {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250730
3
+ Version: 1.21.0.dev20250801
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
@@ -40,7 +40,7 @@ from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
40
40
  generate_key_pairs,
41
41
  )
42
42
  from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
43
- from flwr.common.typing import Fab, Run, RunNotRunningException
43
+ from flwr.common.typing import Fab, Run
44
44
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
45
45
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
46
46
  CreateNodeRequest,
@@ -157,17 +157,6 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
157
157
  stub = adapter_cls(channel)
158
158
  node: Optional[Node] = None
159
159
 
160
- def _should_giveup_fn(e: Exception) -> bool:
161
- if e.code() == grpc.StatusCode.PERMISSION_DENIED: # type: ignore
162
- raise RunNotRunningException
163
- if e.code() == grpc.StatusCode.UNAVAILABLE: # type: ignore
164
- return False
165
- return True
166
-
167
- # Restrict retries to cases where the status code is UNAVAILABLE
168
- # If the status code is PERMISSION_DENIED, additionally raise RunNotRunningException
169
- retry_invoker.should_giveup = _should_giveup_fn
170
-
171
160
  # Wrap stub
172
161
  _wrap_stub(stub, retry_invoker)
173
162
  ###########################################################################
@@ -176,6 +176,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
176
176
  # Shared variables for inner functions
177
177
  node: Optional[Node] = None
178
178
 
179
+ # Remove should_giveup from RetryInvoker as REST does not support gRPC status codes
180
+ retry_invoker.should_giveup = None
181
+
179
182
  ###########################################################################
180
183
  # heartbeat/create_node/delete_node/receive/send/get_run functions
181
184
  ###########################################################################
@@ -17,7 +17,7 @@
17
17
 
18
18
  import argparse
19
19
  import sys
20
- from logging import DEBUG, ERROR, WARN
20
+ from logging import DEBUG, ERROR, INFO, WARN
21
21
  from os.path import isfile
22
22
  from pathlib import Path
23
23
  from typing import Optional, Union
@@ -72,11 +72,7 @@ def try_obtain_root_certificates(
72
72
  else:
73
73
  # Load the certificates if provided, or load the system certificates
74
74
  if root_cert_path is None:
75
- log(
76
- WARN,
77
- "Both `--insecure` and `--root-certificates` were not set. "
78
- "Using system certificates.",
79
- )
75
+ log(INFO, "Using system certificates")
80
76
  root_certificates = None
81
77
  elif not isfile(root_cert_path):
82
78
  log(ERROR, "Path argument `--root-certificates` does not point to a file.")
@@ -17,6 +17,7 @@
17
17
 
18
18
  import itertools
19
19
  import random
20
+ import threading
20
21
  import time
21
22
  from collections.abc import Generator, Iterable
22
23
  from dataclasses import dataclass
@@ -319,8 +320,12 @@ class RetryInvoker:
319
320
 
320
321
  def _make_simple_grpc_retry_invoker() -> RetryInvoker:
321
322
  """Create a simple gRPC retry invoker."""
323
+ lock = threading.Lock()
324
+ system_healthy = threading.Event()
325
+ system_healthy.set() # Initially, the connection is healthy
322
326
 
323
- def _on_sucess(retry_state: RetryState) -> None:
327
+ def _on_success(retry_state: RetryState) -> None:
328
+ system_healthy.set()
324
329
  if retry_state.tries > 1:
325
330
  log(
326
331
  INFO,
@@ -329,17 +334,11 @@ def _make_simple_grpc_retry_invoker() -> RetryInvoker:
329
334
  retry_state.tries,
330
335
  )
331
336
 
332
- def _on_backoff(retry_state: RetryState) -> None:
333
- if retry_state.tries == 1:
334
- log(WARN, "Connection attempt failed, retrying...")
335
- else:
336
- log(
337
- WARN,
338
- "Connection attempt failed, retrying in %.2f seconds",
339
- retry_state.actual_wait,
340
- )
337
+ def _on_backoff(_: RetryState) -> None:
338
+ system_healthy.clear()
341
339
 
342
340
  def _on_giveup(retry_state: RetryState) -> None:
341
+ system_healthy.clear()
343
342
  if retry_state.tries > 1:
344
343
  log(
345
344
  WARN,
@@ -355,15 +354,35 @@ def _make_simple_grpc_retry_invoker() -> RetryInvoker:
355
354
  return False
356
355
  return True
357
356
 
357
+ def _wait(wait_time: float) -> None:
358
+ # Use a lock to prevent multiple gRPC calls from retrying concurrently,
359
+ # which is unnecessary since they are all likely to fail.
360
+ with lock:
361
+ # Log the wait time
362
+ log(
363
+ WARN,
364
+ "Connection attempt failed, retrying in %.2f seconds",
365
+ wait_time,
366
+ )
367
+
368
+ start = time.monotonic()
369
+ # Avoid sequential waits if the system is healthy
370
+ system_healthy.wait(wait_time)
371
+
372
+ remaining_time = wait_time - (time.monotonic() - start)
373
+ if remaining_time > 0:
374
+ time.sleep(remaining_time)
375
+
358
376
  return RetryInvoker(
359
377
  wait_gen_factory=lambda: exponential(max_delay=MAX_RETRY_DELAY),
360
378
  recoverable_exceptions=grpc.RpcError,
361
379
  max_tries=None,
362
380
  max_time=None,
363
- on_success=_on_sucess,
381
+ on_success=_on_success,
364
382
  on_backoff=_on_backoff,
365
383
  on_giveup=_on_giveup,
366
384
  should_giveup=_should_giveup_fn,
385
+ wait_function=_wait,
367
386
  )
368
387
 
369
388
 
@@ -73,8 +73,8 @@ from flwr.server.serverapp.app import flwr_serverapp
73
73
  from flwr.simulation.app import flwr_simulation
74
74
  from flwr.supercore.ffs import FfsFactory
75
75
  from flwr.supercore.object_store import ObjectStoreFactory
76
- from flwr.superexec.app import load_executor
77
- from flwr.superexec.exec_grpc import run_exec_api_grpc
76
+ from flwr.superlink.executor import load_executor
77
+ from flwr.superlink.servicer.exec import run_exec_api_grpc
78
78
 
79
79
  from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
80
80
  from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
@@ -0,0 +1,20 @@
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
+ """Deployment engine executor for backward compatibility."""
16
+
17
+
18
+ from flwr.superlink.executor import DeploymentEngine
19
+
20
+ executor = DeploymentEngine()
@@ -0,0 +1,20 @@
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
+ """Simulation engine executor for backward compatibility."""
16
+
17
+
18
+ from flwr.superlink.executor import SimulationEngine
19
+
20
+ executor = SimulationEngine()
@@ -0,0 +1,28 @@
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
+ """Executor for Exec API."""
16
+
17
+
18
+ from .app import load_executor
19
+ from .deployment import DeploymentEngine
20
+ from .executor import Executor
21
+ from .simulation import SimulationEngine
22
+
23
+ __all__ = [
24
+ "DeploymentEngine",
25
+ "Executor",
26
+ "SimulationEngine",
27
+ "load_executor",
28
+ ]
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Flower SuperExec app."""
15
+ """Function for loading executor."""
16
16
 
17
17
 
18
18
  import argparse
@@ -186,6 +186,3 @@ class DeploymentEngine(Executor):
186
186
  run_status = RunStatus(Status.FINISHED, SubStatus.FAILED, str(e))
187
187
  self.linkstate.update_run_status(run_id, new_status=run_status)
188
188
  return None
189
-
190
-
191
- executor = DeploymentEngine()
@@ -124,6 +124,3 @@ class SimulationEngine(Executor):
124
124
  except Exception as e:
125
125
  log(ERROR, "Could not start run: %s", str(e))
126
126
  return None
127
-
128
-
129
- executor = SimulationEngine()
@@ -0,0 +1,15 @@
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 SuperLink servicers."""
@@ -0,0 +1,22 @@
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
+ """Exec API Servicer."""
16
+
17
+
18
+ from .exec_grpc import run_exec_api_grpc
19
+
20
+ __all__ = [
21
+ "run_exec_api_grpc",
22
+ ]
@@ -49,7 +49,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
49
49
  return continuation(handler_call_details)
50
50
 
51
51
  # One of the method handlers in
52
- # `flwr.superexec.exec_servicer.ExecServicer`
52
+ # `flwr.superlink.servicer.exec.ExecServicer`
53
53
  method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
54
54
  method_name: str = handler_call_details.method
55
55
  return self._generic_event_log_unary_method_handler(method_handler, method_name)
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """SuperExec gRPC API."""
15
+ """Exec API server."""
16
16
 
17
17
 
18
18
  from logging import INFO
@@ -32,12 +32,12 @@ from flwr.server.superlink.linkstate import LinkStateFactory
32
32
  from flwr.supercore.ffs import FfsFactory
33
33
  from flwr.supercore.license_plugin import LicensePlugin
34
34
  from flwr.supercore.object_store import ObjectStoreFactory
35
- from flwr.superexec.exec_event_log_interceptor import ExecEventLogInterceptor
36
- from flwr.superexec.exec_license_interceptor import ExecLicenseInterceptor
37
- from flwr.superexec.exec_user_auth_interceptor import ExecUserAuthInterceptor
38
35
 
36
+ from ...executor import Executor
37
+ from .exec_event_log_interceptor import ExecEventLogInterceptor
38
+ from .exec_license_interceptor import ExecLicenseInterceptor
39
39
  from .exec_servicer import ExecServicer
40
- from .executor import Executor
40
+ from .exec_user_auth_interceptor import ExecUserAuthInterceptor
41
41
 
42
42
  try:
43
43
  from flwr.ee import get_license_plugin
@@ -47,7 +47,7 @@ class ExecLicenseInterceptor(grpc.ServerInterceptor): # type: ignore
47
47
  return continuation(handler_call_details)
48
48
 
49
49
  # One of the method handlers in
50
- # `flwr.superexec.exec_servicer.ExecServicer`
50
+ # `flwr.superlink.servicer.exec.ExecServicer`
51
51
  method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
52
52
  return self._generic_license_unary_method_handler(method_handler)
53
53
 
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """SuperExec API servicer."""
15
+ """Exec API servicer."""
16
16
 
17
17
 
18
18
  import time
@@ -57,12 +57,12 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
57
57
  from flwr.supercore.ffs import FfsFactory
58
58
  from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
59
59
 
60
+ from ...executor.executor import Executor
60
61
  from .exec_user_auth_interceptor import shared_account_info
61
- from .executor import Executor
62
62
 
63
63
 
64
64
  class ExecServicer(exec_pb2_grpc.ExecServicer):
65
- """SuperExec API servicer."""
65
+ """Exec API servicer."""
66
66
 
67
67
  def __init__( # pylint: disable=R0913, R0917
68
68
  self,
@@ -77,7 +77,7 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
77
77
  return continuation(handler_call_details)
78
78
 
79
79
  # One of the method handlers in
80
- # `flwr.superexec.exec_servicer.ExecServicer`
80
+ # `flwr.superlink.servicer.exec.ExecServicer`
81
81
  method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
82
82
  return self._generic_auth_unary_method_handler(method_handler)
83
83
 
@@ -21,7 +21,7 @@ import time
21
21
  from collections.abc import Iterator
22
22
  from contextlib import contextmanager
23
23
  from functools import partial
24
- from logging import INFO, WARN
24
+ from logging import INFO
25
25
  from pathlib import Path
26
26
  from typing import Callable, Optional, Union, cast
27
27
 
@@ -38,7 +38,6 @@ from flwr.common.constant import (
38
38
  CLIENT_OCTET,
39
39
  CLIENTAPPIO_API_DEFAULT_SERVER_ADDRESS,
40
40
  ISOLATION_MODE_SUBPROCESS,
41
- MAX_RETRY_DELAY,
42
41
  SERVER_OCTET,
43
42
  TRANSPORT_TYPE_GRPC_ADAPTER,
44
43
  TRANSPORT_TYPE_GRPC_RERE,
@@ -54,7 +53,7 @@ from flwr.common.inflatable_utils import (
54
53
  push_object_contents_from_iterable,
55
54
  )
56
55
  from flwr.common.logger import log
57
- from flwr.common.retry_invoker import RetryInvoker, RetryState, exponential
56
+ from flwr.common.retry_invoker import RetryInvoker, _make_simple_grpc_retry_invoker
58
57
  from flwr.common.telemetry import EventType
59
58
  from flwr.common.typing import Fab, Run, RunNotRunningException, UserConfig
60
59
  from flwr.proto.clientappio_pb2_grpc import add_ClientAppIoServicer_to_server
@@ -521,44 +520,14 @@ def _make_fleet_connection_retry_invoker(
521
520
  connection_error_type: type[Exception] = RpcError,
522
521
  ) -> RetryInvoker:
523
522
  """Create a retry invoker for fleet connection."""
524
-
525
- def _on_success(retry_state: RetryState) -> None:
526
- if retry_state.tries > 1:
527
- log(
528
- INFO,
529
- "Connection successful after %.2f seconds and %s tries.",
530
- retry_state.elapsed_time,
531
- retry_state.tries,
532
- )
533
-
534
- def _on_backoff(retry_state: RetryState) -> None:
535
- if retry_state.tries == 1:
536
- log(WARN, "Connection attempt failed, retrying...")
537
- else:
538
- log(
539
- WARN,
540
- "Connection attempt failed, retrying in %.2f seconds",
541
- retry_state.actual_wait,
542
- )
543
-
544
- return RetryInvoker(
545
- wait_gen_factory=lambda: exponential(max_delay=MAX_RETRY_DELAY),
546
- recoverable_exceptions=connection_error_type,
547
- max_tries=max_retries + 1 if max_retries is not None else None,
548
- max_time=max_wait_time,
549
- on_giveup=lambda retry_state: (
550
- log(
551
- WARN,
552
- "Giving up reconnection after %.2f seconds and %s tries.",
553
- retry_state.elapsed_time,
554
- retry_state.tries,
555
- )
556
- if retry_state.tries > 1
557
- else None
558
- ),
559
- on_success=_on_success,
560
- on_backoff=_on_backoff,
561
- )
523
+ retry_invoker = _make_simple_grpc_retry_invoker()
524
+ retry_invoker.recoverable_exceptions = connection_error_type
525
+ if max_retries is not None:
526
+ retry_invoker.max_tries = max_retries + 1
527
+ if max_wait_time is not None:
528
+ retry_invoker.max_time = max_wait_time
529
+
530
+ return retry_invoker
562
531
 
563
532
 
564
533
  def run_clientappio_api_grpc(
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.21.0.dev20250730"
7
+ version = "1.21.0.dev20250801"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]