flwr-nightly 1.13.0.dev20241023__tar.gz → 1.13.0.dev20241024__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 (311) hide show
  1. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/PKG-INFO +1 -1
  2. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/pyproject.toml +1 -1
  3. flwr_nightly-1.13.0.dev20241024/src/py/flwr/proto/driver_pb2.py +51 -0
  4. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2.pyi +59 -0
  5. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2_grpc.py +68 -0
  6. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2_grpc.pyi +26 -0
  7. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/app.py +4 -2
  8. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/run_serverapp.py +13 -9
  9. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/driver_servicer.py +16 -0
  10. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +12 -1
  11. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/linkstate.py +29 -0
  12. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +51 -6
  13. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/utils.py +12 -1
  14. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/run_simulation.py +12 -4
  15. flwr_nightly-1.13.0.dev20241024/src/py/flwr/superexec/app.py +58 -0
  16. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/deployment.py +34 -25
  17. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/exec_grpc.py +15 -8
  18. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/exec_servicer.py +11 -1
  19. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/executor.py +19 -0
  20. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/simulation.py +8 -0
  21. flwr_nightly-1.13.0.dev20241023/src/py/flwr/client/node_state_tests.py +0 -65
  22. flwr_nightly-1.13.0.dev20241023/src/py/flwr/proto/driver_pb2.py +0 -42
  23. flwr_nightly-1.13.0.dev20241023/src/py/flwr/superexec/app.py +0 -193
  24. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/LICENSE +0 -0
  25. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/README.md +0 -0
  26. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/__init__.py +0 -0
  27. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/__init__.py +0 -0
  28. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/app.py +0 -0
  29. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/build.py +0 -0
  30. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/config_utils.py +0 -0
  31. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/example.py +0 -0
  32. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/install.py +0 -0
  33. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/log.py +0 -0
  34. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/__init__.py +0 -0
  35. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/new.py +0 -0
  36. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  37. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  38. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  39. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  40. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  41. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  42. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  43. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  44. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  45. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  46. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  47. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  48. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  49. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  50. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  51. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  52. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  53. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  54. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  55. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  56. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  57. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  58. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  59. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  60. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  61. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  63. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  64. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  65. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  66. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  67. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  68. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  69. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  70. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  71. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  72. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  73. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  74. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  75. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  76. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  77. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  78. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  79. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  80. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  81. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  82. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  83. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  84. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  85. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  86. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  87. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  88. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/run/__init__.py +0 -0
  89. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/run/run.py +0 -0
  90. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/utils.py +0 -0
  91. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/__init__.py +0 -0
  92. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/app.py +0 -0
  93. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/client.py +0 -0
  94. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/client_app.py +0 -0
  95. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/__init__.py +0 -0
  96. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/app.py +0 -0
  97. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  98. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/utils.py +0 -0
  99. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  100. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  101. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  102. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  103. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_client/connection.py +0 -0
  104. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  105. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  106. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  107. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  108. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/heartbeat.py +0 -0
  109. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/__init__.py +0 -0
  110. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  111. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  112. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/__init__.py +0 -0
  113. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  114. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/comms_mods.py +0 -0
  115. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  116. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  117. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  118. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  119. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/utils.py +0 -0
  120. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/numpy_client.py +0 -0
  121. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/rest_client/__init__.py +0 -0
  122. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/rest_client/connection.py +0 -0
  123. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/run_info_store.py +0 -0
  124. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/supernode/__init__.py +0 -0
  125. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/supernode/app.py +0 -0
  126. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/typing.py +0 -0
  127. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/__init__.py +0 -0
  128. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/address.py +0 -0
  129. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/config.py +0 -0
  130. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/constant.py +0 -0
  131. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/context.py +0 -0
  132. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/date.py +0 -0
  133. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/differential_privacy.py +0 -0
  134. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  135. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/dp.py +0 -0
  136. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/exit_handlers.py +0 -0
  137. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/grpc.py +0 -0
  138. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/logger.py +0 -0
  139. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/message.py +0 -0
  140. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/object_ref.py +0 -0
  141. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/parameter.py +0 -0
  142. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/pyproject.py +0 -0
  143. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/__init__.py +0 -0
  144. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/configsrecord.py +0 -0
  145. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/conversion_utils.py +0 -0
  146. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/metricsrecord.py +0 -0
  147. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/parametersrecord.py +0 -0
  148. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/recordset.py +0 -0
  149. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/typeddict.py +0 -0
  150. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/recordset_compat.py +0 -0
  151. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/retry_invoker.py +0 -0
  152. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  153. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  154. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  155. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  156. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  157. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  158. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  159. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  160. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/serde.py +0 -0
  161. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/telemetry.py +0 -0
  162. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/typing.py +0 -0
  163. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/version.py +0 -0
  164. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/__init__.py +0 -0
  165. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  166. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  167. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  168. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  169. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2.py +0 -0
  170. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2.pyi +0 -0
  171. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  172. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  173. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2.py +0 -0
  174. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2.pyi +0 -0
  175. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2_grpc.py +0 -0
  176. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  177. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2.py +0 -0
  178. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2.pyi +0 -0
  179. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  180. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  181. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2.py +0 -0
  182. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  183. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  184. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  185. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2.py +0 -0
  186. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  187. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  188. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  189. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2.py +0 -0
  190. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  191. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  192. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  193. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  194. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  195. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  196. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  197. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2.py +0 -0
  198. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2.pyi +0 -0
  199. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  200. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  201. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2.py +0 -0
  202. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2.pyi +0 -0
  203. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  204. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  205. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2.py +0 -0
  206. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  207. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2.py +0 -0
  210. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2.pyi +0 -0
  211. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  212. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  213. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2.py +0 -0
  214. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2.pyi +0 -0
  215. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  216. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  217. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2.py +0 -0
  218. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  219. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  220. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  221. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/py.typed +0 -0
  222. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/__init__.py +0 -0
  223. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/client_manager.py +0 -0
  224. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/client_proxy.py +0 -0
  225. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/__init__.py +0 -0
  226. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/app.py +0 -0
  227. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/app_utils.py +0 -0
  228. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  229. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/legacy_context.py +0 -0
  230. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/criterion.py +0 -0
  231. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/__init__.py +0 -0
  232. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/driver.py +0 -0
  233. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  234. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  235. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/history.py +0 -0
  236. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server.py +0 -0
  237. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server_app.py +0 -0
  238. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server_config.py +0 -0
  239. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp/__init__.py +0 -0
  240. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp/app.py +0 -0
  241. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp_components.py +0 -0
  242. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/__init__.py +0 -0
  243. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/aggregate.py +0 -0
  244. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/bulyan.py +0 -0
  245. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  246. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  247. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  248. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  249. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  250. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  251. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedadam.py +0 -0
  252. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavg.py +0 -0
  253. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  254. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  255. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  256. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedopt.py +0 -0
  257. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedprox.py +0 -0
  258. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  259. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  260. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  261. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  262. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  263. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/krum.py +0 -0
  264. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  265. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/strategy.py +0 -0
  266. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/__init__.py +0 -0
  267. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  268. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  269. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  270. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  271. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  272. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  273. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  274. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  275. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  276. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  277. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  278. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  279. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  280. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  281. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  282. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  283. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  284. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  285. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  286. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  287. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  288. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  289. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  290. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  291. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  292. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  293. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  294. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  295. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/typing.py +0 -0
  296. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/__init__.py +0 -0
  297. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/tensorboard.py +0 -0
  298. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/validator.py +0 -0
  299. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/__init__.py +0 -0
  300. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/constant.py +0 -0
  301. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  302. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  303. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  304. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  305. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/__init__.py +0 -0
  306. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/app.py +0 -0
  307. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  308. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  309. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  310. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  311. {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241023
3
+ Version: 1.13.0.dev20241024
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.13.0.dev20241023"
7
+ version = "1.13.0.dev20241024"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/driver.proto
4
+ # Protobuf Python Version: 4.25.0
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
16
+ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
17
+ from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2
18
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
19
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
20
+
21
+
22
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"@\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"F\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes\",\n\x1aPullServerAppInputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\x9e\x05\n\x06\x44river\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x62\x06proto3')
23
+
24
+ _globals = globals()
25
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
26
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.driver_pb2', _globals)
27
+ if _descriptor._USE_C_DESCRIPTORS == False:
28
+ DESCRIPTOR._options = None
29
+ _globals['_GETNODESREQUEST']._serialized_start=155
30
+ _globals['_GETNODESREQUEST']._serialized_end=188
31
+ _globals['_GETNODESRESPONSE']._serialized_start=190
32
+ _globals['_GETNODESRESPONSE']._serialized_end=241
33
+ _globals['_PUSHTASKINSREQUEST']._serialized_start=243
34
+ _globals['_PUSHTASKINSREQUEST']._serialized_end=307
35
+ _globals['_PUSHTASKINSRESPONSE']._serialized_start=309
36
+ _globals['_PUSHTASKINSRESPONSE']._serialized_end=348
37
+ _globals['_PULLTASKRESREQUEST']._serialized_start=350
38
+ _globals['_PULLTASKRESREQUEST']._serialized_end=420
39
+ _globals['_PULLTASKRESRESPONSE']._serialized_start=422
40
+ _globals['_PULLTASKRESRESPONSE']._serialized_end=487
41
+ _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_start=489
42
+ _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_end=533
43
+ _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_start=535
44
+ _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_end=662
45
+ _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_start=664
46
+ _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_end=747
47
+ _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=749
48
+ _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=779
49
+ _globals['_DRIVER']._serialized_start=782
50
+ _globals['_DRIVER']._serialized_end=1452
51
+ # @@protoc_insertion_point(module_scope)
@@ -3,7 +3,10 @@
3
3
  isort:skip_file
4
4
  """
5
5
  import builtins
6
+ import flwr.proto.fab_pb2
7
+ import flwr.proto.message_pb2
6
8
  import flwr.proto.node_pb2
9
+ import flwr.proto.run_pb2
7
10
  import flwr.proto.task_pb2
8
11
  import google.protobuf.descriptor
9
12
  import google.protobuf.internal.containers
@@ -91,3 +94,59 @@ class PullTaskResResponse(google.protobuf.message.Message):
91
94
  ) -> None: ...
92
95
  def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ...
93
96
  global___PullTaskResResponse = PullTaskResResponse
97
+
98
+ class PullServerAppInputsRequest(google.protobuf.message.Message):
99
+ """PullServerAppInputs messages"""
100
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
101
+ RUN_ID_FIELD_NUMBER: builtins.int
102
+ run_id: builtins.int
103
+ def __init__(self,
104
+ *,
105
+ run_id: builtins.int = ...,
106
+ ) -> None: ...
107
+ def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
108
+ global___PullServerAppInputsRequest = PullServerAppInputsRequest
109
+
110
+ class PullServerAppInputsResponse(google.protobuf.message.Message):
111
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
112
+ CONTEXT_FIELD_NUMBER: builtins.int
113
+ RUN_FIELD_NUMBER: builtins.int
114
+ FAB_FIELD_NUMBER: builtins.int
115
+ @property
116
+ def context(self) -> flwr.proto.message_pb2.Context: ...
117
+ @property
118
+ def run(self) -> flwr.proto.run_pb2.Run: ...
119
+ @property
120
+ def fab(self) -> flwr.proto.fab_pb2.Fab: ...
121
+ def __init__(self,
122
+ *,
123
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
124
+ run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
125
+ fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
126
+ ) -> None: ...
127
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
128
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
129
+ global___PullServerAppInputsResponse = PullServerAppInputsResponse
130
+
131
+ class PushServerAppOutputsRequest(google.protobuf.message.Message):
132
+ """PushServerAppOutputs messages"""
133
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
134
+ RUN_ID_FIELD_NUMBER: builtins.int
135
+ CONTEXT_FIELD_NUMBER: builtins.int
136
+ run_id: builtins.int
137
+ @property
138
+ def context(self) -> flwr.proto.message_pb2.Context: ...
139
+ def __init__(self,
140
+ *,
141
+ run_id: builtins.int = ...,
142
+ context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
143
+ ) -> None: ...
144
+ def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
145
+ def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
146
+ global___PushServerAppOutputsRequest = PushServerAppOutputsRequest
147
+
148
+ class PushServerAppOutputsResponse(google.protobuf.message.Message):
149
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
150
+ def __init__(self,
151
+ ) -> None: ...
152
+ global___PushServerAppOutputsResponse = PushServerAppOutputsResponse
@@ -46,6 +46,16 @@ class DriverStub(object):
46
46
  request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
47
47
  response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
48
48
  )
49
+ self.PullServerAppInputs = channel.unary_unary(
50
+ '/flwr.proto.Driver/PullServerAppInputs',
51
+ request_serializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.SerializeToString,
52
+ response_deserializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.FromString,
53
+ )
54
+ self.PushServerAppOutputs = channel.unary_unary(
55
+ '/flwr.proto.Driver/PushServerAppOutputs',
56
+ request_serializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.SerializeToString,
57
+ response_deserializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.FromString,
58
+ )
49
59
 
50
60
 
51
61
  class DriverServicer(object):
@@ -93,6 +103,20 @@ class DriverServicer(object):
93
103
  context.set_details('Method not implemented!')
94
104
  raise NotImplementedError('Method not implemented!')
95
105
 
106
+ def PullServerAppInputs(self, request, context):
107
+ """Pull ServerApp inputs
108
+ """
109
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
110
+ context.set_details('Method not implemented!')
111
+ raise NotImplementedError('Method not implemented!')
112
+
113
+ def PushServerAppOutputs(self, request, context):
114
+ """Push ServerApp outputs
115
+ """
116
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
117
+ context.set_details('Method not implemented!')
118
+ raise NotImplementedError('Method not implemented!')
119
+
96
120
 
97
121
  def add_DriverServicer_to_server(servicer, server):
98
122
  rpc_method_handlers = {
@@ -126,6 +150,16 @@ def add_DriverServicer_to_server(servicer, server):
126
150
  request_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.FromString,
127
151
  response_serializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.SerializeToString,
128
152
  ),
153
+ 'PullServerAppInputs': grpc.unary_unary_rpc_method_handler(
154
+ servicer.PullServerAppInputs,
155
+ request_deserializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.FromString,
156
+ response_serializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.SerializeToString,
157
+ ),
158
+ 'PushServerAppOutputs': grpc.unary_unary_rpc_method_handler(
159
+ servicer.PushServerAppOutputs,
160
+ request_deserializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.FromString,
161
+ response_serializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.SerializeToString,
162
+ ),
129
163
  }
130
164
  generic_handler = grpc.method_handlers_generic_handler(
131
165
  'flwr.proto.Driver', rpc_method_handlers)
@@ -237,3 +271,37 @@ class Driver(object):
237
271
  flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
238
272
  options, channel_credentials,
239
273
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
274
+
275
+ @staticmethod
276
+ def PullServerAppInputs(request,
277
+ target,
278
+ options=(),
279
+ channel_credentials=None,
280
+ call_credentials=None,
281
+ insecure=False,
282
+ compression=None,
283
+ wait_for_ready=None,
284
+ timeout=None,
285
+ metadata=None):
286
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PullServerAppInputs',
287
+ flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.SerializeToString,
288
+ flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.FromString,
289
+ options, channel_credentials,
290
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
291
+
292
+ @staticmethod
293
+ def PushServerAppOutputs(request,
294
+ target,
295
+ options=(),
296
+ channel_credentials=None,
297
+ call_credentials=None,
298
+ insecure=False,
299
+ compression=None,
300
+ wait_for_ready=None,
301
+ timeout=None,
302
+ metadata=None):
303
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PushServerAppOutputs',
304
+ flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.SerializeToString,
305
+ flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.FromString,
306
+ options, channel_credentials,
307
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -40,6 +40,16 @@ class DriverStub:
40
40
  flwr.proto.fab_pb2.GetFabResponse]
41
41
  """Get FAB"""
42
42
 
43
+ PullServerAppInputs: grpc.UnaryUnaryMultiCallable[
44
+ flwr.proto.driver_pb2.PullServerAppInputsRequest,
45
+ flwr.proto.driver_pb2.PullServerAppInputsResponse]
46
+ """Pull ServerApp inputs"""
47
+
48
+ PushServerAppOutputs: grpc.UnaryUnaryMultiCallable[
49
+ flwr.proto.driver_pb2.PushServerAppOutputsRequest,
50
+ flwr.proto.driver_pb2.PushServerAppOutputsResponse]
51
+ """Push ServerApp outputs"""
52
+
43
53
 
44
54
  class DriverServicer(metaclass=abc.ABCMeta):
45
55
  @abc.abstractmethod
@@ -90,5 +100,21 @@ class DriverServicer(metaclass=abc.ABCMeta):
90
100
  """Get FAB"""
91
101
  pass
92
102
 
103
+ @abc.abstractmethod
104
+ def PullServerAppInputs(self,
105
+ request: flwr.proto.driver_pb2.PullServerAppInputsRequest,
106
+ context: grpc.ServicerContext,
107
+ ) -> flwr.proto.driver_pb2.PullServerAppInputsResponse:
108
+ """Pull ServerApp inputs"""
109
+ pass
110
+
111
+ @abc.abstractmethod
112
+ def PushServerAppOutputs(self,
113
+ request: flwr.proto.driver_pb2.PushServerAppOutputsRequest,
114
+ context: grpc.ServicerContext,
115
+ ) -> flwr.proto.driver_pb2.PushServerAppOutputsResponse:
116
+ """Push ServerApp outputs"""
117
+ pass
118
+
93
119
 
94
120
  def add_DriverServicer_to_server(servicer: DriverServicer, server: grpc.Server) -> None: ...
@@ -64,7 +64,7 @@ from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
64
64
  )
65
65
  from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
66
66
  from flwr.superexec.app import load_executor
67
- from flwr.superexec.exec_grpc import run_superexec_api_grpc
67
+ from flwr.superexec.exec_grpc import run_exec_api_grpc
68
68
 
69
69
  from .client_manager import ClientManager
70
70
  from .history import History
@@ -329,8 +329,10 @@ def run_superlink() -> None:
329
329
  raise ValueError(f"Unknown fleet_api_type: {args.fleet_api_type}")
330
330
 
331
331
  # Start Exec API
332
- exec_server: grpc.Server = run_superexec_api_grpc(
332
+ exec_server: grpc.Server = run_exec_api_grpc(
333
333
  address=exec_address,
334
+ state_factory=state_factory,
335
+ ffs_factory=ffs_factory,
334
336
  executor=load_executor(args),
335
337
  certificates=certificates,
336
338
  config=parse_config_args(
@@ -34,7 +34,6 @@ from flwr.common.config import (
34
34
  from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS
35
35
  from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
36
36
  from flwr.common.object_ref import load_app
37
- from flwr.common.typing import UserConfig
38
37
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
39
38
  from flwr.proto.run_pb2 import ( # pylint: disable=E0611
40
39
  CreateRunRequest,
@@ -46,13 +45,14 @@ from .driver.grpc_driver import GrpcDriver
46
45
  from .server_app import LoadServerAppError, ServerApp
47
46
 
48
47
 
48
+ # pylint: disable-next=too-many-arguments,too-many-positional-arguments
49
49
  def run(
50
50
  driver: Driver,
51
+ context: Context,
51
52
  server_app_dir: str,
52
- server_app_run_config: UserConfig,
53
53
  server_app_attr: Optional[str] = None,
54
54
  loaded_server_app: Optional[ServerApp] = None,
55
- ) -> None:
55
+ ) -> Context:
56
56
  """Run ServerApp with a given Driver."""
57
57
  if not (server_app_attr is None) ^ (loaded_server_app is None):
58
58
  raise ValueError(
@@ -78,15 +78,11 @@ def run(
78
78
 
79
79
  server_app = _load()
80
80
 
81
- # Initialize Context
82
- context = Context(
83
- node_id=0, node_config={}, state=RecordSet(), run_config=server_app_run_config
84
- )
85
-
86
81
  # Call ServerApp
87
82
  server_app(driver=driver, context=context)
88
83
 
89
84
  log(DEBUG, "ServerApp finished running.")
85
+ return context
90
86
 
91
87
 
92
88
  # pylint: disable-next=too-many-branches,too-many-statements,too-many-locals
@@ -225,11 +221,19 @@ def run_server_app() -> None:
225
221
  root_certificates,
226
222
  )
227
223
 
224
+ # Initialize Context
225
+ context = Context(
226
+ node_id=0,
227
+ node_config={},
228
+ state=RecordSet(),
229
+ run_config=server_app_run_config,
230
+ )
231
+
228
232
  # Run the ServerApp with the Driver
229
233
  run(
230
234
  driver=driver,
235
+ context=context,
231
236
  server_app_dir=app_path,
232
- server_app_run_config=server_app_run_config,
233
237
  server_app_attr=server_app_attr,
234
238
  )
235
239
 
@@ -34,8 +34,12 @@ from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
34
34
  from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
35
35
  GetNodesRequest,
36
36
  GetNodesResponse,
37
+ PullServerAppInputsRequest,
38
+ PullServerAppInputsResponse,
37
39
  PullTaskResRequest,
38
40
  PullTaskResResponse,
41
+ PushServerAppOutputsRequest,
42
+ PushServerAppOutputsResponse,
39
43
  PushTaskInsRequest,
40
44
  PushTaskInsResponse,
41
45
  )
@@ -200,6 +204,18 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
200
204
 
201
205
  raise ValueError(f"Found no FAB with hash: {request.hash_str}")
202
206
 
207
+ def PullServerAppInputs(
208
+ self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
209
+ ) -> PullServerAppInputsResponse:
210
+ """Pull ServerApp process inputs."""
211
+ raise NotImplementedError()
212
+
213
+ def PushServerAppOutputs(
214
+ self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
215
+ ) -> PushServerAppOutputsResponse:
216
+ """Push ServerApp process outputs."""
217
+ raise NotImplementedError()
218
+
203
219
 
204
220
  def _raise_if(validation_error: bool, detail: str) -> None:
205
221
  if validation_error:
@@ -22,7 +22,7 @@ from logging import ERROR, WARNING
22
22
  from typing import Optional
23
23
  from uuid import UUID, uuid4
24
24
 
25
- from flwr.common import log, now
25
+ from flwr.common import Context, log, now
26
26
  from flwr.common.constant import (
27
27
  MESSAGE_TTL_TOLERANCE,
28
28
  NODE_ID_NUM_BYTES,
@@ -65,6 +65,7 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
65
65
 
66
66
  # Map run_id to RunRecord
67
67
  self.run_ids: dict[int, RunRecord] = {}
68
+ self.contexts: dict[int, Context] = {}
68
69
  self.task_ins_store: dict[UUID, TaskIns] = {}
69
70
  self.task_res_store: dict[UUID, TaskRes] = {}
70
71
 
@@ -500,3 +501,13 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
500
501
  self.node_ids[node_id] = (time.time() + ping_interval, ping_interval)
501
502
  return True
502
503
  return False
504
+
505
+ def get_serverapp_context(self, run_id: int) -> Optional[Context]:
506
+ """Get the context for the specified `run_id`."""
507
+ return self.contexts.get(run_id)
508
+
509
+ def set_serverapp_context(self, run_id: int, context: Context) -> None:
510
+ """Set the context for the specified `run_id`."""
511
+ if run_id not in self.run_ids:
512
+ raise ValueError(f"Run {run_id} not found")
513
+ self.contexts[run_id] = context
@@ -19,6 +19,7 @@ import abc
19
19
  from typing import Optional
20
20
  from uuid import UUID
21
21
 
22
+ from flwr.common import Context
22
23
  from flwr.common.typing import Run, RunStatus, UserConfig
23
24
  from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
24
25
 
@@ -270,3 +271,31 @@ class LinkState(abc.ABC): # pylint: disable=R0904
270
271
  is_acknowledged : bool
271
272
  True if the ping is successfully acknowledged; otherwise, False.
272
273
  """
274
+
275
+ @abc.abstractmethod
276
+ def get_serverapp_context(self, run_id: int) -> Optional[Context]:
277
+ """Get the context for the specified `run_id`.
278
+
279
+ Parameters
280
+ ----------
281
+ run_id : int
282
+ The identifier of the run for which to retrieve the context.
283
+
284
+ Returns
285
+ -------
286
+ Optional[Context]
287
+ The context associated with the specified `run_id`, or `None` if no context
288
+ exists for the given `run_id`.
289
+ """
290
+
291
+ @abc.abstractmethod
292
+ def set_serverapp_context(self, run_id: int, context: Context) -> None:
293
+ """Set the context for the specified `run_id`.
294
+
295
+ Parameters
296
+ ----------
297
+ run_id : int
298
+ The identifier of the run for which to set the context.
299
+ context : Context
300
+ The context to be associated with the specified `run_id`.
301
+ """
@@ -19,13 +19,14 @@
19
19
  import json
20
20
  import re
21
21
  import sqlite3
22
+ import threading
22
23
  import time
23
24
  from collections.abc import Sequence
24
25
  from logging import DEBUG, ERROR, WARNING
25
26
  from typing import Any, Optional, Union, cast
26
27
  from uuid import UUID, uuid4
27
28
 
28
- from flwr.common import log, now
29
+ from flwr.common import Context, log, now
29
30
  from flwr.common.constant import (
30
31
  MESSAGE_TTL_TOLERANCE,
31
32
  NODE_ID_NUM_BYTES,
@@ -33,13 +34,19 @@ from flwr.common.constant import (
33
34
  Status,
34
35
  )
35
36
  from flwr.common.typing import Run, RunStatus, UserConfig
36
- from flwr.proto.node_pb2 import Node # pylint: disable=E0611
37
- from flwr.proto.recordset_pb2 import RecordSet # pylint: disable=E0611
38
- from flwr.proto.task_pb2 import Task, TaskIns, TaskRes # pylint: disable=E0611
37
+
38
+ # pylint: disable=E0611
39
+ from flwr.proto.node_pb2 import Node
40
+ from flwr.proto.recordset_pb2 import RecordSet as ProtoRecordSet
41
+ from flwr.proto.task_pb2 import Task, TaskIns, TaskRes
42
+
43
+ # pylint: enable=E0611
39
44
  from flwr.server.utils.validator import validate_task_ins_or_res
40
45
 
41
46
  from .linkstate import LinkState
42
47
  from .utils import (
48
+ context_from_bytes,
49
+ context_to_bytes,
43
50
  convert_sint64_to_uint64,
44
51
  convert_sint64_values_in_dict_to_uint64,
45
52
  convert_uint64_to_sint64,
@@ -92,6 +99,14 @@ CREATE TABLE IF NOT EXISTS run(
92
99
  );
93
100
  """
94
101
 
102
+ SQL_CREATE_TABLE_CONTEXT = """
103
+ CREATE TABLE IF NOT EXISTS context(
104
+ run_id INTEGER UNIQUE,
105
+ context BLOB,
106
+ FOREIGN KEY(run_id) REFERENCES run(run_id)
107
+ );
108
+ """
109
+
95
110
  SQL_CREATE_TABLE_TASK_INS = """
96
111
  CREATE TABLE IF NOT EXISTS task_ins(
97
112
  task_id TEXT UNIQUE,
@@ -152,6 +167,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
152
167
  """
153
168
  self.database_path = database_path
154
169
  self.conn: Optional[sqlite3.Connection] = None
170
+ self.lock = threading.RLock()
155
171
 
156
172
  def initialize(self, log_queries: bool = False) -> list[tuple[str]]:
157
173
  """Create tables if they don't exist yet.
@@ -175,6 +191,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
175
191
 
176
192
  # Create each table if not exists queries
177
193
  cur.execute(SQL_CREATE_TABLE_RUN)
194
+ cur.execute(SQL_CREATE_TABLE_CONTEXT)
178
195
  cur.execute(SQL_CREATE_TABLE_TASK_INS)
179
196
  cur.execute(SQL_CREATE_TABLE_TASK_RES)
180
197
  cur.execute(SQL_CREATE_TABLE_NODE)
@@ -970,6 +987,34 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
970
987
  log(ERROR, "`node_id` does not exist.")
971
988
  return False
972
989
 
990
+ def get_serverapp_context(self, run_id: int) -> Optional[Context]:
991
+ """Get the context for the specified `run_id`."""
992
+ # Retrieve context if any
993
+ query = "SELECT context FROM context WHERE run_id = ?;"
994
+ rows = self.query(query, (convert_uint64_to_sint64(run_id),))
995
+ context = context_from_bytes(rows[0]["context"]) if rows else None
996
+ return context
997
+
998
+ def set_serverapp_context(self, run_id: int, context: Context) -> None:
999
+ """Set the context for the specified `run_id`."""
1000
+ # Convert context to bytes
1001
+ context_bytes = context_to_bytes(context)
1002
+ sint_run_id = convert_uint64_to_sint64(run_id)
1003
+
1004
+ # Check if any existing Context assigned to the run_id
1005
+ query = "SELECT COUNT(*) FROM context WHERE run_id = ?;"
1006
+ if self.query(query, (sint_run_id,))[0]["COUNT(*)"] > 0:
1007
+ # Update context
1008
+ query = "UPDATE context SET context = ? WHERE run_id = ?;"
1009
+ self.query(query, (context_bytes, sint_run_id))
1010
+ else:
1011
+ try:
1012
+ # Store context
1013
+ query = "INSERT INTO context (run_id, context) VALUES (?, ?);"
1014
+ self.query(query, (sint_run_id, context_bytes))
1015
+ except sqlite3.IntegrityError:
1016
+ raise ValueError(f"Run {run_id} not found") from None
1017
+
973
1018
  def get_valid_task_ins(self, task_id: str) -> Optional[dict[str, Any]]:
974
1019
  """Check if the TaskIns exists and is valid (not expired).
975
1020
 
@@ -1054,7 +1099,7 @@ def task_res_to_dict(task_msg: TaskRes) -> dict[str, Any]:
1054
1099
 
1055
1100
  def dict_to_task_ins(task_dict: dict[str, Any]) -> TaskIns:
1056
1101
  """Turn task_dict into protobuf message."""
1057
- recordset = RecordSet()
1102
+ recordset = ProtoRecordSet()
1058
1103
  recordset.ParseFromString(task_dict["recordset"])
1059
1104
 
1060
1105
  result = TaskIns(
@@ -1084,7 +1129,7 @@ def dict_to_task_ins(task_dict: dict[str, Any]) -> TaskIns:
1084
1129
 
1085
1130
  def dict_to_task_res(task_dict: dict[str, Any]) -> TaskRes:
1086
1131
  """Turn task_dict into protobuf message."""
1087
- recordset = RecordSet()
1132
+ recordset = ProtoRecordSet()
1088
1133
  recordset.ParseFromString(task_dict["recordset"])
1089
1134
 
1090
1135
  result = TaskRes(
@@ -20,10 +20,11 @@ from logging import ERROR
20
20
  from os import urandom
21
21
  from uuid import uuid4
22
22
 
23
- from flwr.common import log
23
+ from flwr.common import Context, log, serde
24
24
  from flwr.common.constant import ErrorCode, Status, SubStatus
25
25
  from flwr.common.typing import RunStatus
26
26
  from flwr.proto.error_pb2 import Error # pylint: disable=E0611
27
+ from flwr.proto.message_pb2 import Context as ProtoContext # pylint: disable=E0611
27
28
  from flwr.proto.node_pb2 import Node # pylint: disable=E0611
28
29
  from flwr.proto.task_pb2 import Task, TaskIns, TaskRes # pylint: disable=E0611
29
30
 
@@ -135,6 +136,16 @@ def convert_sint64_values_in_dict_to_uint64(
135
136
  data_dict[key] = convert_sint64_to_uint64(data_dict[key])
136
137
 
137
138
 
139
+ def context_to_bytes(context: Context) -> bytes:
140
+ """Serialize `Context` to bytes."""
141
+ return serde.context_to_proto(context).SerializeToString()
142
+
143
+
144
+ def context_from_bytes(context_bytes: bytes) -> Context:
145
+ """Deserialize `Context` from bytes."""
146
+ return serde.context_from_proto(ProtoContext.FromString(context_bytes))
147
+
148
+
138
149
  def make_node_unavailable_taskres(ref_taskins: TaskIns) -> TaskRes:
139
150
  """Generate a TaskRes with a node unavailable error from a TaskIns."""
140
151
  current_time = time.time()
@@ -29,7 +29,7 @@ from typing import Any, Optional
29
29
 
30
30
  from flwr.cli.config_utils import load_and_validate
31
31
  from flwr.client import ClientApp
32
- from flwr.common import EventType, event, log, now
32
+ from flwr.common import Context, EventType, RecordSet, event, log, now
33
33
  from flwr.common.config import get_fused_config_from_dir, parse_config_args
34
34
  from flwr.common.constant import RUN_ID_NUM_BYTES, Status
35
35
  from flwr.common.logger import (
@@ -40,7 +40,7 @@ from flwr.common.logger import (
40
40
  )
41
41
  from flwr.common.typing import Run, RunStatus, UserConfig
42
42
  from flwr.server.driver import Driver, InMemoryDriver
43
- from flwr.server.run_serverapp import run as run_server_app
43
+ from flwr.server.run_serverapp import run as _run
44
44
  from flwr.server.server_app import ServerApp
45
45
  from flwr.server.superlink.fleet import vce
46
46
  from flwr.server.superlink.fleet.vce.backend.backend import BackendConfig
@@ -333,11 +333,19 @@ def run_serverapp_th(
333
333
  log(INFO, "Enabling GPU growth for Tensorflow on the server thread.")
334
334
  enable_gpu_growth()
335
335
 
336
+ # Initialize Context
337
+ context = Context(
338
+ node_id=0,
339
+ node_config={},
340
+ state=RecordSet(),
341
+ run_config=_server_app_run_config,
342
+ )
343
+
336
344
  # Run ServerApp
337
- run_server_app(
345
+ _run(
338
346
  driver=_driver,
347
+ context=context,
339
348
  server_app_dir=_server_app_dir,
340
- server_app_run_config=_server_app_run_config,
341
349
  server_app_attr=_server_app_attr,
342
350
  loaded_server_app=_server_app,
343
351
  )