flwr-nightly 1.14.0.dev20241207__tar.gz → 1.14.0.dev20241209__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 (320) hide show
  1. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/PKG-INFO +1 -1
  2. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/pyproject.toml +5 -5
  3. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/app.py +2 -0
  4. flwr_nightly-1.14.0.dev20241209/src/py/flwr/cli/stop.py +121 -0
  5. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/exec_pb2.py +27 -7
  6. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/exec_pb2.pyi +81 -0
  7. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/exec_pb2_grpc.py +68 -0
  8. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/exec_pb2_grpc.pyi +26 -0
  9. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/simulationio_pb2.py +2 -2
  10. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/simulationio_pb2_grpc.py +34 -0
  11. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +13 -0
  12. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +19 -0
  13. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/exec_servicer.py +18 -0
  14. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/LICENSE +0 -0
  15. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/README.md +0 -0
  16. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/__init__.py +0 -0
  17. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/__init__.py +0 -0
  18. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/build.py +0 -0
  19. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/config_utils.py +0 -0
  20. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/example.py +0 -0
  21. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/install.py +0 -0
  22. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/log.py +0 -0
  23. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/ls.py +0 -0
  24. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/__init__.py +0 -0
  25. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/new.py +0 -0
  26. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  27. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  28. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  29. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  30. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  31. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  32. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  33. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  34. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  35. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  36. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  37. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  38. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  39. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  40. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  41. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  42. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  43. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  44. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  45. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  46. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  47. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  48. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  49. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  50. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  51. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  52. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  53. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  54. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  55. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  56. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  57. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  58. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  59. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  60. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  61. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  62. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  63. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  64. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  65. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  66. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  67. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  68. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  69. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  70. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  71. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  72. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  73. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  74. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  75. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  76. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  77. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  78. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/run/__init__.py +0 -0
  79. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/run/run.py +0 -0
  80. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/cli/utils.py +0 -0
  81. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/__init__.py +0 -0
  82. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/app.py +0 -0
  83. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/client.py +0 -0
  84. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/client_app.py +0 -0
  85. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/clientapp/__init__.py +0 -0
  86. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/clientapp/app.py +0 -0
  87. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  88. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/clientapp/utils.py +0 -0
  89. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  90. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  91. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  92. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  93. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_client/connection.py +0 -0
  94. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  95. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  96. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  97. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  98. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/heartbeat.py +0 -0
  99. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/message_handler/__init__.py +0 -0
  100. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  101. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  102. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/__init__.py +0 -0
  103. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  104. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/comms_mods.py +0 -0
  105. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  106. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  107. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  108. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  109. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/mod/utils.py +0 -0
  110. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/nodestate/__init__.py +0 -0
  111. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
  112. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/nodestate/nodestate.py +0 -0
  113. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
  114. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/numpy_client.py +0 -0
  115. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/rest_client/__init__.py +0 -0
  116. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/rest_client/connection.py +0 -0
  117. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/run_info_store.py +0 -0
  118. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/supernode/__init__.py +0 -0
  119. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/supernode/app.py +0 -0
  120. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/client/typing.py +0 -0
  121. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/__init__.py +0 -0
  122. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/address.py +0 -0
  123. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/args.py +0 -0
  124. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/config.py +0 -0
  125. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/constant.py +0 -0
  126. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/context.py +0 -0
  127. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/date.py +0 -0
  128. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/differential_privacy.py +0 -0
  129. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  130. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/dp.py +0 -0
  131. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/exit_handlers.py +0 -0
  132. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/grpc.py +0 -0
  133. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/logger.py +0 -0
  134. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/message.py +0 -0
  135. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/object_ref.py +0 -0
  136. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/parameter.py +0 -0
  137. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/pyproject.py +0 -0
  138. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/__init__.py +0 -0
  139. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/configsrecord.py +0 -0
  140. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/conversion_utils.py +0 -0
  141. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/metricsrecord.py +0 -0
  142. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/parametersrecord.py +0 -0
  143. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/recordset.py +0 -0
  144. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/record/typeddict.py +0 -0
  145. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/recordset_compat.py +0 -0
  146. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/retry_invoker.py +0 -0
  147. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  148. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  149. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  150. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  151. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  152. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  153. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  154. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  155. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/serde.py +0 -0
  156. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/telemetry.py +0 -0
  157. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/typing.py +0 -0
  158. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/common/version.py +0 -0
  159. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/__init__.py +0 -0
  160. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  161. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  162. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  163. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  164. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/error_pb2.py +0 -0
  165. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/error_pb2.pyi +0 -0
  166. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  167. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  168. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fab_pb2.py +0 -0
  169. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  170. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  171. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  172. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fleet_pb2.py +0 -0
  173. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  174. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  175. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  176. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  177. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  178. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  179. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  180. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/log_pb2.py +0 -0
  181. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/log_pb2.pyi +0 -0
  182. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
  183. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  184. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/message_pb2.py +0 -0
  185. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/message_pb2.pyi +0 -0
  186. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  187. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  188. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/node_pb2.py +0 -0
  189. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/node_pb2.pyi +0 -0
  190. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  191. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  192. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/recordset_pb2.py +0 -0
  193. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  194. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  195. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  196. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/run_pb2.py +0 -0
  197. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/run_pb2.pyi +0 -0
  198. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  199. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  200. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/serverappio_pb2.py +0 -0
  201. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
  202. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  203. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  204. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
  205. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/task_pb2.py +0 -0
  206. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/task_pb2.pyi +0 -0
  207. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/transport_pb2.py +0 -0
  210. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  211. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  212. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  213. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/py.typed +0 -0
  214. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/__init__.py +0 -0
  215. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/app.py +0 -0
  216. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/client_manager.py +0 -0
  217. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/client_proxy.py +0 -0
  218. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/compat/__init__.py +0 -0
  219. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/compat/app.py +0 -0
  220. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/compat/app_utils.py +0 -0
  221. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  222. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/compat/legacy_context.py +0 -0
  223. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/criterion.py +0 -0
  224. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/driver/__init__.py +0 -0
  225. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/driver/driver.py +0 -0
  226. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  227. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  228. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/history.py +0 -0
  229. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/run_serverapp.py +0 -0
  230. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/server.py +0 -0
  231. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/server_app.py +0 -0
  232. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/server_config.py +0 -0
  233. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/serverapp/__init__.py +0 -0
  234. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/serverapp/app.py +0 -0
  235. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/serverapp_components.py +0 -0
  236. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/__init__.py +0 -0
  237. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/aggregate.py +0 -0
  238. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/bulyan.py +0 -0
  239. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  240. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  241. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  242. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  243. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  244. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  245. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedadam.py +0 -0
  246. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedavg.py +0 -0
  247. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  248. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  249. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  250. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedopt.py +0 -0
  251. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedprox.py +0 -0
  252. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  253. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  254. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  255. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  256. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  257. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/krum.py +0 -0
  258. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  259. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/strategy/strategy.py +0 -0
  260. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/__init__.py +0 -0
  261. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  262. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
  263. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
  264. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  265. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  266. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  267. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  268. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  269. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  270. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  271. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  272. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  273. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  274. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  275. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  276. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  277. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  278. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  279. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  280. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  281. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  282. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  283. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  284. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  285. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  286. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  287. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  288. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  289. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  290. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  291. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  292. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  293. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
  294. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
  295. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  296. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/typing.py +0 -0
  297. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/utils/__init__.py +0 -0
  298. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/utils/tensorboard.py +0 -0
  299. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/utils/validator.py +0 -0
  300. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/__init__.py +0 -0
  301. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/constant.py +0 -0
  302. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  303. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  304. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  305. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  306. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/__init__.py +0 -0
  307. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/app.py +0 -0
  308. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/legacy_app.py +0 -0
  309. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  310. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  311. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  312. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  313. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/run_simulation.py +0 -0
  314. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/simulation/simulationio_connection.py +0 -0
  315. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/__init__.py +0 -0
  316. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/app.py +0 -0
  317. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/deployment.py +0 -0
  318. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/exec_grpc.py +0 -0
  319. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/src/py/flwr/superexec/executor.py +0 -0
  320. {flwr_nightly-1.14.0.dev20241207 → flwr_nightly-1.14.0.dev20241209}/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.14.0.dev20241207
3
+ Version: 1.14.0.dev20241209
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.14.0.dev20241207"
7
+ version = "1.14.0.dev20241209"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -144,10 +144,10 @@ docsig = "==0.64.0"
144
144
 
145
145
  [tool.docstrfmt]
146
146
  extend_exclude = [
147
- "doc/source/conf.py",
148
- "doc/source/tutorial-quickstart-huggingface.rst",
149
- "doc/source/_templates/autosummary/*",
150
- "doc/source/ref-api/*",
147
+ "framework/docs/source/conf.py",
148
+ "framework/docs/source/tutorial-quickstart-huggingface.rst",
149
+ "framework/docs/source/_templates/autosummary/*",
150
+ "framework/docs/source/ref-api/*",
151
151
  ]
152
152
 
153
153
  [tool.isort]
@@ -23,6 +23,7 @@ from .log import log
23
23
  from .ls import ls
24
24
  from .new import new
25
25
  from .run import run
26
+ from .stop import stop
26
27
 
27
28
  app = typer.Typer(
28
29
  help=typer.style(
@@ -39,6 +40,7 @@ app.command()(build)
39
40
  app.command()(install)
40
41
  app.command()(log)
41
42
  app.command()(ls)
43
+ app.command()(stop)
42
44
 
43
45
  typer_click_object = get_command(app)
44
46
 
@@ -0,0 +1,121 @@
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 `stop` command."""
16
+
17
+
18
+ from logging import DEBUG
19
+ from pathlib import Path
20
+ from typing import Annotated, Any, Optional
21
+
22
+ import grpc
23
+ import typer
24
+
25
+ from flwr.cli.config_utils import (
26
+ load_and_validate,
27
+ validate_certificate_in_federation_config,
28
+ validate_federation_in_project_config,
29
+ validate_project_config,
30
+ )
31
+ from flwr.common.constant import FAB_CONFIG_FILE
32
+ from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel
33
+ from flwr.common.logger import log
34
+ from flwr.proto.exec_pb2 import StopRunRequest, StopRunResponse # pylint: disable=E0611
35
+ from flwr.proto.exec_pb2_grpc import ExecStub
36
+
37
+
38
+ def stop(
39
+ run_id: Annotated[ # pylint: disable=unused-argument
40
+ int,
41
+ typer.Argument(help="The Flower run ID to stop"),
42
+ ],
43
+ app: Annotated[
44
+ Path,
45
+ typer.Argument(help="Path of the Flower project"),
46
+ ] = Path("."),
47
+ federation: Annotated[
48
+ Optional[str],
49
+ typer.Argument(help="Name of the federation"),
50
+ ] = None,
51
+ ) -> None:
52
+ """Stop a run."""
53
+ # Load and validate federation config
54
+ typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
55
+
56
+ pyproject_path = app / FAB_CONFIG_FILE if app else None
57
+ config, errors, warnings = load_and_validate(path=pyproject_path)
58
+ config = validate_project_config(config, errors, warnings)
59
+ federation, federation_config = validate_federation_in_project_config(
60
+ federation, config
61
+ )
62
+
63
+ if "address" not in federation_config:
64
+ typer.secho(
65
+ "❌ `flwr stop` currently works with Exec API. Ensure that the correct"
66
+ "Exec API address is provided in the `pyproject.toml`.",
67
+ fg=typer.colors.RED,
68
+ bold=True,
69
+ )
70
+ raise typer.Exit(code=1)
71
+
72
+ try:
73
+ channel = _init_channel(app, federation_config)
74
+ stub = ExecStub(channel) # pylint: disable=unused-variable # noqa: F841
75
+
76
+ typer.secho(f"✋ Stopping run ID {run_id}...", fg=typer.colors.GREEN)
77
+ _stop_run(stub, run_id=run_id)
78
+
79
+ except ValueError as err:
80
+ typer.secho(
81
+ f"❌ {err}",
82
+ fg=typer.colors.RED,
83
+ bold=True,
84
+ )
85
+ raise typer.Exit(code=1) from err
86
+ finally:
87
+ channel.close()
88
+
89
+
90
+ def on_channel_state_change(channel_connectivity: str) -> None:
91
+ """Log channel connectivity."""
92
+ log(DEBUG, channel_connectivity)
93
+
94
+
95
+ def _init_channel(app: Path, federation_config: dict[str, Any]) -> grpc.Channel:
96
+ """Initialize gRPC channel to the Exec API."""
97
+ insecure, root_certificates_bytes = validate_certificate_in_federation_config(
98
+ app, federation_config
99
+ )
100
+ channel = create_channel(
101
+ server_address=federation_config["address"],
102
+ insecure=insecure,
103
+ root_certificates=root_certificates_bytes,
104
+ max_message_length=GRPC_MAX_MESSAGE_LENGTH,
105
+ interceptors=None,
106
+ )
107
+ channel.subscribe(on_channel_state_change)
108
+ return channel
109
+
110
+
111
+ def _stop_run(
112
+ stub: ExecStub, # pylint: disable=unused-argument
113
+ run_id: int, # pylint: disable=unused-argument
114
+ ) -> None:
115
+ """Stop a run."""
116
+ response: StopRunResponse = stub.StopRun(request=StopRunRequest(run_id=run_id))
117
+
118
+ if response.success:
119
+ typer.secho(f"✅ Run {run_id} successfully stopped.", fg=typer.colors.GREEN)
120
+ else:
121
+ typer.secho(f"❌ Run {run_id} couldn't be stopped.", fg=typer.colors.RED)
@@ -18,7 +18,7 @@ from flwr.proto import recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
18
18
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\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\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xaf\x02\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x62\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\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\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\"\x18\n\x16GetLoginDetailsRequest\"\x9c\x01\n\x17GetLoginDetailsResponse\x12L\n\rlogin_details\x18\x01 \x03(\x0b\x32\x35.flwr.proto.GetLoginDetailsResponse.LoginDetailsEntry\x1a\x33\n\x11LoginDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x93\x01\n\x14GetAuthTokensRequest\x12G\n\x0c\x61uth_details\x18\x01 \x03(\x0b\x32\x31.flwr.proto.GetAuthTokensRequest.AuthDetailsEntry\x1a\x32\n\x10\x41uthDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x92\x01\n\x15GetAuthTokensResponse\x12\x46\n\x0b\x61uth_tokens\x18\x01 \x03(\x0b\x32\x31.flwr.proto.GetAuthTokensResponse.AuthTokensEntry\x1a\x31\n\x0f\x41uthTokensEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xe5\x03\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x12\\\n\x0fGetLoginDetails\x12\".flwr.proto.GetLoginDetailsRequest\x1a#.flwr.proto.GetLoginDetailsResponse\"\x00\x12V\n\rGetAuthTokens\x12 .flwr.proto.GetAuthTokensRequest\x1a!.flwr.proto.GetAuthTokensResponse\"\x00\x62\x06proto3')
22
22
 
23
23
  _globals = globals()
24
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -29,6 +29,12 @@ if _descriptor._USE_C_DESCRIPTORS == False:
29
29
  _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
30
30
  _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None
31
31
  _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
32
+ _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._options = None
33
+ _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_options = b'8\001'
34
+ _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._options = None
35
+ _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_options = b'8\001'
36
+ _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._options = None
37
+ _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_options = b'8\001'
32
38
  _globals['_STARTRUNREQUEST']._serialized_start=138
33
39
  _globals['_STARTRUNREQUEST']._serialized_end=389
34
40
  _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=316
@@ -45,10 +51,24 @@ if _descriptor._USE_C_DESCRIPTORS == False:
45
51
  _globals['_LISTRUNSRESPONSE']._serialized_end=782
46
52
  _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=719
47
53
  _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=782
48
- _globals['_STOPRUNREQUEST']._serialized_start=784
49
- _globals['_STOPRUNREQUEST']._serialized_end=816
50
- _globals['_STOPRUNRESPONSE']._serialized_start=818
51
- _globals['_STOPRUNRESPONSE']._serialized_end=852
52
- _globals['_EXEC']._serialized_start=855
53
- _globals['_EXEC']._serialized_end=1158
54
+ _globals['_GETLOGINDETAILSREQUEST']._serialized_start=784
55
+ _globals['_GETLOGINDETAILSREQUEST']._serialized_end=808
56
+ _globals['_GETLOGINDETAILSRESPONSE']._serialized_start=811
57
+ _globals['_GETLOGINDETAILSRESPONSE']._serialized_end=967
58
+ _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_start=916
59
+ _globals['_GETLOGINDETAILSRESPONSE_LOGINDETAILSENTRY']._serialized_end=967
60
+ _globals['_GETAUTHTOKENSREQUEST']._serialized_start=970
61
+ _globals['_GETAUTHTOKENSREQUEST']._serialized_end=1117
62
+ _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_start=1067
63
+ _globals['_GETAUTHTOKENSREQUEST_AUTHDETAILSENTRY']._serialized_end=1117
64
+ _globals['_GETAUTHTOKENSRESPONSE']._serialized_start=1120
65
+ _globals['_GETAUTHTOKENSRESPONSE']._serialized_end=1266
66
+ _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_start=1217
67
+ _globals['_GETAUTHTOKENSRESPONSE_AUTHTOKENSENTRY']._serialized_end=1266
68
+ _globals['_STOPRUNREQUEST']._serialized_start=1268
69
+ _globals['_STOPRUNREQUEST']._serialized_end=1300
70
+ _globals['_STOPRUNRESPONSE']._serialized_start=1302
71
+ _globals['_STOPRUNRESPONSE']._serialized_end=1336
72
+ _globals['_EXEC']._serialized_start=1339
73
+ _globals['_EXEC']._serialized_end=1824
54
74
  # @@protoc_insertion_point(module_scope)
@@ -135,6 +135,87 @@ class ListRunsResponse(google.protobuf.message.Message):
135
135
  def ClearField(self, field_name: typing_extensions.Literal["now",b"now","run_dict",b"run_dict"]) -> None: ...
136
136
  global___ListRunsResponse = ListRunsResponse
137
137
 
138
+ class GetLoginDetailsRequest(google.protobuf.message.Message):
139
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
140
+ def __init__(self,
141
+ ) -> None: ...
142
+ global___GetLoginDetailsRequest = GetLoginDetailsRequest
143
+
144
+ class GetLoginDetailsResponse(google.protobuf.message.Message):
145
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
146
+ class LoginDetailsEntry(google.protobuf.message.Message):
147
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
148
+ KEY_FIELD_NUMBER: builtins.int
149
+ VALUE_FIELD_NUMBER: builtins.int
150
+ key: typing.Text
151
+ value: typing.Text
152
+ def __init__(self,
153
+ *,
154
+ key: typing.Text = ...,
155
+ value: typing.Text = ...,
156
+ ) -> None: ...
157
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
158
+
159
+ LOGIN_DETAILS_FIELD_NUMBER: builtins.int
160
+ @property
161
+ def login_details(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ...
162
+ def __init__(self,
163
+ *,
164
+ login_details: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
165
+ ) -> None: ...
166
+ def ClearField(self, field_name: typing_extensions.Literal["login_details",b"login_details"]) -> None: ...
167
+ global___GetLoginDetailsResponse = GetLoginDetailsResponse
168
+
169
+ class GetAuthTokensRequest(google.protobuf.message.Message):
170
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
171
+ class AuthDetailsEntry(google.protobuf.message.Message):
172
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
173
+ KEY_FIELD_NUMBER: builtins.int
174
+ VALUE_FIELD_NUMBER: builtins.int
175
+ key: typing.Text
176
+ value: typing.Text
177
+ def __init__(self,
178
+ *,
179
+ key: typing.Text = ...,
180
+ value: typing.Text = ...,
181
+ ) -> None: ...
182
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
183
+
184
+ AUTH_DETAILS_FIELD_NUMBER: builtins.int
185
+ @property
186
+ def auth_details(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ...
187
+ def __init__(self,
188
+ *,
189
+ auth_details: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
190
+ ) -> None: ...
191
+ def ClearField(self, field_name: typing_extensions.Literal["auth_details",b"auth_details"]) -> None: ...
192
+ global___GetAuthTokensRequest = GetAuthTokensRequest
193
+
194
+ class GetAuthTokensResponse(google.protobuf.message.Message):
195
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
196
+ class AuthTokensEntry(google.protobuf.message.Message):
197
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
198
+ KEY_FIELD_NUMBER: builtins.int
199
+ VALUE_FIELD_NUMBER: builtins.int
200
+ key: typing.Text
201
+ value: typing.Text
202
+ def __init__(self,
203
+ *,
204
+ key: typing.Text = ...,
205
+ value: typing.Text = ...,
206
+ ) -> None: ...
207
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
208
+
209
+ AUTH_TOKENS_FIELD_NUMBER: builtins.int
210
+ @property
211
+ def auth_tokens(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ...
212
+ def __init__(self,
213
+ *,
214
+ auth_tokens: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
215
+ ) -> None: ...
216
+ def ClearField(self, field_name: typing_extensions.Literal["auth_tokens",b"auth_tokens"]) -> None: ...
217
+ global___GetAuthTokensResponse = GetAuthTokensResponse
218
+
138
219
  class StopRunRequest(google.protobuf.message.Message):
139
220
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
140
221
  RUN_ID_FIELD_NUMBER: builtins.int
@@ -34,6 +34,16 @@ class ExecStub(object):
34
34
  request_serializer=flwr_dot_proto_dot_exec__pb2.ListRunsRequest.SerializeToString,
35
35
  response_deserializer=flwr_dot_proto_dot_exec__pb2.ListRunsResponse.FromString,
36
36
  )
37
+ self.GetLoginDetails = channel.unary_unary(
38
+ '/flwr.proto.Exec/GetLoginDetails',
39
+ request_serializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.SerializeToString,
40
+ response_deserializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.FromString,
41
+ )
42
+ self.GetAuthTokens = channel.unary_unary(
43
+ '/flwr.proto.Exec/GetAuthTokens',
44
+ request_serializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.SerializeToString,
45
+ response_deserializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.FromString,
46
+ )
37
47
 
38
48
 
39
49
  class ExecServicer(object):
@@ -67,6 +77,20 @@ class ExecServicer(object):
67
77
  context.set_details('Method not implemented!')
68
78
  raise NotImplementedError('Method not implemented!')
69
79
 
80
+ def GetLoginDetails(self, request, context):
81
+ """Get login details upon request
82
+ """
83
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
84
+ context.set_details('Method not implemented!')
85
+ raise NotImplementedError('Method not implemented!')
86
+
87
+ def GetAuthTokens(self, request, context):
88
+ """Get auth tokens upon request
89
+ """
90
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
91
+ context.set_details('Method not implemented!')
92
+ raise NotImplementedError('Method not implemented!')
93
+
70
94
 
71
95
  def add_ExecServicer_to_server(servicer, server):
72
96
  rpc_method_handlers = {
@@ -90,6 +114,16 @@ def add_ExecServicer_to_server(servicer, server):
90
114
  request_deserializer=flwr_dot_proto_dot_exec__pb2.ListRunsRequest.FromString,
91
115
  response_serializer=flwr_dot_proto_dot_exec__pb2.ListRunsResponse.SerializeToString,
92
116
  ),
117
+ 'GetLoginDetails': grpc.unary_unary_rpc_method_handler(
118
+ servicer.GetLoginDetails,
119
+ request_deserializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.FromString,
120
+ response_serializer=flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.SerializeToString,
121
+ ),
122
+ 'GetAuthTokens': grpc.unary_unary_rpc_method_handler(
123
+ servicer.GetAuthTokens,
124
+ request_deserializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.FromString,
125
+ response_serializer=flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.SerializeToString,
126
+ ),
93
127
  }
94
128
  generic_handler = grpc.method_handlers_generic_handler(
95
129
  'flwr.proto.Exec', rpc_method_handlers)
@@ -167,3 +201,37 @@ class Exec(object):
167
201
  flwr_dot_proto_dot_exec__pb2.ListRunsResponse.FromString,
168
202
  options, channel_credentials,
169
203
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
204
+
205
+ @staticmethod
206
+ def GetLoginDetails(request,
207
+ target,
208
+ options=(),
209
+ channel_credentials=None,
210
+ call_credentials=None,
211
+ insecure=False,
212
+ compression=None,
213
+ wait_for_ready=None,
214
+ timeout=None,
215
+ metadata=None):
216
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/GetLoginDetails',
217
+ flwr_dot_proto_dot_exec__pb2.GetLoginDetailsRequest.SerializeToString,
218
+ flwr_dot_proto_dot_exec__pb2.GetLoginDetailsResponse.FromString,
219
+ options, channel_credentials,
220
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
221
+
222
+ @staticmethod
223
+ def GetAuthTokens(request,
224
+ target,
225
+ options=(),
226
+ channel_credentials=None,
227
+ call_credentials=None,
228
+ insecure=False,
229
+ compression=None,
230
+ wait_for_ready=None,
231
+ timeout=None,
232
+ metadata=None):
233
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.Exec/GetAuthTokens',
234
+ flwr_dot_proto_dot_exec__pb2.GetAuthTokensRequest.SerializeToString,
235
+ flwr_dot_proto_dot_exec__pb2.GetAuthTokensResponse.FromString,
236
+ options, channel_credentials,
237
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -29,6 +29,16 @@ class ExecStub:
29
29
  flwr.proto.exec_pb2.ListRunsResponse]
30
30
  """flwr ls command"""
31
31
 
32
+ GetLoginDetails: grpc.UnaryUnaryMultiCallable[
33
+ flwr.proto.exec_pb2.GetLoginDetailsRequest,
34
+ flwr.proto.exec_pb2.GetLoginDetailsResponse]
35
+ """Get login details upon request"""
36
+
37
+ GetAuthTokens: grpc.UnaryUnaryMultiCallable[
38
+ flwr.proto.exec_pb2.GetAuthTokensRequest,
39
+ flwr.proto.exec_pb2.GetAuthTokensResponse]
40
+ """Get auth tokens upon request"""
41
+
32
42
 
33
43
  class ExecServicer(metaclass=abc.ABCMeta):
34
44
  @abc.abstractmethod
@@ -63,5 +73,21 @@ class ExecServicer(metaclass=abc.ABCMeta):
63
73
  """flwr ls command"""
64
74
  pass
65
75
 
76
+ @abc.abstractmethod
77
+ def GetLoginDetails(self,
78
+ request: flwr.proto.exec_pb2.GetLoginDetailsRequest,
79
+ context: grpc.ServicerContext,
80
+ ) -> flwr.proto.exec_pb2.GetLoginDetailsResponse:
81
+ """Get login details upon request"""
82
+ pass
83
+
84
+ @abc.abstractmethod
85
+ def GetAuthTokens(self,
86
+ request: flwr.proto.exec_pb2.GetAuthTokensRequest,
87
+ context: grpc.ServicerContext,
88
+ ) -> flwr.proto.exec_pb2.GetAuthTokensResponse:
89
+ """Get auth tokens upon request"""
90
+ pass
91
+
66
92
 
67
93
  def add_ExecServicer_to_server(servicer: ExecServicer, server: grpc.Server) -> None: ...
@@ -18,7 +18,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
18
18
  from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"\x1d\n\x1bPullSimulationInputsRequest\"\x80\x01\n\x1cPullSimulationInputsResponse\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\"T\n\x1cPushSimulationOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1f\n\x1dPushSimulationOutputsResponse2\xff\x03\n\x0cSimulationIo\x12k\n\x14PullSimulationInputs\x12\'.flwr.proto.PullSimulationInputsRequest\x1a(.flwr.proto.PullSimulationInputsResponse\"\x00\x12n\n\x15PushSimulationOutputs\x12(.flwr.proto.PushSimulationOutputsRequest\x1a).flwr.proto.PushSimulationOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x62\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x66lwr/proto/simulationio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"\x1d\n\x1bPullSimulationInputsRequest\"\x80\x01\n\x1cPullSimulationInputsResponse\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\"T\n\x1cPushSimulationOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1f\n\x1dPushSimulationOutputsResponse2\xd4\x04\n\x0cSimulationIo\x12k\n\x14PullSimulationInputs\x12\'.flwr.proto.PullSimulationInputsRequest\x1a(.flwr.proto.PullSimulationInputsResponse\"\x00\x12n\n\x15PushSimulationOutputs\x12(.flwr.proto.PushSimulationOutputsRequest\x1a).flwr.proto.PushSimulationOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12k\n\x14GetFederationOptions\x12\'.flwr.proto.GetFederationOptionsRequest\x1a(.flwr.proto.GetFederationOptionsResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x62\x06proto3')
22
22
 
23
23
  _globals = globals()
24
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,5 +34,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
34
34
  _globals['_PUSHSIMULATIONOUTPUTSRESPONSE']._serialized_start=385
35
35
  _globals['_PUSHSIMULATIONOUTPUTSRESPONSE']._serialized_end=416
36
36
  _globals['_SIMULATIONIO']._serialized_start=419
37
- _globals['_SIMULATIONIO']._serialized_end=930
37
+ _globals['_SIMULATIONIO']._serialized_end=1015
38
38
  # @@protoc_insertion_point(module_scope)
@@ -41,6 +41,11 @@ class SimulationIoStub(object):
41
41
  request_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.SerializeToString,
42
42
  response_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString,
43
43
  )
44
+ self.GetRunStatus = channel.unary_unary(
45
+ '/flwr.proto.SimulationIo/GetRunStatus',
46
+ request_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
47
+ response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
48
+ )
44
49
 
45
50
 
46
51
  class SimulationIoServicer(object):
@@ -81,6 +86,13 @@ class SimulationIoServicer(object):
81
86
  context.set_details('Method not implemented!')
82
87
  raise NotImplementedError('Method not implemented!')
83
88
 
89
+ def GetRunStatus(self, request, context):
90
+ """Get Run Status
91
+ """
92
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
93
+ context.set_details('Method not implemented!')
94
+ raise NotImplementedError('Method not implemented!')
95
+
84
96
 
85
97
  def add_SimulationIoServicer_to_server(servicer, server):
86
98
  rpc_method_handlers = {
@@ -109,6 +121,11 @@ def add_SimulationIoServicer_to_server(servicer, server):
109
121
  request_deserializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsRequest.FromString,
110
122
  response_serializer=flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.SerializeToString,
111
123
  ),
124
+ 'GetRunStatus': grpc.unary_unary_rpc_method_handler(
125
+ servicer.GetRunStatus,
126
+ request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.FromString,
127
+ response_serializer=flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.SerializeToString,
128
+ ),
112
129
  }
113
130
  generic_handler = grpc.method_handlers_generic_handler(
114
131
  'flwr.proto.SimulationIo', rpc_method_handlers)
@@ -203,3 +220,20 @@ class SimulationIo(object):
203
220
  flwr_dot_proto_dot_run__pb2.GetFederationOptionsResponse.FromString,
204
221
  options, channel_credentials,
205
222
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
223
+
224
+ @staticmethod
225
+ def GetRunStatus(request,
226
+ target,
227
+ options=(),
228
+ channel_credentials=None,
229
+ call_credentials=None,
230
+ insecure=False,
231
+ compression=None,
232
+ wait_for_ready=None,
233
+ timeout=None,
234
+ metadata=None):
235
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.SimulationIo/GetRunStatus',
236
+ flwr_dot_proto_dot_run__pb2.GetRunStatusRequest.SerializeToString,
237
+ flwr_dot_proto_dot_run__pb2.GetRunStatusResponse.FromString,
238
+ options, channel_credentials,
239
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -35,6 +35,11 @@ class SimulationIoStub:
35
35
  flwr.proto.run_pb2.GetFederationOptionsResponse]
36
36
  """Get Federation Options"""
37
37
 
38
+ GetRunStatus: grpc.UnaryUnaryMultiCallable[
39
+ flwr.proto.run_pb2.GetRunStatusRequest,
40
+ flwr.proto.run_pb2.GetRunStatusResponse]
41
+ """Get Run Status"""
42
+
38
43
 
39
44
  class SimulationIoServicer(metaclass=abc.ABCMeta):
40
45
  @abc.abstractmethod
@@ -77,5 +82,13 @@ class SimulationIoServicer(metaclass=abc.ABCMeta):
77
82
  """Get Federation Options"""
78
83
  pass
79
84
 
85
+ @abc.abstractmethod
86
+ def GetRunStatus(self,
87
+ request: flwr.proto.run_pb2.GetRunStatusRequest,
88
+ context: grpc.ServicerContext,
89
+ ) -> flwr.proto.run_pb2.GetRunStatusResponse:
90
+ """Get Run Status"""
91
+ pass
92
+
80
93
 
81
94
  def add_SimulationIoServicer_to_server(servicer: SimulationIoServicer, server: grpc.Server) -> None: ...
@@ -28,6 +28,7 @@ from flwr.common.serde import (
28
28
  context_to_proto,
29
29
  fab_to_proto,
30
30
  run_status_from_proto,
31
+ run_status_to_proto,
31
32
  run_to_proto,
32
33
  )
33
34
  from flwr.common.typing import Fab, RunStatus
@@ -39,6 +40,8 @@ from flwr.proto.log_pb2 import ( # pylint: disable=E0611
39
40
  from flwr.proto.run_pb2 import ( # pylint: disable=E0611
40
41
  GetFederationOptionsRequest,
41
42
  GetFederationOptionsResponse,
43
+ GetRunStatusRequest,
44
+ GetRunStatusResponse,
42
45
  UpdateRunStatusRequest,
43
46
  UpdateRunStatusResponse,
44
47
  )
@@ -122,6 +125,22 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
122
125
  )
123
126
  return UpdateRunStatusResponse()
124
127
 
128
+ def GetRunStatus(
129
+ self, request: GetRunStatusRequest, context: ServicerContext
130
+ ) -> GetRunStatusResponse:
131
+ """Get status of requested runs."""
132
+ log(DEBUG, "SimultionIoServicer.GetRunStatus")
133
+ state = self.state_factory.state()
134
+
135
+ statuses = state.get_run_status(set(request.run_ids))
136
+
137
+ return GetRunStatusResponse(
138
+ run_status_dict={
139
+ run_id: run_status_to_proto(status)
140
+ for run_id, status in statuses.items()
141
+ }
142
+ )
143
+
125
144
  def PushLogs(
126
145
  self, request: PushLogsRequest, context: grpc.ServicerContext
127
146
  ) -> PushLogsResponse:
@@ -33,6 +33,10 @@ from flwr.common.serde import (
33
33
  from flwr.common.typing import RunStatus
34
34
  from flwr.proto import exec_pb2_grpc # pylint: disable=E0611
35
35
  from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
36
+ GetAuthTokensRequest,
37
+ GetAuthTokensResponse,
38
+ GetLoginDetailsRequest,
39
+ GetLoginDetailsResponse,
36
40
  ListRunsRequest,
37
41
  ListRunsResponse,
38
42
  StartRunRequest,
@@ -155,6 +159,20 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
155
159
  )
156
160
  return StopRunResponse(success=update_success)
157
161
 
162
+ def GetLoginDetails(
163
+ self, request: GetLoginDetailsRequest, context: grpc.ServicerContext
164
+ ) -> GetLoginDetailsResponse:
165
+ """Start login."""
166
+ log(INFO, "ExecServicer.GetLoginDetails")
167
+ return GetLoginDetailsResponse(login_details={})
168
+
169
+ def GetAuthTokens(
170
+ self, request: GetAuthTokensRequest, context: grpc.ServicerContext
171
+ ) -> GetAuthTokensResponse:
172
+ """Get auth token."""
173
+ log(INFO, "ExecServicer.GetAuthTokens")
174
+ return GetAuthTokensResponse(auth_tokens={})
175
+
158
176
 
159
177
  def _create_list_runs_response(run_ids: set[int], state: LinkState) -> ListRunsResponse:
160
178
  """Create response for `flwr ls --runs` and `flwr ls --run-id <run_id>`."""