flwr-nightly 1.15.0.dev20250124__tar.gz → 1.15.0.dev20250125__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 (331) hide show
  1. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/PKG-INFO +1 -1
  2. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/pyproject.toml +1 -1
  3. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/app.py +18 -79
  4. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +2 -25
  5. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/linkstate.py +2 -16
  6. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +3 -48
  7. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/LICENSE +0 -0
  8. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/README.md +0 -0
  9. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/__init__.py +0 -0
  10. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/__init__.py +0 -0
  11. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/app.py +0 -0
  12. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/build.py +0 -0
  13. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  14. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/config_utils.py +0 -0
  15. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/constant.py +0 -0
  16. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/example.py +0 -0
  17. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/install.py +0 -0
  18. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/log.py +0 -0
  19. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/login/__init__.py +0 -0
  20. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/login/login.py +0 -0
  21. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/ls.py +0 -0
  22. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/__init__.py +0 -0
  23. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/new.py +0 -0
  24. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  25. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  26. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  27. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  28. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  29. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  30. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  31. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  32. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  33. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  34. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  35. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  36. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  37. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  38. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  39. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  40. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  41. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  42. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  43. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  44. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  45. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  46. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  47. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  48. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  49. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  50. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  51. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  52. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  53. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  54. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  55. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  56. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  57. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  58. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  59. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  60. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  61. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  62. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  63. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  64. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  65. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  66. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  67. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  68. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  69. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  70. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  71. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  72. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  73. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  74. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  75. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  76. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/__init__.py +0 -0
  77. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/run.py +0 -0
  78. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/stop.py +0 -0
  79. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/utils.py +0 -0
  80. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/__init__.py +0 -0
  81. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/app.py +0 -0
  82. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/client.py +0 -0
  83. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/client_app.py +0 -0
  84. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/__init__.py +0 -0
  85. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/app.py +0 -0
  86. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  87. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/utils.py +0 -0
  88. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  89. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  90. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  91. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  92. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_client/connection.py +0 -0
  93. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  94. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  95. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  96. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  97. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/heartbeat.py +0 -0
  98. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/__init__.py +0 -0
  99. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  100. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  101. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/__init__.py +0 -0
  102. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  103. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/comms_mods.py +0 -0
  104. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  105. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  106. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  107. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  108. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/utils.py +0 -0
  109. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/__init__.py +0 -0
  110. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
  111. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/nodestate.py +0 -0
  112. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
  113. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/numpy_client.py +0 -0
  114. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/rest_client/__init__.py +0 -0
  115. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/rest_client/connection.py +0 -0
  116. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/run_info_store.py +0 -0
  117. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/supernode/__init__.py +0 -0
  118. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/supernode/app.py +0 -0
  119. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/typing.py +0 -0
  120. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/__init__.py +0 -0
  121. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/address.py +0 -0
  122. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/args.py +0 -0
  123. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
  124. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  125. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/config.py +0 -0
  126. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/constant.py +0 -0
  127. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/context.py +0 -0
  128. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/date.py +0 -0
  129. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/differential_privacy.py +0 -0
  130. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  131. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/dp.py +0 -0
  132. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/__init__.py +0 -0
  133. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/exit.py +0 -0
  134. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/exit_code.py +0 -0
  135. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit_handlers.py +0 -0
  136. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/grpc.py +0 -0
  137. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/logger.py +0 -0
  138. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/message.py +0 -0
  139. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/object_ref.py +0 -0
  140. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/parameter.py +0 -0
  141. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/pyproject.py +0 -0
  142. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/__init__.py +0 -0
  143. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/configsrecord.py +0 -0
  144. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/conversion_utils.py +0 -0
  145. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/metricsrecord.py +0 -0
  146. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/parametersrecord.py +0 -0
  147. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/recordset.py +0 -0
  148. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/typeddict.py +0 -0
  149. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/recordset_compat.py +0 -0
  150. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/retry_invoker.py +0 -0
  151. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  152. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  153. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  154. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  155. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  156. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  157. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  158. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  159. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/serde.py +0 -0
  160. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/telemetry.py +0 -0
  161. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/typing.py +0 -0
  162. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/version.py +0 -0
  163. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/__init__.py +0 -0
  164. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  165. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  166. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  167. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  168. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2.py +0 -0
  169. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2.pyi +0 -0
  170. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  171. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  172. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2.py +0 -0
  173. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  174. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  175. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  176. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2.py +0 -0
  177. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  178. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  179. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  180. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2.py +0 -0
  181. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  182. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  183. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  184. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  185. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  186. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  187. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  188. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2.py +0 -0
  189. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2.pyi +0 -0
  190. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
  191. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  192. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2.py +0 -0
  193. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2.pyi +0 -0
  194. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  195. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  196. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2.py +0 -0
  197. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2.pyi +0 -0
  198. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  199. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  200. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2.py +0 -0
  201. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  202. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  203. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  204. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2.py +0 -0
  205. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2.pyi +0 -0
  206. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  207. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  208. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2.py +0 -0
  209. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
  210. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  211. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  212. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2.py +0 -0
  213. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
  214. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  215. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  216. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2.py +0 -0
  217. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2.pyi +0 -0
  218. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  219. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  220. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2.py +0 -0
  221. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  222. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  223. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  224. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/py.typed +0 -0
  225. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/__init__.py +0 -0
  226. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/client_manager.py +0 -0
  227. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/client_proxy.py +0 -0
  228. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/__init__.py +0 -0
  229. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/app.py +0 -0
  230. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/app_utils.py +0 -0
  231. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  232. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/legacy_context.py +0 -0
  233. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/criterion.py +0 -0
  234. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/__init__.py +0 -0
  235. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/driver.py +0 -0
  236. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  237. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  238. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/history.py +0 -0
  239. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/run_serverapp.py +0 -0
  240. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server.py +0 -0
  241. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server_app.py +0 -0
  242. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server_config.py +0 -0
  243. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp/__init__.py +0 -0
  244. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp/app.py +0 -0
  245. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp_components.py +0 -0
  246. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/__init__.py +0 -0
  247. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/aggregate.py +0 -0
  248. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/bulyan.py +0 -0
  249. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  250. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  251. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  252. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  253. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  254. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  255. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedadam.py +0 -0
  256. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavg.py +0 -0
  257. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  258. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  259. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  260. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedopt.py +0 -0
  261. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedprox.py +0 -0
  262. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  263. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  264. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  265. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  266. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  267. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/krum.py +0 -0
  268. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  269. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/strategy.py +0 -0
  270. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/__init__.py +0 -0
  271. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  272. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
  273. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
  274. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  275. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  276. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  277. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  278. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  279. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  280. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  281. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  282. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  283. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  284. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  285. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  286. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  287. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  288. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  289. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  290. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  291. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  292. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  293. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  294. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  295. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  296. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  297. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  298. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  299. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  300. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
  301. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
  302. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  303. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  304. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/utils.py +0 -0
  305. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/typing.py +0 -0
  306. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/__init__.py +0 -0
  307. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/tensorboard.py +0 -0
  308. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/validator.py +0 -0
  309. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/__init__.py +0 -0
  310. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/constant.py +0 -0
  311. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  312. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  313. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  314. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  315. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/__init__.py +0 -0
  316. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/app.py +0 -0
  317. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/legacy_app.py +0 -0
  318. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  319. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  320. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  321. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  322. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/run_simulation.py +0 -0
  323. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/simulationio_connection.py +0 -0
  324. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/__init__.py +0 -0
  325. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/app.py +0 -0
  326. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/deployment.py +0 -0
  327. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_grpc.py +0 -0
  328. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_servicer.py +0 -0
  329. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
  330. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/executor.py +0 -0
  331. {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/simulation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.15.0.dev20250124
3
+ Version: 1.15.0.dev20250125
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.15.0.dev20250124"
7
+ version = "1.15.0.dev20250125"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -31,12 +31,8 @@ from typing import Any, Optional
31
31
 
32
32
  import grpc
33
33
  import yaml
34
- from cryptography.exceptions import UnsupportedAlgorithm
35
34
  from cryptography.hazmat.primitives.asymmetric import ec
36
- from cryptography.hazmat.primitives.serialization import (
37
- load_ssh_private_key,
38
- load_ssh_public_key,
39
- )
35
+ from cryptography.hazmat.primitives.serialization import load_ssh_public_key
40
36
 
41
37
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
42
38
  from flwr.common.address import parse_address
@@ -64,7 +60,6 @@ from flwr.common.exit_handlers import register_exit_handlers
64
60
  from flwr.common.grpc import generic_create_grpc_server
65
61
  from flwr.common.logger import log, warn_deprecated_feature
66
62
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
67
- private_key_to_bytes,
68
63
  public_key_to_bytes,
69
64
  )
70
65
  from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
@@ -378,21 +373,12 @@ def run_superlink() -> None:
378
373
  fleet_thread.start()
379
374
  bckg_threads.append(fleet_thread)
380
375
  elif args.fleet_api_type == TRANSPORT_TYPE_GRPC_RERE:
381
- maybe_keys = _try_setup_node_authentication(args, certificates)
376
+ node_public_keys = _try_load_public_keys_node_authentication(args)
382
377
  interceptors: Optional[Sequence[grpc.ServerInterceptor]] = None
383
- if maybe_keys is not None:
384
- (
385
- node_public_keys,
386
- server_private_key,
387
- server_public_key,
388
- ) = maybe_keys
378
+ if node_public_keys is not None:
389
379
  state = state_factory.state()
390
- state.clear_supernode_auth_keys_and_credentials()
380
+ state.clear_supernode_auth_keys()
391
381
  state.store_node_public_keys(node_public_keys)
392
- state.store_server_private_public_key(
393
- private_key_to_bytes(server_private_key),
394
- public_key_to_bytes(server_public_key),
395
- )
396
382
  log(
397
383
  INFO,
398
384
  "Node authentication enabled with %d known public keys",
@@ -541,34 +527,20 @@ def _format_address(address: str) -> tuple[str, str, int]:
541
527
  return (f"[{host}]:{port}" if is_v6 else f"{host}:{port}", host, port)
542
528
 
543
529
 
544
- def _try_setup_node_authentication(
530
+ def _try_load_public_keys_node_authentication(
545
531
  args: argparse.Namespace,
546
- certificates: Optional[tuple[bytes, bytes, bytes]],
547
- ) -> Optional[tuple[set[bytes], ec.EllipticCurvePrivateKey, ec.EllipticCurvePublicKey]]:
548
- if (
549
- not args.auth_list_public_keys
550
- and not args.auth_superlink_private_key
551
- and not args.auth_superlink_public_key
552
- ):
553
- return None
554
-
555
- if (
556
- not args.auth_list_public_keys
557
- or not args.auth_superlink_private_key
558
- or not args.auth_superlink_public_key
559
- ):
560
- sys.exit(
561
- "Authentication requires providing file paths for "
562
- "'--auth-list-public-keys', '--auth-superlink-private-key' and "
563
- "'--auth-superlink-public-key'. Provide all three to enable authentication."
532
+ ) -> Optional[set[bytes]]:
533
+ """Return a set of node public keys."""
534
+ if args.auth_superlink_private_key or args.auth_superlink_public_key:
535
+ log(
536
+ WARN,
537
+ "The `--auth-superlink-private-key` and `--auth-superlink-public-key` "
538
+ "arguments are deprecated and will be removed in a future release. Node "
539
+ "authentication no longer requires these arguments.",
564
540
  )
565
541
 
566
- if certificates is None:
567
- sys.exit(
568
- "Authentication requires secure connections. "
569
- "Please provide certificate paths to `--ssl-certfile`, "
570
- "`--ssl-keyfile`, and `—-ssl-ca-certfile` and try again."
571
- )
542
+ if not args.auth_list_public_keys:
543
+ return None
572
544
 
573
545
  node_keys_file_path = Path(args.auth_list_public_keys)
574
546
  if not node_keys_file_path.exists():
@@ -581,35 +553,6 @@ def _try_setup_node_authentication(
581
553
 
582
554
  node_public_keys: set[bytes] = set()
583
555
 
584
- try:
585
- ssh_private_key = load_ssh_private_key(
586
- Path(args.auth_superlink_private_key).read_bytes(),
587
- None,
588
- )
589
- if not isinstance(ssh_private_key, ec.EllipticCurvePrivateKey):
590
- raise ValueError()
591
- except (ValueError, UnsupportedAlgorithm):
592
- sys.exit(
593
- "Error: Unable to parse the private key file in "
594
- "'--auth-superlink-private-key'. Authentication requires elliptic "
595
- "curve private and public key pair. Please ensure that the file "
596
- "path points to a valid private key file and try again."
597
- )
598
-
599
- try:
600
- ssh_public_key = load_ssh_public_key(
601
- Path(args.auth_superlink_public_key).read_bytes()
602
- )
603
- if not isinstance(ssh_public_key, ec.EllipticCurvePublicKey):
604
- raise ValueError()
605
- except (ValueError, UnsupportedAlgorithm):
606
- sys.exit(
607
- "Error: Unable to parse the public key file in "
608
- "'--auth-superlink-public-key'. Authentication requires elliptic "
609
- "curve private and public key pair. Please ensure that the file "
610
- "path points to a valid public key file and try again."
611
- )
612
-
613
556
  with open(node_keys_file_path, newline="", encoding="utf-8") as csvfile:
614
557
  reader = csv.reader(csvfile)
615
558
  for row in reader:
@@ -623,11 +566,7 @@ def _try_setup_node_authentication(
623
566
  "file. Please ensure that the CSV file path points to a valid "
624
567
  "known SSH public keys files and try again."
625
568
  )
626
- return (
627
- node_public_keys,
628
- ssh_private_key,
629
- ssh_public_key,
630
- )
569
+ return node_public_keys
631
570
 
632
571
 
633
572
  def _try_obtain_exec_auth_plugin(
@@ -840,12 +779,12 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
840
779
  parser.add_argument(
841
780
  "--auth-superlink-private-key",
842
781
  type=str,
843
- help="The SuperLink's private key (as a path str) to enable authentication.",
782
+ help="This argument is deprecated and will be removed in a future release.",
844
783
  )
845
784
  parser.add_argument(
846
785
  "--auth-superlink-public-key",
847
786
  type=str,
848
- help="The SuperLink's public key (as a path str) to enable authentication.",
787
+ help="This argument is deprecated and will be removed in a future release.",
849
788
  )
850
789
 
851
790
 
@@ -74,8 +74,6 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
74
74
  self.task_ins_id_to_task_res_id: dict[UUID, UUID] = {}
75
75
 
76
76
  self.node_public_keys: set[bytes] = set()
77
- self.server_public_key: Optional[bytes] = None
78
- self.server_private_key: Optional[bytes] = None
79
77
 
80
78
  self.lock = threading.RLock()
81
79
 
@@ -403,30 +401,9 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
403
401
  log(ERROR, "Unexpected run creation failure.")
404
402
  return 0
405
403
 
406
- def store_server_private_public_key(
407
- self, private_key: bytes, public_key: bytes
408
- ) -> None:
409
- """Store `server_private_key` and `server_public_key` in the link state."""
404
+ def clear_supernode_auth_keys(self) -> None:
405
+ """Clear stored `node_public_keys` in the link state if any."""
410
406
  with self.lock:
411
- if self.server_private_key is None and self.server_public_key is None:
412
- self.server_private_key = private_key
413
- self.server_public_key = public_key
414
- else:
415
- raise RuntimeError("Server private and public key already set")
416
-
417
- def get_server_private_key(self) -> Optional[bytes]:
418
- """Retrieve `server_private_key` in urlsafe bytes."""
419
- return self.server_private_key
420
-
421
- def get_server_public_key(self) -> Optional[bytes]:
422
- """Retrieve `server_public_key` in urlsafe bytes."""
423
- return self.server_public_key
424
-
425
- def clear_supernode_auth_keys_and_credentials(self) -> None:
426
- """Clear stored `node_public_keys` and credentials in the link state if any."""
427
- with self.lock:
428
- self.server_private_key = None
429
- self.server_public_key = None
430
407
  self.node_public_keys.clear()
431
408
 
432
409
  def store_node_public_keys(self, public_keys: set[bytes]) -> None:
@@ -264,22 +264,8 @@ class LinkState(abc.ABC): # pylint: disable=R0904
264
264
  """
265
265
 
266
266
  @abc.abstractmethod
267
- def store_server_private_public_key(
268
- self, private_key: bytes, public_key: bytes
269
- ) -> None:
270
- """Store `server_private_key` and `server_public_key` in the link state."""
271
-
272
- @abc.abstractmethod
273
- def get_server_private_key(self) -> Optional[bytes]:
274
- """Retrieve `server_private_key` in urlsafe bytes."""
275
-
276
- @abc.abstractmethod
277
- def get_server_public_key(self) -> Optional[bytes]:
278
- """Retrieve `server_public_key` in urlsafe bytes."""
279
-
280
- @abc.abstractmethod
281
- def clear_supernode_auth_keys_and_credentials(self) -> None:
282
- """Clear stored `node_public_keys` and credentials in the link state if any."""
267
+ def clear_supernode_auth_keys(self) -> None:
268
+ """Clear stored `node_public_keys` in the link state if any."""
283
269
 
284
270
  @abc.abstractmethod
285
271
  def store_node_public_keys(self, public_keys: set[bytes]) -> None:
@@ -71,13 +71,6 @@ CREATE TABLE IF NOT EXISTS node(
71
71
  );
72
72
  """
73
73
 
74
- SQL_CREATE_TABLE_CREDENTIAL = """
75
- CREATE TABLE IF NOT EXISTS credential(
76
- private_key BLOB PRIMARY KEY,
77
- public_key BLOB
78
- );
79
- """
80
-
81
74
  SQL_CREATE_TABLE_PUBLIC_KEY = """
82
75
  CREATE TABLE IF NOT EXISTS public_key(
83
76
  public_key BLOB PRIMARY KEY
@@ -208,7 +201,6 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
208
201
  cur.execute(SQL_CREATE_TABLE_TASK_INS)
209
202
  cur.execute(SQL_CREATE_TABLE_TASK_RES)
210
203
  cur.execute(SQL_CREATE_TABLE_NODE)
211
- cur.execute(SQL_CREATE_TABLE_CREDENTIAL)
212
204
  cur.execute(SQL_CREATE_TABLE_PUBLIC_KEY)
213
205
  cur.execute(SQL_CREATE_INDEX_ONLINE_UNTIL)
214
206
  res = cur.execute("SELECT name FROM sqlite_schema;")
@@ -773,46 +765,9 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
773
765
  log(ERROR, "Unexpected run creation failure.")
774
766
  return 0
775
767
 
776
- def store_server_private_public_key(
777
- self, private_key: bytes, public_key: bytes
778
- ) -> None:
779
- """Store `server_private_key` and `server_public_key` in the link state."""
780
- query = "SELECT COUNT(*) FROM credential"
781
- count = self.query(query)[0]["COUNT(*)"]
782
- if count < 1:
783
- query = (
784
- "INSERT OR REPLACE INTO credential (private_key, public_key) "
785
- "VALUES (:private_key, :public_key)"
786
- )
787
- self.query(query, {"private_key": private_key, "public_key": public_key})
788
- else:
789
- raise RuntimeError("Server private and public key already set")
790
-
791
- def get_server_private_key(self) -> Optional[bytes]:
792
- """Retrieve `server_private_key` in urlsafe bytes."""
793
- query = "SELECT private_key FROM credential"
794
- rows = self.query(query)
795
- try:
796
- private_key: Optional[bytes] = rows[0]["private_key"]
797
- except IndexError:
798
- private_key = None
799
- return private_key
800
-
801
- def get_server_public_key(self) -> Optional[bytes]:
802
- """Retrieve `server_public_key` in urlsafe bytes."""
803
- query = "SELECT public_key FROM credential"
804
- rows = self.query(query)
805
- try:
806
- public_key: Optional[bytes] = rows[0]["public_key"]
807
- except IndexError:
808
- public_key = None
809
- return public_key
810
-
811
- def clear_supernode_auth_keys_and_credentials(self) -> None:
812
- """Clear stored `node_public_keys` and credentials in the link state if any."""
813
- queries = ["DELETE FROM public_key;", "DELETE FROM credential;"]
814
- for query in queries:
815
- self.query(query)
768
+ def clear_supernode_auth_keys(self) -> None:
769
+ """Clear stored `node_public_keys` in the link state if any."""
770
+ self.query("DELETE FROM public_key;")
816
771
 
817
772
  def store_node_public_keys(self, public_keys: set[bytes]) -> None:
818
773
  """Store a set of `node_public_keys` in the link state."""