flwr-nightly 1.10.0.dev20240722__tar.gz → 1.11.0.dev20240805__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 (281) hide show
  1. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/PKG-INFO +1 -1
  2. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/pyproject.toml +1 -1
  3. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/config_utils.py +40 -23
  4. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/new.py +7 -6
  5. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/README.md.tpl +1 -1
  6. flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +1 -0
  7. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/code/client.hf.py.tpl → flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +8 -6
  8. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +1 -1
  9. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +29 -11
  10. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +1 -1
  11. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +16 -13
  12. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +3 -3
  13. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +20 -13
  14. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +20 -17
  15. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl +5 -3
  16. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl → flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +3 -2
  17. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +3 -2
  18. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +3 -2
  19. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +3 -2
  20. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +8 -7
  21. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +3 -2
  22. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +5 -6
  23. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/code/task.hf.py.tpl → flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +14 -2
  24. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +2 -2
  25. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +15 -2
  26. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +26 -21
  27. flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +53 -0
  28. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +3 -3
  29. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/pyproject.hf.toml.tpl → flwr_nightly-1.11.0.dev20240805/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +4 -4
  30. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +4 -4
  31. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +11 -11
  32. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +4 -4
  33. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +7 -6
  34. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +5 -5
  35. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +8 -8
  36. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/run/run.py +31 -27
  37. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +7 -0
  38. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/supernode/app.py +12 -43
  39. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/config.py +6 -1
  40. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/object_ref.py +84 -21
  41. flwr_nightly-1.11.0.dev20240805/src/py/flwr/proto/driver_pb2.py +51 -0
  42. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/driver_pb2.pyi +7 -1
  43. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/driver_pb2_grpc.py +35 -0
  44. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/driver_pb2_grpc.pyi +14 -0
  45. flwr_nightly-1.11.0.dev20240805/src/py/flwr/proto/exec_pb2.py +43 -0
  46. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/exec_pb2.pyi +20 -1
  47. flwr_nightly-1.11.0.dev20240805/src/py/flwr/proto/fleet_pb2.py +56 -0
  48. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fleet_pb2_grpc.py +35 -0
  49. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fleet_pb2_grpc.pyi +14 -0
  50. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/run_pb2.py +8 -8
  51. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/run_pb2.pyi +4 -1
  52. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/run_serverapp.py +0 -3
  53. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/driver/driver_servicer.py +7 -0
  54. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +7 -0
  55. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +1 -1
  56. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +4 -4
  57. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/__init__.py +1 -1
  58. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/run_simulation.py +32 -4
  59. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/app.py +4 -5
  60. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/deployment.py +1 -2
  61. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/exec_servicer.py +3 -1
  62. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/executor.py +3 -0
  63. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/simulation.py +54 -12
  64. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -1
  65. flwr_nightly-1.10.0.dev20240722/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -29
  66. flwr_nightly-1.10.0.dev20240722/src/py/flwr/proto/driver_pb2.py +0 -50
  67. flwr_nightly-1.10.0.dev20240722/src/py/flwr/proto/exec_pb2.py +0 -39
  68. flwr_nightly-1.10.0.dev20240722/src/py/flwr/proto/fleet_pb2.py +0 -55
  69. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/LICENSE +0 -0
  70. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/README.md +0 -0
  71. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/__init__.py +0 -0
  72. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/__init__.py +0 -0
  73. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/app.py +0 -0
  74. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/build.py +0 -0
  75. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/example.py +0 -0
  76. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/install.py +0 -0
  77. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/__init__.py +0 -0
  78. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  79. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  80. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  81. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  82. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  83. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  84. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/config.yaml.tpl +0 -0
  85. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  86. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  87. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +0 -0
  88. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/new/templates/app/code/flwr_tune/static_config.yaml.tpl +0 -0
  89. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/run/__init__.py +0 -0
  90. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/cli/utils.py +0 -0
  91. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/__init__.py +0 -0
  92. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/app.py +0 -0
  93. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/client.py +0 -0
  94. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/client_app.py +0 -0
  95. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  96. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  97. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  98. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  99. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_client/connection.py +0 -0
  100. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  101. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  102. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  103. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/heartbeat.py +0 -0
  104. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/message_handler/__init__.py +0 -0
  105. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  106. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  107. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/__init__.py +0 -0
  108. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  109. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/comms_mods.py +0 -0
  110. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  111. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  112. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  113. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  114. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/mod/utils.py +0 -0
  115. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/node_state.py +0 -0
  116. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/node_state_tests.py +0 -0
  117. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/numpy_client.py +0 -0
  118. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/rest_client/__init__.py +0 -0
  119. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/rest_client/connection.py +0 -0
  120. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/supernode/__init__.py +0 -0
  121. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/client/typing.py +0 -0
  122. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/__init__.py +0 -0
  123. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/address.py +0 -0
  124. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/constant.py +0 -0
  125. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/context.py +0 -0
  126. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/date.py +0 -0
  127. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/differential_privacy.py +0 -0
  128. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  129. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/dp.py +0 -0
  130. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/exit_handlers.py +0 -0
  131. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/grpc.py +0 -0
  132. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/logger.py +0 -0
  133. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/message.py +0 -0
  134. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/parameter.py +0 -0
  135. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/pyproject.py +0 -0
  136. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/__init__.py +0 -0
  137. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/configsrecord.py +0 -0
  138. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/conversion_utils.py +0 -0
  139. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/metricsrecord.py +0 -0
  140. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/parametersrecord.py +0 -0
  141. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/recordset.py +0 -0
  142. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/record/typeddict.py +0 -0
  143. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/recordset_compat.py +0 -0
  144. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/retry_invoker.py +0 -0
  145. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  146. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  147. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  148. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  149. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  150. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  151. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  152. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  153. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/serde.py +0 -0
  154. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/telemetry.py +0 -0
  155. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/typing.py +0 -0
  156. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/common/version.py +0 -0
  157. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/__init__.py +0 -0
  158. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/common_pb2.py +0 -0
  159. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/common_pb2.pyi +0 -0
  160. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  161. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  162. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/error_pb2.py +0 -0
  163. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/error_pb2.pyi +0 -0
  164. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  165. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  166. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  167. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  168. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fab_pb2.py +0 -0
  169. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  170. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  171. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  172. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  173. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  174. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  175. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  176. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  177. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/node_pb2.py +0 -0
  178. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/node_pb2.pyi +0 -0
  179. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  180. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  181. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/recordset_pb2.py +0 -0
  182. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  183. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  184. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  185. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  186. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  187. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/task_pb2.py +0 -0
  188. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/task_pb2.pyi +0 -0
  189. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  190. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  191. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/transport_pb2.py +0 -0
  192. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  193. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  194. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  195. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/py.typed +0 -0
  196. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/__init__.py +0 -0
  197. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/app.py +0 -0
  198. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/client_manager.py +0 -0
  199. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/client_proxy.py +0 -0
  200. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/compat/__init__.py +0 -0
  201. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/compat/app.py +0 -0
  202. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/compat/app_utils.py +0 -0
  203. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  204. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/compat/legacy_context.py +0 -0
  205. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/criterion.py +0 -0
  206. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/driver/__init__.py +0 -0
  207. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/driver/driver.py +0 -0
  208. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  209. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  210. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/history.py +0 -0
  211. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/server.py +0 -0
  212. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/server_app.py +0 -0
  213. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/server_config.py +0 -0
  214. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/serverapp_components.py +0 -0
  215. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/__init__.py +0 -0
  216. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/aggregate.py +0 -0
  217. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/bulyan.py +0 -0
  218. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  219. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  220. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  221. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  222. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  223. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  224. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedadam.py +0 -0
  225. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedavg.py +0 -0
  226. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  227. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  228. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  229. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedopt.py +0 -0
  230. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedprox.py +0 -0
  231. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  232. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  233. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  234. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  235. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  236. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/krum.py +0 -0
  237. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  238. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/strategy/strategy.py +0 -0
  239. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/__init__.py +0 -0
  240. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  241. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  242. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  243. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  244. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  245. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  246. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  247. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  248. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  249. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  250. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  251. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  252. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  253. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  254. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  255. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  256. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  257. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  258. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  259. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  260. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  261. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  262. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/state.py +0 -0
  263. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  264. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/superlink/state/utils.py +0 -0
  265. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/typing.py +0 -0
  266. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/utils/__init__.py +0 -0
  267. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/utils/tensorboard.py +0 -0
  268. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/utils/validator.py +0 -0
  269. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/__init__.py +0 -0
  270. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/constant.py +0 -0
  271. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  272. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  273. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  274. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  275. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/app.py +0 -0
  276. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  277. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  278. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  279. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  280. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/__init__.py +0 -0
  281. {flwr_nightly-1.10.0.dev20240722 → flwr_nightly-1.11.0.dev20240805}/src/py/flwr/superexec/exec_grpc.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.10.0.dev20240722
3
+ Version: 1.11.0.dev20240805
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.10.0.dev20240722"
7
+ version = "1.11.0.dev20240805"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -25,8 +25,8 @@ from flwr.common import object_ref
25
25
  from flwr.common.typing import UserConfigValue
26
26
 
27
27
 
28
- def get_fab_metadata(fab_file: Union[Path, bytes]) -> Tuple[str, str]:
29
- """Extract the fab_id and the fab_version from a FAB file or path.
28
+ def get_fab_config(fab_file: Union[Path, bytes]) -> Dict[str, Any]:
29
+ """Extract the config from a FAB file or path.
30
30
 
31
31
  Parameters
32
32
  ----------
@@ -36,8 +36,8 @@ def get_fab_metadata(fab_file: Union[Path, bytes]) -> Tuple[str, str]:
36
36
 
37
37
  Returns
38
38
  -------
39
- Tuple[str, str]
40
- The `fab_version` and `fab_id` of the given Flower App Bundle.
39
+ Dict[str, Any]
40
+ The `config` of the given Flower App Bundle.
41
41
  """
42
42
  fab_file_archive: Union[Path, IO[bytes]]
43
43
  if isinstance(fab_file, bytes):
@@ -59,10 +59,29 @@ def get_fab_metadata(fab_file: Union[Path, bytes]) -> Tuple[str, str]:
59
59
  if not is_valid:
60
60
  raise ValueError(errors)
61
61
 
62
- return (
63
- conf["project"]["version"],
64
- f"{conf['tool']['flwr']['app']['publisher']}/{conf['project']['name']}",
65
- )
62
+ return conf
63
+
64
+
65
+ def get_fab_metadata(fab_file: Union[Path, bytes]) -> Tuple[str, str]:
66
+ """Extract the fab_id and the fab_version from a FAB file or path.
67
+
68
+ Parameters
69
+ ----------
70
+ fab_file : Union[Path, bytes]
71
+ The Flower App Bundle file to validate and extract the metadata from.
72
+ It can either be a path to the file or the file itself as bytes.
73
+
74
+ Returns
75
+ -------
76
+ Tuple[str, str]
77
+ The `fab_version` and `fab_id` of the given Flower App Bundle.
78
+ """
79
+ conf = get_fab_config(fab_file)
80
+
81
+ return (
82
+ conf["project"]["version"],
83
+ f"{conf['tool']['flwr']['app']['publisher']}/{conf['project']['name']}",
84
+ )
66
85
 
67
86
 
68
87
  def load_and_validate(
@@ -77,6 +96,9 @@ def load_and_validate(
77
96
  A tuple with the optional config in case it exists and is valid
78
97
  and associated errors and warnings.
79
98
  """
99
+ if path is None:
100
+ path = Path.cwd() / "pyproject.toml"
101
+
80
102
  config = load(path)
81
103
 
82
104
  if config is None:
@@ -86,7 +108,7 @@ def load_and_validate(
86
108
  ]
87
109
  return (None, errors, [])
88
110
 
89
- is_valid, errors, warnings = validate(config, check_module)
111
+ is_valid, errors, warnings = validate(config, check_module, path.parent)
90
112
 
91
113
  if not is_valid:
92
114
  return (None, errors, warnings)
@@ -94,14 +116,8 @@ def load_and_validate(
94
116
  return (config, errors, warnings)
95
117
 
96
118
 
97
- def load(path: Optional[Path] = None) -> Optional[Dict[str, Any]]:
119
+ def load(toml_path: Path) -> Optional[Dict[str, Any]]:
98
120
  """Load pyproject.toml and return as dict."""
99
- if path is None:
100
- cur_dir = Path.cwd()
101
- toml_path = cur_dir / "pyproject.toml"
102
- else:
103
- toml_path = path
104
-
105
121
  if not toml_path.is_file():
106
122
  return None
107
123
 
@@ -167,7 +183,9 @@ def validate_fields(config: Dict[str, Any]) -> Tuple[bool, List[str], List[str]]
167
183
 
168
184
 
169
185
  def validate(
170
- config: Dict[str, Any], check_module: bool = True
186
+ config: Dict[str, Any],
187
+ check_module: bool = True,
188
+ project_dir: Optional[Union[str, Path]] = None,
171
189
  ) -> Tuple[bool, List[str], List[str]]:
172
190
  """Validate pyproject.toml."""
173
191
  is_valid, errors, warnings = validate_fields(config)
@@ -176,16 +194,15 @@ def validate(
176
194
  return False, errors, warnings
177
195
 
178
196
  # Validate serverapp
179
- is_valid, reason = object_ref.validate(
180
- config["tool"]["flwr"]["app"]["components"]["serverapp"], check_module
181
- )
197
+ serverapp_ref = config["tool"]["flwr"]["app"]["components"]["serverapp"]
198
+ is_valid, reason = object_ref.validate(serverapp_ref, check_module, project_dir)
199
+
182
200
  if not is_valid and isinstance(reason, str):
183
201
  return False, [reason], []
184
202
 
185
203
  # Validate clientapp
186
- is_valid, reason = object_ref.validate(
187
- config["tool"]["flwr"]["app"]["components"]["clientapp"], check_module
188
- )
204
+ clientapp_ref = config["tool"]["flwr"]["app"]["components"]["clientapp"]
205
+ is_valid, reason = object_ref.validate(clientapp_ref, check_module, project_dir)
189
206
 
190
207
  if not is_valid and isinstance(reason, str):
191
208
  return False, [reason], []
@@ -38,7 +38,7 @@ class MlFramework(str, Enum):
38
38
  PYTORCH = "PyTorch"
39
39
  TENSORFLOW = "TensorFlow"
40
40
  JAX = "JAX"
41
- HUGGINGFACE = "HF"
41
+ HUGGINGFACE = "HuggingFace"
42
42
  MLX = "MLX"
43
43
  SKLEARN = "sklearn"
44
44
  FLOWERTUNE = "FlowerTune"
@@ -135,7 +135,7 @@ def new(
135
135
  username = prompt_text("Please provide your Flower username")
136
136
 
137
137
  if framework is not None:
138
- framework_str = str(framework.value)
138
+ framework_str_upper = str(framework.value)
139
139
  else:
140
140
  framework_value = prompt_options(
141
141
  "Please select ML framework by typing in the number",
@@ -146,9 +146,9 @@ def new(
146
146
  for name, value in vars(MlFramework).items()
147
147
  if value == framework_value
148
148
  ]
149
- framework_str = selected_value[0]
149
+ framework_str_upper = selected_value[0]
150
150
 
151
- framework_str = framework_str.lower()
151
+ framework_str = framework_str_upper.lower()
152
152
 
153
153
  llm_challenge_str = None
154
154
  if framework_str == "flowertune":
@@ -173,9 +173,10 @@ def new(
173
173
  )
174
174
 
175
175
  context = {
176
- "project_name": project_name,
177
- "package_name": package_name,
176
+ "framework_str": framework_str_upper,
178
177
  "import_name": import_name.replace("-", "_"),
178
+ "package_name": package_name,
179
+ "project_name": project_name,
179
180
  "username": username,
180
181
  }
181
182
 
@@ -1,4 +1,4 @@
1
- # $project_name
1
+ # $project_name: A Flower / $framework_str app
2
2
 
3
3
  ## Install dependencies
4
4
 
@@ -0,0 +1 @@
1
+ """$project_name: A Flower / $framework_str app."""
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / HuggingFace Transformers app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.client import ClientApp, NumPyClient
4
4
  from flwr.common import Context
@@ -17,10 +17,11 @@ from $import_name.task import (
17
17
 
18
18
  # Flower client
19
19
  class FlowerClient(NumPyClient):
20
- def __init__(self, net, trainloader, testloader):
20
+ def __init__(self, net, trainloader, testloader, local_epochs):
21
21
  self.net = net
22
22
  self.trainloader = trainloader
23
23
  self.testloader = testloader
24
+ self.local_epochs = local_epochs
24
25
 
25
26
  def get_parameters(self, config):
26
27
  return get_weights(self.net)
@@ -33,7 +34,7 @@ class FlowerClient(NumPyClient):
33
34
  train(
34
35
  self.net,
35
36
  self.trainloader,
36
- epochs=int(self.context.run_config["local-epochs"]),
37
+ epochs=self.local_epochs,
37
38
  )
38
39
  return self.get_parameters(config={}), len(self.trainloader), {}
39
40
 
@@ -49,12 +50,13 @@ def client_fn(context: Context):
49
50
  CHECKPOINT, num_labels=2
50
51
  ).to(DEVICE)
51
52
 
52
- partition_id = int(context.node_config["partition-id"])
53
- num_partitions = int(context.node_config["num-partitions"])
53
+ partition_id = context.node_config["partition-id"]
54
+ num_partitions = context.node_config["num-partitions"]
54
55
  trainloader, valloader = load_data(partition_id, num_partitions)
56
+ local_epochs = context.run_config["local-epochs"]
55
57
 
56
58
  # Return Client instance
57
- return FlowerClient(net, trainloader, valloader).to_client()
59
+ return FlowerClient(net, trainloader, valloader, local_epochs).to_client()
58
60
 
59
61
 
60
62
  # Flower ClientApp
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / JAX app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  import jax
4
4
  from flwr.client import NumPyClient, ClientApp
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / MLX app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  import mlx.core as mx
4
4
  import mlx.nn as nn
@@ -19,13 +19,22 @@ from $import_name.task import (
19
19
 
20
20
  # Define Flower Client and client_fn
21
21
  class FlowerClient(NumPyClient):
22
- def __init__(self, data):
23
- num_layers = int(self.context.run_config["num-layers"])
24
- hidden_dim = int(self.context.run_config["hidden-dim"])
25
- num_classes = 10
26
- batch_size = int(self.context.run_config["batch-size"])
27
- learning_rate = float(self.context.run_config["lr"])
28
- num_epochs = int(self.context.run_config["local-epochs"])
22
+ def __init__(
23
+ self,
24
+ data,
25
+ num_layers,
26
+ hidden_dim,
27
+ num_classes,
28
+ batch_size,
29
+ learning_rate,
30
+ num_epochs,
31
+ ):
32
+ self.num_layers = num_layers
33
+ self.hidden_dim = hidden_dim
34
+ self.num_classes = num_classes
35
+ self.batch_size = batch_size
36
+ self.learning_rate = learning_rate
37
+ self.num_epochs = num_epochs
29
38
 
30
39
  self.train_images, self.train_labels, self.test_images, self.test_labels = data
31
40
  self.model = MLP(
@@ -61,12 +70,21 @@ class FlowerClient(NumPyClient):
61
70
 
62
71
 
63
72
  def client_fn(context: Context):
64
- partition_id = int(context.node_config["partition-id"])
65
- num_partitions = int(context.node_config["num-partitions"])
73
+ partition_id = context.node_config["partition-id"]
74
+ num_partitions = context.node_config["num-partitions"]
66
75
  data = load_data(partition_id, num_partitions)
67
76
 
77
+ num_layers = context.run_config["num-layers"]
78
+ hidden_dim = context.run_config["hidden-dim"]
79
+ num_classes = 10
80
+ batch_size = context.run_config["batch-size"]
81
+ learning_rate = context.run_config["lr"]
82
+ num_epochs = context.run_config["local-epochs"]
83
+
68
84
  # Return Client instance
69
- return FlowerClient(data).to_client()
85
+ return FlowerClient(
86
+ data, num_layers, hidden_dim, num_classes, batch_size, learning_rate, num_epochs
87
+ ).to_client()
70
88
 
71
89
 
72
90
  # Flower ClientApp
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / NumPy app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.client import NumPyClient, ClientApp
4
4
  from flwr.common import Context
@@ -1,11 +1,11 @@
1
- """$project_name: A Flower / PyTorch app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
+ import torch
3
4
  from flwr.client import NumPyClient, ClientApp
4
5
  from flwr.common import Context
5
6
 
6
7
  from $import_name.task import (
7
8
  Net,
8
- DEVICE,
9
9
  load_data,
10
10
  get_weights,
11
11
  set_weights,
@@ -16,37 +16,40 @@ from $import_name.task import (
16
16
 
17
17
  # Define Flower Client and client_fn
18
18
  class FlowerClient(NumPyClient):
19
- def __init__(self, net, trainloader, valloader):
19
+ def __init__(self, net, trainloader, valloader, local_epochs):
20
20
  self.net = net
21
21
  self.trainloader = trainloader
22
22
  self.valloader = valloader
23
+ self.local_epochs = local_epochs
24
+ self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
25
+ self.net.to(self.device)
23
26
 
24
27
  def fit(self, parameters, config):
25
28
  set_weights(self.net, parameters)
26
- results = train(
29
+ train_loss = train(
27
30
  self.net,
28
31
  self.trainloader,
29
- self.valloader,
30
- int(self.context.run_config["local-epochs"]),
31
- DEVICE,
32
+ self.local_epochs,
33
+ self.device,
32
34
  )
33
- return get_weights(self.net), len(self.trainloader.dataset), results
35
+ return get_weights(self.net), len(self.trainloader.dataset), {"train_loss": train_loss}
34
36
 
35
37
  def evaluate(self, parameters, config):
36
38
  set_weights(self.net, parameters)
37
- loss, accuracy = test(self.net, self.valloader)
39
+ loss, accuracy = test(self.net, self.valloader, self.device)
38
40
  return loss, len(self.valloader.dataset), {"accuracy": accuracy}
39
41
 
40
42
 
41
43
  def client_fn(context: Context):
42
44
  # Load model and data
43
- net = Net().to(DEVICE)
44
- partition_id = int(context.node_config["partition-id"])
45
- num_partitions = int(context.node_config["num-partitions"])
45
+ net = Net()
46
+ partition_id = context.node_config["partition-id"]
47
+ num_partitions = context.node_config["num-partitions"]
46
48
  trainloader, valloader = load_data(partition_id, num_partitions)
49
+ local_epochs = context.run_config["local-epochs"]
47
50
 
48
51
  # Return Client instance
49
- return FlowerClient(net, trainloader, valloader).to_client()
52
+ return FlowerClient(net, trainloader, valloader, local_epochs).to_client()
50
53
 
51
54
 
52
55
  # Flower ClientApp
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / Scikit-Learn app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  import warnings
4
4
 
@@ -69,8 +69,8 @@ class FlowerClient(NumPyClient):
69
69
 
70
70
 
71
71
  def client_fn(context: Context):
72
- partition_id = int(context.node_config["partition-id"])
73
- num_partitions = int(context.node_config["num-partitions"])
72
+ partition_id = context.node_config["partition-id"]
73
+ num_partitions = context.node_config["num-partitions"]
74
74
  fds = FederatedDataset(dataset="mnist", partitioners={"train": num_partitions})
75
75
  dataset = fds.load_partition(partition_id, "train").with_format("numpy")
76
76
 
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / TensorFlow app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.client import NumPyClient, ClientApp
4
4
  from flwr.common import Context
@@ -8,12 +8,14 @@ from $import_name.task import load_data, load_model
8
8
 
9
9
  # Define Flower Client and client_fn
10
10
  class FlowerClient(NumPyClient):
11
- def __init__(self, model, x_train, y_train, x_test, y_test):
11
+ def __init__(
12
+ self, model, data, epochs, batch_size, verbose
13
+ ):
12
14
  self.model = model
13
- self.x_train = x_train
14
- self.y_train = y_train
15
- self.x_test = x_test
16
- self.y_test = y_test
15
+ self.x_train, self.y_train, self.x_test, self.y_test = data
16
+ self.epochs = epochs
17
+ self.batch_size = batch_size
18
+ self.verbose = verbose
17
19
 
18
20
  def get_parameters(self, config):
19
21
  return self.model.get_weights()
@@ -23,9 +25,9 @@ class FlowerClient(NumPyClient):
23
25
  self.model.fit(
24
26
  self.x_train,
25
27
  self.y_train,
26
- epochs=int(self.context.run_config["local-epochs"]),
27
- batch_size=int(self.context.run_config["batch-size"]),
28
- verbose=bool(self.context.run_config.get("verbose")),
28
+ epochs=self.epochs,
29
+ batch_size=self.batch_size,
30
+ verbose=self.verbose,
29
31
  )
30
32
  return self.model.get_weights(), len(self.x_train), {}
31
33
 
@@ -39,12 +41,17 @@ def client_fn(context: Context):
39
41
  # Load model and data
40
42
  net = load_model()
41
43
 
42
- partition_id = int(context.node_config["partition-id"])
43
- num_partitions = int(context.node_config["num-partitions"])
44
- x_train, y_train, x_test, y_test = load_data(partition_id, num_partitions)
44
+ partition_id = context.node_config["partition-id"]
45
+ num_partitions = context.node_config["num-partitions"]
46
+ data = load_data(partition_id, num_partitions)
47
+ epochs = context.run_config["local-epochs"]
48
+ batch_size = context.run_config["batch-size"]
49
+ verbose = context.run_config.get("verbose")
45
50
 
46
51
  # Return Client instance
47
- return FlowerClient(net, x_train, y_train, x_test, y_test).to_client()
52
+ return FlowerClient(
53
+ net, data, epochs, batch_size, verbose
54
+ ).to_client()
48
55
 
49
56
 
50
57
  # Flower ClientApp
@@ -9,8 +9,8 @@ from hydra import compose, initialize
9
9
  from hydra.utils import instantiate
10
10
 
11
11
  from flwr.client import ClientApp
12
- from flwr.common import ndarrays_to_parameters
13
- from flwr.server import ServerApp, ServerConfig
12
+ from flwr.common import Context, ndarrays_to_parameters
13
+ from flwr.server import ServerApp, ServerAppComponents, ServerConfig
14
14
 
15
15
  from $import_name.client_app import gen_client_fn, get_parameters
16
16
  from $import_name.dataset import get_tokenizer_and_data_collator_and_propt_formatting
@@ -67,20 +67,23 @@ init_model = get_model(cfg.model)
67
67
  init_model_parameters = get_parameters(init_model)
68
68
  init_model_parameters = ndarrays_to_parameters(init_model_parameters)
69
69
 
70
- # Instantiate strategy according to config. Here we pass other arguments
71
- # that are only defined at runtime.
72
- strategy = instantiate(
73
- cfg.strategy,
74
- on_fit_config_fn=get_on_fit_config(),
75
- fit_metrics_aggregation_fn=fit_weighted_average,
76
- initial_parameters=init_model_parameters,
77
- evaluate_fn=get_evaluate_fn(
78
- cfg.model, cfg.train.save_every_round, cfg_static.num_rounds, save_path
79
- ),
80
- )
70
+ def server_fn(context: Context):
71
+ # Instantiate strategy according to config. Here we pass other arguments
72
+ # that are only defined at runtime.
73
+ strategy = instantiate(
74
+ cfg.strategy,
75
+ on_fit_config_fn=get_on_fit_config(),
76
+ fit_metrics_aggregation_fn=fit_weighted_average,
77
+ initial_parameters=init_model_parameters,
78
+ evaluate_fn=get_evaluate_fn(
79
+ cfg.model, cfg.train.save_every_round, cfg_static.num_rounds, save_path
80
+ ),
81
+ )
82
+
83
+ config = ServerConfig(num_rounds=cfg_static.num_rounds)
84
+
85
+ return ServerAppComponents(strategy=strategy, config=config)
86
+
81
87
 
82
88
  # ServerApp for Flower Next
83
- server = ServerApp(
84
- config=ServerConfig(num_rounds=cfg_static.num_rounds),
85
- strategy=strategy,
86
- )
89
+ server = ServerApp(server_fn=server_fn)
@@ -10,6 +10,7 @@ from transformers import TrainingArguments
10
10
  from trl import SFTTrainer
11
11
 
12
12
  from flwr.client import NumPyClient
13
+ from flwr.common import Context
13
14
  from flwr.common.typing import NDArrays, Scalar
14
15
  from $import_name.dataset import reformat
15
16
  from $import_name.models import cosine_annealing, get_model
@@ -102,13 +103,14 @@ def gen_client_fn(
102
103
  model_cfg: DictConfig,
103
104
  train_cfg: DictConfig,
104
105
  save_path: str,
105
- ) -> Callable[[str], FlowerClient]: # pylint: disable=too-many-arguments
106
+ ) -> Callable[[Context], FlowerClient]: # pylint: disable=too-many-arguments
106
107
  """Generate the client function that creates the Flower Clients."""
107
108
 
108
- def client_fn(cid: str) -> FlowerClient:
109
+ def client_fn(context: Context) -> FlowerClient:
109
110
  """Create a Flower client representing a single organization."""
110
111
  # Let's get the partition corresponding to the i-th client
111
- client_trainset = fds.load_partition(int(cid), "train")
112
+ partition_id = context.node_config["partition-id"]
113
+ client_trainset = fds.load_partition(partition_id, "train")
112
114
  client_trainset = reformat(client_trainset, llm_task="$llm_challenge_str")
113
115
 
114
116
  return FlowerClient(
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / HuggingFace Transformers app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.common import Context
4
4
  from flwr.server.strategy import FedAvg
@@ -7,7 +7,7 @@ from flwr.server import ServerApp, ServerAppComponents, ServerConfig
7
7
 
8
8
  def server_fn(context: Context):
9
9
  # Read from config
10
- num_rounds = int(context.run_config["num-server-rounds"])
10
+ num_rounds = context.run_config["num-server-rounds"]
11
11
 
12
12
  # Define strategy
13
13
  strategy = FedAvg(
@@ -18,5 +18,6 @@ def server_fn(context: Context):
18
18
 
19
19
  return ServerAppComponents(strategy=strategy, config=config)
20
20
 
21
+
21
22
  # Create ServerApp
22
23
  app = ServerApp(server_fn=server_fn)
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / JAX app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.common import Context
4
4
  from flwr.server.strategy import FedAvg
@@ -7,7 +7,7 @@ from flwr.server import ServerApp, ServerAppComponents, ServerConfig
7
7
 
8
8
  def server_fn(context: Context):
9
9
  # Read from config
10
- num_rounds = int(context.run_config["num-server-rounds"])
10
+ num_rounds = context.run_config["num-server-rounds"]
11
11
 
12
12
  # Define strategy
13
13
  strategy = FedAvg()
@@ -15,5 +15,6 @@ def server_fn(context: Context):
15
15
 
16
16
  return ServerAppComponents(strategy=strategy, config=config)
17
17
 
18
+
18
19
  # Create ServerApp
19
20
  app = ServerApp(server_fn=server_fn)
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / MLX app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.common import Context
4
4
  from flwr.server import ServerApp, ServerAppComponents, ServerConfig
@@ -7,7 +7,7 @@ from flwr.server.strategy import FedAvg
7
7
 
8
8
  def server_fn(context: Context):
9
9
  # Read from config
10
- num_rounds = int(context.run_config["num-server-rounds"])
10
+ num_rounds = context.run_config["num-server-rounds"]
11
11
 
12
12
  # Define strategy
13
13
  strategy = FedAvg()
@@ -15,5 +15,6 @@ def server_fn(context: Context):
15
15
 
16
16
  return ServerAppComponents(strategy=strategy, config=config)
17
17
 
18
+
18
19
  # Create ServerApp
19
20
  app = ServerApp(server_fn=server_fn)
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / NumPy app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.common import Context
4
4
  from flwr.server import ServerApp, ServerAppComponents, ServerConfig
@@ -7,7 +7,7 @@ from flwr.server.strategy import FedAvg
7
7
 
8
8
  def server_fn(context: Context):
9
9
  # Read from config
10
- num_rounds = int(context.run_config["num-server-rounds"])
10
+ num_rounds = context.run_config["num-server-rounds"]
11
11
 
12
12
  # Define strategy
13
13
  strategy = FedAvg()
@@ -15,5 +15,6 @@ def server_fn(context: Context):
15
15
 
16
16
  return ServerAppComponents(strategy=strategy, config=config)
17
17
 
18
+
18
19
  # Create ServerApp
19
20
  app = ServerApp(server_fn=server_fn)
@@ -1,4 +1,4 @@
1
- """$project_name: A Flower / PyTorch app."""
1
+ """$project_name: A Flower / $framework_str app."""
2
2
 
3
3
  from flwr.common import Context, ndarrays_to_parameters
4
4
  from flwr.server import ServerApp, ServerAppComponents, ServerConfig
@@ -7,17 +7,18 @@ from flwr.server.strategy import FedAvg
7
7
  from $import_name.task import Net, get_weights
8
8
 
9
9
 
10
- # Initialize model parameters
11
- ndarrays = get_weights(Net())
12
- parameters = ndarrays_to_parameters(ndarrays)
13
-
14
10
  def server_fn(context: Context):
15
11
  # Read from config
16
- num_rounds = int(context.run_config["num-server-rounds"])
12
+ num_rounds = context.run_config["num-server-rounds"]
13
+ fraction_fit = context.run_config["fraction-fit"]
14
+
15
+ # Initialize model parameters
16
+ ndarrays = get_weights(Net())
17
+ parameters = ndarrays_to_parameters(ndarrays)
17
18
 
18
19
  # Define strategy
19
20
  strategy = FedAvg(
20
- fraction_fit=1.0,
21
+ fraction_fit=fraction_fit,
21
22
  fraction_evaluate=1.0,
22
23
  min_available_clients=2,
23
24
  initial_parameters=parameters,