flwr-nightly 1.12.0.dev20240923__tar.gz → 1.12.0.dev20240926__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 (307) hide show
  1. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/PKG-INFO +2 -1
  2. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/README.md +1 -0
  3. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/pyproject.toml +18 -10
  4. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/log.py +57 -19
  5. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +1 -1
  6. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/run/run.py +17 -1
  7. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_rere_client/connection.py +3 -3
  8. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/rest_client/connection.py +3 -3
  9. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +4 -4
  10. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/serde.py +32 -10
  11. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fab_pb2.py +8 -7
  12. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fab_pb2.pyi +7 -1
  13. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fleet_pb2.py +10 -10
  14. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fleet_pb2.pyi +6 -1
  15. flwr_nightly-1.12.0.dev20240926/src/py/flwr/proto/recordset_pb2.py +70 -0
  16. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/recordset_pb2.pyi +38 -16
  17. flwr_nightly-1.12.0.dev20240926/src/py/flwr/proto/run_pb2.py +59 -0
  18. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/run_pb2.pyi +13 -2
  19. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/transport_pb2.py +8 -8
  20. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/transport_pb2.pyi +9 -6
  21. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/in_memory_state.py +17 -0
  22. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/sqlite_state.py +39 -1
  23. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/utils/validator.py +6 -0
  24. flwr_nightly-1.12.0.dev20240923/src/py/flwr/proto/recordset_pb2.py +0 -68
  25. flwr_nightly-1.12.0.dev20240923/src/py/flwr/proto/run_pb2.py +0 -58
  26. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/LICENSE +0 -0
  27. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/__init__.py +0 -0
  28. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/__init__.py +0 -0
  29. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/app.py +0 -0
  30. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/build.py +0 -0
  31. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/config_utils.py +0 -0
  32. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/example.py +0 -0
  33. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/install.py +0 -0
  34. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/__init__.py +0 -0
  35. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/new.py +0 -0
  36. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  37. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  38. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  39. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  40. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  41. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  42. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  43. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  44. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  45. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  46. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  47. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  48. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  49. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  50. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  51. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  52. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  53. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  54. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  55. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  56. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  57. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  58. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  59. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  60. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  61. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  62. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  63. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  64. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  65. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  66. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  67. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  68. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  69. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  70. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  71. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  72. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  73. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  74. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  75. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  76. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  77. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  78. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  79. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  80. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  81. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  82. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  83. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  84. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  85. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/run/__init__.py +0 -0
  86. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/cli/utils.py +0 -0
  87. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/__init__.py +0 -0
  88. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/app.py +0 -0
  89. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/client.py +0 -0
  90. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/client_app.py +0 -0
  91. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/clientapp/__init__.py +0 -0
  92. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/clientapp/app.py +0 -0
  93. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  94. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/clientapp/utils.py +0 -0
  95. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  96. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  97. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  98. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  99. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_client/connection.py +0 -0
  100. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  101. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  102. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  103. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/heartbeat.py +0 -0
  104. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/message_handler/__init__.py +0 -0
  105. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  106. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  107. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/__init__.py +0 -0
  108. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  109. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/comms_mods.py +0 -0
  110. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  111. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  112. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  113. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  114. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/mod/utils.py +0 -0
  115. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/node_state.py +0 -0
  116. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/node_state_tests.py +0 -0
  117. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/numpy_client.py +0 -0
  118. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/rest_client/__init__.py +0 -0
  119. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/supernode/__init__.py +0 -0
  120. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/supernode/app.py +0 -0
  121. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/client/typing.py +0 -0
  122. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/__init__.py +0 -0
  123. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/address.py +0 -0
  124. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/config.py +0 -0
  125. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/constant.py +0 -0
  126. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/context.py +0 -0
  127. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/date.py +0 -0
  128. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/differential_privacy.py +0 -0
  129. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  130. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/dp.py +0 -0
  131. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/exit_handlers.py +0 -0
  132. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/grpc.py +0 -0
  133. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/logger.py +0 -0
  134. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/message.py +0 -0
  135. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/object_ref.py +0 -0
  136. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/parameter.py +0 -0
  137. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/pyproject.py +0 -0
  138. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/__init__.py +0 -0
  139. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/configsrecord.py +0 -0
  140. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/conversion_utils.py +0 -0
  141. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/metricsrecord.py +0 -0
  142. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/parametersrecord.py +0 -0
  143. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/recordset.py +0 -0
  144. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/record/typeddict.py +0 -0
  145. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/recordset_compat.py +0 -0
  146. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/retry_invoker.py +0 -0
  147. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  148. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  149. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  150. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  151. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  152. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  153. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  154. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/telemetry.py +0 -0
  155. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/typing.py +0 -0
  156. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/common/version.py +0 -0
  157. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/__init__.py +0 -0
  158. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  159. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  160. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  161. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  162. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/common_pb2.py +0 -0
  163. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/common_pb2.pyi +0 -0
  164. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  165. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  166. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/control_pb2.py +0 -0
  167. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/control_pb2.pyi +0 -0
  168. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/control_pb2_grpc.py +0 -0
  169. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  170. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/driver_pb2.py +0 -0
  171. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  172. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  173. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  174. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/error_pb2.py +0 -0
  175. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/error_pb2.pyi +0 -0
  176. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  177. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  178. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/exec_pb2.py +0 -0
  179. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  180. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  181. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  182. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  183. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  184. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  185. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  186. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  187. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  188. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  189. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  190. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/message_pb2.py +0 -0
  191. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/message_pb2.pyi +0 -0
  192. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  193. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  194. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/node_pb2.py +0 -0
  195. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/node_pb2.pyi +0 -0
  196. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  199. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  200. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/task_pb2.py +0 -0
  203. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/task_pb2.pyi +0 -0
  204. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  207. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  208. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/py.typed +0 -0
  209. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/__init__.py +0 -0
  210. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/app.py +0 -0
  211. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/client_manager.py +0 -0
  212. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/client_proxy.py +0 -0
  213. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/compat/__init__.py +0 -0
  214. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/compat/app.py +0 -0
  215. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/compat/app_utils.py +0 -0
  216. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  217. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/compat/legacy_context.py +0 -0
  218. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/criterion.py +0 -0
  219. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/driver/__init__.py +0 -0
  220. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/driver/driver.py +0 -0
  221. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  222. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  223. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/history.py +0 -0
  224. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/run_serverapp.py +0 -0
  225. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/server.py +0 -0
  226. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/server_app.py +0 -0
  227. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/server_config.py +0 -0
  228. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/serverapp_components.py +0 -0
  229. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/__init__.py +0 -0
  230. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/aggregate.py +0 -0
  231. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/bulyan.py +0 -0
  232. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  233. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  234. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  235. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  236. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  237. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  238. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedadam.py +0 -0
  239. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedavg.py +0 -0
  240. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  241. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  242. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  243. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedopt.py +0 -0
  244. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedprox.py +0 -0
  245. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  246. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  247. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  248. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  249. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  250. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/krum.py +0 -0
  251. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  252. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/strategy/strategy.py +0 -0
  253. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/__init__.py +0 -0
  254. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  255. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  256. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  257. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  258. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  259. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  260. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  261. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  262. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  263. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  264. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  265. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  266. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  267. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  268. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  269. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  270. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  271. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  272. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  273. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  274. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  275. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  276. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  277. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  278. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  279. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  280. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  281. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  282. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/state.py +0 -0
  283. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  284. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/superlink/state/utils.py +0 -0
  285. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/typing.py +0 -0
  286. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/utils/__init__.py +0 -0
  287. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/utils/tensorboard.py +0 -0
  288. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/__init__.py +0 -0
  289. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/constant.py +0 -0
  290. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  291. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  292. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  293. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  294. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/__init__.py +0 -0
  295. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/app.py +0 -0
  296. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  297. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  298. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  299. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  300. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/simulation/run_simulation.py +0 -0
  301. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/__init__.py +0 -0
  302. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/app.py +0 -0
  303. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/deployment.py +0 -0
  304. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/exec_grpc.py +0 -0
  305. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/exec_servicer.py +0 -0
  306. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/executor.py +0 -0
  307. {flwr_nightly-1.12.0.dev20240923 → flwr_nightly-1.12.0.dev20240926}/src/py/flwr/superexec/simulation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.12.0.dev20240923
3
+ Version: 1.12.0.dev20240926
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -69,6 +69,7 @@ Description-Content-Type: text/markdown
69
69
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/adap/flower/blob/main/CONTRIBUTING.md)
70
70
  ![Build](https://github.com/adap/flower/actions/workflows/framework.yml/badge.svg)
71
71
  [![Downloads](https://static.pepy.tech/badge/flwr)](https://pepy.tech/project/flwr)
72
+ [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-flwr-blue)](https://hub.docker.com/u/flwr)
72
73
  [![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.ai/join-slack)
73
74
 
74
75
  Flower (`flwr`) is a framework for building federated learning systems. The
@@ -18,6 +18,7 @@
18
18
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/adap/flower/blob/main/CONTRIBUTING.md)
19
19
  ![Build](https://github.com/adap/flower/actions/workflows/framework.yml/badge.svg)
20
20
  [![Downloads](https://static.pepy.tech/badge/flwr)](https://pepy.tech/project/flwr)
21
+ [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-flwr-blue)](https://hub.docker.com/u/flwr)
21
22
  [![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.ai/join-slack)
22
23
 
23
24
  Flower (`flwr`) is a framework for building federated learning systems. The
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.12.0.dev20240923"
7
+ version = "1.12.0.dev20240926"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -109,25 +109,24 @@ mypy-protobuf = "==3.2.0"
109
109
  jupyterlab = "==4.0.12"
110
110
  rope = "==1.11.0"
111
111
  semver = "==3.0.2"
112
- sphinx = "==6.2.1"
112
+ sphinx = "==7.4.7"
113
113
  sphinx-intl = "==2.2.0"
114
- sphinx-click = "==5.1.0"
115
- myst-parser = "==1.0.0"
116
- sphinx-design = "==0.5.0"
114
+ sphinx-click = "==6.0.0"
115
+ myst-parser = "==3.0.1"
116
+ sphinx-design = "==0.6.1"
117
117
  sphinx-copybutton = "==0.5.2"
118
118
  sphinxcontrib-mermaid = "==0.9.2"
119
119
  sphinxcontrib-youtube = "==1.4.1"
120
- furo = "==2023.9.10"
121
- sphinx-reredirects = "==0.1.3"
122
- nbsphinx = "==0.9.4"
120
+ furo = "==2024.8.6"
121
+ sphinx-reredirects = "==0.1.5"
122
+ nbsphinx = "==0.9.5"
123
123
  nbstripout = "==0.6.1"
124
124
  ruff = "==0.1.9"
125
125
  sphinx-argparse = "==0.4.0"
126
126
  pipreqs = "==0.4.13"
127
- mdformat-gfm = "==0.3.5"
127
+ mdformat-gfm = "==0.3.6"
128
128
  mdformat-frontmatter = "==2.0.1"
129
129
  mdformat-beautysh = "==0.1.1"
130
- mdformat-myst = "==0.1.5"
131
130
  twine = "==5.1.1"
132
131
  pyroma = "==4.2"
133
132
  check-wheel-contents = "==0.4.0"
@@ -137,6 +136,15 @@ licensecheck = "==2024"
137
136
  pre-commit = "==3.5.0"
138
137
  sphinx-substitution-extensions = "2022.02.16"
139
138
  sphinxext-opengraph = "==0.9.1"
139
+ docstrfmt = { git = "https://github.com/charlesbvll/docstrfmt.git", branch = "patch-1" }
140
+
141
+ [tool.docstrfmt]
142
+ extend_exclude = [
143
+ "doc/source/conf.py",
144
+ "doc/source/tutorial-quickstart-huggingface.rst",
145
+ "doc/source/_templates/autosummary/*",
146
+ "doc/source/ref-api/*",
147
+ ]
140
148
 
141
149
  [tool.isort]
142
150
  profile = "black"
@@ -26,18 +26,71 @@ import typer
26
26
  from flwr.cli.config_utils import load_and_validate
27
27
  from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel
28
28
  from flwr.common.logger import log as logger
29
+ from flwr.proto.exec_pb2 import StreamLogsRequest # pylint: disable=E0611
30
+ from flwr.proto.exec_pb2_grpc import ExecStub
29
31
 
30
32
  CONN_REFRESH_PERIOD = 60 # Connection refresh period for log streaming (seconds)
31
33
 
32
34
 
33
- # pylint: disable=unused-argument
34
- def stream_logs(run_id: int, channel: grpc.Channel, period: int) -> None:
35
+ def start_stream(
36
+ run_id: int, channel: grpc.Channel, refresh_period: int = CONN_REFRESH_PERIOD
37
+ ) -> None:
38
+ """Start log streaming for a given run ID."""
39
+ try:
40
+ while True:
41
+ logger(INFO, "Starting logstream for run_id `%s`", run_id)
42
+ stream_logs(run_id, channel, refresh_period)
43
+ time.sleep(2)
44
+ logger(DEBUG, "Reconnecting to logstream")
45
+ except KeyboardInterrupt:
46
+ logger(INFO, "Exiting logstream")
47
+ except grpc.RpcError as e:
48
+ # pylint: disable=E1101
49
+ if e.code() == grpc.StatusCode.NOT_FOUND:
50
+ logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
51
+ if e.code() == grpc.StatusCode.CANCELLED:
52
+ pass
53
+ finally:
54
+ channel.close()
55
+
56
+
57
+ def stream_logs(run_id: int, channel: grpc.Channel, duration: int) -> None:
35
58
  """Stream logs from the beginning of a run with connection refresh."""
59
+ start_time = time.time()
60
+ stub = ExecStub(channel)
61
+ req = StreamLogsRequest(run_id=run_id)
62
+
63
+ for res in stub.StreamLogs(req):
64
+ print(res.log_output)
65
+ if time.time() - start_time > duration:
66
+ break
36
67
 
37
68
 
38
- # pylint: disable=unused-argument
39
69
  def print_logs(run_id: int, channel: grpc.Channel, timeout: int) -> None:
40
70
  """Print logs from the beginning of a run."""
71
+ stub = ExecStub(channel)
72
+ req = StreamLogsRequest(run_id=run_id)
73
+
74
+ try:
75
+ while True:
76
+ try:
77
+ # Enforce timeout for graceful exit
78
+ for res in stub.StreamLogs(req, timeout=timeout):
79
+ print(res.log_output)
80
+ except grpc.RpcError as e:
81
+ # pylint: disable=E1101
82
+ if e.code() == grpc.StatusCode.DEADLINE_EXCEEDED:
83
+ break
84
+ if e.code() == grpc.StatusCode.NOT_FOUND:
85
+ logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
86
+ break
87
+ if e.code() == grpc.StatusCode.CANCELLED:
88
+ break
89
+ except KeyboardInterrupt:
90
+ logger(DEBUG, "Stream interrupted by user")
91
+ finally:
92
+ channel.close()
93
+ logger(DEBUG, "Channel closed")
41
94
 
42
95
 
43
96
  def on_channel_state_change(channel_connectivity: str) -> None:
@@ -175,22 +228,7 @@ def _log_with_superexec(
175
228
  channel.subscribe(on_channel_state_change)
176
229
 
177
230
  if stream:
178
- try:
179
- while True:
180
- logger(INFO, "Starting logstream for run_id `%s`", run_id)
181
- stream_logs(run_id, channel, CONN_REFRESH_PERIOD)
182
- time.sleep(2)
183
- logger(DEBUG, "Reconnecting to logstream")
184
- except KeyboardInterrupt:
185
- logger(INFO, "Exiting logstream")
186
- except grpc.RpcError as e:
187
- # pylint: disable=E1101
188
- if e.code() == grpc.StatusCode.NOT_FOUND:
189
- logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
190
- if e.code() == grpc.StatusCode.CANCELLED:
191
- pass
192
- finally:
193
- channel.close()
231
+ start_stream(run_id, channel, CONN_REFRESH_PERIOD)
194
232
  else:
195
233
  logger(INFO, "Printing logstream for run_id `%s`", run_id)
196
234
  print_logs(run_id, channel, timeout=5)
@@ -55,7 +55,7 @@ We use Mistral-7B model with 4-bit quantization as default. The estimated VRAM c
55
55
  | :--------: | :--------: | :--------: | :--------: | :--------: |
56
56
  | VRAM | ~25.50 GB | ~17.30 GB | ~22.80 GB | ~17.40 GB |
57
57
 
58
- You can adjust the CPU/GPU resources you assign to each of the clients based on your device, which are specified with `options.backend.clientapp-cpus` and `options.backend.clientapp-gpus` under `[tool.flwr.federations.local-simulation]` entry in `pyproject.toml`.
58
+ You can adjust the CPU/GPU resources you assign to each of the clients based on your device, which are specified with `options.backend.client-resources.num-cpus` and `options.backend.client-resources.num-gpus` under `[tool.flwr.federations.local-simulation]` entry in `pyproject.toml`.
59
59
 
60
60
 
61
61
  ## Model saving
@@ -34,6 +34,10 @@ from flwr.common.typing import Fab
34
34
  from flwr.proto.exec_pb2 import StartRunRequest # pylint: disable=E0611
35
35
  from flwr.proto.exec_pb2_grpc import ExecStub
36
36
 
37
+ from ..log import start_stream
38
+
39
+ CONN_REFRESH_PERIOD = 60 # Connection refresh period for log streaming (seconds)
40
+
37
41
 
38
42
  def on_channel_state_change(channel_connectivity: str) -> None:
39
43
  """Log channel connectivity."""
@@ -62,6 +66,14 @@ def run(
62
66
  "inside the `pyproject.toml` in order to be properly overriden.",
63
67
  ),
64
68
  ] = None,
69
+ stream: Annotated[
70
+ bool,
71
+ typer.Option(
72
+ "--stream",
73
+ help="Use `--stream` with `flwr run` to display logs;\n "
74
+ "logs are not streamed by default.",
75
+ ),
76
+ ] = False,
65
77
  ) -> None:
66
78
  """Run Flower App."""
67
79
  typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
@@ -117,7 +129,7 @@ def run(
117
129
  raise typer.Exit(code=1)
118
130
 
119
131
  if "address" in federation_config:
120
- _run_with_superexec(app, federation_config, config_overrides)
132
+ _run_with_superexec(app, federation_config, config_overrides, stream)
121
133
  else:
122
134
  _run_without_superexec(app, federation_config, config_overrides, federation)
123
135
 
@@ -126,6 +138,7 @@ def _run_with_superexec(
126
138
  app: Path,
127
139
  federation_config: dict[str, Any],
128
140
  config_overrides: Optional[list[str]],
141
+ stream: bool,
129
142
  ) -> None:
130
143
 
131
144
  insecure_str = federation_config.get("insecure")
@@ -183,6 +196,9 @@ def _run_with_superexec(
183
196
  fab_path.unlink()
184
197
  typer.secho(f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN)
185
198
 
199
+ if stream:
200
+ start_stream(res.run_id, channel, CONN_REFRESH_PERIOD)
201
+
186
202
 
187
203
  def _run_without_superexec(
188
204
  app: Optional[Path],
@@ -269,7 +269,7 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
269
269
  task_res = message_to_taskres(message)
270
270
 
271
271
  # Serialize ProtoBuf to bytes
272
- request = PushTaskResRequest(task_res_list=[task_res])
272
+ request = PushTaskResRequest(node=node, task_res_list=[task_res])
273
273
  _ = retry_invoker.invoke(stub.PushTaskRes, request)
274
274
 
275
275
  # Cleanup
@@ -277,7 +277,7 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
277
277
 
278
278
  def get_run(run_id: int) -> Run:
279
279
  # Call FleetAPI
280
- get_run_request = GetRunRequest(run_id=run_id)
280
+ get_run_request = GetRunRequest(node=node, run_id=run_id)
281
281
  get_run_response: GetRunResponse = retry_invoker.invoke(
282
282
  stub.GetRun,
283
283
  request=get_run_request,
@@ -294,7 +294,7 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
294
294
 
295
295
  def get_fab(fab_hash: str) -> Fab:
296
296
  # Call FleetAPI
297
- get_fab_request = GetFabRequest(hash_str=fab_hash)
297
+ get_fab_request = GetFabRequest(node=node, hash_str=fab_hash)
298
298
  get_fab_response: GetFabResponse = retry_invoker.invoke(
299
299
  stub.GetFab,
300
300
  request=get_fab_request,
@@ -340,7 +340,7 @@ def http_request_response( # pylint: disable=,R0913, R0914, R0915
340
340
  task_res = message_to_taskres(message)
341
341
 
342
342
  # Serialize ProtoBuf to bytes
343
- req = PushTaskResRequest(task_res_list=[task_res])
343
+ req = PushTaskResRequest(node=node, task_res_list=[task_res])
344
344
 
345
345
  # Send the request
346
346
  res = _request(req, PushTaskResResponse, PATH_PUSH_TASK_RES)
@@ -356,7 +356,7 @@ def http_request_response( # pylint: disable=,R0913, R0914, R0915
356
356
 
357
357
  def get_run(run_id: int) -> Run:
358
358
  # Construct the request
359
- req = GetRunRequest(run_id=run_id)
359
+ req = GetRunRequest(node=node, run_id=run_id)
360
360
 
361
361
  # Send the request
362
362
  res = _request(req, GetRunResponse, PATH_GET_RUN)
@@ -373,7 +373,7 @@ def http_request_response( # pylint: disable=,R0913, R0914, R0915
373
373
 
374
374
  def get_fab(fab_hash: str) -> Fab:
375
375
  # Construct the request
376
- req = GetFabRequest(hash_str=fab_hash)
376
+ req = GetFabRequest(node=node, hash_str=fab_hash)
377
377
 
378
378
  # Send the request
379
379
  res = _request(req, GetFabResponse, PATH_GET_FAB)
@@ -43,8 +43,8 @@ def share_keys_plaintext_concat(
43
43
  """
44
44
  return b"".join(
45
45
  [
46
- int.to_bytes(src_node_id, 8, "little", signed=True),
47
- int.to_bytes(dst_node_id, 8, "little", signed=True),
46
+ int.to_bytes(src_node_id, 8, "little", signed=False),
47
+ int.to_bytes(dst_node_id, 8, "little", signed=False),
48
48
  int.to_bytes(len(b_share), 4, "little"),
49
49
  b_share,
50
50
  sk_share,
@@ -72,8 +72,8 @@ def share_keys_plaintext_separate(plaintext: bytes) -> tuple[int, int, bytes, by
72
72
  the secret key share of the source sent to the destination.
73
73
  """
74
74
  src, dst, mark = (
75
- int.from_bytes(plaintext[:8], "little", signed=True),
76
- int.from_bytes(plaintext[8:16], "little", signed=True),
75
+ int.from_bytes(plaintext[:8], "little", signed=False),
76
+ int.from_bytes(plaintext[8:16], "little", signed=False),
77
77
  int.from_bytes(plaintext[16:20], "little"),
78
78
  )
79
79
  ret = (src, dst, plaintext[20 : 20 + mark], plaintext[20 + mark :])
@@ -33,12 +33,12 @@ from flwr.proto.recordset_pb2 import Array as ProtoArray
33
33
  from flwr.proto.recordset_pb2 import BoolList, BytesList
34
34
  from flwr.proto.recordset_pb2 import ConfigsRecord as ProtoConfigsRecord
35
35
  from flwr.proto.recordset_pb2 import ConfigsRecordValue as ProtoConfigsRecordValue
36
- from flwr.proto.recordset_pb2 import DoubleList
36
+ from flwr.proto.recordset_pb2 import DoubleList, Int, IntList
37
37
  from flwr.proto.recordset_pb2 import MetricsRecord as ProtoMetricsRecord
38
38
  from flwr.proto.recordset_pb2 import MetricsRecordValue as ProtoMetricsRecordValue
39
39
  from flwr.proto.recordset_pb2 import ParametersRecord as ProtoParametersRecord
40
40
  from flwr.proto.recordset_pb2 import RecordSet as ProtoRecordSet
41
- from flwr.proto.recordset_pb2 import Sint64List, StringList
41
+ from flwr.proto.recordset_pb2 import StringList
42
42
  from flwr.proto.run_pb2 import Run as ProtoRun
43
43
  from flwr.proto.task_pb2 import Task, TaskIns, TaskRes
44
44
  from flwr.proto.transport_pb2 import (
@@ -354,7 +354,9 @@ def scalar_to_proto(scalar: typing.Scalar) -> Scalar:
354
354
  return Scalar(double=scalar)
355
355
 
356
356
  if isinstance(scalar, int):
357
- return Scalar(sint64=scalar)
357
+ if scalar >= 0:
358
+ return Scalar(uint64=scalar) # Use uint64 for non-negative integers
359
+ return Scalar(sint64=scalar) # Use sint64 for negative integers
358
360
 
359
361
  if isinstance(scalar, str):
360
362
  return Scalar(string=scalar)
@@ -374,16 +376,16 @@ def scalar_from_proto(scalar_msg: Scalar) -> typing.Scalar:
374
376
  # === Record messages ===
375
377
 
376
378
 
377
- _type_to_field = {
379
+ _type_to_field: dict[type, str] = {
378
380
  float: "double",
379
- int: "sint64",
381
+ int: "int",
380
382
  bool: "bool",
381
383
  str: "string",
382
384
  bytes: "bytes",
383
385
  }
384
- _list_type_to_class_and_field = {
386
+ _list_type_to_class_and_field: dict[type, tuple[type[GrpcMessage], str]] = {
385
387
  float: (DoubleList, "double_list"),
386
- int: (Sint64List, "sint64_list"),
388
+ int: (IntList, "int_list"),
387
389
  bool: (BoolList, "bool_list"),
388
390
  str: (StringList, "string_list"),
389
391
  bytes: (BytesList, "bytes_list"),
@@ -391,6 +393,19 @@ _list_type_to_class_and_field = {
391
393
  T = TypeVar("T")
392
394
 
393
395
 
396
+ def int_to_proto(value: int) -> Int:
397
+ """Serialize a int to `Int`."""
398
+ if value >= 0:
399
+ return Int(uint64=value)
400
+ return Int(sint64=value)
401
+
402
+
403
+ def int_from_proto(value_proto: Int) -> int:
404
+ """Deserialize a int from `Int`."""
405
+ fld = cast(str, value_proto.WhichOneof("int"))
406
+ return cast(int, getattr(value_proto, fld))
407
+
408
+
394
409
  def _record_value_to_proto(
395
410
  value: Any, allowed_types: list[type], proto_class: type[T]
396
411
  ) -> T:
@@ -403,12 +418,17 @@ def _record_value_to_proto(
403
418
  # Single element
404
419
  # Note: `isinstance(False, int) == True`.
405
420
  if isinstance(value, t):
406
- arg[_type_to_field[t]] = value
421
+ fld = _type_to_field[t]
422
+ if t is int:
423
+ fld = "uint64" if cast(int, value) >= 0 else "sint64"
424
+ arg[fld] = value
407
425
  return proto_class(**arg)
408
426
  # List
409
427
  if isinstance(value, list) and all(isinstance(item, t) for item in value):
410
- list_class, field_name = _list_type_to_class_and_field[t]
411
- arg[field_name] = list_class(vals=value)
428
+ list_class, fld = _list_type_to_class_and_field[t]
429
+ if t is int:
430
+ value = [int_to_proto(v) for v in value]
431
+ arg[fld] = list_class(vals=value)
412
432
  return proto_class(**arg)
413
433
  # Invalid types
414
434
  raise TypeError(
@@ -422,6 +442,8 @@ def _record_value_from_proto(value_proto: GrpcMessage) -> Any:
422
442
  value_field = cast(str, value_proto.WhichOneof("value"))
423
443
  if value_field.endswith("list"):
424
444
  value = list(getattr(value_proto, value_field).vals)
445
+ if value_field == "int_list":
446
+ value = [int_from_proto(v) for v in value]
425
447
  else:
426
448
  value = getattr(value_proto, value_field)
427
449
  return value
@@ -12,19 +12,20 @@ from google.protobuf.internal import builder as _builder
12
12
  _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
+ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
15
16
 
16
17
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\"(\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"!\n\rGetFabRequest\x12\x10\n\x08hash_str\x18\x01 \x01(\t\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"(\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"A\n\rGetFabRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08hash_str\x18\x02 \x01(\t\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
18
19
 
19
20
  _globals = globals()
20
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fab_pb2', _globals)
22
23
  if _descriptor._USE_C_DESCRIPTORS == False:
23
24
  DESCRIPTOR._options = None
24
- _globals['_FAB']._serialized_start=36
25
- _globals['_FAB']._serialized_end=76
26
- _globals['_GETFABREQUEST']._serialized_start=78
27
- _globals['_GETFABREQUEST']._serialized_end=111
28
- _globals['_GETFABRESPONSE']._serialized_start=113
29
- _globals['_GETFABRESPONSE']._serialized_end=159
25
+ _globals['_FAB']._serialized_start=59
26
+ _globals['_FAB']._serialized_end=99
27
+ _globals['_GETFABREQUEST']._serialized_start=101
28
+ _globals['_GETFABREQUEST']._serialized_end=166
29
+ _globals['_GETFABRESPONSE']._serialized_start=168
30
+ _globals['_GETFABRESPONSE']._serialized_end=214
30
31
  # @@protoc_insertion_point(module_scope)
@@ -3,6 +3,7 @@
3
3
  isort:skip_file
4
4
  """
5
5
  import builtins
6
+ import flwr.proto.node_pb2
6
7
  import google.protobuf.descriptor
7
8
  import google.protobuf.message
8
9
  import typing
@@ -33,13 +34,18 @@ global___Fab = Fab
33
34
 
34
35
  class GetFabRequest(google.protobuf.message.Message):
35
36
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
37
+ NODE_FIELD_NUMBER: builtins.int
36
38
  HASH_STR_FIELD_NUMBER: builtins.int
39
+ @property
40
+ def node(self) -> flwr.proto.node_pb2.Node: ...
37
41
  hash_str: typing.Text
38
42
  def __init__(self,
39
43
  *,
44
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
40
45
  hash_str: typing.Text = ...,
41
46
  ) -> None: ...
42
- def ClearField(self, field_name: typing_extensions.Literal["hash_str",b"hash_str"]) -> None: ...
47
+ def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
48
+ def ClearField(self, field_name: typing_extensions.Literal["hash_str",b"hash_str","node",b"node"]) -> None: ...
43
49
  global___GetFabRequest = GetFabRequest
44
50
 
45
51
  class GetFabResponse(google.protobuf.message.Message):
@@ -18,7 +18,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
18
18
  from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"*\n\x11\x43reateNodeRequest\x12\x15\n\rping_interval\x18\x01 \x01(\x01\"4\n\x12\x43reateNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"3\n\x11\x44\x65leteNodeRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"\x14\n\x12\x44\x65leteNodeResponse\"D\n\x0bPingRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x15\n\rping_interval\x18\x02 \x01(\x01\"\x1f\n\x0cPingResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"F\n\x12PullTaskInsRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"k\n\x13PullTaskInsResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rtask_ins_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"@\n\x12PushTaskResRequest\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes\"\xae\x01\n\x13PushTaskResResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12=\n\x07results\x18\x02 \x03(\x0b\x32,.flwr.proto.PushTaskResResponse.ResultsEntry\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\x8c\x04\n\x05\x46leet\x12M\n\nCreateNode\x12\x1d.flwr.proto.CreateNodeRequest\x1a\x1e.flwr.proto.CreateNodeResponse\"\x00\x12M\n\nDeleteNode\x12\x1d.flwr.proto.DeleteNodeRequest\x1a\x1e.flwr.proto.DeleteNodeResponse\"\x00\x12;\n\x04Ping\x12\x17.flwr.proto.PingRequest\x1a\x18.flwr.proto.PingResponse\"\x00\x12P\n\x0bPullTaskIns\x12\x1e.flwr.proto.PullTaskInsRequest\x1a\x1f.flwr.proto.PullTaskInsResponse\"\x00\x12P\n\x0bPushTaskRes\x12\x1e.flwr.proto.PushTaskResRequest\x1a\x1f.flwr.proto.PushTaskResResponse\"\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\x62\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"*\n\x11\x43reateNodeRequest\x12\x15\n\rping_interval\x18\x01 \x01(\x01\"4\n\x12\x43reateNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"3\n\x11\x44\x65leteNodeRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"\x14\n\x12\x44\x65leteNodeResponse\"D\n\x0bPingRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x15\n\rping_interval\x18\x02 \x01(\x01\"\x1f\n\x0cPingResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"F\n\x12PullTaskInsRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"k\n\x13PullTaskInsResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rtask_ins_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"`\n\x12PushTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rtask_res_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.TaskRes\"\xae\x01\n\x13PushTaskResResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12=\n\x07results\x18\x02 \x03(\x0b\x32,.flwr.proto.PushTaskResResponse.ResultsEntry\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\x8c\x04\n\x05\x46leet\x12M\n\nCreateNode\x12\x1d.flwr.proto.CreateNodeRequest\x1a\x1e.flwr.proto.CreateNodeResponse\"\x00\x12M\n\nDeleteNode\x12\x1d.flwr.proto.DeleteNodeRequest\x1a\x1e.flwr.proto.DeleteNodeResponse\"\x00\x12;\n\x04Ping\x12\x17.flwr.proto.PingRequest\x1a\x18.flwr.proto.PingResponse\"\x00\x12P\n\x0bPullTaskIns\x12\x1e.flwr.proto.PullTaskInsRequest\x1a\x1f.flwr.proto.PullTaskInsResponse\"\x00\x12P\n\x0bPushTaskRes\x12\x1e.flwr.proto.PushTaskResRequest\x1a\x1f.flwr.proto.PushTaskResResponse\"\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\x62\x06proto3')
22
22
 
23
23
  _globals = globals()
24
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -44,13 +44,13 @@ if _descriptor._USE_C_DESCRIPTORS == False:
44
44
  _globals['_PULLTASKINSRESPONSE']._serialized_start=476
45
45
  _globals['_PULLTASKINSRESPONSE']._serialized_end=583
46
46
  _globals['_PUSHTASKRESREQUEST']._serialized_start=585
47
- _globals['_PUSHTASKRESREQUEST']._serialized_end=649
48
- _globals['_PUSHTASKRESRESPONSE']._serialized_start=652
49
- _globals['_PUSHTASKRESRESPONSE']._serialized_end=826
50
- _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._serialized_start=780
51
- _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._serialized_end=826
52
- _globals['_RECONNECT']._serialized_start=828
53
- _globals['_RECONNECT']._serialized_end=858
54
- _globals['_FLEET']._serialized_start=861
55
- _globals['_FLEET']._serialized_end=1385
47
+ _globals['_PUSHTASKRESREQUEST']._serialized_end=681
48
+ _globals['_PUSHTASKRESRESPONSE']._serialized_start=684
49
+ _globals['_PUSHTASKRESRESPONSE']._serialized_end=858
50
+ _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._serialized_start=812
51
+ _globals['_PUSHTASKRESRESPONSE_RESULTSENTRY']._serialized_end=858
52
+ _globals['_RECONNECT']._serialized_start=860
53
+ _globals['_RECONNECT']._serialized_end=890
54
+ _globals['_FLEET']._serialized_start=893
55
+ _globals['_FLEET']._serialized_end=1417
56
56
  # @@protoc_insertion_point(module_scope)
@@ -124,14 +124,19 @@ global___PullTaskInsResponse = PullTaskInsResponse
124
124
  class PushTaskResRequest(google.protobuf.message.Message):
125
125
  """PushTaskRes messages"""
126
126
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
127
+ NODE_FIELD_NUMBER: builtins.int
127
128
  TASK_RES_LIST_FIELD_NUMBER: builtins.int
128
129
  @property
130
+ def node(self) -> flwr.proto.node_pb2.Node: ...
131
+ @property
129
132
  def task_res_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskRes]: ...
130
133
  def __init__(self,
131
134
  *,
135
+ node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
132
136
  task_res_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskRes]] = ...,
133
137
  ) -> None: ...
134
- def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ...
138
+ def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
139
+ def ClearField(self, field_name: typing_extensions.Literal["node",b"node","task_res_list",b"task_res_list"]) -> None: ...
135
140
  global___PushTaskResRequest = PushTaskResRequest
136
141
 
137
142
  class PushTaskResResponse(google.protobuf.message.Message):
@@ -0,0 +1,70 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/recordset.proto
4
+ # Protobuf Python Version: 4.25.0
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1a\x66lwr/proto/recordset.proto\x12\nflwr.proto\"0\n\x03Int\x12\x10\n\x06sint64\x18\x01 \x01(\x12H\x00\x12\x10\n\x06uint64\x18\x02 \x01(\x04H\x00\x42\x05\n\x03int\"\x1a\n\nDoubleList\x12\x0c\n\x04vals\x18\x01 \x03(\x01\"(\n\x07IntList\x12\x1d\n\x04vals\x18\x01 \x03(\x0b\x32\x0f.flwr.proto.Int\"\x18\n\x08\x42oolList\x12\x0c\n\x04vals\x18\x01 \x03(\x08\"\x1a\n\nStringList\x12\x0c\n\x04vals\x18\x01 \x03(\t\"\x19\n\tBytesList\x12\x0c\n\x04vals\x18\x01 \x03(\x0c\"B\n\x05\x41rray\x12\r\n\x05\x64type\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x03(\x05\x12\r\n\x05stype\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"\xab\x01\n\x12MetricsRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x10\n\x06uint64\x18\x03 \x01(\x04H\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12\'\n\x08int_list\x18\x16 \x01(\x0b\x32\x13.flwr.proto.IntListH\x00\x42\x07\n\x05value\"\xe5\x02\n\x12\x43onfigsRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x10\n\x06uint64\x18\x03 \x01(\x04H\x00\x12\x0e\n\x04\x62ool\x18\x04 \x01(\x08H\x00\x12\x10\n\x06string\x18\x05 \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x06 \x01(\x0cH\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12\'\n\x08int_list\x18\x16 \x01(\x0b\x32\x13.flwr.proto.IntListH\x00\x12)\n\tbool_list\x18\x18 \x01(\x0b\x32\x14.flwr.proto.BoolListH\x00\x12-\n\x0bstring_list\x18\x19 \x01(\x0b\x32\x16.flwr.proto.StringListH\x00\x12+\n\nbytes_list\x18\x1a \x01(\x0b\x32\x15.flwr.proto.BytesListH\x00\x42\x07\n\x05value\"M\n\x10ParametersRecord\x12\x11\n\tdata_keys\x18\x01 \x03(\t\x12&\n\x0b\x64\x61ta_values\x18\x02 \x03(\x0b\x32\x11.flwr.proto.Array\"\x8f\x01\n\rMetricsRecord\x12\x31\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32#.flwr.proto.MetricsRecord.DataEntry\x1aK\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flwr.proto.MetricsRecordValue:\x02\x38\x01\"\x8f\x01\n\rConfigsRecord\x12\x31\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32#.flwr.proto.ConfigsRecord.DataEntry\x1aK\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.flwr.proto.ConfigsRecordValue:\x02\x38\x01\"\x97\x03\n\tRecordSet\x12\x39\n\nparameters\x18\x01 \x03(\x0b\x32%.flwr.proto.RecordSet.ParametersEntry\x12\x33\n\x07metrics\x18\x02 \x03(\x0b\x32\".flwr.proto.RecordSet.MetricsEntry\x12\x33\n\x07\x63onfigs\x18\x03 \x03(\x0b\x32\".flwr.proto.RecordSet.ConfigsEntry\x1aO\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.flwr.proto.ParametersRecord:\x02\x38\x01\x1aI\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.flwr.proto.MetricsRecord:\x02\x38\x01\x1aI\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord:\x02\x38\x01\x62\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.recordset_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ DESCRIPTOR._options = None
24
+ _globals['_METRICSRECORD_DATAENTRY']._options = None
25
+ _globals['_METRICSRECORD_DATAENTRY']._serialized_options = b'8\001'
26
+ _globals['_CONFIGSRECORD_DATAENTRY']._options = None
27
+ _globals['_CONFIGSRECORD_DATAENTRY']._serialized_options = b'8\001'
28
+ _globals['_RECORDSET_PARAMETERSENTRY']._options = None
29
+ _globals['_RECORDSET_PARAMETERSENTRY']._serialized_options = b'8\001'
30
+ _globals['_RECORDSET_METRICSENTRY']._options = None
31
+ _globals['_RECORDSET_METRICSENTRY']._serialized_options = b'8\001'
32
+ _globals['_RECORDSET_CONFIGSENTRY']._options = None
33
+ _globals['_RECORDSET_CONFIGSENTRY']._serialized_options = b'8\001'
34
+ _globals['_INT']._serialized_start=42
35
+ _globals['_INT']._serialized_end=90
36
+ _globals['_DOUBLELIST']._serialized_start=92
37
+ _globals['_DOUBLELIST']._serialized_end=118
38
+ _globals['_INTLIST']._serialized_start=120
39
+ _globals['_INTLIST']._serialized_end=160
40
+ _globals['_BOOLLIST']._serialized_start=162
41
+ _globals['_BOOLLIST']._serialized_end=186
42
+ _globals['_STRINGLIST']._serialized_start=188
43
+ _globals['_STRINGLIST']._serialized_end=214
44
+ _globals['_BYTESLIST']._serialized_start=216
45
+ _globals['_BYTESLIST']._serialized_end=241
46
+ _globals['_ARRAY']._serialized_start=243
47
+ _globals['_ARRAY']._serialized_end=309
48
+ _globals['_METRICSRECORDVALUE']._serialized_start=312
49
+ _globals['_METRICSRECORDVALUE']._serialized_end=483
50
+ _globals['_CONFIGSRECORDVALUE']._serialized_start=486
51
+ _globals['_CONFIGSRECORDVALUE']._serialized_end=843
52
+ _globals['_PARAMETERSRECORD']._serialized_start=845
53
+ _globals['_PARAMETERSRECORD']._serialized_end=922
54
+ _globals['_METRICSRECORD']._serialized_start=925
55
+ _globals['_METRICSRECORD']._serialized_end=1068
56
+ _globals['_METRICSRECORD_DATAENTRY']._serialized_start=993
57
+ _globals['_METRICSRECORD_DATAENTRY']._serialized_end=1068
58
+ _globals['_CONFIGSRECORD']._serialized_start=1071
59
+ _globals['_CONFIGSRECORD']._serialized_end=1214
60
+ _globals['_CONFIGSRECORD_DATAENTRY']._serialized_start=1139
61
+ _globals['_CONFIGSRECORD_DATAENTRY']._serialized_end=1214
62
+ _globals['_RECORDSET']._serialized_start=1217
63
+ _globals['_RECORDSET']._serialized_end=1624
64
+ _globals['_RECORDSET_PARAMETERSENTRY']._serialized_start=1395
65
+ _globals['_RECORDSET_PARAMETERSENTRY']._serialized_end=1474
66
+ _globals['_RECORDSET_METRICSENTRY']._serialized_start=1476
67
+ _globals['_RECORDSET_METRICSENTRY']._serialized_end=1549
68
+ _globals['_RECORDSET_CONFIGSENTRY']._serialized_start=1551
69
+ _globals['_RECORDSET_CONFIGSENTRY']._serialized_end=1624
70
+ # @@protoc_insertion_point(module_scope)