flwr-nightly 1.15.0.dev20250119__tar.gz → 1.15.0.dev20250121__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.
Files changed (331) hide show
  1. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/PKG-INFO +1 -1
  2. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/pyproject.toml +1 -1
  3. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/auth_plugin/auth_plugin.py +1 -0
  4. flwr_nightly-1.15.0.dev20250121/src/py/flwr/proto/serverappio_pb2.py +70 -0
  5. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/serverappio_pb2.pyi +56 -0
  6. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/serverappio_pb2_grpc.py +86 -0
  7. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +20 -0
  8. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/app.py +18 -3
  9. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +109 -3
  10. flwr_nightly-1.15.0.dev20250119/src/py/flwr/proto/serverappio_pb2.py +0 -62
  11. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/LICENSE +0 -0
  12. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/README.md +0 -0
  13. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/__init__.py +0 -0
  14. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/__init__.py +0 -0
  15. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/app.py +0 -0
  16. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/build.py +0 -0
  17. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  18. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/config_utils.py +0 -0
  19. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/example.py +0 -0
  20. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/install.py +0 -0
  21. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/log.py +0 -0
  22. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/login/__init__.py +0 -0
  23. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/login/login.py +0 -0
  24. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/ls.py +0 -0
  25. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/__init__.py +0 -0
  26. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/new.py +0 -0
  27. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  28. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  29. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  30. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  31. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  32. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  33. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  34. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  35. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  36. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  37. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  38. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  39. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  40. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  41. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  42. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  43. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  44. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  45. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  46. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  47. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  48. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  49. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  50. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  51. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  52. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  53. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  54. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  55. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  56. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  57. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  58. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  59. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  60. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  61. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  63. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  64. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  65. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  66. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  67. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  68. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  69. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  70. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  71. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  72. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  73. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  74. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  75. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  76. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  77. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  78. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  79. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/run/__init__.py +0 -0
  80. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/run/run.py +0 -0
  81. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/stop.py +0 -0
  82. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/cli/utils.py +0 -0
  83. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/__init__.py +0 -0
  84. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/app.py +0 -0
  85. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/client.py +0 -0
  86. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/client_app.py +0 -0
  87. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/clientapp/__init__.py +0 -0
  88. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/clientapp/app.py +0 -0
  89. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  90. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/clientapp/utils.py +0 -0
  91. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  92. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  93. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  94. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  95. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_client/connection.py +0 -0
  96. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  97. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  98. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  99. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  100. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/heartbeat.py +0 -0
  101. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/message_handler/__init__.py +0 -0
  102. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  103. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  104. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/__init__.py +0 -0
  105. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  106. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/comms_mods.py +0 -0
  107. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  108. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  109. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  110. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  111. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/mod/utils.py +0 -0
  112. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/nodestate/__init__.py +0 -0
  113. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
  114. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/nodestate/nodestate.py +0 -0
  115. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
  116. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/numpy_client.py +0 -0
  117. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/rest_client/__init__.py +0 -0
  118. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/rest_client/connection.py +0 -0
  119. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/run_info_store.py +0 -0
  120. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/supernode/__init__.py +0 -0
  121. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/supernode/app.py +0 -0
  122. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/client/typing.py +0 -0
  123. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/__init__.py +0 -0
  124. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/address.py +0 -0
  125. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/args.py +0 -0
  126. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
  127. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/config.py +0 -0
  128. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/constant.py +0 -0
  129. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/context.py +0 -0
  130. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/date.py +0 -0
  131. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/differential_privacy.py +0 -0
  132. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  133. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/dp.py +0 -0
  134. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/exit/__init__.py +0 -0
  135. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/exit/exit.py +0 -0
  136. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/exit/exit_code.py +0 -0
  137. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/exit_handlers.py +0 -0
  138. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/grpc.py +0 -0
  139. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/logger.py +0 -0
  140. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/message.py +0 -0
  141. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/object_ref.py +0 -0
  142. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/parameter.py +0 -0
  143. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/pyproject.py +0 -0
  144. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/__init__.py +0 -0
  145. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/configsrecord.py +0 -0
  146. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/conversion_utils.py +0 -0
  147. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/metricsrecord.py +0 -0
  148. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/parametersrecord.py +0 -0
  149. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/recordset.py +0 -0
  150. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/record/typeddict.py +0 -0
  151. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/recordset_compat.py +0 -0
  152. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/retry_invoker.py +0 -0
  153. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  154. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  155. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  156. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  157. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  158. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  159. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  160. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  161. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/serde.py +0 -0
  162. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/telemetry.py +0 -0
  163. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/typing.py +0 -0
  164. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/common/version.py +0 -0
  165. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/__init__.py +0 -0
  166. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  167. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  168. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  169. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  170. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/error_pb2.py +0 -0
  171. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/error_pb2.pyi +0 -0
  172. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  173. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  174. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/exec_pb2.py +0 -0
  175. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  176. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  177. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  178. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fab_pb2.py +0 -0
  179. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  180. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  181. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  182. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fleet_pb2.py +0 -0
  183. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  184. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  185. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  186. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  187. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  188. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  189. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  190. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/log_pb2.py +0 -0
  191. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/log_pb2.pyi +0 -0
  192. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
  193. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  194. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/message_pb2.py +0 -0
  195. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/message_pb2.pyi +0 -0
  196. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/node_pb2.py +0 -0
  199. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/node_pb2.pyi +0 -0
  200. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/recordset_pb2.py +0 -0
  203. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  204. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/run_pb2.py +0 -0
  207. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/run_pb2.pyi +0 -0
  208. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  209. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  210. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/simulationio_pb2.py +0 -0
  211. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
  212. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  213. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  214. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/task_pb2.py +0 -0
  215. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/task_pb2.pyi +0 -0
  216. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  217. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  218. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/transport_pb2.py +0 -0
  219. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  220. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  221. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  222. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/py.typed +0 -0
  223. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/__init__.py +0 -0
  224. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/client_manager.py +0 -0
  225. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/client_proxy.py +0 -0
  226. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/compat/__init__.py +0 -0
  227. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/compat/app.py +0 -0
  228. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/compat/app_utils.py +0 -0
  229. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  230. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/compat/legacy_context.py +0 -0
  231. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/criterion.py +0 -0
  232. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/driver/__init__.py +0 -0
  233. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/driver/driver.py +0 -0
  234. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  235. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  236. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/history.py +0 -0
  237. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/run_serverapp.py +0 -0
  238. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/server.py +0 -0
  239. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/server_app.py +0 -0
  240. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/server_config.py +0 -0
  241. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/serverapp/__init__.py +0 -0
  242. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/serverapp/app.py +0 -0
  243. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/serverapp_components.py +0 -0
  244. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/__init__.py +0 -0
  245. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/aggregate.py +0 -0
  246. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/bulyan.py +0 -0
  247. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  248. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  249. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  250. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  251. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  252. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  253. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedadam.py +0 -0
  254. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedavg.py +0 -0
  255. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  256. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  257. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  258. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedopt.py +0 -0
  259. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedprox.py +0 -0
  260. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  261. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  262. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  263. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  264. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  265. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/krum.py +0 -0
  266. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  267. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/strategy/strategy.py +0 -0
  268. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/__init__.py +0 -0
  269. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  270. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
  271. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  272. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  273. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  274. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  275. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  276. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  277. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  278. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  279. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  280. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  281. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  282. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  283. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  284. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  285. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  286. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  287. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  288. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  289. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  290. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  291. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  292. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  293. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  294. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  295. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  296. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  297. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  298. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  299. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  300. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
  301. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
  302. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  303. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  304. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/superlink/utils.py +0 -0
  305. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/typing.py +0 -0
  306. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/utils/__init__.py +0 -0
  307. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/utils/tensorboard.py +0 -0
  308. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/utils/validator.py +0 -0
  309. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/__init__.py +0 -0
  310. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/constant.py +0 -0
  311. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  312. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  313. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  314. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  315. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/__init__.py +0 -0
  316. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/app.py +0 -0
  317. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/legacy_app.py +0 -0
  318. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  319. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  320. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  321. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  322. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/run_simulation.py +0 -0
  323. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/simulation/simulationio_connection.py +0 -0
  324. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/__init__.py +0 -0
  325. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/app.py +0 -0
  326. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/deployment.py +0 -0
  327. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/exec_grpc.py +0 -0
  328. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/exec_servicer.py +0 -0
  329. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
  330. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/src/py/flwr/superexec/executor.py +0 -0
  331. {flwr_nightly-1.15.0.dev20250119 → flwr_nightly-1.15.0.dev20250121}/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.15.0.dev20250119
3
+ Version: 1.15.0.dev20250121
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.15.0.dev20250119"
7
+ version = "1.15.0.dev20250121"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -38,6 +38,7 @@ class ExecAuthPlugin(ABC):
38
38
  def __init__(
39
39
  self,
40
40
  user_auth_config_path: Path,
41
+ verify_tls_cert: bool,
41
42
  ):
42
43
  """Abstract constructor."""
43
44
 
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: flwr/proto/serverappio.proto
5
+ # Protobuf Python Version: 5.29.0
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 0,
17
+ '',
18
+ 'flwr/proto/serverappio.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from flwr.proto import log_pb2 as flwr_dot_proto_dot_log__pb2
26
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
27
+ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
28
+ from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2
29
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
30
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
31
+
32
+
33
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"P\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"V\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes\"T\n\x16PushInsMessagesRequest\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x17PushInsMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\"=\n\x16PullResMessagesRequest\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"E\n\x17PullResMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\xd5\x08\n\x0bServerAppIo\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushInsMessagesRequest\x1a#.flwr.proto.PushInsMessagesResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullResMessagesRequest\x1a#.flwr.proto.PullResMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x62\x06proto3')
34
+
35
+ _globals = globals()
36
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
37
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.serverappio_pb2', _globals)
38
+ if not _descriptor._USE_C_DESCRIPTORS:
39
+ DESCRIPTOR._loaded_options = None
40
+ _globals['_GETNODESREQUEST']._serialized_start=182
41
+ _globals['_GETNODESREQUEST']._serialized_end=215
42
+ _globals['_GETNODESRESPONSE']._serialized_start=217
43
+ _globals['_GETNODESRESPONSE']._serialized_end=268
44
+ _globals['_PUSHTASKINSREQUEST']._serialized_start=270
45
+ _globals['_PUSHTASKINSREQUEST']._serialized_end=350
46
+ _globals['_PUSHTASKINSRESPONSE']._serialized_start=352
47
+ _globals['_PUSHTASKINSRESPONSE']._serialized_end=391
48
+ _globals['_PULLTASKRESREQUEST']._serialized_start=393
49
+ _globals['_PULLTASKRESREQUEST']._serialized_end=479
50
+ _globals['_PULLTASKRESRESPONSE']._serialized_start=481
51
+ _globals['_PULLTASKRESRESPONSE']._serialized_end=546
52
+ _globals['_PUSHINSMESSAGESREQUEST']._serialized_start=548
53
+ _globals['_PUSHINSMESSAGESREQUEST']._serialized_end=632
54
+ _globals['_PUSHINSMESSAGESRESPONSE']._serialized_start=634
55
+ _globals['_PUSHINSMESSAGESRESPONSE']._serialized_end=680
56
+ _globals['_PULLRESMESSAGESREQUEST']._serialized_start=682
57
+ _globals['_PULLRESMESSAGESREQUEST']._serialized_end=743
58
+ _globals['_PULLRESMESSAGESRESPONSE']._serialized_start=745
59
+ _globals['_PULLRESMESSAGESRESPONSE']._serialized_end=814
60
+ _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_start=816
61
+ _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_end=844
62
+ _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_start=846
63
+ _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_end=973
64
+ _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_start=975
65
+ _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_end=1058
66
+ _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=1060
67
+ _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=1090
68
+ _globals['_SERVERAPPIO']._serialized_start=1093
69
+ _globals['_SERVERAPPIO']._serialized_end=2202
70
+ # @@protoc_insertion_point(module_scope)
@@ -101,6 +101,62 @@ class PullTaskResResponse(google.protobuf.message.Message):
101
101
  def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ...
102
102
  global___PullTaskResResponse = PullTaskResResponse
103
103
 
104
+ class PushInsMessagesRequest(google.protobuf.message.Message):
105
+ """PushMessages messages"""
106
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
107
+ MESSAGES_LIST_FIELD_NUMBER: builtins.int
108
+ RUN_ID_FIELD_NUMBER: builtins.int
109
+ @property
110
+ def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
111
+ run_id: builtins.int
112
+ def __init__(self,
113
+ *,
114
+ messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
115
+ run_id: builtins.int = ...,
116
+ ) -> None: ...
117
+ def ClearField(self, field_name: typing_extensions.Literal["messages_list",b"messages_list","run_id",b"run_id"]) -> None: ...
118
+ global___PushInsMessagesRequest = PushInsMessagesRequest
119
+
120
+ class PushInsMessagesResponse(google.protobuf.message.Message):
121
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
122
+ MESSAGE_IDS_FIELD_NUMBER: builtins.int
123
+ @property
124
+ def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
125
+ def __init__(self,
126
+ *,
127
+ message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
128
+ ) -> None: ...
129
+ def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids"]) -> None: ...
130
+ global___PushInsMessagesResponse = PushInsMessagesResponse
131
+
132
+ class PullResMessagesRequest(google.protobuf.message.Message):
133
+ """PullMessages messages"""
134
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
135
+ MESSAGE_IDS_FIELD_NUMBER: builtins.int
136
+ RUN_ID_FIELD_NUMBER: builtins.int
137
+ @property
138
+ def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
139
+ run_id: builtins.int
140
+ def __init__(self,
141
+ *,
142
+ message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
143
+ run_id: builtins.int = ...,
144
+ ) -> None: ...
145
+ def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","run_id",b"run_id"]) -> None: ...
146
+ global___PullResMessagesRequest = PullResMessagesRequest
147
+
148
+ class PullResMessagesResponse(google.protobuf.message.Message):
149
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
150
+ MESSAGES_LIST_FIELD_NUMBER: builtins.int
151
+ @property
152
+ def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
153
+ def __init__(self,
154
+ *,
155
+ messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
156
+ ) -> None: ...
157
+ def ClearField(self, field_name: typing_extensions.Literal["messages_list",b"messages_list"]) -> None: ...
158
+ global___PullResMessagesResponse = PullResMessagesResponse
159
+
104
160
  class PullServerAppInputsRequest(google.protobuf.message.Message):
105
161
  """PullServerAppInputs messages"""
106
162
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
@@ -52,11 +52,21 @@ class ServerAppIoStub(object):
52
52
  request_serializer=flwr_dot_proto_dot_serverappio__pb2.PushTaskInsRequest.SerializeToString,
53
53
  response_deserializer=flwr_dot_proto_dot_serverappio__pb2.PushTaskInsResponse.FromString,
54
54
  _registered_method=True)
55
+ self.PushMessages = channel.unary_unary(
56
+ '/flwr.proto.ServerAppIo/PushMessages',
57
+ request_serializer=flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesRequest.SerializeToString,
58
+ response_deserializer=flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesResponse.FromString,
59
+ _registered_method=True)
55
60
  self.PullTaskRes = channel.unary_unary(
56
61
  '/flwr.proto.ServerAppIo/PullTaskRes',
57
62
  request_serializer=flwr_dot_proto_dot_serverappio__pb2.PullTaskResRequest.SerializeToString,
58
63
  response_deserializer=flwr_dot_proto_dot_serverappio__pb2.PullTaskResResponse.FromString,
59
64
  _registered_method=True)
65
+ self.PullMessages = channel.unary_unary(
66
+ '/flwr.proto.ServerAppIo/PullMessages',
67
+ request_serializer=flwr_dot_proto_dot_serverappio__pb2.PullResMessagesRequest.SerializeToString,
68
+ response_deserializer=flwr_dot_proto_dot_serverappio__pb2.PullResMessagesResponse.FromString,
69
+ _registered_method=True)
60
70
  self.GetRun = channel.unary_unary(
61
71
  '/flwr.proto.ServerAppIo/GetRun',
62
72
  request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
@@ -118,6 +128,12 @@ class ServerAppIoServicer(object):
118
128
  context.set_details('Method not implemented!')
119
129
  raise NotImplementedError('Method not implemented!')
120
130
 
131
+ def PushMessages(self, request, context):
132
+ """Missing associated documentation comment in .proto file."""
133
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
134
+ context.set_details('Method not implemented!')
135
+ raise NotImplementedError('Method not implemented!')
136
+
121
137
  def PullTaskRes(self, request, context):
122
138
  """Get task results
123
139
  """
@@ -125,6 +141,12 @@ class ServerAppIoServicer(object):
125
141
  context.set_details('Method not implemented!')
126
142
  raise NotImplementedError('Method not implemented!')
127
143
 
144
+ def PullMessages(self, request, context):
145
+ """Missing associated documentation comment in .proto file."""
146
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
147
+ context.set_details('Method not implemented!')
148
+ raise NotImplementedError('Method not implemented!')
149
+
128
150
  def GetRun(self, request, context):
129
151
  """Get run details
130
152
  """
@@ -192,11 +214,21 @@ def add_ServerAppIoServicer_to_server(servicer, server):
192
214
  request_deserializer=flwr_dot_proto_dot_serverappio__pb2.PushTaskInsRequest.FromString,
193
215
  response_serializer=flwr_dot_proto_dot_serverappio__pb2.PushTaskInsResponse.SerializeToString,
194
216
  ),
217
+ 'PushMessages': grpc.unary_unary_rpc_method_handler(
218
+ servicer.PushMessages,
219
+ request_deserializer=flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesRequest.FromString,
220
+ response_serializer=flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesResponse.SerializeToString,
221
+ ),
195
222
  'PullTaskRes': grpc.unary_unary_rpc_method_handler(
196
223
  servicer.PullTaskRes,
197
224
  request_deserializer=flwr_dot_proto_dot_serverappio__pb2.PullTaskResRequest.FromString,
198
225
  response_serializer=flwr_dot_proto_dot_serverappio__pb2.PullTaskResResponse.SerializeToString,
199
226
  ),
227
+ 'PullMessages': grpc.unary_unary_rpc_method_handler(
228
+ servicer.PullMessages,
229
+ request_deserializer=flwr_dot_proto_dot_serverappio__pb2.PullResMessagesRequest.FromString,
230
+ response_serializer=flwr_dot_proto_dot_serverappio__pb2.PullResMessagesResponse.SerializeToString,
231
+ ),
200
232
  'GetRun': grpc.unary_unary_rpc_method_handler(
201
233
  servicer.GetRun,
202
234
  request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.FromString,
@@ -324,6 +356,33 @@ class ServerAppIo(object):
324
356
  metadata,
325
357
  _registered_method=True)
326
358
 
359
+ @staticmethod
360
+ def PushMessages(request,
361
+ target,
362
+ options=(),
363
+ channel_credentials=None,
364
+ call_credentials=None,
365
+ insecure=False,
366
+ compression=None,
367
+ wait_for_ready=None,
368
+ timeout=None,
369
+ metadata=None):
370
+ return grpc.experimental.unary_unary(
371
+ request,
372
+ target,
373
+ '/flwr.proto.ServerAppIo/PushMessages',
374
+ flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesRequest.SerializeToString,
375
+ flwr_dot_proto_dot_serverappio__pb2.PushInsMessagesResponse.FromString,
376
+ options,
377
+ channel_credentials,
378
+ insecure,
379
+ call_credentials,
380
+ compression,
381
+ wait_for_ready,
382
+ timeout,
383
+ metadata,
384
+ _registered_method=True)
385
+
327
386
  @staticmethod
328
387
  def PullTaskRes(request,
329
388
  target,
@@ -351,6 +410,33 @@ class ServerAppIo(object):
351
410
  metadata,
352
411
  _registered_method=True)
353
412
 
413
+ @staticmethod
414
+ def PullMessages(request,
415
+ target,
416
+ options=(),
417
+ channel_credentials=None,
418
+ call_credentials=None,
419
+ insecure=False,
420
+ compression=None,
421
+ wait_for_ready=None,
422
+ timeout=None,
423
+ metadata=None):
424
+ return grpc.experimental.unary_unary(
425
+ request,
426
+ target,
427
+ '/flwr.proto.ServerAppIo/PullMessages',
428
+ flwr_dot_proto_dot_serverappio__pb2.PullResMessagesRequest.SerializeToString,
429
+ flwr_dot_proto_dot_serverappio__pb2.PullResMessagesResponse.FromString,
430
+ options,
431
+ channel_credentials,
432
+ insecure,
433
+ call_credentials,
434
+ compression,
435
+ wait_for_ready,
436
+ timeout,
437
+ metadata,
438
+ _registered_method=True)
439
+
354
440
  @staticmethod
355
441
  def GetRun(request,
356
442
  target,
@@ -26,11 +26,19 @@ class ServerAppIoStub:
26
26
  flwr.proto.serverappio_pb2.PushTaskInsResponse]
27
27
  """Create one or more tasks"""
28
28
 
29
+ PushMessages: grpc.UnaryUnaryMultiCallable[
30
+ flwr.proto.serverappio_pb2.PushInsMessagesRequest,
31
+ flwr.proto.serverappio_pb2.PushInsMessagesResponse]
32
+
29
33
  PullTaskRes: grpc.UnaryUnaryMultiCallable[
30
34
  flwr.proto.serverappio_pb2.PullTaskResRequest,
31
35
  flwr.proto.serverappio_pb2.PullTaskResResponse]
32
36
  """Get task results"""
33
37
 
38
+ PullMessages: grpc.UnaryUnaryMultiCallable[
39
+ flwr.proto.serverappio_pb2.PullResMessagesRequest,
40
+ flwr.proto.serverappio_pb2.PullResMessagesResponse]
41
+
34
42
  GetRun: grpc.UnaryUnaryMultiCallable[
35
43
  flwr.proto.run_pb2.GetRunRequest,
36
44
  flwr.proto.run_pb2.GetRunResponse]
@@ -92,6 +100,12 @@ class ServerAppIoServicer(metaclass=abc.ABCMeta):
92
100
  """Create one or more tasks"""
93
101
  pass
94
102
 
103
+ @abc.abstractmethod
104
+ def PushMessages(self,
105
+ request: flwr.proto.serverappio_pb2.PushInsMessagesRequest,
106
+ context: grpc.ServicerContext,
107
+ ) -> flwr.proto.serverappio_pb2.PushInsMessagesResponse: ...
108
+
95
109
  @abc.abstractmethod
96
110
  def PullTaskRes(self,
97
111
  request: flwr.proto.serverappio_pb2.PullTaskResRequest,
@@ -100,6 +114,12 @@ class ServerAppIoServicer(metaclass=abc.ABCMeta):
100
114
  """Get task results"""
101
115
  pass
102
116
 
117
+ @abc.abstractmethod
118
+ def PullMessages(self,
119
+ request: flwr.proto.serverappio_pb2.PullResMessagesRequest,
120
+ context: grpc.ServicerContext,
121
+ ) -> flwr.proto.serverappio_pb2.PullResMessagesResponse: ...
122
+
103
123
  @abc.abstractmethod
104
124
  def GetRun(self,
105
125
  request: flwr.proto.run_pb2.GetRunRequest,
@@ -228,6 +228,13 @@ def start_server( # pylint: disable=too-many-arguments,too-many-locals
228
228
  "enabled" if certificates is not None else "disabled",
229
229
  )
230
230
 
231
+ # Graceful shutdown
232
+ register_exit_handlers(
233
+ event_type=EventType.START_SERVER_LEAVE,
234
+ exit_message="Flower server terminated gracefully.",
235
+ grpc_servers=[grpc_server],
236
+ )
237
+
231
238
  # Start training
232
239
  hist = run_fl(
233
240
  server=initialized_server,
@@ -265,10 +272,14 @@ def run_superlink() -> None:
265
272
  # Obtain certificates
266
273
  certificates = try_obtain_server_certificates(args, args.fleet_api_type)
267
274
 
275
+ # Disable the user auth TLS check if args.disable_oidc_tls_cert_verification is
276
+ # provided
277
+ verify_tls_cert = not getattr(args, "disable_oidc_tls_cert_verification", None)
278
+
268
279
  auth_plugin: Optional[ExecAuthPlugin] = None
269
280
  # Load the auth plugin if the args.user_auth_config is provided
270
281
  if cfg_path := getattr(args, "user_auth_config", None):
271
- auth_plugin = _try_obtain_exec_auth_plugin(Path(cfg_path))
282
+ auth_plugin = _try_obtain_exec_auth_plugin(Path(cfg_path), verify_tls_cert)
272
283
 
273
284
  # Initialize StateFactory
274
285
  state_factory = LinkStateFactory(args.database)
@@ -619,7 +630,9 @@ def _try_setup_node_authentication(
619
630
  )
620
631
 
621
632
 
622
- def _try_obtain_exec_auth_plugin(config_path: Path) -> Optional[ExecAuthPlugin]:
633
+ def _try_obtain_exec_auth_plugin(
634
+ config_path: Path, verify_tls_cert: bool
635
+ ) -> Optional[ExecAuthPlugin]:
623
636
  # Load YAML file
624
637
  with config_path.open("r", encoding="utf-8") as file:
625
638
  config: dict[str, Any] = yaml.safe_load(file)
@@ -632,7 +645,9 @@ def _try_obtain_exec_auth_plugin(config_path: Path) -> Optional[ExecAuthPlugin]:
632
645
  try:
633
646
  all_plugins: dict[str, type[ExecAuthPlugin]] = get_exec_auth_plugins()
634
647
  auth_plugin_class = all_plugins[auth_type]
635
- return auth_plugin_class(user_auth_config_path=config_path)
648
+ return auth_plugin_class(
649
+ user_auth_config_path=config_path, verify_tls_cert=verify_tls_cert
650
+ )
636
651
  except KeyError:
637
652
  if auth_type != "":
638
653
  sys.exit(
@@ -16,14 +16,13 @@
16
16
 
17
17
 
18
18
  import threading
19
- import time
20
19
  from logging import DEBUG, INFO
21
20
  from typing import Optional
22
21
  from uuid import UUID
23
22
 
24
23
  import grpc
25
24
 
26
- from flwr.common import ConfigsRecord
25
+ from flwr.common import ConfigsRecord, now
27
26
  from flwr.common.constant import Status
28
27
  from flwr.common.logger import log
29
28
  from flwr.common.serde import (
@@ -31,6 +30,10 @@ from flwr.common.serde import (
31
30
  context_to_proto,
32
31
  fab_from_proto,
33
32
  fab_to_proto,
33
+ message_from_proto,
34
+ message_from_taskres,
35
+ message_to_proto,
36
+ message_to_taskins,
34
37
  run_status_from_proto,
35
38
  run_status_to_proto,
36
39
  run_to_proto,
@@ -57,10 +60,14 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
57
60
  from flwr.proto.serverappio_pb2 import ( # pylint: disable=E0611
58
61
  GetNodesRequest,
59
62
  GetNodesResponse,
63
+ PullResMessagesRequest,
64
+ PullResMessagesResponse,
60
65
  PullServerAppInputsRequest,
61
66
  PullServerAppInputsResponse,
62
67
  PullTaskResRequest,
63
68
  PullTaskResResponse,
69
+ PushInsMessagesRequest,
70
+ PushInsMessagesResponse,
64
71
  PushServerAppOutputsRequest,
65
72
  PushServerAppOutputsResponse,
66
73
  PushTaskInsRequest,
@@ -149,7 +156,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
149
156
  )
150
157
 
151
158
  # Set pushed_at (timestamp in seconds)
152
- pushed_at = time.time()
159
+ pushed_at = now().timestamp()
153
160
  for task_ins in request.task_ins_list:
154
161
  task_ins.task.pushed_at = pushed_at
155
162
 
@@ -182,6 +189,59 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
182
189
  task_ids=[str(task_id) if task_id else "" for task_id in task_ids]
183
190
  )
184
191
 
192
+ def PushMessages(
193
+ self, request: PushInsMessagesRequest, context: grpc.ServicerContext
194
+ ) -> PushInsMessagesResponse:
195
+ """Push a set of Messages."""
196
+ log(DEBUG, "ServerAppIoServicer.PushMessages")
197
+
198
+ # Init state
199
+ state: LinkState = self.state_factory.state()
200
+
201
+ # Abort if the run is not running
202
+ abort_if(
203
+ request.run_id,
204
+ [Status.PENDING, Status.STARTING, Status.FINISHED],
205
+ state,
206
+ context,
207
+ )
208
+
209
+ # Set pushed_at (timestamp in seconds)
210
+ pushed_at = now().timestamp()
211
+
212
+ # Validate request and insert in State
213
+ _raise_if(
214
+ validation_error=len(request.messages_list) == 0,
215
+ request_name="PushMessages",
216
+ detail="`messages_list` must not be empty",
217
+ )
218
+ message_ids: list[Optional[UUID]] = []
219
+ while request.messages_list:
220
+ message_proto = request.messages_list.pop(0)
221
+ message = message_from_proto(message_proto=message_proto)
222
+ task_ins = message_to_taskins(message=message)
223
+ task_ins.task.pushed_at = pushed_at
224
+ validation_errors = validate_task_ins_or_res(task_ins)
225
+ _raise_if(
226
+ validation_error=bool(validation_errors),
227
+ request_name="PushMessages",
228
+ detail=", ".join(validation_errors),
229
+ )
230
+ _raise_if(
231
+ validation_error=request.run_id != task_ins.run_id,
232
+ request_name="PushMessages",
233
+ detail="`task_ins` has mismatched `run_id`",
234
+ )
235
+ # Store
236
+ message_id: Optional[UUID] = state.store_task_ins(task_ins=task_ins)
237
+ message_ids.append(message_id)
238
+
239
+ return PushInsMessagesResponse(
240
+ message_ids=[
241
+ str(message_id) if message_id else "" for message_id in message_ids
242
+ ]
243
+ )
244
+
185
245
  def PullTaskRes(
186
246
  self, request: PullTaskResRequest, context: grpc.ServicerContext
187
247
  ) -> PullTaskResResponse:
@@ -221,6 +281,52 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
221
281
 
222
282
  return PullTaskResResponse(task_res_list=task_res_list)
223
283
 
284
+ def PullMessages(
285
+ self, request: PullResMessagesRequest, context: grpc.ServicerContext
286
+ ) -> PullResMessagesResponse:
287
+ """Pull a set of Messages."""
288
+ log(DEBUG, "ServerAppIoServicer.PullMessages")
289
+
290
+ # Init state
291
+ state: LinkState = self.state_factory.state()
292
+
293
+ # Abort if the run is not running
294
+ abort_if(
295
+ request.run_id,
296
+ [Status.PENDING, Status.STARTING, Status.FINISHED],
297
+ state,
298
+ context,
299
+ )
300
+
301
+ # Convert each task_id str to UUID
302
+ message_ids: set[UUID] = {
303
+ UUID(message_id) for message_id in request.message_ids
304
+ }
305
+
306
+ # Read from state
307
+ task_res_list: list[TaskRes] = state.get_task_res(task_ids=message_ids)
308
+
309
+ # Convert to Messages
310
+ messages_list = []
311
+ while task_res_list:
312
+ task_res = task_res_list.pop(0)
313
+ _raise_if(
314
+ validation_error=request.run_id != task_res.run_id,
315
+ request_name="PullMessages",
316
+ detail="`task_res` has mismatched `run_id`",
317
+ )
318
+ message = message_from_taskres(taskres=task_res)
319
+ messages_list.append(message_to_proto(message))
320
+
321
+ # Delete the TaskIns/TaskRes pairs if TaskRes is found
322
+ task_ins_ids_to_delete = {
323
+ UUID(task_res.task.ancestry[0]) for task_res in task_res_list
324
+ }
325
+
326
+ state.delete_tasks(task_ins_ids=task_ins_ids_to_delete)
327
+
328
+ return PullResMessagesResponse(messages_list=messages_list)
329
+
224
330
  def GetRun(
225
331
  self, request: GetRunRequest, context: grpc.ServicerContext
226
332
  ) -> GetRunResponse:
@@ -1,62 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # NO CHECKED-IN PROTOBUF GENCODE
4
- # source: flwr/proto/serverappio.proto
5
- # Protobuf Python Version: 5.29.0
6
- """Generated protocol buffer code."""
7
- from google.protobuf import descriptor as _descriptor
8
- from google.protobuf import descriptor_pool as _descriptor_pool
9
- from google.protobuf import runtime_version as _runtime_version
10
- from google.protobuf import symbol_database as _symbol_database
11
- from google.protobuf.internal import builder as _builder
12
- _runtime_version.ValidateProtobufRuntimeVersion(
13
- _runtime_version.Domain.PUBLIC,
14
- 5,
15
- 29,
16
- 0,
17
- '',
18
- 'flwr/proto/serverappio.proto'
19
- )
20
- # @@protoc_insertion_point(imports)
21
-
22
- _sym_db = _symbol_database.Default()
23
-
24
-
25
- from flwr.proto import log_pb2 as flwr_dot_proto_dot_log__pb2
26
- from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
27
- from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
28
- from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2
29
- from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
30
- from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
31
-
32
-
33
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"P\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"V\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\x9f\x07\n\x0bServerAppIo\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x62\x06proto3')
34
-
35
- _globals = globals()
36
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
37
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.serverappio_pb2', _globals)
38
- if not _descriptor._USE_C_DESCRIPTORS:
39
- DESCRIPTOR._loaded_options = None
40
- _globals['_GETNODESREQUEST']._serialized_start=182
41
- _globals['_GETNODESREQUEST']._serialized_end=215
42
- _globals['_GETNODESRESPONSE']._serialized_start=217
43
- _globals['_GETNODESRESPONSE']._serialized_end=268
44
- _globals['_PUSHTASKINSREQUEST']._serialized_start=270
45
- _globals['_PUSHTASKINSREQUEST']._serialized_end=350
46
- _globals['_PUSHTASKINSRESPONSE']._serialized_start=352
47
- _globals['_PUSHTASKINSRESPONSE']._serialized_end=391
48
- _globals['_PULLTASKRESREQUEST']._serialized_start=393
49
- _globals['_PULLTASKRESREQUEST']._serialized_end=479
50
- _globals['_PULLTASKRESRESPONSE']._serialized_start=481
51
- _globals['_PULLTASKRESRESPONSE']._serialized_end=546
52
- _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_start=548
53
- _globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_end=576
54
- _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_start=578
55
- _globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_end=705
56
- _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_start=707
57
- _globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_end=790
58
- _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=792
59
- _globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=822
60
- _globals['_SERVERAPPIO']._serialized_start=825
61
- _globals['_SERVERAPPIO']._serialized_end=1752
62
- # @@protoc_insertion_point(module_scope)