flwr-nightly 1.21.0.dev20250806__tar.gz → 1.21.0.dev20250808__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 (388) hide show
  1. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/PKG-INFO +1 -1
  2. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +2 -2
  3. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +2 -2
  4. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +22 -8
  5. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/corestate/corestate.py +3 -2
  6. flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/__init__.py +15 -0
  7. flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/__init__.py +24 -0
  8. flwr_nightly-1.21.0.dev20250806/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py → flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +4 -4
  9. flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/scheduler/plugin.py → flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/exec_plugin.py +4 -4
  10. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/in_memory_nodestate.py +2 -2
  11. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +2 -7
  12. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/pyproject.toml +1 -1
  13. flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/scheduler/__init__.py +0 -22
  14. flwr_nightly-1.21.0.dev20250806/py/flwr/supernode/scheduler/__init__.py +0 -22
  15. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/README.md +0 -0
  16. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/__init__.py +0 -0
  17. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/__init__.py +0 -0
  18. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/error.py +0 -0
  19. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/metadata.py +0 -0
  20. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/__init__.py +0 -0
  21. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/app.py +0 -0
  22. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  23. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  24. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/build.py +0 -0
  25. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  26. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/config_utils.py +0 -0
  27. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/constant.py +0 -0
  28. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/example.py +0 -0
  29. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/install.py +0 -0
  30. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/log.py +0 -0
  31. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/__init__.py +0 -0
  32. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/login.py +0 -0
  33. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/ls.py +0 -0
  34. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/__init__.py +0 -0
  35. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/new.py +0 -0
  36. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/__init__.py +0 -0
  37. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  38. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  39. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  40. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  41. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  42. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  43. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  44. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  45. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  46. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  47. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  48. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  49. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  50. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  51. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  52. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  53. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  54. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  55. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  56. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  57. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  58. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  59. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  60. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  61. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  63. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  64. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  65. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  66. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  67. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  68. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  69. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  70. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  71. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  72. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  73. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  74. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  75. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  76. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  77. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  78. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  79. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  80. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  81. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  82. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  83. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  84. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  85. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  86. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  87. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  88. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/run/__init__.py +0 -0
  89. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/run/run.py +0 -0
  90. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/stop.py +0 -0
  91. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/utils.py +0 -0
  92. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/__init__.py +0 -0
  93. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client.py +0 -0
  94. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client_app.py +0 -0
  95. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/clientapp/__init__.py +0 -0
  96. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/clientapp/utils.py +0 -0
  97. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  98. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  99. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  100. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  101. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  102. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/connection.py +0 -0
  103. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  104. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/message_handler/__init__.py +0 -0
  105. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/message_handler/message_handler.py +0 -0
  106. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/__init__.py +0 -0
  107. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/centraldp_mods.py +0 -0
  108. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/comms_mods.py +0 -0
  109. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/localdp_mod.py +0 -0
  110. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  111. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  112. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  113. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/utils.py +0 -0
  114. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/numpy_client.py +0 -0
  115. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/rest_client/__init__.py +0 -0
  116. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/rest_client/connection.py +0 -0
  117. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/run_info_store.py +0 -0
  118. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/typing.py +0 -0
  119. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/clientapp/__init__.py +0 -0
  120. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/__init__.py +0 -0
  121. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/address.py +0 -0
  122. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/args.py +0 -0
  123. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/auth_plugin/__init__.py +0 -0
  124. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  125. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/config.py +0 -0
  126. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/constant.py +0 -0
  127. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/context.py +0 -0
  128. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/date.py +0 -0
  129. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/differential_privacy.py +0 -0
  130. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/differential_privacy_constants.py +0 -0
  131. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/dp.py +0 -0
  132. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  133. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  134. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/__init__.py +0 -0
  135. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/exit.py +0 -0
  136. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/exit_code.py +0 -0
  137. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit_handlers.py +0 -0
  138. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/grpc.py +0 -0
  139. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/heartbeat.py +0 -0
  140. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable.py +0 -0
  141. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  142. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable_utils.py +0 -0
  143. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/logger.py +0 -0
  144. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/message.py +0 -0
  145. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/object_ref.py +0 -0
  146. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/parameter.py +0 -0
  147. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/pyproject.py +0 -0
  148. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/__init__.py +0 -0
  149. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/array.py +0 -0
  150. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/arraychunk.py +0 -0
  151. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/arrayrecord.py +0 -0
  152. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/configrecord.py +0 -0
  153. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/conversion_utils.py +0 -0
  154. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/metricrecord.py +0 -0
  155. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/recorddict.py +0 -0
  156. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/typeddict.py +0 -0
  157. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/recorddict_compat.py +0 -0
  158. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/retry_invoker.py +0 -0
  159. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  160. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  161. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  162. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  163. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  164. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  165. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  166. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  167. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/serde.py +0 -0
  168. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/serde_utils.py +0 -0
  169. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/telemetry.py +0 -0
  170. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/typing.py +0 -0
  171. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/version.py +0 -0
  172. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/__init__.py +0 -0
  173. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/__init__.py +0 -0
  174. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/app.py +0 -0
  175. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  176. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  177. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/common/__init__.py +0 -0
  178. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/server/__init__.py +0 -0
  179. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/server/app.py +0 -0
  180. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/simulation/__init__.py +0 -0
  181. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/__init__.py +0 -0
  182. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2.py +0 -0
  183. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2.pyi +0 -0
  184. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  185. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  186. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2.py +0 -0
  187. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  188. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  189. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  190. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2.py +0 -0
  191. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2.pyi +0 -0
  192. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2_grpc.py +0 -0
  193. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  194. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2.py +0 -0
  195. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2.pyi +0 -0
  196. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2.py +0 -0
  199. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2.pyi +0 -0
  200. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2.py +0 -0
  203. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2.pyi +0 -0
  204. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  207. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  208. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  209. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  210. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2.py +0 -0
  211. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  212. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  213. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  214. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2.py +0 -0
  215. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2.pyi +0 -0
  216. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2_grpc.py +0 -0
  217. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  218. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2.py +0 -0
  219. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2.pyi +0 -0
  220. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2_grpc.py +0 -0
  221. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  222. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2.py +0 -0
  223. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2.pyi +0 -0
  224. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2_grpc.py +0 -0
  225. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  226. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2.py +0 -0
  227. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  228. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  229. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  230. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2.py +0 -0
  231. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2.pyi +0 -0
  232. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2_grpc.py +0 -0
  233. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  234. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2.py +0 -0
  235. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  236. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  237. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  238. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2.py +0 -0
  239. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  240. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  241. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  242. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2.py +0 -0
  243. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2.pyi +0 -0
  244. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  245. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  246. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/py.typed +0 -0
  247. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/__init__.py +0 -0
  248. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/app.py +0 -0
  249. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/client_manager.py +0 -0
  250. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/client_proxy.py +0 -0
  251. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/__init__.py +0 -0
  252. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/app.py +0 -0
  253. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/app_utils.py +0 -0
  254. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  255. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/legacy_context.py +0 -0
  256. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/criterion.py +0 -0
  257. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  258. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/__init__.py +0 -0
  259. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/grid.py +0 -0
  260. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/grpc_grid.py +0 -0
  261. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/inmemory_grid.py +0 -0
  262. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/history.py +0 -0
  263. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/run_serverapp.py +0 -0
  264. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server.py +0 -0
  265. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server_app.py +0 -0
  266. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server_config.py +0 -0
  267. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp/__init__.py +0 -0
  268. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp/app.py +0 -0
  269. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp_components.py +0 -0
  270. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/__init__.py +0 -0
  271. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/aggregate.py +0 -0
  272. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/bulyan.py +0 -0
  273. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  274. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  275. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  276. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  277. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  278. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedadagrad.py +0 -0
  279. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedadam.py +0 -0
  280. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavg.py +0 -0
  281. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavg_android.py +0 -0
  282. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavgm.py +0 -0
  283. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedmedian.py +0 -0
  284. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedopt.py +0 -0
  285. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedprox.py +0 -0
  286. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  287. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  288. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  289. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  290. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedyogi.py +0 -0
  291. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/krum.py +0 -0
  292. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/qfedavg.py +0 -0
  293. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/strategy.py +0 -0
  294. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/__init__.py +0 -0
  295. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  296. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  297. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  298. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  299. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  300. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  301. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  302. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  303. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  304. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  305. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  306. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  307. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  308. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  309. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  310. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  311. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  312. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  313. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  314. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  315. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  316. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  317. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  318. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  319. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  320. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  321. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  322. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  323. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  324. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/utils.py +0 -0
  325. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/typing.py +0 -0
  326. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/__init__.py +0 -0
  327. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/tensorboard.py +0 -0
  328. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/validator.py +0 -0
  329. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/__init__.py +0 -0
  330. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/constant.py +0 -0
  331. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/default_workflows.py +0 -0
  332. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  333. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  334. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  335. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/serverapp/__init__.py +0 -0
  336. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/__init__.py +0 -0
  337. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/app.py +0 -0
  338. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/legacy_app.py +0 -0
  339. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  340. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  341. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  342. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/utils.py +0 -0
  343. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/run_simulation.py +0 -0
  344. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/simulationio_connection.py +0 -0
  345. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/__init__.py +0 -0
  346. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/corestate/__init__.py +0 -0
  347. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/__init__.py +0 -0
  348. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
  349. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/ffs.py +0 -0
  350. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  351. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  352. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  353. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  354. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  355. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/__init__.py +0 -0
  356. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  357. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/object_store.py +0 -0
  358. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  359. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/utils.py +0 -0
  360. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/utils.py +0 -0
  361. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/__init__.py +0 -0
  362. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/deployment.py +0 -0
  363. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/simulation.py +0 -0
  364. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/__init__.py +0 -0
  365. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/__init__.py +0 -0
  366. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/app.py +0 -0
  367. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/deployment.py +0 -0
  368. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/executor.py +0 -0
  369. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/simulation.py +0 -0
  370. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/__init__.py +0 -0
  371. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/__init__.py +0 -0
  372. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
  373. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
  374. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
  375. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
  376. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_user_auth_interceptor.py +0 -0
  377. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/__init__.py +0 -0
  378. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/__init__.py +0 -0
  379. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/flower_supernode.py +0 -0
  380. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  381. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/__init__.py +0 -0
  382. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  383. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  384. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/runtime/__init__.py +0 -0
  385. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
  386. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/__init__.py +0 -0
  387. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  388. {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/start_client_internal.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.21.0.dev20250806
3
+ Version: 1.21.0.dev20250808
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
@@ -686,12 +686,12 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
686
686
  latest_timestamp = run.logs[-1][0] if index < len(run.logs) else 0.0
687
687
  return "".join(log for _, log in run.logs[index:]), latest_timestamp
688
688
 
689
- def create_token(self, run_id: int) -> str:
689
+ def create_token(self, run_id: int) -> Optional[str]:
690
690
  """Create a token for the given run ID."""
691
691
  token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
692
692
  with self.lock_token_store:
693
693
  if run_id in self.token_store:
694
- raise ValueError("Token already created for this run ID")
694
+ return None # Token already created for this run ID
695
695
  self.token_store[run_id] = token
696
696
  self.token_to_run_id[token] = run_id
697
697
  return token
@@ -1148,7 +1148,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
1148
1148
 
1149
1149
  return message_ins
1150
1150
 
1151
- def create_token(self, run_id: int) -> str:
1151
+ def create_token(self, run_id: int) -> Optional[str]:
1152
1152
  """Create a token for the given run ID."""
1153
1153
  token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
1154
1154
  query = "INSERT INTO token_store (run_id, token) VALUES (:run_id, :token);"
@@ -1156,7 +1156,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
1156
1156
  try:
1157
1157
  self.query(query, data)
1158
1158
  except sqlite3.IntegrityError:
1159
- raise ValueError("Token already created for this run ID") from None
1159
+ return None # Token already created for this run ID
1160
1160
  return token
1161
1161
 
1162
1162
  def verify_token(self, run_id: int, token: str) -> bool:
@@ -114,21 +114,35 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
114
114
  context: grpc.ServicerContext,
115
115
  ) -> ListAppsToLaunchResponse:
116
116
  """Get run IDs with pending messages."""
117
- log(DEBUG, "ClientAppIo.ListAppsToLaunch")
117
+ log(DEBUG, "ServerAppIoServicer.ListAppsToLaunch")
118
118
 
119
- context.abort(
120
- grpc.StatusCode.UNIMPLEMENTED, "ListAppsToLaunch is not implemented"
121
- )
122
- raise NotImplementedError
119
+ # Initialize state connection
120
+ state = self.state_factory.state()
121
+
122
+ # Get IDs of runs in pending status
123
+ run_ids = state.get_run_ids(flwr_aid=None)
124
+ pending_run_ids = []
125
+ for run_id, status in state.get_run_status(run_ids).items():
126
+ if status.status == Status.PENDING:
127
+ pending_run_ids.append(run_id)
128
+
129
+ # Return run IDs
130
+ return ListAppsToLaunchResponse(run_ids=pending_run_ids)
123
131
 
124
132
  def RequestToken(
125
133
  self, request: RequestTokenRequest, context: grpc.ServicerContext
126
134
  ) -> RequestTokenResponse:
127
135
  """Request token."""
128
- log(DEBUG, "ClientAppIo.RequestToken")
136
+ log(DEBUG, "ServerAppIoServicer.RequestToken")
137
+
138
+ # Initialize state connection
139
+ state = self.state_factory.state()
140
+
141
+ # Attempt to create a token for the provided run ID
142
+ token = state.create_token(request.run_id)
129
143
 
130
- context.abort(grpc.StatusCode.UNIMPLEMENTED, "RequestToken is not implemented")
131
- raise NotImplementedError
144
+ # Return the token
145
+ return RequestTokenResponse(token=token or "")
132
146
 
133
147
  def GetNodes(
134
148
  self, request: GetNodesRequest, context: grpc.ServicerContext
@@ -23,7 +23,7 @@ class CoreState(ABC):
23
23
  """Abstract base class for core state."""
24
24
 
25
25
  @abstractmethod
26
- def create_token(self, run_id: int) -> str:
26
+ def create_token(self, run_id: int) -> Optional[str]:
27
27
  """Create a token for the given run ID.
28
28
 
29
29
  Parameters
@@ -34,7 +34,8 @@ class CoreState(ABC):
34
34
  Returns
35
35
  -------
36
36
  str
37
- A unique token associated with the run ID.
37
+ The newly generated token if one does not already exist
38
+ for the given run ID, otherwise None.
38
39
  """
39
40
 
40
41
  @abstractmethod
@@ -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 SuperExec."""
@@ -0,0 +1,24 @@
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 SuperExec plugins."""
16
+
17
+
18
+ from .clientapp_exec_plugin import ClientAppExecPlugin
19
+ from .exec_plugin import ExecPlugin
20
+
21
+ __all__ = [
22
+ "ClientAppExecPlugin",
23
+ "ExecPlugin",
24
+ ]
@@ -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
- """Simple Flower ClientApp Scheduler plugin."""
15
+ """Simple Flower SuperExec plugin for ClientApp."""
16
16
 
17
17
 
18
18
  import os
@@ -20,11 +20,11 @@ import subprocess
20
20
  from collections.abc import Sequence
21
21
  from typing import Optional
22
22
 
23
- from flwr.supercore.scheduler import SchedulerPlugin
23
+ from .exec_plugin import ExecPlugin
24
24
 
25
25
 
26
- class SimpleClientAppSchedulerPlugin(SchedulerPlugin):
27
- """Simple Flower ClientApp Scheduler plugin.
26
+ class ClientAppExecPlugin(ExecPlugin):
27
+ """Simple Flower SuperExec plugin for ClientApp.
28
28
 
29
29
  The plugin always selects the first candidate run ID.
30
30
  """
@@ -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
- """Abstract base class SchedulerPlugin."""
15
+ """Abstract base class ExecPlugin."""
16
16
 
17
17
 
18
18
  from abc import ABC, abstractmethod
@@ -22,8 +22,8 @@ from typing import Callable, Optional
22
22
  from flwr.common.typing import Run
23
23
 
24
24
 
25
- class SchedulerPlugin(ABC):
26
- """Abstract base class for Scheduler plugins."""
25
+ class ExecPlugin(ABC):
26
+ """Abstract base class for SuperExec plugins."""
27
27
 
28
28
  def __init__(
29
29
  self,
@@ -59,7 +59,7 @@ class SchedulerPlugin(ABC):
59
59
 
60
60
  This method starts the application process using the given `token`.
61
61
  The `run_id` is used solely for bookkeeping purposes, allowing any
62
- scheduler implementation to associate this launch with a specific run.
62
+ plugin implementation to associate this launch with a specific run.
63
63
 
64
64
  Parameters
65
65
  ----------
@@ -171,12 +171,12 @@ class InMemoryNodeState(NodeState): # pylint: disable=too-many-instance-attribu
171
171
  ret -= set(self.token_store.keys())
172
172
  return list(ret)
173
173
 
174
- def create_token(self, run_id: int) -> str:
174
+ def create_token(self, run_id: int) -> Optional[str]:
175
175
  """Create a token for the given run ID."""
176
176
  token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
177
177
  with self.lock_token_store:
178
178
  if run_id in self.token_store:
179
- raise ValueError("Token already created for this run ID")
179
+ return None # Token already created for this run ID
180
180
  self.token_store[run_id] = token
181
181
  self.token_to_run_id[token] = run_id
182
182
  return token
@@ -107,15 +107,10 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
107
107
  state = self.state_factory.state()
108
108
 
109
109
  # Attempt to create a token for the provided run ID
110
- try:
111
- token = state.create_token(request.run_id)
112
- except ValueError:
113
- # Return an empty token if A token already exists for this run ID,
114
- # indicating the run is in progress
115
- return RequestTokenResponse(token="")
110
+ token = state.create_token(request.run_id)
116
111
 
117
112
  # Return the token
118
- return RequestTokenResponse(token=token)
113
+ return RequestTokenResponse(token=token or "")
119
114
 
120
115
  def GetRun(
121
116
  self, request: GetRunRequest, context: grpc.ServicerContext
@@ -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.dev20250806"
7
+ version = "1.21.0.dev20250808"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -1,22 +0,0 @@
1
- # Copyright 2025 Flower Labs GmbH. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # ==============================================================================
15
- """Flower App Scheduler."""
16
-
17
-
18
- from .plugin import SchedulerPlugin
19
-
20
- __all__ = [
21
- "SchedulerPlugin",
22
- ]
@@ -1,22 +0,0 @@
1
- # Copyright 2025 Flower Labs GmbH. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # ==============================================================================
15
- """Flower ClientApp Scheduler."""
16
-
17
-
18
- from .simple_clientapp_scheduler_plugin import SimpleClientAppSchedulerPlugin
19
-
20
- __all__ = [
21
- "SimpleClientAppSchedulerPlugin",
22
- ]