flwr-nightly 1.11.1.dev20240912__tar.gz → 1.12.0.dev20240906__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 (302) hide show
  1. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/PKG-INFO +1 -1
  2. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/pyproject.toml +1 -2
  3. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/new.py +36 -23
  4. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +29 -19
  5. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +3 -0
  6. flwr_nightly-1.12.0.dev20240906/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +23 -0
  7. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +13 -16
  8. flwr_nightly-1.12.0.dev20240906/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +38 -0
  9. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/app.py +4 -3
  10. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/client_app.py +2 -2
  11. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +3 -2
  12. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/supernode/app.py +6 -5
  13. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/constant.py +1 -12
  14. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/recordset.py +1 -1
  15. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/typeddict.py +1 -24
  16. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/app.py +9 -8
  17. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/driver/grpc_driver.py +3 -2
  18. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/run_serverapp.py +6 -5
  19. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +1 -2
  20. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +12 -21
  21. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/ray_transport/ray_actor.py +2 -2
  22. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/run_simulation.py +2 -14
  23. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/app.py +2 -2
  24. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/deployment.py +2 -2
  25. flwr_nightly-1.11.1.dev20240912/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -38
  26. flwr_nightly-1.11.1.dev20240912/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -46
  27. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/LICENSE +0 -0
  28. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/README.md +0 -0
  29. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/__init__.py +0 -0
  30. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/__init__.py +0 -0
  31. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/app.py +0 -0
  32. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/build.py +0 -0
  33. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/config_utils.py +0 -0
  34. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/example.py +0 -0
  35. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/install.py +0 -0
  36. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/__init__.py +0 -0
  37. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  38. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  39. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  40. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  41. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  42. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  43. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  44. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  45. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  46. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  47. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  48. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  49. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  50. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  51. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  52. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  53. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  54. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  55. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  56. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  57. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  58. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  59. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  60. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  61. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  63. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  64. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  65. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  66. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  67. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  68. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  69. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  70. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  71. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  72. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  73. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  74. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  75. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  76. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  77. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  78. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  79. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  80. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  81. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  82. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/run/__init__.py +0 -0
  83. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/run/run.py +0 -0
  84. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/cli/utils.py +0 -0
  85. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/__init__.py +0 -0
  86. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/client.py +0 -0
  87. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/clientapp/__init__.py +0 -0
  88. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/clientapp/app.py +0 -0
  89. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  90. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/clientapp/utils.py +0 -0
  91. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  92. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  93. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  94. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  95. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_client/connection.py +0 -0
  96. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  97. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  98. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  99. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/heartbeat.py +0 -0
  100. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/message_handler/__init__.py +0 -0
  101. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  102. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  103. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/__init__.py +0 -0
  104. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  105. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/comms_mods.py +0 -0
  106. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  107. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  108. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  109. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  110. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/mod/utils.py +0 -0
  111. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/node_state.py +0 -0
  112. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/node_state_tests.py +0 -0
  113. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/numpy_client.py +0 -0
  114. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/rest_client/__init__.py +0 -0
  115. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/rest_client/connection.py +0 -0
  116. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/supernode/__init__.py +0 -0
  117. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/client/typing.py +0 -0
  118. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/__init__.py +0 -0
  119. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/address.py +0 -0
  120. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/config.py +0 -0
  121. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/context.py +0 -0
  122. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/date.py +0 -0
  123. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/differential_privacy.py +0 -0
  124. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  125. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/dp.py +0 -0
  126. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/exit_handlers.py +0 -0
  127. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/grpc.py +0 -0
  128. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/logger.py +0 -0
  129. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/message.py +0 -0
  130. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/object_ref.py +0 -0
  131. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/parameter.py +0 -0
  132. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/pyproject.py +0 -0
  133. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/__init__.py +0 -0
  134. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/configsrecord.py +0 -0
  135. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/conversion_utils.py +0 -0
  136. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/metricsrecord.py +0 -0
  137. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/record/parametersrecord.py +0 -0
  138. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/recordset_compat.py +0 -0
  139. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/retry_invoker.py +0 -0
  140. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  141. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  142. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  143. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  144. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  145. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  146. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  147. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  148. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/serde.py +0 -0
  149. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/telemetry.py +0 -0
  150. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/typing.py +0 -0
  151. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/common/version.py +0 -0
  152. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/__init__.py +0 -0
  153. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  154. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  155. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  156. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  157. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/common_pb2.py +0 -0
  158. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/common_pb2.pyi +0 -0
  159. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  160. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  161. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/driver_pb2.py +0 -0
  162. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  163. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  164. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  165. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/error_pb2.py +0 -0
  166. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/error_pb2.pyi +0 -0
  167. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  168. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  169. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/exec_pb2.py +0 -0
  170. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  171. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  172. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  173. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fab_pb2.py +0 -0
  174. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  175. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  176. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  177. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fleet_pb2.py +0 -0
  178. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  179. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  180. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  181. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  182. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  183. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  184. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  185. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/message_pb2.py +0 -0
  186. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/message_pb2.pyi +0 -0
  187. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  188. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  189. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/node_pb2.py +0 -0
  190. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/node_pb2.pyi +0 -0
  191. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  192. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  193. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/recordset_pb2.py +0 -0
  194. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  195. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  196. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  197. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/run_pb2.py +0 -0
  198. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/run_pb2.pyi +0 -0
  199. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  200. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  201. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/task_pb2.py +0 -0
  202. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/task_pb2.pyi +0 -0
  203. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  204. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  205. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/transport_pb2.py +0 -0
  206. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  207. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/py.typed +0 -0
  210. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/__init__.py +0 -0
  211. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/client_manager.py +0 -0
  212. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/client_proxy.py +0 -0
  213. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/compat/__init__.py +0 -0
  214. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/compat/app.py +0 -0
  215. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/compat/app_utils.py +0 -0
  216. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  217. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/compat/legacy_context.py +0 -0
  218. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/criterion.py +0 -0
  219. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/driver/__init__.py +0 -0
  220. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/driver/driver.py +0 -0
  221. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  222. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/history.py +0 -0
  223. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/server.py +0 -0
  224. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/server_app.py +0 -0
  225. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/server_config.py +0 -0
  226. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/serverapp_components.py +0 -0
  227. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/__init__.py +0 -0
  228. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/aggregate.py +0 -0
  229. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/bulyan.py +0 -0
  230. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  231. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  232. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  233. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  234. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  235. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  236. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedadam.py +0 -0
  237. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedavg.py +0 -0
  238. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  239. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  240. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  241. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedopt.py +0 -0
  242. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedprox.py +0 -0
  243. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  244. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  245. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  246. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  247. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  248. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/krum.py +0 -0
  249. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  250. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/strategy/strategy.py +0 -0
  251. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/__init__.py +0 -0
  252. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  253. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  254. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  255. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  256. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  257. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  258. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  259. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  260. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  261. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  262. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  263. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  264. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  265. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  266. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  267. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  268. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  269. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  270. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  271. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  272. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  273. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  274. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  275. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  276. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  277. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  278. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  279. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  280. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/state.py +0 -0
  281. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  282. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/superlink/state/utils.py +0 -0
  283. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/typing.py +0 -0
  284. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/utils/__init__.py +0 -0
  285. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/utils/tensorboard.py +0 -0
  286. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/utils/validator.py +0 -0
  287. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/__init__.py +0 -0
  288. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/constant.py +0 -0
  289. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  290. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  291. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  292. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  293. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/__init__.py +0 -0
  294. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/app.py +0 -0
  295. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  296. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  297. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  298. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/__init__.py +0 -0
  299. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/exec_grpc.py +0 -0
  300. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/exec_servicer.py +0 -0
  301. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/src/py/flwr/superexec/executor.py +0 -0
  302. {flwr_nightly-1.11.1.dev20240912 → flwr_nightly-1.12.0.dev20240906}/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.11.1.dev20240912
3
+ Version: 1.12.0.dev20240906
4
4
  Summary: Flower: A Friendly Federated Learning 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.11.1.dev20240912"
7
+ version = "1.12.0.dev20240906"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -101,7 +101,6 @@ docformatter = "==1.7.5"
101
101
  mypy = "==1.8.0"
102
102
  pylint = "==3.0.3"
103
103
  flake8 = "==5.0.4"
104
- parameterized = "==0.9.0"
105
104
  pytest = "==7.4.4"
106
105
  pytest-cov = "==4.1.0"
107
106
  pytest-watcher = "==0.4.1"
@@ -136,23 +136,36 @@ def new(
136
136
  username = prompt_text("Please provide your Flower username")
137
137
 
138
138
  if framework is not None:
139
- framework_str = str(framework.value)
139
+ framework_str_upper = str(framework.value)
140
140
  else:
141
- framework_str = prompt_options(
141
+ framework_value = prompt_options(
142
142
  "Please select ML framework by typing in the number",
143
143
  [mlf.value for mlf in MlFramework],
144
144
  )
145
+ selected_value = [
146
+ name
147
+ for name, value in vars(MlFramework).items()
148
+ if value == framework_value
149
+ ]
150
+ framework_str_upper = selected_value[0]
151
+
152
+ framework_str = framework_str_upper.lower()
145
153
 
146
154
  llm_challenge_str = None
147
- if framework_str == MlFramework.FLOWERTUNE:
155
+ if framework_str == "flowertune":
148
156
  llm_challenge_value = prompt_options(
149
157
  "Please select LLM challenge by typing in the number",
150
158
  sorted([challenge.value for challenge in LlmChallengeName]),
151
159
  )
152
- llm_challenge_str = llm_challenge_value.lower()
160
+ selected_value = [
161
+ name
162
+ for name, value in vars(LlmChallengeName).items()
163
+ if value == llm_challenge_value
164
+ ]
165
+ llm_challenge_str = selected_value[0]
166
+ llm_challenge_str = llm_challenge_str.lower()
153
167
 
154
- if framework_str == MlFramework.BASELINE:
155
- framework_str = "baseline"
168
+ is_baseline_project = framework_str == "baseline"
156
169
 
157
170
  print(
158
171
  typer.style(
@@ -163,21 +176,19 @@ def new(
163
176
  )
164
177
 
165
178
  context = {
166
- "framework_str": framework_str,
179
+ "framework_str": framework_str_upper,
167
180
  "import_name": import_name.replace("-", "_"),
168
181
  "package_name": package_name,
169
182
  "project_name": app_name,
170
183
  "username": username,
171
184
  }
172
185
 
173
- template_name = framework_str.lower()
174
-
175
186
  # List of files to render
176
187
  if llm_challenge_str:
177
188
  files = {
178
189
  ".gitignore": {"template": "app/.gitignore.tpl"},
179
- "pyproject.toml": {"template": f"app/pyproject.{template_name}.toml.tpl"},
180
- "README.md": {"template": f"app/README.{template_name}.md.tpl"},
190
+ "pyproject.toml": {"template": f"app/pyproject.{framework_str}.toml.tpl"},
191
+ "README.md": {"template": f"app/README.{framework_str}.md.tpl"},
181
192
  f"{import_name}/__init__.py": {"template": "app/code/__init__.py.tpl"},
182
193
  f"{import_name}/server_app.py": {
183
194
  "template": "app/code/flwr_tune/server_app.py.tpl"
@@ -224,42 +235,44 @@ def new(
224
235
  files = {
225
236
  ".gitignore": {"template": "app/.gitignore.tpl"},
226
237
  "README.md": {"template": "app/README.md.tpl"},
227
- "pyproject.toml": {"template": f"app/pyproject.{template_name}.toml.tpl"},
238
+ "pyproject.toml": {"template": f"app/pyproject.{framework_str}.toml.tpl"},
228
239
  f"{import_name}/__init__.py": {"template": "app/code/__init__.py.tpl"},
229
240
  f"{import_name}/server_app.py": {
230
- "template": f"app/code/server.{template_name}.py.tpl"
241
+ "template": f"app/code/server.{framework_str}.py.tpl"
231
242
  },
232
243
  f"{import_name}/client_app.py": {
233
- "template": f"app/code/client.{template_name}.py.tpl"
244
+ "template": f"app/code/client.{framework_str}.py.tpl"
234
245
  },
235
246
  }
236
247
 
237
248
  # Depending on the framework, generate task.py file
238
249
  frameworks_with_tasks = [
239
- MlFramework.PYTORCH.value,
240
- MlFramework.JAX.value,
241
- MlFramework.HUGGINGFACE.value,
242
- MlFramework.MLX.value,
243
- MlFramework.TENSORFLOW.value,
250
+ MlFramework.PYTORCH.value.lower(),
251
+ MlFramework.JAX.value.lower(),
252
+ MlFramework.HUGGINGFACE.value.lower(),
253
+ MlFramework.MLX.value.lower(),
254
+ MlFramework.TENSORFLOW.value.lower(),
244
255
  ]
245
256
  if framework_str in frameworks_with_tasks:
246
257
  files[f"{import_name}/task.py"] = {
247
- "template": f"app/code/task.{template_name}.py.tpl"
258
+ "template": f"app/code/task.{framework_str}.py.tpl"
248
259
  }
249
260
 
250
- if framework_str == "baseline":
261
+ if is_baseline_project:
251
262
  # Include additional files for baseline template
252
263
  for file_name in ["model", "dataset", "strategy", "utils", "__init__"]:
253
264
  files[f"{import_name}/{file_name}.py"] = {
254
- "template": f"app/code/{file_name}.{template_name}.py.tpl"
265
+ "template": f"app/code/{file_name}.{framework_str}.py.tpl"
255
266
  }
256
267
 
257
268
  # Replace README.md
258
- files["README.md"]["template"] = f"app/README.{template_name}.md.tpl"
269
+ files["README.md"]["template"] = f"app/README.{framework_str}.md.tpl"
259
270
 
260
271
  # Add LICENSE
261
272
  files["LICENSE"] = {"template": "app/LICENSE.tpl"}
262
273
 
274
+ context["framework_str"] = "baseline"
275
+
263
276
  for file_path, value in files.items():
264
277
  render_and_create(
265
278
  file_path=project_dir / file_path,
@@ -1,11 +1,18 @@
1
1
  """$project_name: A Flower / $framework_str app."""
2
2
 
3
- import torch
4
3
  from flwr.client import ClientApp, NumPyClient
5
4
  from flwr.common import Context
6
5
  from transformers import AutoModelForSequenceClassification
7
6
 
8
- from $import_name.task import get_weights, load_data, set_weights, test, train
7
+ from $import_name.task import (
8
+ get_weights,
9
+ load_data,
10
+ set_weights,
11
+ train,
12
+ test,
13
+ CHECKPOINT,
14
+ DEVICE,
15
+ )
9
16
 
10
17
 
11
18
  # Flower client
@@ -15,34 +22,37 @@ class FlowerClient(NumPyClient):
15
22
  self.trainloader = trainloader
16
23
  self.testloader = testloader
17
24
  self.local_epochs = local_epochs
18
- self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
19
- self.net.to(self.device)
20
25
 
21
- def fit(self, parameters, config):
26
+ def get_parameters(self, config):
27
+ return get_weights(self.net)
28
+
29
+ def set_parameters(self, parameters):
22
30
  set_weights(self.net, parameters)
23
- train(self.net, self.trainloader, epochs=self.local_epochs, device=self.device)
24
- return get_weights(self.net), len(self.trainloader), {}
31
+
32
+ def fit(self, parameters, config):
33
+ self.set_parameters(parameters)
34
+ train(
35
+ self.net,
36
+ self.trainloader,
37
+ epochs=self.local_epochs,
38
+ )
39
+ return self.get_parameters(config={}), len(self.trainloader), {}
25
40
 
26
41
  def evaluate(self, parameters, config):
27
- set_weights(self.net, parameters)
28
- loss, accuracy = test(self.net, self.testloader, self.device)
42
+ self.set_parameters(parameters)
43
+ loss, accuracy = test(self.net, self.testloader)
29
44
  return float(loss), len(self.testloader), {"accuracy": accuracy}
30
45
 
31
46
 
32
47
  def client_fn(context: Context):
48
+ # Load model and data
49
+ net = AutoModelForSequenceClassification.from_pretrained(
50
+ CHECKPOINT, num_labels=2
51
+ ).to(DEVICE)
33
52
 
34
- # Get this client's dataset partition
35
53
  partition_id = context.node_config["partition-id"]
36
54
  num_partitions = context.node_config["num-partitions"]
37
- model_name = context.run_config["model-name"]
38
- trainloader, valloader = load_data(partition_id, num_partitions, model_name)
39
-
40
- # Load model
41
- num_labels = context.run_config["num-labels"]
42
- net = AutoModelForSequenceClassification.from_pretrained(
43
- model_name, num_labels=num_labels
44
- )
45
-
55
+ trainloader, valloader = load_data(partition_id, num_partitions)
46
56
  local_epochs = context.run_config["local-epochs"]
47
57
 
48
58
  # Return Client instance
@@ -17,6 +17,9 @@ class FlowerClient(NumPyClient):
17
17
  self.batch_size = batch_size
18
18
  self.verbose = verbose
19
19
 
20
+ def get_parameters(self, config):
21
+ return self.model.get_weights()
22
+
20
23
  def fit(self, parameters, config):
21
24
  self.model.set_weights(parameters)
22
25
  self.model.fit(
@@ -0,0 +1,23 @@
1
+ """$project_name: A Flower / $framework_str app."""
2
+
3
+ from flwr.common import Context
4
+ from flwr.server.strategy import FedAvg
5
+ from flwr.server import ServerApp, ServerAppComponents, ServerConfig
6
+
7
+
8
+ def server_fn(context: Context):
9
+ # Read from config
10
+ num_rounds = context.run_config["num-server-rounds"]
11
+
12
+ # Define strategy
13
+ strategy = FedAvg(
14
+ fraction_fit=1.0,
15
+ fraction_evaluate=1.0,
16
+ )
17
+ config = ServerConfig(num_rounds=num_rounds)
18
+
19
+ return ServerAppComponents(strategy=strategy, config=config)
20
+
21
+
22
+ # Create ServerApp
23
+ app = ServerApp(server_fn=server_fn)
@@ -4,25 +4,24 @@ import warnings
4
4
  from collections import OrderedDict
5
5
 
6
6
  import torch
7
- import transformers
8
- from datasets.utils.logging import disable_progress_bar
9
7
  from evaluate import load as load_metric
10
- from flwr_datasets import FederatedDataset
11
- from flwr_datasets.partitioner import IidPartitioner
12
8
  from torch.optim import AdamW
13
9
  from torch.utils.data import DataLoader
14
10
  from transformers import AutoTokenizer, DataCollatorWithPadding
15
11
 
12
+ from flwr_datasets import FederatedDataset
13
+ from flwr_datasets.partitioner import IidPartitioner
14
+
15
+
16
16
  warnings.filterwarnings("ignore", category=UserWarning)
17
- warnings.filterwarnings("ignore", category=FutureWarning)
18
- disable_progress_bar()
19
- transformers.logging.set_verbosity_error()
17
+ DEVICE = torch.device("cpu")
18
+ CHECKPOINT = "distilbert-base-uncased" # transformer model checkpoint
20
19
 
21
20
 
22
21
  fds = None # Cache FederatedDataset
23
22
 
24
23
 
25
- def load_data(partition_id: int, num_partitions: int, model_name: str):
24
+ def load_data(partition_id: int, num_partitions: int):
26
25
  """Load IMDB data (training and eval)"""
27
26
  # Only initialize `FederatedDataset` once
28
27
  global fds
@@ -36,12 +35,10 @@ def load_data(partition_id: int, num_partitions: int, model_name: str):
36
35
  # Divide data: 80% train, 20% test
37
36
  partition_train_test = partition.train_test_split(test_size=0.2, seed=42)
38
37
 
39
- tokenizer = AutoTokenizer.from_pretrained(model_name)
38
+ tokenizer = AutoTokenizer.from_pretrained(CHECKPOINT)
40
39
 
41
40
  def tokenize_function(examples):
42
- return tokenizer(
43
- examples["text"], truncation=True, add_special_tokens=True, max_length=512
44
- )
41
+ return tokenizer(examples["text"], truncation=True)
45
42
 
46
43
  partition_train_test = partition_train_test.map(tokenize_function, batched=True)
47
44
  partition_train_test = partition_train_test.remove_columns("text")
@@ -62,12 +59,12 @@ def load_data(partition_id: int, num_partitions: int, model_name: str):
62
59
  return trainloader, testloader
63
60
 
64
61
 
65
- def train(net, trainloader, epochs, device):
62
+ def train(net, trainloader, epochs):
66
63
  optimizer = AdamW(net.parameters(), lr=5e-5)
67
64
  net.train()
68
65
  for _ in range(epochs):
69
66
  for batch in trainloader:
70
- batch = {k: v.to(device) for k, v in batch.items()}
67
+ batch = {k: v.to(DEVICE) for k, v in batch.items()}
71
68
  outputs = net(**batch)
72
69
  loss = outputs.loss
73
70
  loss.backward()
@@ -75,12 +72,12 @@ def train(net, trainloader, epochs, device):
75
72
  optimizer.zero_grad()
76
73
 
77
74
 
78
- def test(net, testloader, device):
75
+ def test(net, testloader):
79
76
  metric = load_metric("accuracy")
80
77
  loss = 0
81
78
  net.eval()
82
79
  for batch in testloader:
83
- batch = {k: v.to(device) for k, v in batch.items()}
80
+ batch = {k: v.to(DEVICE) for k, v in batch.items()}
84
81
  with torch.no_grad():
85
82
  outputs = net(**batch)
86
83
  logits = outputs.logits
@@ -0,0 +1,38 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "$package_name"
7
+ version = "1.0.0"
8
+ description = ""
9
+ license = "Apache-2.0"
10
+ dependencies = [
11
+ "flwr[simulation]>=1.10.0",
12
+ "flwr-datasets>=0.3.0",
13
+ "torch==2.2.1",
14
+ "transformers>=4.30.0,<5.0",
15
+ "evaluate>=0.4.0,<1.0",
16
+ "datasets>=2.0.0, <3.0",
17
+ "scikit-learn>=1.3.1, <2.0",
18
+ ]
19
+
20
+ [tool.hatch.build.targets.wheel]
21
+ packages = ["."]
22
+
23
+ [tool.flwr.app]
24
+ publisher = "$username"
25
+
26
+ [tool.flwr.app.components]
27
+ serverapp = "$import_name.server_app:app"
28
+ clientapp = "$import_name.client_app:app"
29
+
30
+ [tool.flwr.app.config]
31
+ num-server-rounds = 3
32
+ local-epochs = 1
33
+
34
+ [tool.flwr.federations]
35
+ default = "localhost"
36
+
37
+ [tool.flwr.federations.localhost]
38
+ options.num-supernodes = 10
@@ -35,7 +35,6 @@ from flwr.client.typing import ClientFnExt
35
35
  from flwr.common import GRPC_MAX_MESSAGE_LENGTH, Context, EventType, Message, event
36
36
  from flwr.common.address import parse_address
37
37
  from flwr.common.constant import (
38
- CLIENTAPPIO_API_DEFAULT_ADDRESS,
39
38
  MISSING_EXTRA_REST,
40
39
  RUN_ID_NUM_BYTES,
41
40
  TRANSPORT_TYPE_GRPC_ADAPTER,
@@ -61,6 +60,8 @@ from .message_handler.message_handler import handle_control_message
61
60
  from .node_state import NodeState
62
61
  from .numpy_client import NumPyClient
63
62
 
63
+ ADDRESS_CLIENTAPPIO_API_GRPC_RERE = "0.0.0.0:9094"
64
+
64
65
  ISOLATION_MODE_SUBPROCESS = "subprocess"
65
66
  ISOLATION_MODE_PROCESS = "process"
66
67
 
@@ -210,7 +211,7 @@ def start_client_internal(
210
211
  max_wait_time: Optional[float] = None,
211
212
  flwr_path: Optional[Path] = None,
212
213
  isolation: Optional[str] = None,
213
- supernode_address: Optional[str] = CLIENTAPPIO_API_DEFAULT_ADDRESS,
214
+ supernode_address: Optional[str] = ADDRESS_CLIENTAPPIO_API_GRPC_RERE,
214
215
  ) -> None:
215
216
  """Start a Flower client node which connects to a Flower server.
216
217
 
@@ -265,7 +266,7 @@ def start_client_internal(
265
266
  by the SueprNode and communicates using gRPC at the address
266
267
  `supernode_address`. If `process`, the `ClientApp` runs in a separate isolated
267
268
  process and communicates using gRPC at the address `supernode_address`.
268
- supernode_address : Optional[str] (default: `CLIENTAPPIO_API_DEFAULT_ADDRESS`)
269
+ supernode_address : Optional[str] (default: `ADDRESS_CLIENTAPPIO_API_GRPC_RERE`)
269
270
  The SuperNode gRPC server address.
270
271
  """
271
272
  if insecure is None:
@@ -41,11 +41,11 @@ def _alert_erroneous_client_fn() -> None:
41
41
 
42
42
  def _inspect_maybe_adapt_client_fn_signature(client_fn: ClientFnExt) -> ClientFnExt:
43
43
  client_fn_args = inspect.signature(client_fn).parameters
44
+ first_arg = list(client_fn_args.keys())[0]
44
45
 
45
46
  if len(client_fn_args) != 1:
46
47
  _alert_erroneous_client_fn()
47
48
 
48
- first_arg = list(client_fn_args.keys())[0]
49
49
  first_arg_type = client_fn_args[first_arg].annotation
50
50
 
51
51
  if first_arg_type is str or first_arg == "cid":
@@ -263,7 +263,7 @@ def _registration_error(fn_name: str) -> ValueError:
263
263
  >>> class FlowerClient(NumPyClient):
264
264
  >>> # ...
265
265
  >>>
266
- >>> def client_fn(context: Context):
266
+ >>> def client_fn(cid) -> Client:
267
267
  >>> return FlowerClient().to_client()
268
268
  >>>
269
269
  >>> app = ClientApp(
@@ -130,12 +130,13 @@ class AuthenticateClientInterceptor(grpc.UnaryUnaryClientInterceptor): # type:
130
130
  if self.shared_secret is None:
131
131
  raise RuntimeError("Failure to compute hmac")
132
132
 
133
- message_bytes = request.SerializeToString(deterministic=True)
134
133
  metadata.append(
135
134
  (
136
135
  _AUTH_TOKEN_HEADER,
137
136
  base64.urlsafe_b64encode(
138
- compute_hmac(self.shared_secret, message_bytes)
137
+ compute_hmac(
138
+ self.shared_secret, request.SerializeToString(True)
139
+ )
139
140
  ),
140
141
  )
141
142
  )
@@ -30,7 +30,6 @@ from cryptography.hazmat.primitives.serialization import (
30
30
  from flwr.common import EventType, event
31
31
  from flwr.common.config import parse_config_args
32
32
  from flwr.common.constant import (
33
- FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
34
33
  TRANSPORT_TYPE_GRPC_ADAPTER,
35
34
  TRANSPORT_TYPE_GRPC_RERE,
36
35
  TRANSPORT_TYPE_REST,
@@ -45,6 +44,8 @@ from ..app import (
45
44
  )
46
45
  from ..clientapp.utils import get_load_client_app_fn
47
46
 
47
+ ADDRESS_FLEET_API_GRPC_RERE = "0.0.0.0:9092"
48
+
48
49
 
49
50
  def run_supernode() -> None:
50
51
  """Run Flower SuperNode."""
@@ -102,11 +103,11 @@ def run_client_app() -> None:
102
103
 
103
104
  def _warn_deprecated_server_arg(args: argparse.Namespace) -> None:
104
105
  """Warn about the deprecated argument `--server`."""
105
- if args.server != FLEET_API_GRPC_RERE_DEFAULT_ADDRESS:
106
+ if args.server != ADDRESS_FLEET_API_GRPC_RERE:
106
107
  warn = "Passing flag --server is deprecated. Use --superlink instead."
107
108
  warn_deprecated_feature(warn)
108
109
 
109
- if args.superlink != FLEET_API_GRPC_RERE_DEFAULT_ADDRESS:
110
+ if args.superlink != ADDRESS_FLEET_API_GRPC_RERE:
110
111
  # if `--superlink` also passed, then
111
112
  # warn user that this argument overrides what was passed with `--server`
112
113
  log(
@@ -246,12 +247,12 @@ def _parse_args_common(parser: argparse.ArgumentParser) -> None:
246
247
  )
247
248
  parser.add_argument(
248
249
  "--server",
249
- default=FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
250
+ default=ADDRESS_FLEET_API_GRPC_RERE,
250
251
  help="Server address",
251
252
  )
252
253
  parser.add_argument(
253
254
  "--superlink",
254
- default=FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
255
+ default=ADDRESS_FLEET_API_GRPC_RERE,
255
256
  help="SuperLink Fleet API (gRPC-rere) address (IPv4, IPv6, or a domain name)",
256
257
  )
257
258
  parser.add_argument(
@@ -37,18 +37,7 @@ TRANSPORT_TYPES = [
37
37
  TRANSPORT_TYPE_VCE,
38
38
  ]
39
39
 
40
- # Addresses
41
- # SuperNode
42
- CLIENTAPPIO_API_DEFAULT_ADDRESS = "0.0.0.0:9094"
43
- # SuperExec
44
- EXEC_API_DEFAULT_ADDRESS = "0.0.0.0:9093"
45
- # SuperLink
46
- DRIVER_API_DEFAULT_ADDRESS = "0.0.0.0:9091"
47
- FLEET_API_GRPC_RERE_DEFAULT_ADDRESS = "0.0.0.0:9092"
48
- FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS = (
49
- "[::]:8080" # IPv6 to keep start_server compatible
50
- )
51
- FLEET_API_REST_DEFAULT_ADDRESS = "0.0.0.0:9093"
40
+ SUPEREXEC_DEFAULT_ADDRESS = "0.0.0.0:9093"
52
41
 
53
42
  # Constants for ping
54
43
  PING_DEFAULT_INTERVAL = 30
@@ -119,7 +119,7 @@ class RecordSet:
119
119
  Let's see an example.
120
120
 
121
121
  >>> from flwr.common import RecordSet
122
- >>> from flwr.common import ConfigsRecord, MetricsRecord, ParametersRecord
122
+ >>> from flwr.common import ConfigsRecords, MetricsRecords, ParametersRecord
123
123
  >>>
124
124
  >>> # Let's begin with an empty record
125
125
  >>> my_recordset = RecordSet()
@@ -15,18 +15,7 @@
15
15
  """Typed dict base class for *Records."""
16
16
 
17
17
 
18
- from typing import (
19
- Callable,
20
- Dict,
21
- Generic,
22
- ItemsView,
23
- Iterator,
24
- KeysView,
25
- MutableMapping,
26
- TypeVar,
27
- ValuesView,
28
- cast,
29
- )
18
+ from typing import Callable, Dict, Generic, Iterator, MutableMapping, TypeVar, cast
30
19
 
31
20
  K = TypeVar("K") # Key type
32
21
  V = TypeVar("V") # Value type
@@ -84,15 +73,3 @@ class TypedDict(MutableMapping[K, V], Generic[K, V]):
84
73
  if isinstance(other, dict):
85
74
  return data == other
86
75
  return NotImplemented
87
-
88
- def keys(self) -> KeysView[K]:
89
- """D.keys() -> a set-like object providing a view on D's keys."""
90
- return cast(Dict[K, V], self.__dict__["_data"]).keys()
91
-
92
- def values(self) -> ValuesView[V]:
93
- """D.values() -> an object providing a view on D's values."""
94
- return cast(Dict[K, V], self.__dict__["_data"]).values()
95
-
96
- def items(self) -> ItemsView[K, V]:
97
- """D.items() -> a set-like object providing a view on D's items."""
98
- return cast(Dict[K, V], self.__dict__["_data"]).items()
@@ -36,10 +36,6 @@ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
36
36
  from flwr.common.address import parse_address
37
37
  from flwr.common.config import get_flwr_dir
38
38
  from flwr.common.constant import (
39
- DRIVER_API_DEFAULT_ADDRESS,
40
- FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
41
- FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
42
- FLEET_API_REST_DEFAULT_ADDRESS,
43
39
  MISSING_EXTRA_REST,
44
40
  TRANSPORT_TYPE_GRPC_ADAPTER,
45
41
  TRANSPORT_TYPE_GRPC_RERE,
@@ -72,13 +68,18 @@ from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
72
68
  from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
73
69
  from .superlink.state import StateFactory
74
70
 
71
+ ADDRESS_DRIVER_API = "0.0.0.0:9091"
72
+ ADDRESS_FLEET_API_GRPC_RERE = "0.0.0.0:9092"
73
+ ADDRESS_FLEET_API_GRPC_BIDI = "[::]:8080" # IPv6 to keep start_server compatible
74
+ ADDRESS_FLEET_API_REST = "0.0.0.0:9093"
75
+
75
76
  DATABASE = ":flwr-in-memory-state:"
76
77
  BASE_DIR = get_flwr_dir() / "superlink" / "ffs"
77
78
 
78
79
 
79
80
  def start_server( # pylint: disable=too-many-arguments,too-many-locals
80
81
  *,
81
- server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
82
+ server_address: str = ADDRESS_FLEET_API_GRPC_BIDI,
82
83
  server: Optional[Server] = None,
83
84
  config: Optional[ServerConfig] = None,
84
85
  strategy: Optional[Strategy] = None,
@@ -231,9 +232,9 @@ def run_superlink() -> None:
231
232
  TRANSPORT_TYPE_GRPC_RERE,
232
233
  TRANSPORT_TYPE_GRPC_ADAPTER,
233
234
  ]:
234
- args.fleet_api_address = FLEET_API_GRPC_RERE_DEFAULT_ADDRESS
235
+ args.fleet_api_address = ADDRESS_FLEET_API_GRPC_RERE
235
236
  elif args.fleet_api_type == TRANSPORT_TYPE_REST:
236
- args.fleet_api_address = FLEET_API_REST_DEFAULT_ADDRESS
237
+ args.fleet_api_address = ADDRESS_FLEET_API_REST
237
238
 
238
239
  fleet_address, host, port = _format_address(args.fleet_api_address)
239
240
 
@@ -652,7 +653,7 @@ def _add_args_driver_api(parser: argparse.ArgumentParser) -> None:
652
653
  parser.add_argument(
653
654
  "--driver-api-address",
654
655
  help="Driver API (gRPC) server address (IPv4, IPv6, or a domain name).",
655
- default=DRIVER_API_DEFAULT_ADDRESS,
656
+ default=ADDRESS_DRIVER_API,
656
657
  )
657
658
 
658
659
 
@@ -22,7 +22,6 @@ from typing import Iterable, List, Optional, cast
22
22
  import grpc
23
23
 
24
24
  from flwr.common import DEFAULT_TTL, Message, Metadata, RecordSet
25
- from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS
26
25
  from flwr.common.grpc import create_channel
27
26
  from flwr.common.logger import log
28
27
  from flwr.common.serde import (
@@ -46,6 +45,8 @@ from flwr.proto.task_pb2 import TaskIns # pylint: disable=E0611
46
45
 
47
46
  from .driver import Driver
48
47
 
48
+ DEFAULT_SERVER_ADDRESS_DRIVER = "[::]:9091"
49
+
49
50
  ERROR_MESSAGE_DRIVER_NOT_CONNECTED = """
50
51
  [Driver] Error: Not connected.
51
52
 
@@ -72,7 +73,7 @@ class GrpcDriver(Driver):
72
73
  def __init__( # pylint: disable=too-many-arguments
73
74
  self,
74
75
  run_id: int,
75
- driver_service_address: str = DRIVER_API_DEFAULT_ADDRESS,
76
+ driver_service_address: str = DEFAULT_SERVER_ADDRESS_DRIVER,
76
77
  root_certificates: Optional[bytes] = None,
77
78
  ) -> None:
78
79
  self._run_id = run_id