flwr-nightly 1.23.0.dev20251023__tar.gz → 1.23.0.dev20251027__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 (440) hide show
  1. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/PKG-INFO +1 -1
  2. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/run/run.py +1 -1
  3. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_rere_client/connection.py +7 -2
  4. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/rest_client/connection.py +8 -6
  5. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/serde.py +4 -2
  6. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/typing.py +1 -0
  7. flwr_nightly-1.23.0.dev20251027/py/flwr/proto/control_pb2.py +79 -0
  8. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/control_pb2.pyi +4 -1
  9. flwr_nightly-1.23.0.dev20251027/py/flwr/proto/fab_pb2.py +35 -0
  10. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fab_pb2.pyi +21 -1
  11. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +3 -1
  12. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +1 -1
  13. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +2 -2
  14. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/simulation/simulationio_servicer.py +1 -1
  15. flwr_nightly-1.23.0.dev20251027/py/flwr/supercore/primitives/asymmetric_ed25519.py +165 -0
  16. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/control_servicer.py +6 -2
  17. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +1 -1
  18. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/pyproject.toml +1 -1
  19. flwr_nightly-1.23.0.dev20251023/py/flwr/proto/control_pb2.py +0 -79
  20. flwr_nightly-1.23.0.dev20251023/py/flwr/proto/fab_pb2.py +0 -31
  21. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/README.md +0 -0
  22. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/__init__.py +0 -0
  23. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/app/__init__.py +0 -0
  24. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/app/error.py +0 -0
  25. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/app/exception.py +0 -0
  26. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/app/metadata.py +0 -0
  27. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/__init__.py +0 -0
  28. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/app.py +0 -0
  29. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  30. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/auth_plugin/auth_plugin.py +0 -0
  31. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/auth_plugin/noop_auth_plugin.py +0 -0
  32. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  33. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/build.py +0 -0
  34. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/cli_account_auth_interceptor.py +0 -0
  35. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/config_utils.py +0 -0
  36. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/constant.py +0 -0
  37. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/example.py +0 -0
  38. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/install.py +0 -0
  39. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/log.py +0 -0
  40. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/login/__init__.py +0 -0
  41. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/login/login.py +0 -0
  42. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/ls.py +0 -0
  43. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/__init__.py +0 -0
  44. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/new.py +0 -0
  45. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/__init__.py +0 -0
  46. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  47. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  48. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  49. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  50. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  51. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  52. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  53. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  54. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  55. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl +0 -0
  56. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  57. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  58. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  59. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  60. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  61. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  62. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl +0 -0
  63. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  64. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  65. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/client.xgboost.py.tpl +0 -0
  66. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  67. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  68. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  69. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  70. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  71. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  72. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  73. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  74. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  75. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  76. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  77. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  78. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  79. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  80. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl +0 -0
  81. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  82. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  83. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/server.xgboost.py.tpl +0 -0
  84. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  85. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  86. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  87. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  88. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  89. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  90. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl +0 -0
  91. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  92. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  93. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/task.xgboost.py.tpl +0 -0
  94. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  95. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  96. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  97. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  98. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  99. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  100. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  101. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  102. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +0 -0
  103. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  104. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  105. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +0 -0
  106. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/pull.py +0 -0
  107. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/run/__init__.py +0 -0
  108. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/stop.py +0 -0
  109. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/supernode/__init__.py +0 -0
  110. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/supernode/ls.py +0 -0
  111. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/supernode/register.py +0 -0
  112. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/supernode/unregister.py +0 -0
  113. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/cli/utils.py +0 -0
  114. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/__init__.py +0 -0
  115. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/client.py +0 -0
  116. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  117. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  118. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  119. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  120. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  121. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/grpc_rere_client/node_auth_client_interceptor.py +0 -0
  122. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/message_handler/__init__.py +0 -0
  123. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/message_handler/message_handler.py +0 -0
  124. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/__init__.py +0 -0
  125. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/centraldp_mods.py +0 -0
  126. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/comms_mods.py +0 -0
  127. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/localdp_mod.py +0 -0
  128. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  129. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  130. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  131. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/mod/utils.py +0 -0
  132. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/numpy_client.py +0 -0
  133. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/rest_client/__init__.py +0 -0
  134. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/run_info_store.py +0 -0
  135. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/client/typing.py +0 -0
  136. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/__init__.py +0 -0
  137. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/client_app.py +0 -0
  138. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/mod/__init__.py +0 -0
  139. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/mod/centraldp_mods.py +0 -0
  140. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/mod/localdp_mod.py +0 -0
  141. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/typing.py +0 -0
  142. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/clientapp/utils.py +0 -0
  143. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/__init__.py +0 -0
  144. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/address.py +0 -0
  145. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/args.py +0 -0
  146. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/config.py +0 -0
  147. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/constant.py +0 -0
  148. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/context.py +0 -0
  149. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/date.py +0 -0
  150. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/differential_privacy.py +0 -0
  151. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/differential_privacy_constants.py +0 -0
  152. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/dp.py +0 -0
  153. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  154. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  155. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/exit/__init__.py +0 -0
  156. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/exit/exit.py +0 -0
  157. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/exit/exit_code.py +0 -0
  158. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/exit/exit_handler.py +0 -0
  159. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/exit/signal_handler.py +0 -0
  160. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/grpc.py +0 -0
  161. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/heartbeat.py +0 -0
  162. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/inflatable.py +0 -0
  163. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  164. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/inflatable_utils.py +0 -0
  165. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/logger.py +0 -0
  166. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/message.py +0 -0
  167. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/object_ref.py +0 -0
  168. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/parameter.py +0 -0
  169. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/pyproject.py +0 -0
  170. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/__init__.py +0 -0
  171. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/array.py +0 -0
  172. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/arraychunk.py +0 -0
  173. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/arrayrecord.py +0 -0
  174. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/configrecord.py +0 -0
  175. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/conversion_utils.py +0 -0
  176. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/metricrecord.py +0 -0
  177. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/recorddict.py +0 -0
  178. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/record/typeddict.py +0 -0
  179. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/recorddict_compat.py +0 -0
  180. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/retry_invoker.py +0 -0
  181. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  182. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  183. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  184. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  185. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  186. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  187. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  188. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  189. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/serde_utils.py +0 -0
  190. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/telemetry.py +0 -0
  191. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/common/version.py +0 -0
  192. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/__init__.py +0 -0
  193. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/client/__init__.py +0 -0
  194. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/client/app.py +0 -0
  195. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  196. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  197. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/common/__init__.py +0 -0
  198. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/server/__init__.py +0 -0
  199. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/server/app.py +0 -0
  200. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/compat/simulation/__init__.py +0 -0
  201. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/__init__.py +0 -0
  202. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/appio_pb2.py +0 -0
  203. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/appio_pb2.pyi +0 -0
  204. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/clientappio_pb2.py +0 -0
  207. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  208. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  209. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  210. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/control_pb2_grpc.py +0 -0
  211. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  212. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/error_pb2.py +0 -0
  213. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/error_pb2.pyi +0 -0
  214. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/error_pb2_grpc.py +0 -0
  215. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  216. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  217. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  218. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fleet_pb2.py +0 -0
  219. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fleet_pb2.pyi +0 -0
  220. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  221. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  222. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  223. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  224. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  225. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  226. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/heartbeat_pb2.py +0 -0
  227. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  228. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  229. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  230. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/log_pb2.py +0 -0
  231. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/log_pb2.pyi +0 -0
  232. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/log_pb2_grpc.py +0 -0
  233. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  234. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/message_pb2.py +0 -0
  235. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/message_pb2.pyi +0 -0
  236. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/message_pb2_grpc.py +0 -0
  237. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  238. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/node_pb2.py +0 -0
  239. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/node_pb2.pyi +0 -0
  240. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/node_pb2_grpc.py +0 -0
  241. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  242. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/recorddict_pb2.py +0 -0
  243. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  244. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  245. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  246. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/run_pb2.py +0 -0
  247. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/run_pb2.pyi +0 -0
  248. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/run_pb2_grpc.py +0 -0
  249. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  250. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/serverappio_pb2.py +0 -0
  251. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  252. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  253. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  254. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/simulationio_pb2.py +0 -0
  255. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  256. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  257. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  258. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/transport_pb2.py +0 -0
  259. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/transport_pb2.pyi +0 -0
  260. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  261. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  262. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/py.typed +0 -0
  263. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/__init__.py +0 -0
  264. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/app.py +0 -0
  265. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/client_manager.py +0 -0
  266. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/client_proxy.py +0 -0
  267. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/compat/__init__.py +0 -0
  268. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/compat/app.py +0 -0
  269. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/compat/app_utils.py +0 -0
  270. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  271. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/compat/legacy_context.py +0 -0
  272. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/criterion.py +0 -0
  273. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  274. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/grid/__init__.py +0 -0
  275. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/grid/grid.py +0 -0
  276. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/grid/grpc_grid.py +0 -0
  277. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/grid/inmemory_grid.py +0 -0
  278. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/history.py +0 -0
  279. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/run_serverapp.py +0 -0
  280. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/server.py +0 -0
  281. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/server_app.py +0 -0
  282. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/server_config.py +0 -0
  283. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/serverapp/__init__.py +0 -0
  284. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/serverapp/app.py +0 -0
  285. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/serverapp_components.py +0 -0
  286. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/__init__.py +0 -0
  287. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/aggregate.py +0 -0
  288. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/bulyan.py +0 -0
  289. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  290. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  291. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  292. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  293. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  294. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedadagrad.py +0 -0
  295. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedadam.py +0 -0
  296. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedavg.py +0 -0
  297. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedavg_android.py +0 -0
  298. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedavgm.py +0 -0
  299. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedmedian.py +0 -0
  300. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedopt.py +0 -0
  301. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedprox.py +0 -0
  302. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  303. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  304. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  305. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  306. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/fedyogi.py +0 -0
  307. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/krum.py +0 -0
  308. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/qfedavg.py +0 -0
  309. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/strategy/strategy.py +0 -0
  310. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/__init__.py +0 -0
  311. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  312. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  313. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  314. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  315. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  316. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  317. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  318. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  319. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  320. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +0 -0
  321. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  322. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  323. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  324. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  325. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  326. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  327. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  328. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  329. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  330. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  331. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  332. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  333. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
  334. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  335. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  336. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  337. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  338. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  339. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/superlink/utils.py +0 -0
  340. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/typing.py +0 -0
  341. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/utils/__init__.py +0 -0
  342. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/utils/tensorboard.py +0 -0
  343. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/utils/validator.py +0 -0
  344. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/__init__.py +0 -0
  345. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/constant.py +0 -0
  346. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/default_workflows.py +0 -0
  347. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  348. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  349. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  350. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/__init__.py +0 -0
  351. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/exception.py +0 -0
  352. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/__init__.py +0 -0
  353. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/bulyan.py +0 -0
  354. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/dp_adaptive_clipping.py +0 -0
  355. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/dp_fixed_clipping.py +0 -0
  356. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedadagrad.py +0 -0
  357. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedadam.py +0 -0
  358. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedavg.py +0 -0
  359. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedavgm.py +0 -0
  360. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedmedian.py +0 -0
  361. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedopt.py +0 -0
  362. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedprox.py +0 -0
  363. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedtrimmedavg.py +0 -0
  364. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedxgb_bagging.py +0 -0
  365. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedxgb_cyclic.py +0 -0
  366. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/fedyogi.py +0 -0
  367. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/krum.py +0 -0
  368. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/multikrum.py +0 -0
  369. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/qfedavg.py +0 -0
  370. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/result.py +0 -0
  371. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/strategy.py +0 -0
  372. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/serverapp/strategy/strategy_utils.py +0 -0
  373. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/__init__.py +0 -0
  374. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/app.py +0 -0
  375. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/legacy_app.py +0 -0
  376. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  377. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  378. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  379. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/ray_transport/utils.py +0 -0
  380. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/run_simulation.py +0 -0
  381. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/simulation/simulationio_connection.py +0 -0
  382. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/__init__.py +0 -0
  383. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/app_utils.py +0 -0
  384. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/cli/__init__.py +0 -0
  385. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/cli/flower_superexec.py +0 -0
  386. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/constant.py +0 -0
  387. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/corestate/__init__.py +0 -0
  388. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/corestate/corestate.py +0 -0
  389. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/ffs/__init__.py +0 -0
  390. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
  391. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/ffs/ffs.py +0 -0
  392. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  393. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  394. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/grpc_health/health_server.py +0 -0
  395. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  396. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  397. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  398. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/__init__.py +0 -0
  399. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  400. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/object_store.py +0 -0
  401. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  402. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/sqlite_object_store.py +0 -0
  403. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/object_store/utils.py +0 -0
  404. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/primitives/__init__.py +0 -0
  405. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/primitives/asymmetric.py +0 -0
  406. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/sqlite_mixin.py +0 -0
  407. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/__init__.py +0 -0
  408. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
  409. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
  410. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
  411. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
  412. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
  413. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
  414. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/superexec/run_superexec.py +0 -0
  415. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supercore/utils.py +0 -0
  416. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/__init__.py +0 -0
  417. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/artifact_provider/__init__.py +0 -0
  418. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/artifact_provider/artifact_provider.py +0 -0
  419. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/auth_plugin/__init__.py +0 -0
  420. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/auth_plugin/auth_plugin.py +0 -0
  421. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/auth_plugin/noop_auth_plugin.py +0 -0
  422. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/__init__.py +0 -0
  423. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/__init__.py +0 -0
  424. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/control_account_auth_interceptor.py +0 -0
  425. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
  426. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
  427. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
  428. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/__init__.py +0 -0
  429. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/cli/__init__.py +0 -0
  430. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/cli/flower_supernode.py +0 -0
  431. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  432. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/nodestate/__init__.py +0 -0
  433. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  434. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  435. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  436. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/runtime/__init__.py +0 -0
  437. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
  438. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/servicer/__init__.py +0 -0
  439. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  440. {flwr_nightly-1.23.0.dev20251023 → flwr_nightly-1.23.0.dev20251027}/py/flwr/supernode/start_client_internal.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.23.0.dev20251023
3
+ Version: 1.23.0.dev20251027
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -155,7 +155,7 @@ def _run_with_control_api(
155
155
  fab_bytes, fab_hash, config = build_fab(app)
156
156
  fab_id, fab_version = get_metadata_from_config(config)
157
157
 
158
- fab = Fab(fab_hash, fab_bytes)
158
+ fab = Fab(fab_hash, fab_bytes, {})
159
159
 
160
160
  # Construct a `ConfigRecord` out of a flattened `UserConfig`
161
161
  fed_config = flatten_dict(federation_config.get("options", {}))
@@ -36,7 +36,12 @@ from flwr.common.inflatable_protobuf_utils import (
36
36
  from flwr.common.logger import log
37
37
  from flwr.common.message import Message, remove_content_from_message
38
38
  from flwr.common.retry_invoker import RetryInvoker, _wrap_stub
39
- from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
39
+ from flwr.common.serde import (
40
+ fab_from_proto,
41
+ message_from_proto,
42
+ message_to_proto,
43
+ run_from_proto,
44
+ )
40
45
  from flwr.common.typing import Fab, Run
41
46
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
42
47
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -289,7 +294,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
289
294
  get_fab_request = GetFabRequest(node=node, hash_str=fab_hash, run_id=run_id)
290
295
  get_fab_response: GetFabResponse = stub.GetFab(request=get_fab_request)
291
296
 
292
- return Fab(get_fab_response.fab.hash_str, get_fab_response.fab.content)
297
+ return fab_from_proto(get_fab_response.fab)
293
298
 
294
299
  def pull_object(run_id: int, object_id: str) -> bytes:
295
300
  """Pull the object from the SuperLink."""
@@ -37,7 +37,12 @@ from flwr.common.inflatable_protobuf_utils import (
37
37
  from flwr.common.logger import log
38
38
  from flwr.common.message import Message, remove_content_from_message
39
39
  from flwr.common.retry_invoker import RetryInvoker
40
- from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
40
+ from flwr.common.serde import (
41
+ fab_from_proto,
42
+ message_from_proto,
43
+ message_to_proto,
44
+ run_from_proto,
45
+ )
41
46
  from flwr.common.typing import Fab, Run
42
47
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
43
48
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -398,12 +403,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
398
403
  # Send the request
399
404
  res = _request(req, GetFabResponse, PATH_GET_FAB)
400
405
  if res is None:
401
- return Fab("", b"")
406
+ return Fab("", b"", {})
402
407
 
403
- return Fab(
404
- res.fab.hash_str,
405
- res.fab.content,
406
- )
408
+ return fab_from_proto(res.fab)
407
409
 
408
410
  def pull_object(run_id: int, object_id: str) -> bytes:
409
411
  """Pull the object from the SuperLink."""
@@ -501,12 +501,14 @@ def recorddict_from_proto(recorddict_proto: ProtoRecordDict) -> RecordDict:
501
501
 
502
502
  def fab_to_proto(fab: typing.Fab) -> ProtoFab:
503
503
  """Create a proto Fab object from a Python Fab."""
504
- return ProtoFab(hash_str=fab.hash_str, content=fab.content)
504
+ return ProtoFab(
505
+ hash_str=fab.hash_str, content=fab.content, verifications=fab.verifications
506
+ )
505
507
 
506
508
 
507
509
  def fab_from_proto(fab: ProtoFab) -> typing.Fab:
508
510
  """Create a Python Fab object from a proto Fab."""
509
- return typing.Fab(fab.hash_str, fab.content)
511
+ return typing.Fab(fab.hash_str, fab.content, dict(fab.verifications))
510
512
 
511
513
 
512
514
  # === User configs ===
@@ -256,6 +256,7 @@ class Fab:
256
256
 
257
257
  hash_str: str
258
258
  content: bytes
259
+ verifications: dict[str, str]
259
260
 
260
261
 
261
262
  class RunNotRunningException(BaseException):
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/control.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
16
+ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
17
+ from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
18
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
19
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
20
+
21
+
22
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x15\x66lwr/proto/node.proto\"\x8a\x02\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\x34\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x18.flwr.proto.ConfigRecord\x12\x0e\n\x06\x61pp_id\x18\x04 \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"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\"\x8b\x01\n\x17GetLoginDetailsResponse\x12\x12\n\nauthn_type\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65vice_code\x18\x02 \x01(\t\x12!\n\x19verification_uri_complete\x18\x03 \x01(\t\x12\x12\n\nexpires_in\x18\x04 \x01(\x03\x12\x10\n\x08interval\x18\x05 \x01(\x03\"+\n\x14GetAuthTokensRequest\x12\x13\n\x0b\x64\x65vice_code\x18\x01 \x01(\t\"D\n\x15GetAuthTokensResponse\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x15\n\rrefresh_token\x18\x02 \x01(\t\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"&\n\x14PullArtifactsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"1\n\x15PullArtifactsResponse\x12\x10\n\x03url\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x06\n\x04_url\")\n\x13RegisterNodeRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\"8\n\x14RegisterNodeResponse\x12\x14\n\x07node_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_node_id\"(\n\x15UnregisterNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x18\n\x16UnregisterNodeResponse\"\x12\n\x10ListNodesRequest\"J\n\x11ListNodesResponse\x12(\n\nnodes_info\x18\x01 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x0b\n\x03now\x18\x02 \x01(\t2\xbc\x06\n\x07\x43ontrol\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\x12V\n\rPullArtifacts\x12 .flwr.proto.PullArtifactsRequest\x1a!.flwr.proto.PullArtifactsResponse\"\x00\x12S\n\x0cRegisterNode\x12\x1f.flwr.proto.RegisterNodeRequest\x1a .flwr.proto.RegisterNodeResponse\"\x00\x12Y\n\x0eUnregisterNode\x12!.flwr.proto.UnregisterNodeRequest\x1a\".flwr.proto.UnregisterNodeResponse\"\x00\x12J\n\tListNodes\x12\x1c.flwr.proto.ListNodesRequest\x1a\x1d.flwr.proto.ListNodesResponse\"\x00\x62\x06proto3')
23
+
24
+ _globals = globals()
25
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
26
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.control_pb2', _globals)
27
+ if _descriptor._USE_C_DESCRIPTORS == False:
28
+ DESCRIPTOR._options = None
29
+ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
30
+ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
31
+ _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None
32
+ _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
33
+ _globals['_STARTRUNREQUEST']._serialized_start=165
34
+ _globals['_STARTRUNREQUEST']._serialized_end=431
35
+ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=358
36
+ _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=431
37
+ _globals['_STARTRUNRESPONSE']._serialized_start=433
38
+ _globals['_STARTRUNRESPONSE']._serialized_end=483
39
+ _globals['_STREAMLOGSREQUEST']._serialized_start=485
40
+ _globals['_STREAMLOGSREQUEST']._serialized_end=545
41
+ _globals['_STREAMLOGSRESPONSE']._serialized_start=547
42
+ _globals['_STREAMLOGSRESPONSE']._serialized_end=613
43
+ _globals['_LISTRUNSREQUEST']._serialized_start=615
44
+ _globals['_LISTRUNSREQUEST']._serialized_end=664
45
+ _globals['_LISTRUNSRESPONSE']._serialized_start=667
46
+ _globals['_LISTRUNSRESPONSE']._serialized_end=824
47
+ _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=761
48
+ _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=824
49
+ _globals['_GETLOGINDETAILSREQUEST']._serialized_start=826
50
+ _globals['_GETLOGINDETAILSREQUEST']._serialized_end=850
51
+ _globals['_GETLOGINDETAILSRESPONSE']._serialized_start=853
52
+ _globals['_GETLOGINDETAILSRESPONSE']._serialized_end=992
53
+ _globals['_GETAUTHTOKENSREQUEST']._serialized_start=994
54
+ _globals['_GETAUTHTOKENSREQUEST']._serialized_end=1037
55
+ _globals['_GETAUTHTOKENSRESPONSE']._serialized_start=1039
56
+ _globals['_GETAUTHTOKENSRESPONSE']._serialized_end=1107
57
+ _globals['_STOPRUNREQUEST']._serialized_start=1109
58
+ _globals['_STOPRUNREQUEST']._serialized_end=1141
59
+ _globals['_STOPRUNRESPONSE']._serialized_start=1143
60
+ _globals['_STOPRUNRESPONSE']._serialized_end=1177
61
+ _globals['_PULLARTIFACTSREQUEST']._serialized_start=1179
62
+ _globals['_PULLARTIFACTSREQUEST']._serialized_end=1217
63
+ _globals['_PULLARTIFACTSRESPONSE']._serialized_start=1219
64
+ _globals['_PULLARTIFACTSRESPONSE']._serialized_end=1268
65
+ _globals['_REGISTERNODEREQUEST']._serialized_start=1270
66
+ _globals['_REGISTERNODEREQUEST']._serialized_end=1311
67
+ _globals['_REGISTERNODERESPONSE']._serialized_start=1313
68
+ _globals['_REGISTERNODERESPONSE']._serialized_end=1369
69
+ _globals['_UNREGISTERNODEREQUEST']._serialized_start=1371
70
+ _globals['_UNREGISTERNODEREQUEST']._serialized_end=1411
71
+ _globals['_UNREGISTERNODERESPONSE']._serialized_start=1413
72
+ _globals['_UNREGISTERNODERESPONSE']._serialized_end=1437
73
+ _globals['_LISTNODESREQUEST']._serialized_start=1439
74
+ _globals['_LISTNODESREQUEST']._serialized_end=1457
75
+ _globals['_LISTNODESRESPONSE']._serialized_start=1459
76
+ _globals['_LISTNODESRESPONSE']._serialized_end=1533
77
+ _globals['_CONTROL']._serialized_start=1536
78
+ _globals['_CONTROL']._serialized_end=2364
79
+ # @@protoc_insertion_point(module_scope)
@@ -36,20 +36,23 @@ class StartRunRequest(google.protobuf.message.Message):
36
36
  FAB_FIELD_NUMBER: builtins.int
37
37
  OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
38
38
  FEDERATION_OPTIONS_FIELD_NUMBER: builtins.int
39
+ APP_ID_FIELD_NUMBER: builtins.int
39
40
  @property
40
41
  def fab(self) -> flwr.proto.fab_pb2.Fab: ...
41
42
  @property
42
43
  def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
43
44
  @property
44
45
  def federation_options(self) -> flwr.proto.recorddict_pb2.ConfigRecord: ...
46
+ app_id: typing.Text
45
47
  def __init__(self,
46
48
  *,
47
49
  fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
48
50
  override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
49
51
  federation_options: typing.Optional[flwr.proto.recorddict_pb2.ConfigRecord] = ...,
52
+ app_id: typing.Text = ...,
50
53
  ) -> None: ...
51
54
  def HasField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options"]) -> builtins.bool: ...
52
- def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options","override_config",b"override_config"]) -> None: ...
55
+ def ClearField(self, field_name: typing_extensions.Literal["app_id",b"app_id","fab",b"fab","federation_options",b"federation_options","override_config",b"override_config"]) -> None: ...
53
56
  global___StartRunRequest = StartRunRequest
54
57
 
55
58
  class StartRunResponse(google.protobuf.message.Message):
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/fab.proto
4
+ # Protobuf Python Version: 4.25.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"\x99\x01\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x39\n\rverifications\x18\x03 \x03(\x0b\x32\".flwr.proto.Fab.VerificationsEntry\x1a\x34\n\x12VerificationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"Q\n\rGetFabRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08hash_str\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fab_pb2', _globals)
23
+ if _descriptor._USE_C_DESCRIPTORS == False:
24
+ DESCRIPTOR._options = None
25
+ _globals['_FAB_VERIFICATIONSENTRY']._options = None
26
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_options = b'8\001'
27
+ _globals['_FAB']._serialized_start=60
28
+ _globals['_FAB']._serialized_end=213
29
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_start=161
30
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_end=213
31
+ _globals['_GETFABREQUEST']._serialized_start=215
32
+ _globals['_GETFABREQUEST']._serialized_end=296
33
+ _globals['_GETFABRESPONSE']._serialized_start=298
34
+ _globals['_GETFABRESPONSE']._serialized_end=344
35
+ # @@protoc_insertion_point(module_scope)
@@ -5,6 +5,7 @@ isort:skip_file
5
5
  import builtins
6
6
  import flwr.proto.node_pb2
7
7
  import google.protobuf.descriptor
8
+ import google.protobuf.internal.containers
8
9
  import google.protobuf.message
9
10
  import typing
10
11
  import typing_extensions
@@ -13,8 +14,22 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
14
 
14
15
  class Fab(google.protobuf.message.Message):
15
16
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
17
+ class VerificationsEntry(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+ KEY_FIELD_NUMBER: builtins.int
20
+ VALUE_FIELD_NUMBER: builtins.int
21
+ key: typing.Text
22
+ value: typing.Text
23
+ def __init__(self,
24
+ *,
25
+ key: typing.Text = ...,
26
+ value: typing.Text = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
29
+
16
30
  HASH_STR_FIELD_NUMBER: builtins.int
17
31
  CONTENT_FIELD_NUMBER: builtins.int
32
+ VERIFICATIONS_FIELD_NUMBER: builtins.int
18
33
  hash_str: typing.Text
19
34
  """This field is the hash of the data field. It is used to identify the data.
20
35
  The hash is calculated using the SHA-256 algorithm and is represented as a
@@ -24,12 +39,17 @@ class Fab(google.protobuf.message.Message):
24
39
  content: builtins.bytes
25
40
  """This field contains the fab file contents a one bytes blob."""
26
41
 
42
+ @property
43
+ def verifications(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
44
+ """Verifications."""
45
+ pass
27
46
  def __init__(self,
28
47
  *,
29
48
  hash_str: typing.Text = ...,
30
49
  content: builtins.bytes = ...,
50
+ verifications: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
31
51
  ) -> None: ...
32
- def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str"]) -> None: ...
52
+ def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str","verifications",b"verifications"]) -> None: ...
33
53
  global___Fab = Fab
34
54
 
35
55
  class GetFabRequest(google.protobuf.message.Message):
@@ -130,11 +130,13 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
130
130
  request=request,
131
131
  state=state,
132
132
  )
133
+ log(
134
+ INFO, "[Fleet.CreateNode] Created node_id=%s", response.node.node_id
135
+ )
133
136
 
134
137
  except ValueError as e:
135
138
  # Public key already in use
136
139
  context.abort(grpc.StatusCode.FAILED_PRECONDITION, str(e))
137
- log(INFO, "[Fleet.CreateNode] Created node_id=%s", response.node.node_id)
138
140
  log(DEBUG, "[Fleet.CreateNode] Response: %s", MessageToDict(response))
139
141
  return response
140
142
 
@@ -210,7 +210,7 @@ def get_fab(
210
210
  raise InvalidRunStatusException(abort_msg)
211
211
 
212
212
  if result := ffs.get(request.hash_str):
213
- fab = Fab(request.hash_str, result[0])
213
+ fab = Fab(request.hash_str, result[0], result[1])
214
214
  return GetFabResponse(fab=fab_to_proto(fab))
215
215
 
216
216
  raise ValueError(f"Found no FAB with hash: {request.hash_str}")
@@ -316,7 +316,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
316
316
 
317
317
  ffs: Ffs = self.ffs_factory.ffs()
318
318
  if result := ffs.get(request.hash_str):
319
- fab = Fab(request.hash_str, result[0])
319
+ fab = Fab(request.hash_str, result[0], result[1])
320
320
  return GetFabResponse(fab=fab_to_proto(fab))
321
321
 
322
322
  raise ValueError(f"Found no FAB with hash: {request.hash_str}")
@@ -343,7 +343,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
343
343
  fab = None
344
344
  if run and run.fab_hash:
345
345
  if result := ffs.get(run.fab_hash):
346
- fab = Fab(run.fab_hash, result[0])
346
+ fab = Fab(run.fab_hash, result[0], result[1])
347
347
  if run and fab and serverapp_ctxt:
348
348
  # Update run status to STARTING
349
349
  if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
@@ -150,7 +150,7 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
150
150
  fab = None
151
151
  if run and run.fab_hash:
152
152
  if result := ffs.get(run.fab_hash):
153
- fab = Fab(run.fab_hash, result[0])
153
+ fab = Fab(run.fab_hash, result[0], result[1])
154
154
  if run and fab and serverapp_ctxt:
155
155
  # Update run status to STARTING
156
156
  if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
@@ -0,0 +1,165 @@
1
+ # Copyright 2025 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
+ """Ed25519-only asymmetric cryptography utilities."""
16
+
17
+ import base64
18
+
19
+ from cryptography.exceptions import InvalidSignature
20
+ from cryptography.hazmat.primitives import serialization
21
+ from cryptography.hazmat.primitives.asymmetric import ed25519
22
+
23
+
24
+ def generate_key_pair() -> tuple[ed25519.Ed25519PrivateKey, ed25519.Ed25519PublicKey]:
25
+ """Generate an Ed25519 private/public key pair.
26
+
27
+ Returns
28
+ -------
29
+ Tuple[Ed25519PrivateKey, Ed25519PublicKey]
30
+ Private and public key pair.
31
+ """
32
+ private_key = ed25519.Ed25519PrivateKey.generate()
33
+ return private_key, private_key.public_key()
34
+
35
+
36
+ def private_key_to_bytes(private_key: ed25519.Ed25519PrivateKey) -> bytes:
37
+ """Serialize an Ed25519 private key to PEM bytes.
38
+
39
+ Parameters
40
+ ----------
41
+ private_key : Ed25519PrivateKey
42
+ The private key to serialize.
43
+
44
+ Returns
45
+ -------
46
+ bytes
47
+ PEM-encoded private key.
48
+ """
49
+ return private_key.private_bytes(
50
+ encoding=serialization.Encoding.PEM,
51
+ format=serialization.PrivateFormat.PKCS8,
52
+ encryption_algorithm=serialization.NoEncryption(),
53
+ )
54
+
55
+
56
+ def bytes_to_private_key(private_key_bytes: bytes) -> ed25519.Ed25519PrivateKey:
57
+ """Deserialize an Ed25519 private key from PEM bytes.
58
+
59
+ Parameters
60
+ ----------
61
+ private_key_bytes : bytes
62
+ PEM-encoded private key.
63
+
64
+ Returns
65
+ -------
66
+ Ed25519PrivateKey
67
+ Deserialized private key.
68
+ """
69
+ return serialization.load_pem_private_key(
70
+ private_key_bytes, password=None
71
+ ) # type: ignore[return-value]
72
+
73
+
74
+ def public_key_to_bytes(public_key: ed25519.Ed25519PublicKey) -> bytes:
75
+ """Serialize an Ed25519 public key to PEM bytes.
76
+
77
+ Parameters
78
+ ----------
79
+ public_key : Ed25519PublicKey
80
+ The public key to serialize.
81
+
82
+ Returns
83
+ -------
84
+ bytes
85
+ PEM-encoded public key.
86
+ """
87
+ return public_key.public_bytes(
88
+ encoding=serialization.Encoding.PEM,
89
+ format=serialization.PublicFormat.SubjectPublicKeyInfo,
90
+ )
91
+
92
+
93
+ def bytes_to_public_key(public_key_bytes: bytes) -> ed25519.Ed25519PublicKey:
94
+ """Deserialize an Ed25519 public key from PEM bytes.
95
+
96
+ Parameters
97
+ ----------
98
+ public_key_bytes : bytes
99
+ PEM-encoded public key.
100
+
101
+ Returns
102
+ -------
103
+ Ed25519PublicKey
104
+ Deserialized public key.
105
+ """
106
+ return serialization.load_pem_public_key(public_key_bytes) # type: ignore[return-value]
107
+
108
+
109
+ def sign_message(private_key: ed25519.Ed25519PrivateKey, message: bytes) -> bytes:
110
+ """Sign a message using an Ed25519 private key.
111
+
112
+ Parameters
113
+ ----------
114
+ private_key : Ed25519PrivateKey
115
+ The private key used for signing.
116
+ message : bytes
117
+ The message to sign.
118
+
119
+ Returns
120
+ -------
121
+ bytes
122
+ The signature of the message.
123
+ """
124
+ return private_key.sign(message)
125
+
126
+
127
+ def verify_signature(
128
+ public_key: ed25519.Ed25519PublicKey, message: bytes, signature: bytes
129
+ ) -> bool:
130
+ """Verify a signature using an Ed25519 public key.
131
+
132
+ Parameters
133
+ ----------
134
+ public_key : Ed25519PublicKey
135
+ The public key used for verification.
136
+ message : bytes
137
+ The original message.
138
+ signature : bytes
139
+ The signature to verify.
140
+
141
+ Returns
142
+ -------
143
+ bool
144
+ True if the signature is valid, False otherwise.
145
+ """
146
+ try:
147
+ public_key.verify(signature, message)
148
+ return True
149
+ except InvalidSignature:
150
+ return False
151
+
152
+
153
+ def create_signed_message(fab_digest: bytes, timestamp: int) -> bytes:
154
+ """Create a canonical message:
155
+ timestamp (8 bytes big-endian) + fab_digest.
156
+ """
157
+ timestamp_bytes = timestamp.to_bytes(8, byteorder="big")
158
+ return timestamp_bytes + fab_digest
159
+
160
+
161
+ def decode_base64url(sig: str) -> bytes:
162
+ """Convert signature to b64 format."""
163
+ # add missing padding (=) to a multiple of 4
164
+ pad = (-len(sig)) % 4
165
+ return base64.urlsafe_b64decode(sig + ("=" * pad))
@@ -129,7 +129,11 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
129
129
  )
130
130
 
131
131
  # Create run
132
- fab = Fab(hashlib.sha256(fab_file).hexdigest(), fab_file)
132
+ fab = Fab(
133
+ hashlib.sha256(fab_file).hexdigest(),
134
+ fab_file,
135
+ dict(request.fab.verifications),
136
+ )
133
137
  fab_hash = ffs.put(fab.content, {})
134
138
  if fab_hash != fab.hash_str:
135
139
  raise RuntimeError(
@@ -459,7 +463,7 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
459
463
  log(ERROR, "ListNodes is not available in simulation mode.")
460
464
  context.abort(
461
465
  grpc.StatusCode.UNIMPLEMENTED,
462
- "ListNodesis not available in simulation mode.",
466
+ "ListNodes is not available in simulation mode.",
463
467
  )
464
468
  raise grpc.RpcError() # This line is unreachable
465
469
 
@@ -151,7 +151,7 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
151
151
  # Retrieve context, run and fab for this run
152
152
  context = cast(Context, state.get_context(run_id))
153
153
  run = cast(Run, state.get_run(run_id))
154
- fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0]) # type: ignore
154
+ fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0], ffs.get(run.fab_hash)[1]) # type: ignore
155
155
 
156
156
  return PullAppInputsResponse(
157
157
  context=context_to_proto(context),
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.23.0.dev20251023"
7
+ version = "1.23.0.dev20251027"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -1,79 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: flwr/proto/control.proto
4
- # Protobuf Python Version: 4.25.1
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
- from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
16
- from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
17
- from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
18
- from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
19
- from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
20
-
21
-
22
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/control.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x15\x66lwr/proto/node.proto\"\xfa\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\x34\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x18.flwr.proto.ConfigRecord\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\"\x8b\x01\n\x17GetLoginDetailsResponse\x12\x12\n\nauthn_type\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65vice_code\x18\x02 \x01(\t\x12!\n\x19verification_uri_complete\x18\x03 \x01(\t\x12\x12\n\nexpires_in\x18\x04 \x01(\x03\x12\x10\n\x08interval\x18\x05 \x01(\x03\"+\n\x14GetAuthTokensRequest\x12\x13\n\x0b\x64\x65vice_code\x18\x01 \x01(\t\"D\n\x15GetAuthTokensResponse\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x15\n\rrefresh_token\x18\x02 \x01(\t\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"&\n\x14PullArtifactsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"1\n\x15PullArtifactsResponse\x12\x10\n\x03url\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x06\n\x04_url\")\n\x13RegisterNodeRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\"8\n\x14RegisterNodeResponse\x12\x14\n\x07node_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_node_id\"(\n\x15UnregisterNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x18\n\x16UnregisterNodeResponse\"\x12\n\x10ListNodesRequest\"J\n\x11ListNodesResponse\x12(\n\nnodes_info\x18\x01 \x03(\x0b\x32\x14.flwr.proto.NodeInfo\x12\x0b\n\x03now\x18\x02 \x01(\t2\xbc\x06\n\x07\x43ontrol\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\x12V\n\rPullArtifacts\x12 .flwr.proto.PullArtifactsRequest\x1a!.flwr.proto.PullArtifactsResponse\"\x00\x12S\n\x0cRegisterNode\x12\x1f.flwr.proto.RegisterNodeRequest\x1a .flwr.proto.RegisterNodeResponse\"\x00\x12Y\n\x0eUnregisterNode\x12!.flwr.proto.UnregisterNodeRequest\x1a\".flwr.proto.UnregisterNodeResponse\"\x00\x12J\n\tListNodes\x12\x1c.flwr.proto.ListNodesRequest\x1a\x1d.flwr.proto.ListNodesResponse\"\x00\x62\x06proto3')
23
-
24
- _globals = globals()
25
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
26
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.control_pb2', _globals)
27
- if _descriptor._USE_C_DESCRIPTORS == False:
28
- DESCRIPTOR._options = None
29
- _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
30
- _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
31
- _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None
32
- _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
33
- _globals['_STARTRUNREQUEST']._serialized_start=165
34
- _globals['_STARTRUNREQUEST']._serialized_end=415
35
- _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=342
36
- _globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=415
37
- _globals['_STARTRUNRESPONSE']._serialized_start=417
38
- _globals['_STARTRUNRESPONSE']._serialized_end=467
39
- _globals['_STREAMLOGSREQUEST']._serialized_start=469
40
- _globals['_STREAMLOGSREQUEST']._serialized_end=529
41
- _globals['_STREAMLOGSRESPONSE']._serialized_start=531
42
- _globals['_STREAMLOGSRESPONSE']._serialized_end=597
43
- _globals['_LISTRUNSREQUEST']._serialized_start=599
44
- _globals['_LISTRUNSREQUEST']._serialized_end=648
45
- _globals['_LISTRUNSRESPONSE']._serialized_start=651
46
- _globals['_LISTRUNSRESPONSE']._serialized_end=808
47
- _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_start=745
48
- _globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_end=808
49
- _globals['_GETLOGINDETAILSREQUEST']._serialized_start=810
50
- _globals['_GETLOGINDETAILSREQUEST']._serialized_end=834
51
- _globals['_GETLOGINDETAILSRESPONSE']._serialized_start=837
52
- _globals['_GETLOGINDETAILSRESPONSE']._serialized_end=976
53
- _globals['_GETAUTHTOKENSREQUEST']._serialized_start=978
54
- _globals['_GETAUTHTOKENSREQUEST']._serialized_end=1021
55
- _globals['_GETAUTHTOKENSRESPONSE']._serialized_start=1023
56
- _globals['_GETAUTHTOKENSRESPONSE']._serialized_end=1091
57
- _globals['_STOPRUNREQUEST']._serialized_start=1093
58
- _globals['_STOPRUNREQUEST']._serialized_end=1125
59
- _globals['_STOPRUNRESPONSE']._serialized_start=1127
60
- _globals['_STOPRUNRESPONSE']._serialized_end=1161
61
- _globals['_PULLARTIFACTSREQUEST']._serialized_start=1163
62
- _globals['_PULLARTIFACTSREQUEST']._serialized_end=1201
63
- _globals['_PULLARTIFACTSRESPONSE']._serialized_start=1203
64
- _globals['_PULLARTIFACTSRESPONSE']._serialized_end=1252
65
- _globals['_REGISTERNODEREQUEST']._serialized_start=1254
66
- _globals['_REGISTERNODEREQUEST']._serialized_end=1295
67
- _globals['_REGISTERNODERESPONSE']._serialized_start=1297
68
- _globals['_REGISTERNODERESPONSE']._serialized_end=1353
69
- _globals['_UNREGISTERNODEREQUEST']._serialized_start=1355
70
- _globals['_UNREGISTERNODEREQUEST']._serialized_end=1395
71
- _globals['_UNREGISTERNODERESPONSE']._serialized_start=1397
72
- _globals['_UNREGISTERNODERESPONSE']._serialized_end=1421
73
- _globals['_LISTNODESREQUEST']._serialized_start=1423
74
- _globals['_LISTNODESREQUEST']._serialized_end=1441
75
- _globals['_LISTNODESRESPONSE']._serialized_start=1443
76
- _globals['_LISTNODESRESPONSE']._serialized_end=1517
77
- _globals['_CONTROL']._serialized_start=1520
78
- _globals['_CONTROL']._serialized_end=2348
79
- # @@protoc_insertion_point(module_scope)