flwr-nightly 1.12.0.dev20240920__tar.gz → 1.12.0.dev20240924__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 (308) hide show
  1. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/PKG-INFO +1 -1
  2. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/pyproject.toml +9 -10
  3. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/app.py +2 -0
  4. flwr_nightly-1.12.0.dev20240924/src/py/flwr/cli/log.py +196 -0
  5. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/control_pb2.py +3 -3
  6. flwr_nightly-1.12.0.dev20240924/src/py/flwr/proto/control_pb2_grpc.py +135 -0
  7. flwr_nightly-1.12.0.dev20240924/src/py/flwr/proto/control_pb2_grpc.pyi +53 -0
  8. flwr_nightly-1.12.0.dev20240924/src/py/flwr/proto/run_pb2.py +58 -0
  9. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/run_pb2.pyi +86 -0
  10. flwr_nightly-1.12.0.dev20240920/src/py/flwr/proto/control_pb2_grpc.py +0 -67
  11. flwr_nightly-1.12.0.dev20240920/src/py/flwr/proto/control_pb2_grpc.pyi +0 -27
  12. flwr_nightly-1.12.0.dev20240920/src/py/flwr/proto/run_pb2.py +0 -44
  13. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/LICENSE +0 -0
  14. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/README.md +0 -0
  15. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/__init__.py +0 -0
  16. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/__init__.py +0 -0
  17. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/build.py +0 -0
  18. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/config_utils.py +0 -0
  19. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/example.py +0 -0
  20. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/install.py +0 -0
  21. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/__init__.py +0 -0
  22. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/new.py +0 -0
  23. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  24. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  25. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  26. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  27. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  28. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  29. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  30. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  31. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  32. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  33. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  34. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  35. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  36. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  37. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  38. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  39. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  40. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  41. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  42. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  43. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  44. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  45. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  46. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  47. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  48. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  49. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  50. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  51. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  52. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  53. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  54. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  55. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  56. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  57. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  58. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  59. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  60. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  61. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  62. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  63. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  64. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  65. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  66. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  67. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  68. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  69. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  70. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  71. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  72. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  73. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/run/__init__.py +0 -0
  74. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/run/run.py +0 -0
  75. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/cli/utils.py +0 -0
  76. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/__init__.py +0 -0
  77. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/app.py +0 -0
  78. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/client.py +0 -0
  79. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/client_app.py +0 -0
  80. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/clientapp/__init__.py +0 -0
  81. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/clientapp/app.py +0 -0
  82. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  83. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/clientapp/utils.py +0 -0
  84. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  85. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  86. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  87. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  88. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_client/connection.py +0 -0
  89. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  90. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  91. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  92. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  93. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/heartbeat.py +0 -0
  94. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/message_handler/__init__.py +0 -0
  95. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  96. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  97. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/__init__.py +0 -0
  98. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  99. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/comms_mods.py +0 -0
  100. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  101. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  102. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  103. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  104. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/mod/utils.py +0 -0
  105. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/node_state.py +0 -0
  106. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/node_state_tests.py +0 -0
  107. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/numpy_client.py +0 -0
  108. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/rest_client/__init__.py +0 -0
  109. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/rest_client/connection.py +0 -0
  110. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/supernode/__init__.py +0 -0
  111. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/supernode/app.py +0 -0
  112. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/client/typing.py +0 -0
  113. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/__init__.py +0 -0
  114. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/address.py +0 -0
  115. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/config.py +0 -0
  116. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/constant.py +0 -0
  117. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/context.py +0 -0
  118. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/date.py +0 -0
  119. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/differential_privacy.py +0 -0
  120. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  121. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/dp.py +0 -0
  122. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/exit_handlers.py +0 -0
  123. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/grpc.py +0 -0
  124. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/logger.py +0 -0
  125. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/message.py +0 -0
  126. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/object_ref.py +0 -0
  127. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/parameter.py +0 -0
  128. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/pyproject.py +0 -0
  129. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/__init__.py +0 -0
  130. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/configsrecord.py +0 -0
  131. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/conversion_utils.py +0 -0
  132. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/metricsrecord.py +0 -0
  133. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/parametersrecord.py +0 -0
  134. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/recordset.py +0 -0
  135. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/record/typeddict.py +0 -0
  136. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/recordset_compat.py +0 -0
  137. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/retry_invoker.py +0 -0
  138. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  139. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  140. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  141. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  142. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  143. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  144. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  145. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  146. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/serde.py +0 -0
  147. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/telemetry.py +0 -0
  148. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/typing.py +0 -0
  149. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/common/version.py +0 -0
  150. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/__init__.py +0 -0
  151. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  152. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  153. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  154. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  155. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/common_pb2.py +0 -0
  156. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/common_pb2.pyi +0 -0
  157. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  158. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  159. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/control_pb2.pyi +0 -0
  160. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/driver_pb2.py +0 -0
  161. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  162. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  163. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  164. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/error_pb2.py +0 -0
  165. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/error_pb2.pyi +0 -0
  166. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  167. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  168. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/exec_pb2.py +0 -0
  169. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  170. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  171. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  172. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fab_pb2.py +0 -0
  173. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  174. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  175. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  176. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fleet_pb2.py +0 -0
  177. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  178. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  179. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  180. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  181. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  182. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  183. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  184. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/message_pb2.py +0 -0
  185. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/message_pb2.pyi +0 -0
  186. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  187. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  188. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/node_pb2.py +0 -0
  189. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/node_pb2.pyi +0 -0
  190. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  191. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  192. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/recordset_pb2.py +0 -0
  193. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  194. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  195. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  196. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/task_pb2.py +0 -0
  199. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/task_pb2.pyi +0 -0
  200. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/transport_pb2.py +0 -0
  203. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  204. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/py.typed +0 -0
  207. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/__init__.py +0 -0
  208. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/app.py +0 -0
  209. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/client_manager.py +0 -0
  210. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/client_proxy.py +0 -0
  211. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/compat/__init__.py +0 -0
  212. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/compat/app.py +0 -0
  213. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/compat/app_utils.py +0 -0
  214. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  215. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/compat/legacy_context.py +0 -0
  216. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/criterion.py +0 -0
  217. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/driver/__init__.py +0 -0
  218. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/driver/driver.py +0 -0
  219. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  220. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  221. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/history.py +0 -0
  222. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/run_serverapp.py +0 -0
  223. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/server.py +0 -0
  224. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/server_app.py +0 -0
  225. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/server_config.py +0 -0
  226. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/serverapp_components.py +0 -0
  227. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/__init__.py +0 -0
  228. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/aggregate.py +0 -0
  229. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/bulyan.py +0 -0
  230. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  231. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  232. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  233. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  234. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  235. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  236. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedadam.py +0 -0
  237. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedavg.py +0 -0
  238. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  239. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  240. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  241. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedopt.py +0 -0
  242. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedprox.py +0 -0
  243. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  244. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  245. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  246. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  247. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  248. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/krum.py +0 -0
  249. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  250. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/strategy/strategy.py +0 -0
  251. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/__init__.py +0 -0
  252. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  253. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  254. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  255. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  256. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  257. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  258. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  259. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  260. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  261. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  262. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  263. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  264. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  265. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  266. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  267. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  268. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  269. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  270. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  271. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  272. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  273. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  274. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  275. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  276. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  277. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  278. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  279. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  280. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  281. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  282. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/state.py +0 -0
  283. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  284. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/superlink/state/utils.py +0 -0
  285. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/typing.py +0 -0
  286. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/utils/__init__.py +0 -0
  287. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/utils/tensorboard.py +0 -0
  288. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/utils/validator.py +0 -0
  289. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/__init__.py +0 -0
  290. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/constant.py +0 -0
  291. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  292. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  293. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  294. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  295. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/__init__.py +0 -0
  296. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/app.py +0 -0
  297. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  298. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  299. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  300. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  301. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/simulation/run_simulation.py +0 -0
  302. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/__init__.py +0 -0
  303. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/app.py +0 -0
  304. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/deployment.py +0 -0
  305. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/exec_grpc.py +0 -0
  306. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/exec_servicer.py +0 -0
  307. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/executor.py +0 -0
  308. {flwr_nightly-1.12.0.dev20240920 → flwr_nightly-1.12.0.dev20240924}/src/py/flwr/superexec/simulation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.12.0.dev20240920
3
+ Version: 1.12.0.dev20240924
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.12.0.dev20240920"
7
+ version = "1.12.0.dev20240924"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -109,25 +109,24 @@ mypy-protobuf = "==3.2.0"
109
109
  jupyterlab = "==4.0.12"
110
110
  rope = "==1.11.0"
111
111
  semver = "==3.0.2"
112
- sphinx = "==6.2.1"
112
+ sphinx = "==7.4.7"
113
113
  sphinx-intl = "==2.2.0"
114
- sphinx-click = "==5.1.0"
115
- myst-parser = "==1.0.0"
116
- sphinx-design = "==0.5.0"
114
+ sphinx-click = "==6.0.0"
115
+ myst-parser = "==3.0.1"
116
+ sphinx-design = "==0.6.1"
117
117
  sphinx-copybutton = "==0.5.2"
118
118
  sphinxcontrib-mermaid = "==0.9.2"
119
119
  sphinxcontrib-youtube = "==1.4.1"
120
- furo = "==2023.9.10"
121
- sphinx-reredirects = "==0.1.3"
122
- nbsphinx = "==0.9.4"
120
+ furo = "==2024.8.6"
121
+ sphinx-reredirects = "==0.1.5"
122
+ nbsphinx = "==0.9.5"
123
123
  nbstripout = "==0.6.1"
124
124
  ruff = "==0.1.9"
125
125
  sphinx-argparse = "==0.4.0"
126
126
  pipreqs = "==0.4.13"
127
- mdformat-gfm = "==0.3.5"
127
+ mdformat-gfm = "==0.3.6"
128
128
  mdformat-frontmatter = "==2.0.1"
129
129
  mdformat-beautysh = "==0.1.1"
130
- mdformat-myst = "==0.1.5"
131
130
  twine = "==5.1.1"
132
131
  pyroma = "==4.2"
133
132
  check-wheel-contents = "==0.4.0"
@@ -19,6 +19,7 @@ from typer.main import get_command
19
19
 
20
20
  from .build import build
21
21
  from .install import install
22
+ from .log import log
22
23
  from .new import new
23
24
  from .run import run
24
25
 
@@ -35,6 +36,7 @@ app.command()(new)
35
36
  app.command()(run)
36
37
  app.command()(build)
37
38
  app.command()(install)
39
+ app.command()(log)
38
40
 
39
41
  typer_click_object = get_command(app)
40
42
 
@@ -0,0 +1,196 @@
1
+ # Copyright 2024 Flower Labs GmbH. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Flower command line interface `log` command."""
16
+
17
+ import sys
18
+ import time
19
+ from logging import DEBUG, ERROR, INFO
20
+ from pathlib import Path
21
+ from typing import Annotated, Optional
22
+
23
+ import grpc
24
+ import typer
25
+
26
+ from flwr.cli.config_utils import load_and_validate
27
+ from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel
28
+ from flwr.common.logger import log as logger
29
+
30
+ CONN_REFRESH_PERIOD = 60 # Connection refresh period for log streaming (seconds)
31
+
32
+
33
+ # pylint: disable=unused-argument
34
+ def stream_logs(run_id: int, channel: grpc.Channel, period: int) -> None:
35
+ """Stream logs from the beginning of a run with connection refresh."""
36
+
37
+
38
+ # pylint: disable=unused-argument
39
+ def print_logs(run_id: int, channel: grpc.Channel, timeout: int) -> None:
40
+ """Print logs from the beginning of a run."""
41
+
42
+
43
+ def on_channel_state_change(channel_connectivity: str) -> None:
44
+ """Log channel connectivity."""
45
+ logger(DEBUG, channel_connectivity)
46
+
47
+
48
+ def log(
49
+ run_id: Annotated[
50
+ int,
51
+ typer.Argument(help="The Flower run ID to query"),
52
+ ],
53
+ app: Annotated[
54
+ Path,
55
+ typer.Argument(help="Path of the Flower project to run"),
56
+ ] = Path("."),
57
+ federation: Annotated[
58
+ Optional[str],
59
+ typer.Argument(help="Name of the federation to run the app on"),
60
+ ] = None,
61
+ stream: Annotated[
62
+ bool,
63
+ typer.Option(
64
+ "--stream/--show",
65
+ help="Flag to stream or print logs from the Flower run",
66
+ ),
67
+ ] = True,
68
+ ) -> None:
69
+ """Get logs from a Flower project run."""
70
+ typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
71
+
72
+ pyproject_path = app / "pyproject.toml" if app else None
73
+ config, errors, warnings = load_and_validate(path=pyproject_path)
74
+
75
+ if config is None:
76
+ typer.secho(
77
+ "Project configuration could not be loaded.\n"
78
+ "pyproject.toml is invalid:\n"
79
+ + "\n".join([f"- {line}" for line in errors]),
80
+ fg=typer.colors.RED,
81
+ bold=True,
82
+ )
83
+ sys.exit()
84
+
85
+ if warnings:
86
+ typer.secho(
87
+ "Project configuration is missing the following "
88
+ "recommended properties:\n" + "\n".join([f"- {line}" for line in warnings]),
89
+ fg=typer.colors.RED,
90
+ bold=True,
91
+ )
92
+
93
+ typer.secho("Success", fg=typer.colors.GREEN)
94
+
95
+ federation = federation or config["tool"]["flwr"]["federations"].get("default")
96
+
97
+ if federation is None:
98
+ typer.secho(
99
+ "❌ No federation name was provided and the project's `pyproject.toml` "
100
+ "doesn't declare a default federation (with a SuperExec address or an "
101
+ "`options.num-supernodes` value).",
102
+ fg=typer.colors.RED,
103
+ bold=True,
104
+ )
105
+ raise typer.Exit(code=1)
106
+
107
+ # Validate the federation exists in the configuration
108
+ federation_config = config["tool"]["flwr"]["federations"].get(federation)
109
+ if federation_config is None:
110
+ available_feds = {
111
+ fed for fed in config["tool"]["flwr"]["federations"] if fed != "default"
112
+ }
113
+ typer.secho(
114
+ f"❌ There is no `{federation}` federation declared in the "
115
+ "`pyproject.toml`.\n The following federations were found:\n\n"
116
+ + "\n".join(available_feds),
117
+ fg=typer.colors.RED,
118
+ bold=True,
119
+ )
120
+ raise typer.Exit(code=1)
121
+
122
+ if "address" not in federation_config:
123
+ typer.secho(
124
+ "❌ `flwr log` currently works with `SuperExec`. Ensure that the correct"
125
+ "`SuperExec` address is provided in the `pyproject.toml`.",
126
+ fg=typer.colors.RED,
127
+ bold=True,
128
+ )
129
+ raise typer.Exit(code=1)
130
+
131
+ _log_with_superexec(federation_config, run_id, stream)
132
+
133
+
134
+ # pylint: disable-next=too-many-branches
135
+ def _log_with_superexec(
136
+ federation_config: dict[str, str],
137
+ run_id: int,
138
+ stream: bool,
139
+ ) -> None:
140
+ insecure_str = federation_config.get("insecure")
141
+ if root_certificates := federation_config.get("root-certificates"):
142
+ root_certificates_bytes = Path(root_certificates).read_bytes()
143
+ if insecure := bool(insecure_str):
144
+ typer.secho(
145
+ "❌ `root_certificates` were provided but the `insecure` parameter"
146
+ "is set to `True`.",
147
+ fg=typer.colors.RED,
148
+ bold=True,
149
+ )
150
+ raise typer.Exit(code=1)
151
+ else:
152
+ root_certificates_bytes = None
153
+ if insecure_str is None:
154
+ typer.secho(
155
+ "❌ To disable TLS, set `insecure = true` in `pyproject.toml`.",
156
+ fg=typer.colors.RED,
157
+ bold=True,
158
+ )
159
+ raise typer.Exit(code=1)
160
+ if not (insecure := bool(insecure_str)):
161
+ typer.secho(
162
+ "❌ No certificate were given yet `insecure` is set to `False`.",
163
+ fg=typer.colors.RED,
164
+ bold=True,
165
+ )
166
+ raise typer.Exit(code=1)
167
+
168
+ channel = create_channel(
169
+ server_address=federation_config["address"],
170
+ insecure=insecure,
171
+ root_certificates=root_certificates_bytes,
172
+ max_message_length=GRPC_MAX_MESSAGE_LENGTH,
173
+ interceptors=None,
174
+ )
175
+ channel.subscribe(on_channel_state_change)
176
+
177
+ if stream:
178
+ try:
179
+ while True:
180
+ logger(INFO, "Starting logstream for run_id `%s`", run_id)
181
+ stream_logs(run_id, channel, CONN_REFRESH_PERIOD)
182
+ time.sleep(2)
183
+ logger(DEBUG, "Reconnecting to logstream")
184
+ except KeyboardInterrupt:
185
+ logger(INFO, "Exiting logstream")
186
+ except grpc.RpcError as e:
187
+ # pylint: disable=E1101
188
+ if e.code() == grpc.StatusCode.NOT_FOUND:
189
+ logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
190
+ if e.code() == grpc.StatusCode.CANCELLED:
191
+ pass
192
+ finally:
193
+ channel.close()
194
+ else:
195
+ logger(INFO, "Printing logstream for run_id `%s`", run_id)
196
+ print_logs(run_id, channel, timeout=5)
@@ -15,13 +15,13 @@ _sym_db = _symbol_database.Default()
15
15
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto2U\n\x07\x43ontrol\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x62\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/run.proto2\x88\x02\n\x07\x43ontrol\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x62\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.control_pb2', _globals)
23
23
  if _descriptor._USE_C_DESCRIPTORS == False:
24
24
  DESCRIPTOR._options = None
25
- _globals['_CONTROL']._serialized_start=62
26
- _globals['_CONTROL']._serialized_end=147
25
+ _globals['_CONTROL']._serialized_start=63
26
+ _globals['_CONTROL']._serialized_end=327
27
27
  # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,135 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
6
+
7
+
8
+ class ControlStub(object):
9
+ """Missing associated documentation comment in .proto file."""
10
+
11
+ def __init__(self, channel):
12
+ """Constructor.
13
+
14
+ Args:
15
+ channel: A grpc.Channel.
16
+ """
17
+ self.CreateRun = channel.unary_unary(
18
+ '/flwr.proto.Control/CreateRun',
19
+ request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
20
+ response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
21
+ )
22
+ self.GetRunStatus = channel.unary_unary(
23
+ '/flwr.proto.Control/GetRunStatus',
24
+ request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
25
+ response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
26
+ )
27
+ self.UpdateRunStatus = channel.unary_unary(
28
+ '/flwr.proto.Control/UpdateRunStatus',
29
+ request_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
30
+ response_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
31
+ )
32
+
33
+
34
+ class ControlServicer(object):
35
+ """Missing associated documentation comment in .proto file."""
36
+
37
+ def CreateRun(self, request, context):
38
+ """Request to create a new run
39
+ """
40
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
41
+ context.set_details('Method not implemented!')
42
+ raise NotImplementedError('Method not implemented!')
43
+
44
+ def GetRunStatus(self, request, context):
45
+ """Get the status of a given run
46
+ """
47
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
48
+ context.set_details('Method not implemented!')
49
+ raise NotImplementedError('Method not implemented!')
50
+
51
+ def UpdateRunStatus(self, request, context):
52
+ """Update the status of a given run
53
+ """
54
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
55
+ context.set_details('Method not implemented!')
56
+ raise NotImplementedError('Method not implemented!')
57
+
58
+
59
+ def add_ControlServicer_to_server(servicer, server):
60
+ rpc_method_handlers = {
61
+ 'CreateRun': grpc.unary_unary_rpc_method_handler(
62
+ servicer.CreateRun,
63
+ request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
64
+ response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
65
+ ),
66
+ 'GetRunStatus': grpc.unary_unary_rpc_method_handler(
67
+ servicer.GetRunStatus,
68
+ request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
69
+ response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
70
+ ),
71
+ 'UpdateRunStatus': grpc.unary_unary_rpc_method_handler(
72
+ servicer.UpdateRunStatus,
73
+ request_deserializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.FromString,
74
+ response_serializer=flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.SerializeToString,
75
+ ),
76
+ }
77
+ generic_handler = grpc.method_handlers_generic_handler(
78
+ 'flwr.proto.Control', rpc_method_handlers)
79
+ server.add_generic_rpc_handlers((generic_handler,))
80
+
81
+
82
+ # This class is part of an EXPERIMENTAL API.
83
+ class Control(object):
84
+ """Missing associated documentation comment in .proto file."""
85
+
86
+ @staticmethod
87
+ def CreateRun(request,
88
+ target,
89
+ options=(),
90
+ channel_credentials=None,
91
+ call_credentials=None,
92
+ insecure=False,
93
+ compression=None,
94
+ wait_for_ready=None,
95
+ timeout=None,
96
+ metadata=None):
97
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/CreateRun',
98
+ flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
99
+ flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
100
+ options, channel_credentials,
101
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
102
+
103
+ @staticmethod
104
+ def GetRunStatus(request,
105
+ target,
106
+ options=(),
107
+ channel_credentials=None,
108
+ call_credentials=None,
109
+ insecure=False,
110
+ compression=None,
111
+ wait_for_ready=None,
112
+ timeout=None,
113
+ metadata=None):
114
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/GetRunStatus',
115
+ flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
116
+ flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
117
+ options, channel_credentials,
118
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
119
+
120
+ @staticmethod
121
+ def UpdateRunStatus(request,
122
+ target,
123
+ options=(),
124
+ channel_credentials=None,
125
+ call_credentials=None,
126
+ insecure=False,
127
+ compression=None,
128
+ wait_for_ready=None,
129
+ timeout=None,
130
+ metadata=None):
131
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/UpdateRunStatus',
132
+ flwr_dot_proto_dot_run__pb2.UpdateRunStatusRequest.SerializeToString,
133
+ flwr_dot_proto_dot_run__pb2.UpdateRunStatusResponse.FromString,
134
+ options, channel_credentials,
135
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -0,0 +1,53 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import abc
6
+ import flwr.proto.run_pb2
7
+ import grpc
8
+
9
+ class ControlStub:
10
+ def __init__(self, channel: grpc.Channel) -> None: ...
11
+ CreateRun: grpc.UnaryUnaryMultiCallable[
12
+ flwr.proto.run_pb2.CreateRunRequest,
13
+ flwr.proto.run_pb2.CreateRunResponse]
14
+ """Request to create a new run"""
15
+
16
+ GetRunStatus: grpc.UnaryUnaryMultiCallable[
17
+ flwr.proto.run_pb2.GetRunStatusRequest,
18
+ flwr.proto.run_pb2.GetRunStatusResponse]
19
+ """Get the status of a given run"""
20
+
21
+ UpdateRunStatus: grpc.UnaryUnaryMultiCallable[
22
+ flwr.proto.run_pb2.UpdateRunStatusRequest,
23
+ flwr.proto.run_pb2.UpdateRunStatusResponse]
24
+ """Update the status of a given run"""
25
+
26
+
27
+ class ControlServicer(metaclass=abc.ABCMeta):
28
+ @abc.abstractmethod
29
+ def CreateRun(self,
30
+ request: flwr.proto.run_pb2.CreateRunRequest,
31
+ context: grpc.ServicerContext,
32
+ ) -> flwr.proto.run_pb2.CreateRunResponse:
33
+ """Request to create a new run"""
34
+ pass
35
+
36
+ @abc.abstractmethod
37
+ def GetRunStatus(self,
38
+ request: flwr.proto.run_pb2.GetRunStatusRequest,
39
+ context: grpc.ServicerContext,
40
+ ) -> flwr.proto.run_pb2.GetRunStatusResponse:
41
+ """Get the status of a given run"""
42
+ pass
43
+
44
+ @abc.abstractmethod
45
+ def UpdateRunStatus(self,
46
+ request: flwr.proto.run_pb2.UpdateRunStatusRequest,
47
+ context: grpc.ServicerContext,
48
+ ) -> flwr.proto.run_pb2.UpdateRunStatusResponse:
49
+ """Update the status of a given run"""
50
+ pass
51
+
52
+
53
+ def add_ControlServicer_to_server(servicer: ControlServicer, server: grpc.Server) -> None: ...
@@ -0,0 +1,58 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/run.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 fab_pb2 as flwr_dot_proto_dot_fab__pb2
16
+ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
17
+
18
+
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"\xeb\x01\n\x10\x43reateRunRequest\x12\x0e\n\x06\x66\x61\x62_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x02 \x01(\t\x12I\n\x0foverride_config\x18\x03 \x03(\x0b\x32\x30.flwr.proto.CreateRunRequest.OverrideConfigEntry\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"#\n\x11\x43reateRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\x1f\n\rGetRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"&\n\x13GetRunStatusRequest\x12\x0f\n\x07run_ids\x18\x01 \x03(\x04\"\xb1\x01\n\x14GetRunStatusResponse\x12L\n\x0frun_status_dict\x18\x01 \x03(\x0b\x32\x33.flwr.proto.GetRunStatusResponse.RunStatusDictEntry\x1aK\n\x12RunStatusDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus:\x02\x38\x01\x62\x06proto3')
20
+
21
+ _globals = globals()
22
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
23
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.run_pb2', _globals)
24
+ if _descriptor._USE_C_DESCRIPTORS == False:
25
+ DESCRIPTOR._options = None
26
+ _globals['_RUN_OVERRIDECONFIGENTRY']._options = None
27
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
28
+ _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._options = None
29
+ _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
30
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._options = None
31
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_options = b'8\001'
32
+ _globals['_RUN']._serialized_start=87
33
+ _globals['_RUN']._serialized_end=300
34
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=227
35
+ _globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=300
36
+ _globals['_RUNSTATUS']._serialized_start=302
37
+ _globals['_RUNSTATUS']._serialized_end=366
38
+ _globals['_CREATERUNREQUEST']._serialized_start=369
39
+ _globals['_CREATERUNREQUEST']._serialized_end=604
40
+ _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=227
41
+ _globals['_CREATERUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=300
42
+ _globals['_CREATERUNRESPONSE']._serialized_start=606
43
+ _globals['_CREATERUNRESPONSE']._serialized_end=641
44
+ _globals['_GETRUNREQUEST']._serialized_start=643
45
+ _globals['_GETRUNREQUEST']._serialized_end=674
46
+ _globals['_GETRUNRESPONSE']._serialized_start=676
47
+ _globals['_GETRUNRESPONSE']._serialized_end=722
48
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_start=724
49
+ _globals['_UPDATERUNSTATUSREQUEST']._serialized_end=807
50
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=809
51
+ _globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=834
52
+ _globals['_GETRUNSTATUSREQUEST']._serialized_start=836
53
+ _globals['_GETRUNSTATUSREQUEST']._serialized_end=874
54
+ _globals['_GETRUNSTATUSRESPONSE']._serialized_start=877
55
+ _globals['_GETRUNSTATUSRESPONSE']._serialized_end=1054
56
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=979
57
+ _globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1054
58
+ # @@protoc_insertion_point(module_scope)
@@ -52,6 +52,29 @@ class Run(google.protobuf.message.Message):
52
52
  def ClearField(self, field_name: typing_extensions.Literal["fab_hash",b"fab_hash","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config","run_id",b"run_id"]) -> None: ...
53
53
  global___Run = Run
54
54
 
55
+ class RunStatus(google.protobuf.message.Message):
56
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
57
+ STATUS_FIELD_NUMBER: builtins.int
58
+ SUB_STATUS_FIELD_NUMBER: builtins.int
59
+ DETAILS_FIELD_NUMBER: builtins.int
60
+ status: typing.Text
61
+ """"starting", "running", "finished" """
62
+
63
+ sub_status: typing.Text
64
+ """"completed", "failed", "stopped" or "" (non-finished)"""
65
+
66
+ details: typing.Text
67
+ """failure details"""
68
+
69
+ def __init__(self,
70
+ *,
71
+ status: typing.Text = ...,
72
+ sub_status: typing.Text = ...,
73
+ details: typing.Text = ...,
74
+ ) -> None: ...
75
+ def ClearField(self, field_name: typing_extensions.Literal["details",b"details","status",b"status","sub_status",b"sub_status"]) -> None: ...
76
+ global___RunStatus = RunStatus
77
+
55
78
  class CreateRunRequest(google.protobuf.message.Message):
56
79
  """CreateRun"""
57
80
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -126,3 +149,66 @@ class GetRunResponse(google.protobuf.message.Message):
126
149
  def HasField(self, field_name: typing_extensions.Literal["run",b"run"]) -> builtins.bool: ...
127
150
  def ClearField(self, field_name: typing_extensions.Literal["run",b"run"]) -> None: ...
128
151
  global___GetRunResponse = GetRunResponse
152
+
153
+ class UpdateRunStatusRequest(google.protobuf.message.Message):
154
+ """UpdateRunStatus"""
155
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
156
+ RUN_ID_FIELD_NUMBER: builtins.int
157
+ RUN_STATUS_FIELD_NUMBER: builtins.int
158
+ run_id: builtins.int
159
+ @property
160
+ def run_status(self) -> global___RunStatus: ...
161
+ def __init__(self,
162
+ *,
163
+ run_id: builtins.int = ...,
164
+ run_status: typing.Optional[global___RunStatus] = ...,
165
+ ) -> None: ...
166
+ def HasField(self, field_name: typing_extensions.Literal["run_status",b"run_status"]) -> builtins.bool: ...
167
+ def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id","run_status",b"run_status"]) -> None: ...
168
+ global___UpdateRunStatusRequest = UpdateRunStatusRequest
169
+
170
+ class UpdateRunStatusResponse(google.protobuf.message.Message):
171
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
172
+ def __init__(self,
173
+ ) -> None: ...
174
+ global___UpdateRunStatusResponse = UpdateRunStatusResponse
175
+
176
+ class GetRunStatusRequest(google.protobuf.message.Message):
177
+ """GetRunStatus"""
178
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
179
+ RUN_IDS_FIELD_NUMBER: builtins.int
180
+ @property
181
+ def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
182
+ def __init__(self,
183
+ *,
184
+ run_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
185
+ ) -> None: ...
186
+ def ClearField(self, field_name: typing_extensions.Literal["run_ids",b"run_ids"]) -> None: ...
187
+ global___GetRunStatusRequest = GetRunStatusRequest
188
+
189
+ class GetRunStatusResponse(google.protobuf.message.Message):
190
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
191
+ class RunStatusDictEntry(google.protobuf.message.Message):
192
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
193
+ KEY_FIELD_NUMBER: builtins.int
194
+ VALUE_FIELD_NUMBER: builtins.int
195
+ key: builtins.int
196
+ @property
197
+ def value(self) -> global___RunStatus: ...
198
+ def __init__(self,
199
+ *,
200
+ key: builtins.int = ...,
201
+ value: typing.Optional[global___RunStatus] = ...,
202
+ ) -> None: ...
203
+ def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
204
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
205
+
206
+ RUN_STATUS_DICT_FIELD_NUMBER: builtins.int
207
+ @property
208
+ def run_status_dict(self) -> google.protobuf.internal.containers.MessageMap[builtins.int, global___RunStatus]: ...
209
+ def __init__(self,
210
+ *,
211
+ run_status_dict: typing.Optional[typing.Mapping[builtins.int, global___RunStatus]] = ...,
212
+ ) -> None: ...
213
+ def ClearField(self, field_name: typing_extensions.Literal["run_status_dict",b"run_status_dict"]) -> None: ...
214
+ global___GetRunStatusResponse = GetRunStatusResponse