flwr-nightly 1.23.0.dev20251021__tar.gz → 1.23.0.dev20251022__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.

Potentially problematic release.


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

Files changed (437) hide show
  1. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/PKG-INFO +1 -1
  2. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/app.py +4 -6
  3. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/vce/vce_api.py +2 -1
  4. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/linkstate_factory.py +2 -1
  5. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +35 -40
  6. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/utils.py +3 -54
  7. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/run_simulation.py +2 -1
  8. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/constant.py +3 -0
  9. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/object_store/object_store_factory.py +26 -6
  10. flwr_nightly-1.23.0.dev20251022/py/flwr/supercore/object_store/sqlite_object_store.py +252 -0
  11. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/sqlite_mixin.py +5 -37
  12. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/utils.py +20 -0
  13. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/pyproject.toml +1 -1
  14. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/README.md +0 -0
  15. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/__init__.py +0 -0
  16. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/app/__init__.py +0 -0
  17. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/app/error.py +0 -0
  18. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/app/exception.py +0 -0
  19. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/app/metadata.py +0 -0
  20. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/__init__.py +0 -0
  21. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/app.py +0 -0
  22. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  23. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/auth_plugin/auth_plugin.py +0 -0
  24. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/auth_plugin/noop_auth_plugin.py +0 -0
  25. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  26. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/build.py +0 -0
  27. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/cli_account_auth_interceptor.py +0 -0
  28. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/config_utils.py +0 -0
  29. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/constant.py +0 -0
  30. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/example.py +0 -0
  31. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/install.py +0 -0
  32. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/log.py +0 -0
  33. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/login/__init__.py +0 -0
  34. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/login/login.py +0 -0
  35. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/ls.py +0 -0
  36. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/__init__.py +0 -0
  37. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/new.py +0 -0
  38. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/__init__.py +0 -0
  39. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  40. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  41. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  42. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  43. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  44. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  45. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  46. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  47. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  48. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl +0 -0
  49. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  50. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  51. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  52. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  53. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  54. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  55. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl +0 -0
  56. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  57. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  58. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/client.xgboost.py.tpl +0 -0
  59. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  60. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  61. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  62. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  63. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  64. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  65. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  66. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  67. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  68. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  69. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  70. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  71. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  72. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  73. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl +0 -0
  74. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  75. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  76. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/server.xgboost.py.tpl +0 -0
  77. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  78. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  79. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  80. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  81. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  82. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  83. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl +0 -0
  84. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  85. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  86. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/task.xgboost.py.tpl +0 -0
  87. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  88. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  89. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  90. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  91. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  92. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  93. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  94. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  95. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +0 -0
  96. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  97. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  98. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +0 -0
  99. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/pull.py +0 -0
  100. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/run/__init__.py +0 -0
  101. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/run/run.py +0 -0
  102. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/stop.py +0 -0
  103. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/supernode/__init__.py +0 -0
  104. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/supernode/ls.py +0 -0
  105. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/supernode/register.py +0 -0
  106. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/supernode/unregister.py +0 -0
  107. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/cli/utils.py +0 -0
  108. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/__init__.py +0 -0
  109. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/client.py +0 -0
  110. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  111. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  112. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  113. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  114. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_rere_client/connection.py +0 -0
  115. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  116. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/grpc_rere_client/node_auth_client_interceptor.py +0 -0
  117. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/message_handler/__init__.py +0 -0
  118. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/message_handler/message_handler.py +0 -0
  119. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/__init__.py +0 -0
  120. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/centraldp_mods.py +0 -0
  121. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/comms_mods.py +0 -0
  122. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/localdp_mod.py +0 -0
  123. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  124. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  125. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  126. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/mod/utils.py +0 -0
  127. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/numpy_client.py +0 -0
  128. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/rest_client/__init__.py +0 -0
  129. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/rest_client/connection.py +0 -0
  130. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/run_info_store.py +0 -0
  131. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/client/typing.py +0 -0
  132. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/__init__.py +0 -0
  133. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/client_app.py +0 -0
  134. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/mod/__init__.py +0 -0
  135. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/mod/centraldp_mods.py +0 -0
  136. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/mod/localdp_mod.py +0 -0
  137. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/typing.py +0 -0
  138. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/clientapp/utils.py +0 -0
  139. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/__init__.py +0 -0
  140. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/address.py +0 -0
  141. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/args.py +0 -0
  142. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/config.py +0 -0
  143. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/constant.py +0 -0
  144. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/context.py +0 -0
  145. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/date.py +0 -0
  146. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/differential_privacy.py +0 -0
  147. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/differential_privacy_constants.py +0 -0
  148. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/dp.py +0 -0
  149. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  150. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  151. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/exit/__init__.py +0 -0
  152. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/exit/exit.py +0 -0
  153. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/exit/exit_code.py +0 -0
  154. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/exit/exit_handler.py +0 -0
  155. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/exit/signal_handler.py +0 -0
  156. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/grpc.py +0 -0
  157. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/heartbeat.py +0 -0
  158. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/inflatable.py +0 -0
  159. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  160. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/inflatable_utils.py +0 -0
  161. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/logger.py +0 -0
  162. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/message.py +0 -0
  163. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/object_ref.py +0 -0
  164. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/parameter.py +0 -0
  165. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/pyproject.py +0 -0
  166. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/__init__.py +0 -0
  167. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/array.py +0 -0
  168. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/arraychunk.py +0 -0
  169. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/arrayrecord.py +0 -0
  170. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/configrecord.py +0 -0
  171. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/conversion_utils.py +0 -0
  172. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/metricrecord.py +0 -0
  173. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/recorddict.py +0 -0
  174. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/record/typeddict.py +0 -0
  175. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/recorddict_compat.py +0 -0
  176. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/retry_invoker.py +0 -0
  177. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  178. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  179. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  180. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  181. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  182. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  183. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  184. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  185. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/serde.py +0 -0
  186. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/serde_utils.py +0 -0
  187. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/telemetry.py +0 -0
  188. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/typing.py +0 -0
  189. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/common/version.py +0 -0
  190. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/__init__.py +0 -0
  191. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/client/__init__.py +0 -0
  192. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/client/app.py +0 -0
  193. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  194. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  195. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/common/__init__.py +0 -0
  196. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/server/__init__.py +0 -0
  197. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/server/app.py +0 -0
  198. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/compat/simulation/__init__.py +0 -0
  199. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/__init__.py +0 -0
  200. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/appio_pb2.py +0 -0
  201. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/appio_pb2.pyi +0 -0
  202. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  203. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  204. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/clientappio_pb2.py +0 -0
  205. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  206. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  207. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  208. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/control_pb2.py +0 -0
  209. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/control_pb2.pyi +0 -0
  210. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/control_pb2_grpc.py +0 -0
  211. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  212. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/error_pb2.py +0 -0
  213. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/error_pb2.pyi +0 -0
  214. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/error_pb2_grpc.py +0 -0
  215. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  216. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fab_pb2.py +0 -0
  217. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fab_pb2.pyi +0 -0
  218. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  219. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  220. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fleet_pb2.py +0 -0
  221. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fleet_pb2.pyi +0 -0
  222. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  223. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  224. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  225. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  226. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  227. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  228. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/heartbeat_pb2.py +0 -0
  229. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  230. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  231. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  232. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/log_pb2.py +0 -0
  233. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/log_pb2.pyi +0 -0
  234. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/log_pb2_grpc.py +0 -0
  235. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  236. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/message_pb2.py +0 -0
  237. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/message_pb2.pyi +0 -0
  238. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/message_pb2_grpc.py +0 -0
  239. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  240. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/node_pb2.py +0 -0
  241. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/node_pb2.pyi +0 -0
  242. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/node_pb2_grpc.py +0 -0
  243. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  244. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/recorddict_pb2.py +0 -0
  245. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  246. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  247. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  248. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/run_pb2.py +0 -0
  249. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/run_pb2.pyi +0 -0
  250. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/run_pb2_grpc.py +0 -0
  251. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  252. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/serverappio_pb2.py +0 -0
  253. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  254. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  255. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  256. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/simulationio_pb2.py +0 -0
  257. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  258. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  259. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  260. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/transport_pb2.py +0 -0
  261. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/transport_pb2.pyi +0 -0
  262. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  263. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  264. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/py.typed +0 -0
  265. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/__init__.py +0 -0
  266. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/client_manager.py +0 -0
  267. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/client_proxy.py +0 -0
  268. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/compat/__init__.py +0 -0
  269. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/compat/app.py +0 -0
  270. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/compat/app_utils.py +0 -0
  271. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  272. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/compat/legacy_context.py +0 -0
  273. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/criterion.py +0 -0
  274. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  275. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/grid/__init__.py +0 -0
  276. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/grid/grid.py +0 -0
  277. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/grid/grpc_grid.py +0 -0
  278. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/grid/inmemory_grid.py +0 -0
  279. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/history.py +0 -0
  280. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/run_serverapp.py +0 -0
  281. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/server.py +0 -0
  282. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/server_app.py +0 -0
  283. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/server_config.py +0 -0
  284. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/serverapp/__init__.py +0 -0
  285. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/serverapp/app.py +0 -0
  286. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/serverapp_components.py +0 -0
  287. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/__init__.py +0 -0
  288. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/aggregate.py +0 -0
  289. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/bulyan.py +0 -0
  290. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  291. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  292. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  293. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  294. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  295. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedadagrad.py +0 -0
  296. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedadam.py +0 -0
  297. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedavg.py +0 -0
  298. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedavg_android.py +0 -0
  299. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedavgm.py +0 -0
  300. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedmedian.py +0 -0
  301. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedopt.py +0 -0
  302. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedprox.py +0 -0
  303. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  304. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  305. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  306. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  307. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/fedyogi.py +0 -0
  308. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/krum.py +0 -0
  309. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/qfedavg.py +0 -0
  310. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/strategy/strategy.py +0 -0
  311. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/__init__.py +0 -0
  312. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  313. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  314. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  315. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  316. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  317. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  318. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  319. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  320. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  321. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  322. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +0 -0
  323. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  324. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  325. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  326. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  327. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  328. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  329. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  330. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  331. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  332. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  333. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  334. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  335. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  336. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
  337. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  338. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  339. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  340. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/superlink/utils.py +0 -0
  341. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/typing.py +0 -0
  342. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/utils/__init__.py +0 -0
  343. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/utils/tensorboard.py +0 -0
  344. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/utils/validator.py +0 -0
  345. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/__init__.py +0 -0
  346. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/constant.py +0 -0
  347. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/default_workflows.py +0 -0
  348. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  349. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  350. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  351. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/__init__.py +0 -0
  352. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/exception.py +0 -0
  353. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/__init__.py +0 -0
  354. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/bulyan.py +0 -0
  355. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/dp_adaptive_clipping.py +0 -0
  356. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/dp_fixed_clipping.py +0 -0
  357. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedadagrad.py +0 -0
  358. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedadam.py +0 -0
  359. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedavg.py +0 -0
  360. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedavgm.py +0 -0
  361. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedmedian.py +0 -0
  362. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedopt.py +0 -0
  363. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedprox.py +0 -0
  364. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedtrimmedavg.py +0 -0
  365. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedxgb_bagging.py +0 -0
  366. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedxgb_cyclic.py +0 -0
  367. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/fedyogi.py +0 -0
  368. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/krum.py +0 -0
  369. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/multikrum.py +0 -0
  370. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/qfedavg.py +0 -0
  371. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/result.py +0 -0
  372. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/strategy.py +0 -0
  373. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/serverapp/strategy/strategy_utils.py +0 -0
  374. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/__init__.py +0 -0
  375. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/app.py +0 -0
  376. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/legacy_app.py +0 -0
  377. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  378. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  379. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  380. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/ray_transport/utils.py +0 -0
  381. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/simulation/simulationio_connection.py +0 -0
  382. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/__init__.py +0 -0
  383. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/app_utils.py +0 -0
  384. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/cli/__init__.py +0 -0
  385. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/cli/flower_superexec.py +0 -0
  386. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/corestate/__init__.py +0 -0
  387. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/corestate/corestate.py +0 -0
  388. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/ffs/__init__.py +0 -0
  389. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
  390. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/ffs/ffs.py +0 -0
  391. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  392. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  393. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/grpc_health/health_server.py +0 -0
  394. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  395. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  396. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  397. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/object_store/__init__.py +0 -0
  398. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  399. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/object_store/object_store.py +0 -0
  400. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/object_store/utils.py +0 -0
  401. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/primitives/__init__.py +0 -0
  402. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/primitives/asymmetric.py +0 -0
  403. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/__init__.py +0 -0
  404. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
  405. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
  406. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
  407. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
  408. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
  409. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
  410. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supercore/superexec/run_superexec.py +0 -0
  411. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/__init__.py +0 -0
  412. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/artifact_provider/__init__.py +0 -0
  413. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/artifact_provider/artifact_provider.py +0 -0
  414. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/auth_plugin/__init__.py +0 -0
  415. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/auth_plugin/auth_plugin.py +0 -0
  416. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/auth_plugin/noop_auth_plugin.py +0 -0
  417. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/__init__.py +0 -0
  418. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/__init__.py +0 -0
  419. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/control_account_auth_interceptor.py +0 -0
  420. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
  421. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
  422. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
  423. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
  424. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/__init__.py +0 -0
  425. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/cli/__init__.py +0 -0
  426. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/cli/flower_supernode.py +0 -0
  427. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  428. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/nodestate/__init__.py +0 -0
  429. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  430. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  431. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  432. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/runtime/__init__.py +0 -0
  433. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
  434. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/servicer/__init__.py +0 -0
  435. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  436. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -0
  437. {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251022}/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.23.0.dev20251021
3
+ Version: 1.23.0.dev20251022
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
@@ -64,6 +64,7 @@ from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
64
64
  )
65
65
  from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
66
66
  from flwr.server.fleet_event_log_interceptor import FleetEventLogInterceptor
67
+ from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
67
68
  from flwr.supercore.ffs import FfsFactory
68
69
  from flwr.supercore.grpc_health import add_args_health, run_health_server_grpc_no_tls
69
70
  from flwr.supercore.object_store import ObjectStoreFactory
@@ -85,7 +86,6 @@ from .superlink.linkstate import LinkStateFactory
85
86
  from .superlink.serverappio.serverappio_grpc import run_serverappio_api_grpc
86
87
  from .superlink.simulation.simulationio_grpc import run_simulationio_api_grpc
87
88
 
88
- DATABASE = ":flwr-in-memory-state:"
89
89
  BASE_DIR = get_flwr_dir() / "superlink" / "ffs"
90
90
  P = TypeVar("P", ControlAuthnPlugin, ControlAuthzPlugin)
91
91
 
@@ -272,7 +272,7 @@ def run_superlink() -> None:
272
272
  ffs_factory = FfsFactory(args.storage_dir)
273
273
 
274
274
  # Initialize ObjectStoreFactory
275
- objectstore_factory = ObjectStoreFactory()
275
+ objectstore_factory = ObjectStoreFactory(args.database)
276
276
 
277
277
  # Start Control API
278
278
  is_simulation = args.simulation
@@ -710,11 +710,9 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
710
710
  parser.add_argument(
711
711
  "--database",
712
712
  help="A string representing the path to the database "
713
- "file that will be opened. Note that passing ':memory:' "
714
- "will open a connection to a database that is in RAM, "
715
- "instead of on disk. If nothing is provided, "
713
+ "file that will be opened. If nothing is provided, "
716
714
  "Flower will just create a state in memory.",
717
- default=DATABASE,
715
+ default=FLWR_IN_MEMORY_DB_NAME,
718
716
  )
719
717
  parser.add_argument(
720
718
  "--storage-dir",
@@ -42,6 +42,7 @@ from flwr.common.constant import (
42
42
  from flwr.common.logger import log
43
43
  from flwr.common.typing import Run
44
44
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
45
+ from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
45
46
 
46
47
  from .backend import Backend, error_messages_backends, supported_backends
47
48
 
@@ -312,7 +313,7 @@ def start_vce(
312
313
  if not state_factory:
313
314
  log(INFO, "A StateFactory was not supplied to the SimulationEngine.")
314
315
  # Create an empty in-memory state factory
315
- state_factory = LinkStateFactory(":flwr-in-memory-state:")
316
+ state_factory = LinkStateFactory(FLWR_IN_MEMORY_DB_NAME)
316
317
  log(INFO, "Created new %s.", state_factory.__class__.__name__)
317
318
 
318
319
  if num_supernodes:
@@ -19,6 +19,7 @@ from logging import DEBUG
19
19
  from typing import Optional
20
20
 
21
21
  from flwr.common.logger import log
22
+ from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
22
23
 
23
24
  from .in_memory_linkstate import InMemoryLinkState
24
25
  from .linkstate import LinkState
@@ -44,7 +45,7 @@ class LinkStateFactory:
44
45
  def state(self) -> LinkState:
45
46
  """Return a State instance and create it, if necessary."""
46
47
  # InMemoryState
47
- if self.database == ":flwr-in-memory-state:":
48
+ if self.database == FLWR_IN_MEMORY_DB_NAME:
48
49
  if self.state_instance is None:
49
50
  self.state_instance = InMemoryLinkState()
50
51
  log(DEBUG, "Using InMemoryState")
@@ -52,6 +52,7 @@ from flwr.proto.recorddict_pb2 import RecordDict as ProtoRecordDict
52
52
  from flwr.server.utils.validator import validate_message
53
53
  from flwr.supercore.constant import NodeStatus
54
54
  from flwr.supercore.sqlite_mixin import SqliteMixin
55
+ from flwr.supercore.utils import int64_to_uint64, uint64_to_int64
55
56
 
56
57
  from .linkstate import LinkState
57
58
  from .utils import (
@@ -60,9 +61,7 @@ from .utils import (
60
61
  configrecord_to_bytes,
61
62
  context_from_bytes,
62
63
  context_to_bytes,
63
- convert_sint64_to_uint64,
64
64
  convert_sint64_values_in_dict_to_uint64,
65
- convert_uint64_to_sint64,
66
65
  convert_uint64_values_in_dict_to_sint64,
67
66
  generate_rand_int_from_bytes,
68
67
  has_valid_sub_status,
@@ -265,7 +264,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
265
264
  data: dict[str, Union[str, int]] = {}
266
265
 
267
266
  # Convert the uint64 value to sint64 for SQLite
268
- data["node_id"] = convert_uint64_to_sint64(node_id)
267
+ data["node_id"] = uint64_to_int64(node_id)
269
268
 
270
269
  # Retrieve all Messages for node_id
271
270
  query = """
@@ -340,8 +339,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
340
339
  if (
341
340
  msg_ins
342
341
  and message
343
- and convert_sint64_to_uint64(msg_ins["dst_node_id"])
344
- != res_metadata.src_node_id
342
+ and int64_to_uint64(msg_ins["dst_node_id"]) != res_metadata.src_node_id
345
343
  ):
346
344
  return None
347
345
 
@@ -417,7 +415,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
417
415
  dst_node_ids: set[int] = set()
418
416
  for message_id in message_ids:
419
417
  in_message = found_message_ins_dict[message_id]
420
- sint_node_id = convert_uint64_to_sint64(in_message.metadata.dst_node_id)
418
+ sint_node_id = uint64_to_int64(in_message.metadata.dst_node_id)
421
419
  dst_node_ids.add(sint_node_id)
422
420
  query = f"""
423
421
  SELECT node_id, online_until
@@ -430,8 +428,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
430
428
  inquired_in_message_ids=message_ids,
431
429
  found_in_message_dict=found_message_ins_dict,
432
430
  node_id_to_online_until={
433
- convert_sint64_to_uint64(row["node_id"]): row["online_until"]
434
- for row in rows
431
+ int64_to_uint64(row["node_id"]): row["online_until"] for row in rows
435
432
  },
436
433
  current_time=current,
437
434
  )
@@ -532,7 +529,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
532
529
  WHERE run_id = :run_id;
533
530
  """
534
531
 
535
- sint64_run_id = convert_uint64_to_sint64(run_id)
532
+ sint64_run_id = uint64_to_int64(run_id)
536
533
  data = {"run_id": sint64_run_id}
537
534
 
538
535
  with self.conn:
@@ -550,7 +547,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
550
547
  )
551
548
 
552
549
  # Convert the uint64 value to sint64 for SQLite
553
- sint64_node_id = convert_uint64_to_sint64(uint64_node_id)
550
+ sint64_node_id = uint64_to_int64(uint64_node_id)
554
551
 
555
552
  query = """
556
553
  INSERT INTO node
@@ -589,7 +586,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
589
586
 
590
587
  def delete_node(self, owner_aid: str, node_id: int) -> None:
591
588
  """Delete a node."""
592
- sint64_node_id = convert_uint64_to_sint64(node_id)
589
+ sint64_node_id = uint64_to_int64(node_id)
593
590
 
594
591
  query = """
595
592
  UPDATE node
@@ -628,7 +625,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
628
625
  raise AttributeError("LinkState not initialized")
629
626
 
630
627
  # Convert the uint64 value to sint64 for SQLite
631
- sint64_run_id = convert_uint64_to_sint64(run_id)
628
+ sint64_run_id = uint64_to_int64(run_id)
632
629
 
633
630
  # Validate run ID
634
631
  query = "SELECT COUNT(*) FROM run WHERE run_id = ?"
@@ -673,9 +670,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
673
670
  conditions = []
674
671
  params = []
675
672
  if node_ids is not None:
676
- sint64_node_ids = [
677
- convert_uint64_to_sint64(node_id) for node_id in node_ids
678
- ]
673
+ sint64_node_ids = [uint64_to_int64(node_id) for node_id in node_ids]
679
674
  placeholders = ",".join(["?"] * len(sint64_node_ids))
680
675
  conditions.append(f"node_id IN ({placeholders})")
681
676
  params.extend(sint64_node_ids)
@@ -698,7 +693,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
698
693
  result: list[NodeInfo] = []
699
694
  for row in rows:
700
695
  # Convert sint64 node_id to uint64
701
- row["node_id"] = convert_sint64_to_uint64(row["node_id"])
696
+ row["node_id"] = int64_to_uint64(row["node_id"])
702
697
  result.append(NodeInfo(**row))
703
698
 
704
699
  return result
@@ -706,7 +701,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
706
701
  def get_node_public_key(self, node_id: int) -> bytes:
707
702
  """Get `public_key` for the specified `node_id`."""
708
703
  # Convert the uint64 value to sint64 for SQLite
709
- sint64_node_id = convert_uint64_to_sint64(node_id)
704
+ sint64_node_id = uint64_to_int64(node_id)
710
705
 
711
706
  # Query the public key for the given node_id
712
707
  query = "SELECT public_key FROM node WHERE node_id = ? AND status != ?;"
@@ -730,7 +725,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
730
725
  return None
731
726
 
732
727
  # Convert sint64 node_id to uint64
733
- node_id = convert_sint64_to_uint64(rows[0]["node_id"])
728
+ node_id = int64_to_uint64(rows[0]["node_id"])
734
729
  return node_id
735
730
 
736
731
  # pylint: disable=too-many-arguments,too-many-positional-arguments
@@ -748,7 +743,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
748
743
  uint64_run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES)
749
744
 
750
745
  # Convert the uint64 value to sint64 for SQLite
751
- sint64_run_id = convert_uint64_to_sint64(uint64_run_id)
746
+ sint64_run_id = uint64_to_int64(uint64_run_id)
752
747
 
753
748
  # Check conflicts
754
749
  query = "SELECT COUNT(*) FROM run WHERE run_id = ?;"
@@ -796,7 +791,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
796
791
  )
797
792
  else:
798
793
  rows = self.query("SELECT run_id FROM run;", ())
799
- return {convert_sint64_to_uint64(row["run_id"]) for row in rows}
794
+ return {int64_to_uint64(row["run_id"]) for row in rows}
800
795
 
801
796
  def _check_and_tag_inactive_run(self, run_ids: set[int]) -> None:
802
797
  """Check if any runs are no longer active.
@@ -804,7 +799,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
804
799
  Marks runs with status 'starting' or 'running' as failed
805
800
  if they have not sent a heartbeat before `active_until`.
806
801
  """
807
- sint_run_ids = [convert_uint64_to_sint64(run_id) for run_id in run_ids]
802
+ sint_run_ids = [uint64_to_int64(run_id) for run_id in run_ids]
808
803
  query = "UPDATE run SET finished_at = ?, sub_status = ?, details = ? "
809
804
  query += "WHERE starting_at != '' AND finished_at = '' AND active_until < ?"
810
805
  query += f" AND run_id IN ({','.join(['?'] * len(run_ids))});"
@@ -826,13 +821,13 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
826
821
  self._check_and_tag_inactive_run(run_ids={run_id})
827
822
 
828
823
  # Convert the uint64 value to sint64 for SQLite
829
- sint64_run_id = convert_uint64_to_sint64(run_id)
824
+ sint64_run_id = uint64_to_int64(run_id)
830
825
  query = "SELECT * FROM run WHERE run_id = ?;"
831
826
  rows = self.query(query, (sint64_run_id,))
832
827
  if rows:
833
828
  row = rows[0]
834
829
  return Run(
835
- run_id=convert_sint64_to_uint64(row["run_id"]),
830
+ run_id=int64_to_uint64(row["run_id"]),
836
831
  fab_id=row["fab_id"],
837
832
  fab_version=row["fab_version"],
838
833
  fab_hash=row["fab_hash"],
@@ -857,13 +852,13 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
857
852
  self._check_and_tag_inactive_run(run_ids=run_ids)
858
853
 
859
854
  # Convert the uint64 value to sint64 for SQLite
860
- sint64_run_ids = (convert_uint64_to_sint64(run_id) for run_id in set(run_ids))
855
+ sint64_run_ids = (uint64_to_int64(run_id) for run_id in set(run_ids))
861
856
  query = f"SELECT * FROM run WHERE run_id IN ({','.join(['?'] * len(run_ids))});"
862
857
  rows = self.query(query, tuple(sint64_run_ids))
863
858
 
864
859
  return {
865
860
  # Restore uint64 run IDs
866
- convert_sint64_to_uint64(row["run_id"]): RunStatus(
861
+ int64_to_uint64(row["run_id"]): RunStatus(
867
862
  status=determine_run_status(row),
868
863
  sub_status=row["sub_status"],
869
864
  details=row["details"],
@@ -877,7 +872,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
877
872
  self._check_and_tag_inactive_run(run_ids={run_id})
878
873
 
879
874
  # Convert the uint64 value to sint64 for SQLite
880
- sint64_run_id = convert_uint64_to_sint64(run_id)
875
+ sint64_run_id = uint64_to_int64(run_id)
881
876
  query = "SELECT * FROM run WHERE run_id = ?;"
882
877
  rows = self.query(query, (sint64_run_id,))
883
878
 
@@ -943,7 +938,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
943
938
  new_status.details,
944
939
  active_until,
945
940
  heartbeat_interval,
946
- convert_uint64_to_sint64(run_id),
941
+ uint64_to_int64(run_id),
947
942
  )
948
943
  self.query(query % timestamp_fld, data)
949
944
  return True
@@ -956,14 +951,14 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
956
951
  query = "SELECT * FROM run WHERE starting_at = '' LIMIT 1;"
957
952
  rows = self.query(query)
958
953
  if rows:
959
- pending_run_id = convert_sint64_to_uint64(rows[0]["run_id"])
954
+ pending_run_id = int64_to_uint64(rows[0]["run_id"])
960
955
 
961
956
  return pending_run_id
962
957
 
963
958
  def get_federation_options(self, run_id: int) -> Optional[ConfigRecord]:
964
959
  """Retrieve the federation options for the specified `run_id`."""
965
960
  # Convert the uint64 value to sint64 for SQLite
966
- sint64_run_id = convert_uint64_to_sint64(run_id)
961
+ sint64_run_id = uint64_to_int64(run_id)
967
962
  query = "SELECT federation_options FROM run WHERE run_id = ?;"
968
963
  rows = self.query(query, (sint64_run_id,))
969
964
 
@@ -988,7 +983,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
988
983
  if self.conn is None:
989
984
  raise AttributeError("LinkState not initialized")
990
985
 
991
- sint64_node_id = convert_uint64_to_sint64(node_id)
986
+ sint64_node_id = uint64_to_int64(node_id)
992
987
 
993
988
  with self.conn:
994
989
  # Check if node exists and not deleted
@@ -1030,7 +1025,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1030
1025
  self._check_and_tag_inactive_run(run_ids={run_id})
1031
1026
 
1032
1027
  # Search for the run
1033
- sint_run_id = convert_uint64_to_sint64(run_id)
1028
+ sint_run_id = uint64_to_int64(run_id)
1034
1029
  query = "SELECT * FROM run WHERE run_id = ?;"
1035
1030
  rows = self.query(query, (sint_run_id,))
1036
1031
 
@@ -1060,7 +1055,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1060
1055
  """Get the context for the specified `run_id`."""
1061
1056
  # Retrieve context if any
1062
1057
  query = "SELECT context FROM context WHERE run_id = ?;"
1063
- rows = self.query(query, (convert_uint64_to_sint64(run_id),))
1058
+ rows = self.query(query, (uint64_to_int64(run_id),))
1064
1059
  context = context_from_bytes(rows[0]["context"]) if rows else None
1065
1060
  return context
1066
1061
 
@@ -1068,7 +1063,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1068
1063
  """Set the context for the specified `run_id`."""
1069
1064
  # Convert context to bytes
1070
1065
  context_bytes = context_to_bytes(context)
1071
- sint_run_id = convert_uint64_to_sint64(run_id)
1066
+ sint_run_id = uint64_to_int64(run_id)
1072
1067
 
1073
1068
  # Check if any existing Context assigned to the run_id
1074
1069
  query = "SELECT COUNT(*) FROM context WHERE run_id = ?;"
@@ -1087,7 +1082,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1087
1082
  def add_serverapp_log(self, run_id: int, log_message: str) -> None:
1088
1083
  """Add a log entry to the ServerApp logs for the specified `run_id`."""
1089
1084
  # Convert the uint64 value to sint64 for SQLite
1090
- sint64_run_id = convert_uint64_to_sint64(run_id)
1085
+ sint64_run_id = uint64_to_int64(run_id)
1091
1086
 
1092
1087
  # Store log
1093
1088
  try:
@@ -1103,7 +1098,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1103
1098
  ) -> tuple[str, float]:
1104
1099
  """Get the ServerApp logs for the specified `run_id`."""
1105
1100
  # Convert the uint64 value to sint64 for SQLite
1106
- sint64_run_id = convert_uint64_to_sint64(run_id)
1101
+ sint64_run_id = uint64_to_int64(run_id)
1107
1102
 
1108
1103
  # Check if the run_id exists
1109
1104
  query = "SELECT run_id FROM run WHERE run_id = ?;"
@@ -1153,7 +1148,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1153
1148
  """Create a token for the given run ID."""
1154
1149
  token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
1155
1150
  query = "INSERT INTO token_store (run_id, token) VALUES (:run_id, :token);"
1156
- data = {"run_id": convert_uint64_to_sint64(run_id), "token": token}
1151
+ data = {"run_id": uint64_to_int64(run_id), "token": token}
1157
1152
  try:
1158
1153
  self.query(query, data)
1159
1154
  except sqlite3.IntegrityError:
@@ -1163,7 +1158,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1163
1158
  def verify_token(self, run_id: int, token: str) -> bool:
1164
1159
  """Verify a token for the given run ID."""
1165
1160
  query = "SELECT token FROM token_store WHERE run_id = :run_id;"
1166
- data = {"run_id": convert_uint64_to_sint64(run_id)}
1161
+ data = {"run_id": uint64_to_int64(run_id)}
1167
1162
  rows = self.query(query, data)
1168
1163
  if not rows:
1169
1164
  return False
@@ -1172,7 +1167,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1172
1167
  def delete_token(self, run_id: int) -> None:
1173
1168
  """Delete the token for the given run ID."""
1174
1169
  query = "DELETE FROM token_store WHERE run_id = :run_id;"
1175
- data = {"run_id": convert_uint64_to_sint64(run_id)}
1170
+ data = {"run_id": uint64_to_int64(run_id)}
1176
1171
  self.query(query, data)
1177
1172
 
1178
1173
  def get_run_id_by_token(self, token: str) -> Optional[int]:
@@ -1182,7 +1177,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
1182
1177
  rows = self.query(query, data)
1183
1178
  if not rows:
1184
1179
  return None
1185
- return convert_sint64_to_uint64(rows[0]["run_id"])
1180
+ return int64_to_uint64(rows[0]["run_id"])
1186
1181
 
1187
1182
 
1188
1183
  def message_to_dict(message: Message) -> dict[str, Any]:
@@ -1237,5 +1232,5 @@ def determine_run_status(row: dict[str, Any]) -> str:
1237
1232
  return Status.RUNNING
1238
1233
  return Status.STARTING
1239
1234
  return Status.PENDING
1240
- run_id = convert_sint64_to_uint64(row["run_id"])
1235
+ run_id = int64_to_uint64(row["run_id"])
1241
1236
  raise sqlite3.IntegrityError(f"The run {run_id} does not have a valid status.")
@@ -33,6 +33,7 @@ from flwr.common.typing import RunStatus
33
33
  # pylint: disable=E0611
34
34
  from flwr.proto.message_pb2 import Context as ProtoContext
35
35
  from flwr.proto.recorddict_pb2 import ConfigRecord as ProtoConfigRecord
36
+ from flwr.supercore.utils import int64_to_uint64, uint64_to_int64
36
37
 
37
38
  # pylint: enable=E0611
38
39
  VALID_RUN_STATUS_TRANSITIONS = {
@@ -76,58 +77,6 @@ def generate_rand_int_from_bytes(
76
77
  return num
77
78
 
78
79
 
79
- def convert_uint64_to_sint64(u: int) -> int:
80
- """Convert a uint64 value to a sint64 value with the same bit sequence.
81
-
82
- Parameters
83
- ----------
84
- u : int
85
- The unsigned 64-bit integer to convert.
86
-
87
- Returns
88
- -------
89
- int
90
- The signed 64-bit integer equivalent.
91
-
92
- The signed 64-bit integer will have the same bit pattern as the
93
- unsigned 64-bit integer but may have a different decimal value.
94
-
95
- For numbers within the range [0, `sint64` max value], the decimal
96
- value remains the same. However, for numbers greater than the `sint64`
97
- max value, the decimal value will differ due to the wraparound caused
98
- by the sign bit.
99
- """
100
- if u >= (1 << 63):
101
- return u - (1 << 64)
102
- return u
103
-
104
-
105
- def convert_sint64_to_uint64(s: int) -> int:
106
- """Convert a sint64 value to a uint64 value with the same bit sequence.
107
-
108
- Parameters
109
- ----------
110
- s : int
111
- The signed 64-bit integer to convert.
112
-
113
- Returns
114
- -------
115
- int
116
- The unsigned 64-bit integer equivalent.
117
-
118
- The unsigned 64-bit integer will have the same bit pattern as the
119
- signed 64-bit integer but may have a different decimal value.
120
-
121
- For negative `sint64` values, the conversion adds 2^64 to the
122
- signed value to obtain the equivalent `uint64` value. For non-negative
123
- `sint64` values, the decimal value remains unchanged in the `uint64`
124
- representation.
125
- """
126
- if s < 0:
127
- return s + (1 << 64)
128
- return s
129
-
130
-
131
80
  def convert_uint64_values_in_dict_to_sint64(
132
81
  data_dict: dict[str, int], keys: list[str]
133
82
  ) -> None:
@@ -142,7 +91,7 @@ def convert_uint64_values_in_dict_to_sint64(
142
91
  """
143
92
  for key in keys:
144
93
  if key in data_dict:
145
- data_dict[key] = convert_uint64_to_sint64(data_dict[key])
94
+ data_dict[key] = uint64_to_int64(data_dict[key])
146
95
 
147
96
 
148
97
  def convert_sint64_values_in_dict_to_uint64(
@@ -159,7 +108,7 @@ def convert_sint64_values_in_dict_to_uint64(
159
108
  """
160
109
  for key in keys:
161
110
  if key in data_dict:
162
- data_dict[key] = convert_sint64_to_uint64(data_dict[key])
111
+ data_dict[key] = int64_to_uint64(data_dict[key])
163
112
 
164
113
 
165
114
  def context_to_bytes(context: Context) -> bytes:
@@ -51,6 +51,7 @@ from flwr.server.superlink.linkstate.utils import generate_rand_int_from_bytes
51
51
  from flwr.simulation.ray_transport.utils import (
52
52
  enable_tf_gpu_growth as enable_gpu_growth,
53
53
  )
54
+ from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
54
55
 
55
56
 
56
57
  def _replace_keys(d: Any, match: str, target: str) -> Any:
@@ -336,7 +337,7 @@ def _main_loop(
336
337
  ) -> Context:
337
338
  """Start ServerApp on a separate thread, then launch Simulation Engine."""
338
339
  # Initialize StateFactory
339
- state_factory = LinkStateFactory(":flwr-in-memory-state:")
340
+ state_factory = LinkStateFactory(FLWR_IN_MEMORY_DB_NAME)
340
341
 
341
342
  f_stop = threading.Event()
342
343
  # A Threading event to indicate if an exception was raised in the ServerApp thread
@@ -20,6 +20,9 @@ from __future__ import annotations
20
20
  # Top-level key in YAML config for exec plugin settings
21
21
  EXEC_PLUGIN_SECTION = "exec_plugin"
22
22
 
23
+ # Flower in-memory Python-based database name
24
+ FLWR_IN_MEMORY_DB_NAME = ":flwr-in-memory:"
25
+
23
26
 
24
27
  class NodeStatus:
25
28
  """Event log writer types."""
@@ -19,15 +19,27 @@ from logging import DEBUG
19
19
  from typing import Optional
20
20
 
21
21
  from flwr.common.logger import log
22
+ from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
22
23
 
23
24
  from .in_memory_object_store import InMemoryObjectStore
24
25
  from .object_store import ObjectStore
26
+ from .sqlite_object_store import SqliteObjectStore
25
27
 
26
28
 
27
29
  class ObjectStoreFactory:
28
- """Factory class that creates ObjectStore instances."""
30
+ """Factory class that creates ObjectStore instances.
29
31
 
30
- def __init__(self) -> None:
32
+ Parameters
33
+ ----------
34
+ database : str (default: FLWR_IN_MEMORY_DB_NAME)
35
+ A string representing the path to the database file that will be opened.
36
+ Note that passing ":memory:" will open a connection to a database that is
37
+ in RAM, instead of on disk. And FLWR_IN_MEMORY_DB_NAME will create an
38
+ Python-based in-memory ObjectStore.
39
+ """
40
+
41
+ def __init__(self, database: str = FLWR_IN_MEMORY_DB_NAME) -> None:
42
+ self.database = database
31
43
  self.store_instance: Optional[ObjectStore] = None
32
44
 
33
45
  def store(self) -> ObjectStore:
@@ -38,7 +50,15 @@ class ObjectStoreFactory:
38
50
  ObjectStore
39
51
  An ObjectStore instance for storing objects by object_id.
40
52
  """
41
- if self.store_instance is None:
42
- self.store_instance = InMemoryObjectStore()
43
- log(DEBUG, "Using InMemoryObjectStore")
44
- return self.store_instance
53
+ # InMemoryObjectStore
54
+ if self.database == FLWR_IN_MEMORY_DB_NAME:
55
+ if self.store_instance is None:
56
+ self.store_instance = InMemoryObjectStore()
57
+ log(DEBUG, "Using InMemoryObjectStore")
58
+ return self.store_instance
59
+
60
+ # SqliteObjectStore
61
+ store = SqliteObjectStore(self.database)
62
+ store.initialize()
63
+ log(DEBUG, "Using SqliteObjectStore")
64
+ return store