flwr-nightly 1.21.0.dev20250805__tar.gz → 1.21.0.dev20250806__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 (389) hide show
  1. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/PKG-INFO +1 -1
  2. flwr_nightly-1.21.0.dev20250806/py/flwr/proto/appio_pb2.py +51 -0
  3. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/appio_pb2.pyi +46 -2
  4. flwr_nightly-1.21.0.dev20250806/py/flwr/proto/clientappio_pb2.py +30 -0
  5. flwr_nightly-1.21.0.dev20250806/py/flwr/proto/clientappio_pb2.pyi +7 -0
  6. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/clientappio_pb2_grpc.py +19 -20
  7. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/clientappio_pb2_grpc.pyi +10 -11
  8. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/serverappio_pb2.py +2 -2
  9. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/serverappio_pb2_grpc.py +68 -0
  10. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/serverappio_pb2_grpc.pyi +26 -0
  11. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +34 -0
  12. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/linkstate.py +2 -1
  13. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +45 -0
  14. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +26 -0
  15. flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/corestate/__init__.py +22 -0
  16. flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/corestate/corestate.py +80 -0
  17. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/nodestate/nodestate.py +3 -59
  18. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/runtime/run_clientapp.py +3 -9
  19. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +8 -10
  20. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/pyproject.toml +1 -1
  21. flwr_nightly-1.21.0.dev20250805/py/flwr/proto/appio_pb2.py +0 -43
  22. flwr_nightly-1.21.0.dev20250805/py/flwr/proto/clientappio_pb2.py +0 -38
  23. flwr_nightly-1.21.0.dev20250805/py/flwr/proto/clientappio_pb2.pyi +0 -54
  24. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/README.md +0 -0
  25. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/__init__.py +0 -0
  26. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/app/__init__.py +0 -0
  27. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/app/error.py +0 -0
  28. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/app/metadata.py +0 -0
  29. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/__init__.py +0 -0
  30. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/app.py +0 -0
  31. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  32. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  33. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/build.py +0 -0
  34. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  35. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/config_utils.py +0 -0
  36. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/constant.py +0 -0
  37. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/example.py +0 -0
  38. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/install.py +0 -0
  39. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/log.py +0 -0
  40. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/login/__init__.py +0 -0
  41. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/login/login.py +0 -0
  42. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/ls.py +0 -0
  43. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/__init__.py +0 -0
  44. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/new.py +0 -0
  45. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/__init__.py +0 -0
  46. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  47. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  48. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  49. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  50. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  51. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/__init__.py +0 -0
  52. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  53. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  54. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  55. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  56. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  57. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  58. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  59. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  60. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  61. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  62. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  63. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  64. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  65. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  66. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  67. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  68. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  69. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  70. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  71. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  72. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  73. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  74. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  75. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  76. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  77. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  78. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  79. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  80. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  81. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  82. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  83. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  84. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  85. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  86. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  87. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  88. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  89. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  90. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  91. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  92. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  93. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  94. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  95. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  96. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  97. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/run/__init__.py +0 -0
  98. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/run/run.py +0 -0
  99. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/stop.py +0 -0
  100. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/cli/utils.py +0 -0
  101. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/__init__.py +0 -0
  102. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/client.py +0 -0
  103. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/client_app.py +0 -0
  104. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/clientapp/__init__.py +0 -0
  105. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/clientapp/utils.py +0 -0
  106. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  107. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  108. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  109. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  110. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  111. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_rere_client/connection.py +0 -0
  112. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  113. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/message_handler/__init__.py +0 -0
  114. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/message_handler/message_handler.py +0 -0
  115. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/__init__.py +0 -0
  116. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/centraldp_mods.py +0 -0
  117. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/comms_mods.py +0 -0
  118. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/localdp_mod.py +0 -0
  119. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  120. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  121. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  122. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/mod/utils.py +0 -0
  123. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/numpy_client.py +0 -0
  124. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/rest_client/__init__.py +0 -0
  125. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/rest_client/connection.py +0 -0
  126. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/run_info_store.py +0 -0
  127. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/client/typing.py +0 -0
  128. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/clientapp/__init__.py +0 -0
  129. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/__init__.py +0 -0
  130. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/address.py +0 -0
  131. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/args.py +0 -0
  132. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/auth_plugin/__init__.py +0 -0
  133. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  134. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/config.py +0 -0
  135. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/constant.py +0 -0
  136. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/context.py +0 -0
  137. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/date.py +0 -0
  138. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/differential_privacy.py +0 -0
  139. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/differential_privacy_constants.py +0 -0
  140. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/dp.py +0 -0
  141. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  142. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  143. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/exit/__init__.py +0 -0
  144. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/exit/exit.py +0 -0
  145. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/exit/exit_code.py +0 -0
  146. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/exit_handlers.py +0 -0
  147. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/grpc.py +0 -0
  148. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/heartbeat.py +0 -0
  149. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/inflatable.py +0 -0
  150. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  151. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/inflatable_utils.py +0 -0
  152. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/logger.py +0 -0
  153. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/message.py +0 -0
  154. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/object_ref.py +0 -0
  155. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/parameter.py +0 -0
  156. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/pyproject.py +0 -0
  157. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/__init__.py +0 -0
  158. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/array.py +0 -0
  159. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/arraychunk.py +0 -0
  160. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/arrayrecord.py +0 -0
  161. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/configrecord.py +0 -0
  162. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/conversion_utils.py +0 -0
  163. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/metricrecord.py +0 -0
  164. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/recorddict.py +0 -0
  165. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/record/typeddict.py +0 -0
  166. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/recorddict_compat.py +0 -0
  167. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/retry_invoker.py +0 -0
  168. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  169. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  170. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  171. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  172. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  173. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  174. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  175. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  176. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/serde.py +0 -0
  177. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/serde_utils.py +0 -0
  178. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/telemetry.py +0 -0
  179. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/typing.py +0 -0
  180. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/common/version.py +0 -0
  181. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/__init__.py +0 -0
  182. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/client/__init__.py +0 -0
  183. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/client/app.py +0 -0
  184. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  185. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  186. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/common/__init__.py +0 -0
  187. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/server/__init__.py +0 -0
  188. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/server/app.py +0 -0
  189. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/compat/simulation/__init__.py +0 -0
  190. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/__init__.py +0 -0
  191. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  192. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  193. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/control_pb2.py +0 -0
  194. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/control_pb2.pyi +0 -0
  195. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/control_pb2_grpc.py +0 -0
  196. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  197. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/error_pb2.py +0 -0
  198. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/error_pb2.pyi +0 -0
  199. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/error_pb2_grpc.py +0 -0
  200. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  201. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fab_pb2.py +0 -0
  202. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fab_pb2.pyi +0 -0
  203. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  204. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  205. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fleet_pb2.py +0 -0
  206. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fleet_pb2.pyi +0 -0
  207. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  210. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  211. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  212. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  213. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/heartbeat_pb2.py +0 -0
  214. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  215. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  216. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  217. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/log_pb2.py +0 -0
  218. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/log_pb2.pyi +0 -0
  219. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/log_pb2_grpc.py +0 -0
  220. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  221. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/message_pb2.py +0 -0
  222. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/message_pb2.pyi +0 -0
  223. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/message_pb2_grpc.py +0 -0
  224. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  225. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/node_pb2.py +0 -0
  226. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/node_pb2.pyi +0 -0
  227. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/node_pb2_grpc.py +0 -0
  228. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  229. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/recorddict_pb2.py +0 -0
  230. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  231. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  232. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  233. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/run_pb2.py +0 -0
  234. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/run_pb2.pyi +0 -0
  235. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/run_pb2_grpc.py +0 -0
  236. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  237. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  238. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/simulationio_pb2.py +0 -0
  239. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  240. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  241. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  242. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/transport_pb2.py +0 -0
  243. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/transport_pb2.pyi +0 -0
  244. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  245. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  246. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/py.typed +0 -0
  247. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/__init__.py +0 -0
  248. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/app.py +0 -0
  249. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/client_manager.py +0 -0
  250. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/client_proxy.py +0 -0
  251. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/compat/__init__.py +0 -0
  252. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/compat/app.py +0 -0
  253. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/compat/app_utils.py +0 -0
  254. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  255. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/compat/legacy_context.py +0 -0
  256. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/criterion.py +0 -0
  257. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  258. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/grid/__init__.py +0 -0
  259. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/grid/grid.py +0 -0
  260. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/grid/grpc_grid.py +0 -0
  261. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/grid/inmemory_grid.py +0 -0
  262. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/history.py +0 -0
  263. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/run_serverapp.py +0 -0
  264. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/server.py +0 -0
  265. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/server_app.py +0 -0
  266. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/server_config.py +0 -0
  267. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/serverapp/__init__.py +0 -0
  268. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/serverapp/app.py +0 -0
  269. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/serverapp_components.py +0 -0
  270. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/__init__.py +0 -0
  271. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/aggregate.py +0 -0
  272. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/bulyan.py +0 -0
  273. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  274. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  275. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  276. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  277. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  278. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedadagrad.py +0 -0
  279. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedadam.py +0 -0
  280. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedavg.py +0 -0
  281. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedavg_android.py +0 -0
  282. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedavgm.py +0 -0
  283. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedmedian.py +0 -0
  284. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedopt.py +0 -0
  285. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedprox.py +0 -0
  286. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  287. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  288. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  289. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  290. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/fedyogi.py +0 -0
  291. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/krum.py +0 -0
  292. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/qfedavg.py +0 -0
  293. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/strategy/strategy.py +0 -0
  294. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/__init__.py +0 -0
  295. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  296. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  297. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  298. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  299. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  300. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  301. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  302. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  303. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  304. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  305. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  306. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  307. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  308. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  309. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  310. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  311. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  312. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  313. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  314. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  315. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  316. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  317. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  318. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  319. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  320. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  321. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  322. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  323. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/superlink/utils.py +0 -0
  324. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/typing.py +0 -0
  325. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/utils/__init__.py +0 -0
  326. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/utils/tensorboard.py +0 -0
  327. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/utils/validator.py +0 -0
  328. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/__init__.py +0 -0
  329. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/constant.py +0 -0
  330. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/default_workflows.py +0 -0
  331. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  332. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  333. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  334. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/serverapp/__init__.py +0 -0
  335. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/__init__.py +0 -0
  336. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/app.py +0 -0
  337. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/legacy_app.py +0 -0
  338. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  339. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  340. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  341. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/ray_transport/utils.py +0 -0
  342. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/run_simulation.py +0 -0
  343. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/simulation/simulationio_connection.py +0 -0
  344. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/__init__.py +0 -0
  345. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/ffs/__init__.py +0 -0
  346. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
  347. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/ffs/ffs.py +0 -0
  348. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  349. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  350. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  351. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  352. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  353. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/object_store/__init__.py +0 -0
  354. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  355. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/object_store/object_store.py +0 -0
  356. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
  357. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/object_store/utils.py +0 -0
  358. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/scheduler/__init__.py +0 -0
  359. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/scheduler/plugin.py +0 -0
  360. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supercore/utils.py +0 -0
  361. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superexec/__init__.py +0 -0
  362. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superexec/deployment.py +0 -0
  363. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superexec/simulation.py +0 -0
  364. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/__init__.py +0 -0
  365. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/executor/__init__.py +0 -0
  366. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/executor/app.py +0 -0
  367. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/executor/deployment.py +0 -0
  368. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/executor/executor.py +0 -0
  369. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/executor/simulation.py +0 -0
  370. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/__init__.py +0 -0
  371. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/__init__.py +0 -0
  372. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
  373. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
  374. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
  375. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
  376. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/superlink/servicer/control/control_user_auth_interceptor.py +0 -0
  377. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/__init__.py +0 -0
  378. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/cli/__init__.py +0 -0
  379. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/cli/flower_supernode.py +0 -0
  380. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  381. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/nodestate/__init__.py +0 -0
  382. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  383. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  384. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/runtime/__init__.py +0 -0
  385. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/scheduler/__init__.py +0 -0
  386. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py +0 -0
  387. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/servicer/__init__.py +0 -0
  388. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  389. {flwr_nightly-1.21.0.dev20250805 → flwr_nightly-1.21.0.dev20250806}/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.21.0.dev20250805
3
+ Version: 1.21.0.dev20250806
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
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/appio.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 message_pb2 as flwr_dot_proto_dot_message__pb2
16
+ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
17
+ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/appio.proto\x12\nflwr.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\"\x19\n\x17ListAppsToLaunchRequest\"+\n\x18ListAppsToLaunchResponse\x12\x0f\n\x07run_ids\x18\x01 \x03(\x04\"%\n\x13RequestTokenRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"%\n\x14RequestTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\"\x99\x01\n\x16PushAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\x12\x34\n\x14message_object_trees\x18\x04 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"G\n\x17PushAppMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x17\n\x0fobjects_to_push\x18\x02 \x03(\t\"L\n\x16PullAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\"{\n\x17PullAppMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x02 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"%\n\x14PullAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\"y\n\x15PullAppInputsResponse\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\"\\\n\x15PushAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"\x18\n\x16PushAppOutputsResponseb\x06proto3')
21
+
22
+ _globals = globals()
23
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
24
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.appio_pb2', _globals)
25
+ if _descriptor._USE_C_DESCRIPTORS == False:
26
+ DESCRIPTOR._options = None
27
+ _globals['_LISTAPPSTOLAUNCHREQUEST']._serialized_start=108
28
+ _globals['_LISTAPPSTOLAUNCHREQUEST']._serialized_end=133
29
+ _globals['_LISTAPPSTOLAUNCHRESPONSE']._serialized_start=135
30
+ _globals['_LISTAPPSTOLAUNCHRESPONSE']._serialized_end=178
31
+ _globals['_REQUESTTOKENREQUEST']._serialized_start=180
32
+ _globals['_REQUESTTOKENREQUEST']._serialized_end=217
33
+ _globals['_REQUESTTOKENRESPONSE']._serialized_start=219
34
+ _globals['_REQUESTTOKENRESPONSE']._serialized_end=256
35
+ _globals['_PUSHAPPMESSAGESREQUEST']._serialized_start=259
36
+ _globals['_PUSHAPPMESSAGESREQUEST']._serialized_end=412
37
+ _globals['_PUSHAPPMESSAGESRESPONSE']._serialized_start=414
38
+ _globals['_PUSHAPPMESSAGESRESPONSE']._serialized_end=485
39
+ _globals['_PULLAPPMESSAGESREQUEST']._serialized_start=487
40
+ _globals['_PULLAPPMESSAGESREQUEST']._serialized_end=563
41
+ _globals['_PULLAPPMESSAGESRESPONSE']._serialized_start=565
42
+ _globals['_PULLAPPMESSAGESRESPONSE']._serialized_end=688
43
+ _globals['_PULLAPPINPUTSREQUEST']._serialized_start=690
44
+ _globals['_PULLAPPINPUTSREQUEST']._serialized_end=727
45
+ _globals['_PULLAPPINPUTSRESPONSE']._serialized_start=729
46
+ _globals['_PULLAPPINPUTSRESPONSE']._serialized_end=850
47
+ _globals['_PUSHAPPOUTPUTSREQUEST']._serialized_start=852
48
+ _globals['_PUSHAPPOUTPUTSREQUEST']._serialized_end=944
49
+ _globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_start=946
50
+ _globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_end=970
51
+ # @@protoc_insertion_point(module_scope)
@@ -14,12 +14,56 @@ import typing_extensions
14
14
 
15
15
  DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
16
16
 
17
- class PushAppMessagesRequest(google.protobuf.message.Message):
17
+ class ListAppsToLaunchRequest(google.protobuf.message.Message):
18
18
  """These messages are used by both ServerAppIo and ClientAppIo services
19
19
 
20
- PushAppMessages messages
20
+ ListAppsToLaunch messages
21
21
  """
22
22
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
23
+ def __init__(self,
24
+ ) -> None: ...
25
+ global___ListAppsToLaunchRequest = ListAppsToLaunchRequest
26
+
27
+ class ListAppsToLaunchResponse(google.protobuf.message.Message):
28
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
29
+ RUN_IDS_FIELD_NUMBER: builtins.int
30
+ @property
31
+ def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
32
+ """List of run IDs of the apps to launch"""
33
+ pass
34
+ def __init__(self,
35
+ *,
36
+ run_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
37
+ ) -> None: ...
38
+ def ClearField(self, field_name: typing_extensions.Literal["run_ids",b"run_ids"]) -> None: ...
39
+ global___ListAppsToLaunchResponse = ListAppsToLaunchResponse
40
+
41
+ class RequestTokenRequest(google.protobuf.message.Message):
42
+ """RequestToken messages"""
43
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
44
+ RUN_ID_FIELD_NUMBER: builtins.int
45
+ run_id: builtins.int
46
+ def __init__(self,
47
+ *,
48
+ run_id: builtins.int = ...,
49
+ ) -> None: ...
50
+ def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
51
+ global___RequestTokenRequest = RequestTokenRequest
52
+
53
+ class RequestTokenResponse(google.protobuf.message.Message):
54
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
55
+ TOKEN_FIELD_NUMBER: builtins.int
56
+ token: typing.Text
57
+ def __init__(self,
58
+ *,
59
+ token: typing.Text = ...,
60
+ ) -> None: ...
61
+ def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
62
+ global___RequestTokenResponse = RequestTokenResponse
63
+
64
+ class PushAppMessagesRequest(google.protobuf.message.Message):
65
+ """PushAppMessages messages"""
66
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
23
67
  TOKEN_FIELD_NUMBER: builtins.int
24
68
  MESSAGES_LIST_FIELD_NUMBER: builtins.int
25
69
  RUN_ID_FIELD_NUMBER: builtins.int
@@ -0,0 +1,30 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/clientappio.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 run_pb2 as flwr_dot_proto_dot_run__pb2
17
+ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
18
+ from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
19
+
20
+
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\x8a\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
22
+
23
+ _globals = globals()
24
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
25
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals)
26
+ if _descriptor._USE_C_DESCRIPTORS == False:
27
+ DESCRIPTOR._options = None
28
+ _globals['_CLIENTAPPIO']._serialized_start=139
29
+ _globals['_CLIENTAPPIO']._serialized_end=1045
30
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,7 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import google.protobuf.descriptor
6
+
7
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
@@ -3,7 +3,6 @@
3
3
  import grpc
4
4
 
5
5
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
6
- from flwr.proto import clientappio_pb2 as flwr_dot_proto_dot_clientappio__pb2
7
6
  from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
8
7
  from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
9
8
 
@@ -17,15 +16,15 @@ class ClientAppIoStub(object):
17
16
  Args:
18
17
  channel: A grpc.Channel.
19
18
  """
20
- self.GetRunIdsWithPendingMessages = channel.unary_unary(
21
- '/flwr.proto.ClientAppIo/GetRunIdsWithPendingMessages',
22
- request_serializer=flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesRequest.SerializeToString,
23
- response_deserializer=flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesResponse.FromString,
19
+ self.ListAppsToLaunch = channel.unary_unary(
20
+ '/flwr.proto.ClientAppIo/ListAppsToLaunch',
21
+ request_serializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
22
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
24
23
  )
25
24
  self.RequestToken = channel.unary_unary(
26
25
  '/flwr.proto.ClientAppIo/RequestToken',
27
- request_serializer=flwr_dot_proto_dot_clientappio__pb2.RequestTokenRequest.SerializeToString,
28
- response_deserializer=flwr_dot_proto_dot_clientappio__pb2.RequestTokenResponse.FromString,
26
+ request_serializer=flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
27
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
29
28
  )
30
29
  self.GetRun = channel.unary_unary(
31
30
  '/flwr.proto.ClientAppIo/GetRun',
@@ -72,7 +71,7 @@ class ClientAppIoStub(object):
72
71
  class ClientAppIoServicer(object):
73
72
  """Missing associated documentation comment in .proto file."""
74
73
 
75
- def GetRunIdsWithPendingMessages(self, request, context):
74
+ def ListAppsToLaunch(self, request, context):
76
75
  """Get run IDs with pending messages
77
76
  """
78
77
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -145,15 +144,15 @@ class ClientAppIoServicer(object):
145
144
 
146
145
  def add_ClientAppIoServicer_to_server(servicer, server):
147
146
  rpc_method_handlers = {
148
- 'GetRunIdsWithPendingMessages': grpc.unary_unary_rpc_method_handler(
149
- servicer.GetRunIdsWithPendingMessages,
150
- request_deserializer=flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesRequest.FromString,
151
- response_serializer=flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesResponse.SerializeToString,
147
+ 'ListAppsToLaunch': grpc.unary_unary_rpc_method_handler(
148
+ servicer.ListAppsToLaunch,
149
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.FromString,
150
+ response_serializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.SerializeToString,
152
151
  ),
153
152
  'RequestToken': grpc.unary_unary_rpc_method_handler(
154
153
  servicer.RequestToken,
155
- request_deserializer=flwr_dot_proto_dot_clientappio__pb2.RequestTokenRequest.FromString,
156
- response_serializer=flwr_dot_proto_dot_clientappio__pb2.RequestTokenResponse.SerializeToString,
154
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.FromString,
155
+ response_serializer=flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.SerializeToString,
157
156
  ),
158
157
  'GetRun': grpc.unary_unary_rpc_method_handler(
159
158
  servicer.GetRun,
@@ -206,7 +205,7 @@ class ClientAppIo(object):
206
205
  """Missing associated documentation comment in .proto file."""
207
206
 
208
207
  @staticmethod
209
- def GetRunIdsWithPendingMessages(request,
208
+ def ListAppsToLaunch(request,
210
209
  target,
211
210
  options=(),
212
211
  channel_credentials=None,
@@ -216,9 +215,9 @@ class ClientAppIo(object):
216
215
  wait_for_ready=None,
217
216
  timeout=None,
218
217
  metadata=None):
219
- return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/GetRunIdsWithPendingMessages',
220
- flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesRequest.SerializeToString,
221
- flwr_dot_proto_dot_clientappio__pb2.GetRunIdsWithPendingMessagesResponse.FromString,
218
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/ListAppsToLaunch',
219
+ flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
220
+ flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
222
221
  options, channel_credentials,
223
222
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
224
223
 
@@ -234,8 +233,8 @@ class ClientAppIo(object):
234
233
  timeout=None,
235
234
  metadata=None):
236
235
  return grpc.experimental.unary_unary(request, target, '/flwr.proto.ClientAppIo/RequestToken',
237
- flwr_dot_proto_dot_clientappio__pb2.RequestTokenRequest.SerializeToString,
238
- flwr_dot_proto_dot_clientappio__pb2.RequestTokenResponse.FromString,
236
+ flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
237
+ flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
239
238
  options, channel_credentials,
240
239
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
241
240
 
@@ -4,21 +4,20 @@ isort:skip_file
4
4
  """
5
5
  import abc
6
6
  import flwr.proto.appio_pb2
7
- import flwr.proto.clientappio_pb2
8
7
  import flwr.proto.message_pb2
9
8
  import flwr.proto.run_pb2
10
9
  import grpc
11
10
 
12
11
  class ClientAppIoStub:
13
12
  def __init__(self, channel: grpc.Channel) -> None: ...
14
- GetRunIdsWithPendingMessages: grpc.UnaryUnaryMultiCallable[
15
- flwr.proto.clientappio_pb2.GetRunIdsWithPendingMessagesRequest,
16
- flwr.proto.clientappio_pb2.GetRunIdsWithPendingMessagesResponse]
13
+ ListAppsToLaunch: grpc.UnaryUnaryMultiCallable[
14
+ flwr.proto.appio_pb2.ListAppsToLaunchRequest,
15
+ flwr.proto.appio_pb2.ListAppsToLaunchResponse]
17
16
  """Get run IDs with pending messages"""
18
17
 
19
18
  RequestToken: grpc.UnaryUnaryMultiCallable[
20
- flwr.proto.clientappio_pb2.RequestTokenRequest,
21
- flwr.proto.clientappio_pb2.RequestTokenResponse]
19
+ flwr.proto.appio_pb2.RequestTokenRequest,
20
+ flwr.proto.appio_pb2.RequestTokenResponse]
22
21
  """Request token"""
23
22
 
24
23
  GetRun: grpc.UnaryUnaryMultiCallable[
@@ -64,18 +63,18 @@ class ClientAppIoStub:
64
63
 
65
64
  class ClientAppIoServicer(metaclass=abc.ABCMeta):
66
65
  @abc.abstractmethod
67
- def GetRunIdsWithPendingMessages(self,
68
- request: flwr.proto.clientappio_pb2.GetRunIdsWithPendingMessagesRequest,
66
+ def ListAppsToLaunch(self,
67
+ request: flwr.proto.appio_pb2.ListAppsToLaunchRequest,
69
68
  context: grpc.ServicerContext,
70
- ) -> flwr.proto.clientappio_pb2.GetRunIdsWithPendingMessagesResponse:
69
+ ) -> flwr.proto.appio_pb2.ListAppsToLaunchResponse:
71
70
  """Get run IDs with pending messages"""
72
71
  pass
73
72
 
74
73
  @abc.abstractmethod
75
74
  def RequestToken(self,
76
- request: flwr.proto.clientappio_pb2.RequestTokenRequest,
75
+ request: flwr.proto.appio_pb2.RequestTokenRequest,
77
76
  context: grpc.ServicerContext,
78
- ) -> flwr.proto.clientappio_pb2.RequestTokenResponse:
77
+ ) -> flwr.proto.appio_pb2.RequestTokenResponse:
79
78
  """Request token"""
80
79
  pass
81
80
 
@@ -21,7 +21,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
21
21
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
22
22
 
23
23
 
24
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x16\x66lwr/proto/appio.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.Node2\xb3\t\n\x0bServerAppIo\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\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\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\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\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
24
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x16\x66lwr/proto/appio.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.Node2\xe9\n\n\x0bServerAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\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\x12V\n\rPullAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12Y\n\x0ePushAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\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\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
25
25
 
26
26
  _globals = globals()
27
27
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -33,5 +33,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
33
33
  _globals['_GETNODESRESPONSE']._serialized_start=246
34
34
  _globals['_GETNODESRESPONSE']._serialized_end=297
35
35
  _globals['_SERVERAPPIO']._serialized_start=300
36
- _globals['_SERVERAPPIO']._serialized_end=1503
36
+ _globals['_SERVERAPPIO']._serialized_end=1685
37
37
  # @@protoc_insertion_point(module_scope)
@@ -20,6 +20,16 @@ class ServerAppIoStub(object):
20
20
  Args:
21
21
  channel: A grpc.Channel.
22
22
  """
23
+ self.ListAppsToLaunch = channel.unary_unary(
24
+ '/flwr.proto.ServerAppIo/ListAppsToLaunch',
25
+ request_serializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
26
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
27
+ )
28
+ self.RequestToken = channel.unary_unary(
29
+ '/flwr.proto.ServerAppIo/RequestToken',
30
+ request_serializer=flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
31
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
32
+ )
23
33
  self.GetNodes = channel.unary_unary(
24
34
  '/flwr.proto.ServerAppIo/GetNodes',
25
35
  request_serializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.SerializeToString,
@@ -95,6 +105,20 @@ class ServerAppIoStub(object):
95
105
  class ServerAppIoServicer(object):
96
106
  """Missing associated documentation comment in .proto file."""
97
107
 
108
+ def ListAppsToLaunch(self, request, context):
109
+ """List runs to launch
110
+ """
111
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
112
+ context.set_details('Method not implemented!')
113
+ raise NotImplementedError('Method not implemented!')
114
+
115
+ def RequestToken(self, request, context):
116
+ """Request token for a run
117
+ """
118
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
119
+ context.set_details('Method not implemented!')
120
+ raise NotImplementedError('Method not implemented!')
121
+
98
122
  def GetNodes(self, request, context):
99
123
  """Return a set of nodes
100
124
  """
@@ -196,6 +220,16 @@ class ServerAppIoServicer(object):
196
220
 
197
221
  def add_ServerAppIoServicer_to_server(servicer, server):
198
222
  rpc_method_handlers = {
223
+ 'ListAppsToLaunch': grpc.unary_unary_rpc_method_handler(
224
+ servicer.ListAppsToLaunch,
225
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.FromString,
226
+ response_serializer=flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.SerializeToString,
227
+ ),
228
+ 'RequestToken': grpc.unary_unary_rpc_method_handler(
229
+ servicer.RequestToken,
230
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.FromString,
231
+ response_serializer=flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.SerializeToString,
232
+ ),
199
233
  'GetNodes': grpc.unary_unary_rpc_method_handler(
200
234
  servicer.GetNodes,
201
235
  request_deserializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.FromString,
@@ -276,6 +310,40 @@ def add_ServerAppIoServicer_to_server(servicer, server):
276
310
  class ServerAppIo(object):
277
311
  """Missing associated documentation comment in .proto file."""
278
312
 
313
+ @staticmethod
314
+ def ListAppsToLaunch(request,
315
+ target,
316
+ options=(),
317
+ channel_credentials=None,
318
+ call_credentials=None,
319
+ insecure=False,
320
+ compression=None,
321
+ wait_for_ready=None,
322
+ timeout=None,
323
+ metadata=None):
324
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/ListAppsToLaunch',
325
+ flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchRequest.SerializeToString,
326
+ flwr_dot_proto_dot_appio__pb2.ListAppsToLaunchResponse.FromString,
327
+ options, channel_credentials,
328
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
329
+
330
+ @staticmethod
331
+ def RequestToken(request,
332
+ target,
333
+ options=(),
334
+ channel_credentials=None,
335
+ call_credentials=None,
336
+ insecure=False,
337
+ compression=None,
338
+ wait_for_ready=None,
339
+ timeout=None,
340
+ metadata=None):
341
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/RequestToken',
342
+ flwr_dot_proto_dot_appio__pb2.RequestTokenRequest.SerializeToString,
343
+ flwr_dot_proto_dot_appio__pb2.RequestTokenResponse.FromString,
344
+ options, channel_credentials,
345
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
346
+
279
347
  @staticmethod
280
348
  def GetNodes(request,
281
349
  target,
@@ -14,6 +14,16 @@ import grpc
14
14
 
15
15
  class ServerAppIoStub:
16
16
  def __init__(self, channel: grpc.Channel) -> None: ...
17
+ ListAppsToLaunch: grpc.UnaryUnaryMultiCallable[
18
+ flwr.proto.appio_pb2.ListAppsToLaunchRequest,
19
+ flwr.proto.appio_pb2.ListAppsToLaunchResponse]
20
+ """List runs to launch"""
21
+
22
+ RequestToken: grpc.UnaryUnaryMultiCallable[
23
+ flwr.proto.appio_pb2.RequestTokenRequest,
24
+ flwr.proto.appio_pb2.RequestTokenResponse]
25
+ """Request token for a run"""
26
+
17
27
  GetNodes: grpc.UnaryUnaryMultiCallable[
18
28
  flwr.proto.serverappio_pb2.GetNodesRequest,
19
29
  flwr.proto.serverappio_pb2.GetNodesResponse]
@@ -86,6 +96,22 @@ class ServerAppIoStub:
86
96
 
87
97
 
88
98
  class ServerAppIoServicer(metaclass=abc.ABCMeta):
99
+ @abc.abstractmethod
100
+ def ListAppsToLaunch(self,
101
+ request: flwr.proto.appio_pb2.ListAppsToLaunchRequest,
102
+ context: grpc.ServicerContext,
103
+ ) -> flwr.proto.appio_pb2.ListAppsToLaunchResponse:
104
+ """List runs to launch"""
105
+ pass
106
+
107
+ @abc.abstractmethod
108
+ def RequestToken(self,
109
+ request: flwr.proto.appio_pb2.RequestTokenRequest,
110
+ context: grpc.ServicerContext,
111
+ ) -> flwr.proto.appio_pb2.RequestTokenResponse:
112
+ """Request token for a run"""
113
+ pass
114
+
89
115
  @abc.abstractmethod
90
116
  def GetNodes(self,
91
117
  request: flwr.proto.serverappio_pb2.GetNodesRequest,
@@ -15,6 +15,7 @@
15
15
  """In-memory LinkState implementation."""
16
16
 
17
17
 
18
+ import secrets
18
19
  import threading
19
20
  import time
20
21
  from bisect import bisect_right
@@ -25,6 +26,7 @@ from typing import Optional
25
26
 
26
27
  from flwr.common import Context, Message, log, now
27
28
  from flwr.common.constant import (
29
+ FLWR_APP_TOKEN_LENGTH,
28
30
  HEARTBEAT_MAX_INTERVAL,
29
31
  HEARTBEAT_PATIENCE,
30
32
  MESSAGE_TTL_TOLERANCE,
@@ -80,6 +82,11 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
80
82
  self.message_res_store: dict[str, Message] = {}
81
83
  self.message_ins_id_to_message_res_id: dict[str, str] = {}
82
84
 
85
+ # Store run ID to token mapping and token to run ID mapping
86
+ self.token_store: dict[int, str] = {}
87
+ self.token_to_run_id: dict[str, int] = {}
88
+ self.lock_token_store = threading.Lock()
89
+
83
90
  # Map flwr_aid to run_ids for O(1) reverse index lookup
84
91
  self.flwr_aid_to_run_ids: dict[str, set[int]] = defaultdict(set)
85
92
 
@@ -678,3 +685,30 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
678
685
  index = bisect_right(run.logs, (after_timestamp, ""))
679
686
  latest_timestamp = run.logs[-1][0] if index < len(run.logs) else 0.0
680
687
  return "".join(log for _, log in run.logs[index:]), latest_timestamp
688
+
689
+ def create_token(self, run_id: int) -> str:
690
+ """Create a token for the given run ID."""
691
+ token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
692
+ with self.lock_token_store:
693
+ if run_id in self.token_store:
694
+ raise ValueError("Token already created for this run ID")
695
+ self.token_store[run_id] = token
696
+ self.token_to_run_id[token] = run_id
697
+ return token
698
+
699
+ def verify_token(self, run_id: int, token: str) -> bool:
700
+ """Verify a token for the given run ID."""
701
+ with self.lock_token_store:
702
+ return self.token_store.get(run_id) == token
703
+
704
+ def delete_token(self, run_id: int) -> None:
705
+ """Delete the token for the given run ID."""
706
+ with self.lock_token_store:
707
+ token = self.token_store.pop(run_id, None)
708
+ if token is not None:
709
+ self.token_to_run_id.pop(token, None)
710
+
711
+ def get_run_id_by_token(self, token: str) -> Optional[int]:
712
+ """Get the run ID associated with a given token."""
713
+ with self.lock_token_store:
714
+ return self.token_to_run_id.get(token)
@@ -21,9 +21,10 @@ from typing import Optional
21
21
  from flwr.common import Context, Message
22
22
  from flwr.common.record import ConfigRecord
23
23
  from flwr.common.typing import Run, RunStatus, UserConfig
24
+ from flwr.supercore.corestate import CoreState
24
25
 
25
26
 
26
- class LinkState(abc.ABC): # pylint: disable=R0904
27
+ class LinkState(CoreState): # pylint: disable=R0904
27
28
  """Abstract LinkState."""
28
29
 
29
30
  @abc.abstractmethod
@@ -19,6 +19,7 @@
19
19
 
20
20
  import json
21
21
  import re
22
+ import secrets
22
23
  import sqlite3
23
24
  import time
24
25
  from collections.abc import Sequence
@@ -27,6 +28,7 @@ from typing import Any, Optional, Union, cast
27
28
 
28
29
  from flwr.common import Context, Message, Metadata, log, now
29
30
  from flwr.common.constant import (
31
+ FLWR_APP_TOKEN_LENGTH,
30
32
  HEARTBEAT_MAX_INTERVAL,
31
33
  HEARTBEAT_PATIENCE,
32
34
  MESSAGE_TTL_TOLERANCE,
@@ -163,6 +165,13 @@ CREATE TABLE IF NOT EXISTS message_res(
163
165
  );
164
166
  """
165
167
 
168
+ SQL_CREATE_TABLE_TOKEN_STORE = """
169
+ CREATE TABLE IF NOT EXISTS token_store (
170
+ run_id INTEGER PRIMARY KEY,
171
+ token TEXT UNIQUE NOT NULL
172
+ );
173
+ """
174
+
166
175
  DictOrTuple = Union[tuple[Any, ...], dict[str, Any]]
167
176
 
168
177
 
@@ -212,6 +221,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
212
221
  cur.execute(SQL_CREATE_TABLE_MESSAGE_RES)
213
222
  cur.execute(SQL_CREATE_TABLE_NODE)
214
223
  cur.execute(SQL_CREATE_TABLE_PUBLIC_KEY)
224
+ cur.execute(SQL_CREATE_TABLE_TOKEN_STORE)
215
225
  cur.execute(SQL_CREATE_INDEX_ONLINE_UNTIL)
216
226
  res = cur.execute("SELECT name FROM sqlite_schema;")
217
227
  return res.fetchall()
@@ -1138,6 +1148,41 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
1138
1148
 
1139
1149
  return message_ins
1140
1150
 
1151
+ def create_token(self, run_id: int) -> str:
1152
+ """Create a token for the given run ID."""
1153
+ token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
1154
+ query = "INSERT INTO token_store (run_id, token) VALUES (:run_id, :token);"
1155
+ data = {"run_id": convert_uint64_to_sint64(run_id), "token": token}
1156
+ try:
1157
+ self.query(query, data)
1158
+ except sqlite3.IntegrityError:
1159
+ raise ValueError("Token already created for this run ID") from None
1160
+ return token
1161
+
1162
+ def verify_token(self, run_id: int, token: str) -> bool:
1163
+ """Verify a token for the given run ID."""
1164
+ query = "SELECT token FROM token_store WHERE run_id = :run_id;"
1165
+ data = {"run_id": convert_uint64_to_sint64(run_id)}
1166
+ rows = self.query(query, data)
1167
+ if not rows:
1168
+ return False
1169
+ return cast(str, rows[0]["token"]) == token
1170
+
1171
+ def delete_token(self, run_id: int) -> None:
1172
+ """Delete the token for the given run ID."""
1173
+ query = "DELETE FROM token_store WHERE run_id = :run_id;"
1174
+ data = {"run_id": convert_uint64_to_sint64(run_id)}
1175
+ self.query(query, data)
1176
+
1177
+ def get_run_id_by_token(self, token: str) -> Optional[int]:
1178
+ """Get the run ID associated with a given token."""
1179
+ query = "SELECT run_id FROM token_store WHERE token = :token;"
1180
+ data = {"token": token}
1181
+ rows = self.query(query, data)
1182
+ if not rows:
1183
+ return None
1184
+ return convert_sint64_to_uint64(rows[0]["run_id"])
1185
+
1141
1186
 
1142
1187
  def dict_factory(
1143
1188
  cursor: sqlite3.Cursor,