flwr-nightly 1.9.0.dev20240501__tar.gz → 1.9.0.dev20240503__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 (218) hide show
  1. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/PKG-INFO +1 -1
  2. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/pyproject.toml +1 -1
  3. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/logger.py +11 -4
  4. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/app.py +13 -7
  5. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +19 -20
  6. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/in_memory_state.py +4 -4
  7. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/sqlite_state.py +9 -9
  8. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/state.py +3 -3
  9. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/run_simulation.py +4 -4
  10. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/LICENSE +0 -0
  11. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/README.md +0 -0
  12. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/__init__.py +0 -0
  13. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/__init__.py +0 -0
  14. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/app.py +0 -0
  15. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/build.py +0 -0
  16. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/config_utils.py +0 -0
  17. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/example.py +0 -0
  18. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/__init__.py +0 -0
  19. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/new.py +0 -0
  20. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  21. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  22. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  23. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  24. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  25. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  26. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  27. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  28. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  29. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  30. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  31. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  32. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  33. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  34. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  35. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  36. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  37. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  38. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  39. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  40. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/run/__init__.py +0 -0
  41. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/run/run.py +0 -0
  42. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/cli/utils.py +0 -0
  43. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/__init__.py +0 -0
  44. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/app.py +0 -0
  45. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/client.py +0 -0
  46. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/client_app.py +0 -0
  47. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  48. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  49. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/grpc_client/connection.py +0 -0
  50. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  51. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  52. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  53. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/heartbeat.py +0 -0
  54. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/message_handler/__init__.py +0 -0
  55. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  56. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  57. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/__init__.py +0 -0
  58. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  59. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/comms_mods.py +0 -0
  60. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  61. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  62. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  63. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  64. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/mod/utils.py +0 -0
  65. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/node_state.py +0 -0
  66. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/node_state_tests.py +0 -0
  67. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/numpy_client.py +0 -0
  68. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/rest_client/__init__.py +0 -0
  69. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/rest_client/connection.py +0 -0
  70. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/supernode/__init__.py +0 -0
  71. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/supernode/app.py +0 -0
  72. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/client/typing.py +0 -0
  73. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/__init__.py +0 -0
  74. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/address.py +0 -0
  75. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/constant.py +0 -0
  76. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/context.py +0 -0
  77. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/date.py +0 -0
  78. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/differential_privacy.py +0 -0
  79. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  80. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/dp.py +0 -0
  81. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/exit_handlers.py +0 -0
  82. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/grpc.py +0 -0
  83. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/message.py +0 -0
  84. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/object_ref.py +0 -0
  85. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/parameter.py +0 -0
  86. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/pyproject.py +0 -0
  87. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/__init__.py +0 -0
  88. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/configsrecord.py +0 -0
  89. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/conversion_utils.py +0 -0
  90. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/metricsrecord.py +0 -0
  91. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/parametersrecord.py +0 -0
  92. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/recordset.py +0 -0
  93. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/record/typeddict.py +0 -0
  94. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/recordset_compat.py +0 -0
  95. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/retry_invoker.py +0 -0
  96. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  97. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  98. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  99. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  100. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  101. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  102. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  103. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  104. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/serde.py +0 -0
  105. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/telemetry.py +0 -0
  106. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/typing.py +0 -0
  107. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/common/version.py +0 -0
  108. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/__init__.py +0 -0
  109. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/driver_pb2.py +0 -0
  110. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  111. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  112. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  113. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/error_pb2.py +0 -0
  114. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/error_pb2.pyi +0 -0
  115. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  116. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  117. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/fleet_pb2.py +0 -0
  118. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  119. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  120. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  121. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/node_pb2.py +0 -0
  122. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/node_pb2.pyi +0 -0
  123. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  124. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  125. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/recordset_pb2.py +0 -0
  126. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  127. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  128. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  129. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/task_pb2.py +0 -0
  130. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/task_pb2.pyi +0 -0
  131. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  132. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  133. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/transport_pb2.py +0 -0
  134. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  135. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  136. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  137. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/py.typed +0 -0
  138. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/__init__.py +0 -0
  139. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/client_manager.py +0 -0
  140. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/client_proxy.py +0 -0
  141. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/compat/__init__.py +0 -0
  142. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/compat/app.py +0 -0
  143. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/compat/app_utils.py +0 -0
  144. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  145. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/compat/legacy_context.py +0 -0
  146. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/criterion.py +0 -0
  147. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/driver/__init__.py +0 -0
  148. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/driver/driver.py +0 -0
  149. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  150. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/history.py +0 -0
  151. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/run_serverapp.py +0 -0
  152. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/server.py +0 -0
  153. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/server_app.py +0 -0
  154. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/server_config.py +0 -0
  155. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/__init__.py +0 -0
  156. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/aggregate.py +0 -0
  157. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/bulyan.py +0 -0
  158. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  159. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  160. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  161. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  162. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  163. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  164. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedadam.py +0 -0
  165. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedavg.py +0 -0
  166. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  167. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  168. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  169. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedopt.py +0 -0
  170. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedprox.py +0 -0
  171. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  172. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  173. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  174. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  175. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  176. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/krum.py +0 -0
  177. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  178. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/strategy/strategy.py +0 -0
  179. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/__init__.py +0 -0
  180. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  181. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  182. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  183. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  184. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  185. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  186. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  187. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  188. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  189. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  190. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  191. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  192. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  193. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  194. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  195. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  196. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  197. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  198. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  199. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  200. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  201. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  202. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/superlink/state/utils.py +0 -0
  203. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/typing.py +0 -0
  204. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/utils/__init__.py +0 -0
  205. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/utils/tensorboard.py +0 -0
  206. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/utils/validator.py +0 -0
  207. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/__init__.py +0 -0
  208. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/constant.py +0 -0
  209. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  210. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  211. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  212. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  213. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/__init__.py +0 -0
  214. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/app.py +0 -0
  215. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  216. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  217. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  218. {flwr_nightly-1.9.0.dev20240501 → flwr_nightly-1.9.0.dev20240503}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240501
3
+ Version: 1.9.0.dev20240503
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.9.0.dev20240501"
7
+ version = "1.9.0.dev20240503"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -82,13 +82,20 @@ class ConsoleHandler(StreamHandler):
82
82
  return formatter.format(record)
83
83
 
84
84
 
85
- def update_console_handler(level: int, timestamps: bool, colored: bool) -> None:
85
+ def update_console_handler(
86
+ level: Optional[int] = None,
87
+ timestamps: Optional[bool] = None,
88
+ colored: Optional[bool] = None,
89
+ ) -> None:
86
90
  """Update the logging handler."""
87
91
  for handler in logging.getLogger(LOGGER_NAME).handlers:
88
92
  if isinstance(handler, ConsoleHandler):
89
- handler.setLevel(level)
90
- handler.timestamps = timestamps
91
- handler.colored = colored
93
+ if level is not None:
94
+ handler.setLevel(level)
95
+ if timestamps is not None:
96
+ handler.timestamps = timestamps
97
+ if colored is not None:
98
+ handler.colored = colored
92
99
 
93
100
 
94
101
  # Configure console logger
@@ -43,6 +43,7 @@ from flwr.common.constant import (
43
43
  from flwr.common.exit_handlers import register_exit_handlers
44
44
  from flwr.common.logger import log
45
45
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
46
+ private_key_to_bytes,
46
47
  public_key_to_bytes,
47
48
  ssh_types_to_elliptic_curve,
48
49
  )
@@ -374,13 +375,18 @@ def run_superlink() -> None:
374
375
  server_private_key,
375
376
  server_public_key,
376
377
  ) = maybe_keys
377
- interceptors = [
378
- AuthenticateServerInterceptor(
379
- client_public_keys,
380
- server_private_key,
381
- server_public_key,
382
- )
383
- ]
378
+ state = state_factory.state()
379
+ state.store_client_public_keys(client_public_keys)
380
+ state.store_server_private_public_key(
381
+ private_key_to_bytes(server_private_key),
382
+ public_key_to_bytes(server_public_key),
383
+ )
384
+ log(
385
+ INFO,
386
+ "Client authentication enabled with %d known public keys",
387
+ len(client_public_keys),
388
+ )
389
+ interceptors = [AuthenticateServerInterceptor(state)]
384
390
 
385
391
  fleet_server = _run_fleet_api_grpc_rere(
386
392
  address=address,
@@ -16,17 +16,16 @@
16
16
 
17
17
 
18
18
  import base64
19
- from logging import INFO
20
- from typing import Any, Callable, Sequence, Set, Tuple, Union
19
+ from logging import WARNING
20
+ from typing import Any, Callable, Sequence, Tuple, Union
21
21
 
22
22
  import grpc
23
- from cryptography.hazmat.primitives.asymmetric import ec
24
23
 
25
24
  from flwr.common.logger import log
26
25
  from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
26
+ bytes_to_private_key,
27
27
  bytes_to_public_key,
28
28
  generate_shared_key,
29
- public_key_to_bytes,
30
29
  verify_hmac,
31
30
  )
32
31
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -43,6 +42,7 @@ from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
43
42
  PushTaskResRequest,
44
43
  PushTaskResResponse,
45
44
  )
45
+ from flwr.server.superlink.state import State
46
46
 
47
47
  _PUBLIC_KEY_HEADER = "public-key"
48
48
  _AUTH_TOKEN_HEADER = "auth-token"
@@ -79,22 +79,21 @@ def _get_value_from_tuples(
79
79
  class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
80
80
  """Server interceptor for client authentication."""
81
81
 
82
- def __init__(
83
- self,
84
- client_public_keys: Set[bytes],
85
- private_key: ec.EllipticCurvePrivateKey,
86
- public_key: ec.EllipticCurvePublicKey,
87
- ):
88
- self.server_private_key = private_key
89
- self.client_public_keys = client_public_keys
90
- self.encoded_server_public_key = base64.urlsafe_b64encode(
91
- public_key_to_bytes(public_key)
92
- )
93
- log(
94
- INFO,
95
- "Client authentication enabled with %d known public keys",
96
- len(client_public_keys),
97
- )
82
+ def __init__(self, state: State):
83
+ self.state = state
84
+
85
+ self.client_public_keys = state.get_client_public_keys()
86
+ if len(self.client_public_keys) == 0:
87
+ log(WARNING, "Authentication enabled, but no known public keys configured")
88
+
89
+ private_key = self.state.get_server_private_key()
90
+ public_key = self.state.get_server_public_key()
91
+
92
+ if private_key is None or public_key is None:
93
+ raise ValueError("Error loading authentication keys")
94
+
95
+ self.server_private_key = bytes_to_private_key(private_key)
96
+ self.encoded_server_public_key = base64.urlsafe_b64encode(public_key)
98
97
 
99
98
  def intercept_service(
100
99
  self,
@@ -254,16 +254,16 @@ class InMemoryState(State): # pylint: disable=R0902
254
254
  log(ERROR, "Unexpected run creation failure.")
255
255
  return 0
256
256
 
257
- def store_server_public_private_key(
258
- self, public_key: bytes, private_key: bytes
257
+ def store_server_private_public_key(
258
+ self, private_key: bytes, public_key: bytes
259
259
  ) -> None:
260
- """Store `server_public_key` and `server_private_key` in state."""
260
+ """Store `server_private_key` and `server_public_key` in state."""
261
261
  with self.lock:
262
262
  if self.server_private_key is None and self.server_public_key is None:
263
263
  self.server_private_key = private_key
264
264
  self.server_public_key = public_key
265
265
  else:
266
- raise RuntimeError("Server public and private key already set")
266
+ raise RuntimeError("Server private and public key already set")
267
267
 
268
268
  def get_server_private_key(self) -> Optional[bytes]:
269
269
  """Retrieve `server_private_key` in urlsafe bytes."""
@@ -42,8 +42,8 @@ CREATE TABLE IF NOT EXISTS node(
42
42
 
43
43
  SQL_CREATE_TABLE_CREDENTIAL = """
44
44
  CREATE TABLE IF NOT EXISTS credential(
45
- public_key BLOB PRIMARY KEY,
46
- private_key BLOB
45
+ private_key BLOB PRIMARY KEY,
46
+ public_key BLOB
47
47
  );
48
48
  """
49
49
 
@@ -589,20 +589,20 @@ class SqliteState(State): # pylint: disable=R0904
589
589
  log(ERROR, "Unexpected run creation failure.")
590
590
  return 0
591
591
 
592
- def store_server_public_private_key(
593
- self, public_key: bytes, private_key: bytes
592
+ def store_server_private_public_key(
593
+ self, private_key: bytes, public_key: bytes
594
594
  ) -> None:
595
- """Store `server_public_key` and `server_private_key` in state."""
595
+ """Store `server_private_key` and `server_public_key` in state."""
596
596
  query = "SELECT COUNT(*) FROM credential"
597
597
  count = self.query(query)[0]["COUNT(*)"]
598
598
  if count < 1:
599
599
  query = (
600
- "INSERT OR REPLACE INTO credential (public_key, private_key) "
601
- "VALUES (:public_key, :private_key)"
600
+ "INSERT OR REPLACE INTO credential (private_key, public_key) "
601
+ "VALUES (:private_key, :public_key)"
602
602
  )
603
- self.query(query, {"public_key": public_key, "private_key": private_key})
603
+ self.query(query, {"private_key": private_key, "public_key": public_key})
604
604
  else:
605
- raise RuntimeError("Server public and private key already set")
605
+ raise RuntimeError("Server private and public key already set")
606
606
 
607
607
  def get_server_private_key(self) -> Optional[bytes]:
608
608
  """Retrieve `server_private_key` in urlsafe bytes."""
@@ -172,10 +172,10 @@ class State(abc.ABC):
172
172
  """
173
173
 
174
174
  @abc.abstractmethod
175
- def store_server_public_private_key(
176
- self, public_key: bytes, private_key: bytes
175
+ def store_server_private_public_key(
176
+ self, private_key: bytes, public_key: bytes
177
177
  ) -> None:
178
- """Store `server_public_key` and `server_private_key` in state."""
178
+ """Store `server_private_key` and `server_public_key` in state."""
179
179
 
180
180
  @abc.abstractmethod
181
181
  def get_server_private_key(self) -> Optional[bytes]:
@@ -28,7 +28,7 @@ import grpc
28
28
 
29
29
  from flwr.client import ClientApp
30
30
  from flwr.common import EventType, event, log
31
- from flwr.common.logger import set_logger_propagation
31
+ from flwr.common.logger import set_logger_propagation, update_console_handler
32
32
  from flwr.common.typing import ConfigsRecordValues
33
33
  from flwr.server.driver import Driver, GrpcDriver
34
34
  from flwr.server.run_serverapp import run
@@ -318,9 +318,9 @@ def _run_simulation(
318
318
  enabled, DEBUG-level logs will be displayed.
319
319
  """
320
320
  # Set logging level
321
- if not verbose_logging:
322
- logger = logging.getLogger("flwr")
323
- logger.setLevel(INFO)
321
+ logger = logging.getLogger("flwr")
322
+ if verbose_logging:
323
+ update_console_handler(level=DEBUG, timestamps=True, colored=True)
324
324
 
325
325
  if backend_config is None:
326
326
  backend_config = {}