flwr-nightly 1.9.0.dev20240527__tar.gz → 1.9.0.dev20240529__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 (231) hide show
  1. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/PKG-INFO +2 -1
  2. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/README.md +1 -0
  3. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/pyproject.toml +1 -1
  4. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/app.py +70 -72
  5. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/LICENSE +0 -0
  6. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/__init__.py +0 -0
  7. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/__init__.py +0 -0
  8. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/app.py +0 -0
  9. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/build.py +0 -0
  10. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/config_utils.py +0 -0
  11. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/example.py +0 -0
  12. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/__init__.py +0 -0
  13. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/new.py +0 -0
  14. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  15. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  16. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  17. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  18. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  19. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  20. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.hf.py.tpl +0 -0
  21. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  22. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  23. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  24. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  25. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  26. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  27. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl +0 -0
  28. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  29. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  30. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  31. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  32. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  33. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  34. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/task.hf.py.tpl +0 -0
  35. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  36. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  37. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  38. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  39. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.hf.toml.tpl +0 -0
  40. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  41. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  42. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  43. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  44. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  45. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  46. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/run/__init__.py +0 -0
  47. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/run/run.py +0 -0
  48. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/cli/utils.py +0 -0
  49. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/__init__.py +0 -0
  50. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/app.py +0 -0
  51. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/client.py +0 -0
  52. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/client_app.py +0 -0
  53. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  54. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  55. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/grpc_client/connection.py +0 -0
  56. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  57. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  58. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  59. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/heartbeat.py +0 -0
  60. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/message_handler/__init__.py +0 -0
  61. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  62. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  63. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/__init__.py +0 -0
  64. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  65. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/comms_mods.py +0 -0
  66. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  67. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  68. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  69. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  70. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/mod/utils.py +0 -0
  71. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/node_state.py +0 -0
  72. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/node_state_tests.py +0 -0
  73. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/numpy_client.py +0 -0
  74. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/rest_client/__init__.py +0 -0
  75. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/rest_client/connection.py +0 -0
  76. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/supernode/__init__.py +0 -0
  77. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/supernode/app.py +0 -0
  78. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/client/typing.py +0 -0
  79. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/__init__.py +0 -0
  80. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/address.py +0 -0
  81. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/constant.py +0 -0
  82. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/context.py +0 -0
  83. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/date.py +0 -0
  84. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/differential_privacy.py +0 -0
  85. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  86. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/dp.py +0 -0
  87. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/exit_handlers.py +0 -0
  88. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/grpc.py +0 -0
  89. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/logger.py +0 -0
  90. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/message.py +0 -0
  91. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/object_ref.py +0 -0
  92. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/parameter.py +0 -0
  93. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/pyproject.py +0 -0
  94. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/__init__.py +0 -0
  95. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/configsrecord.py +0 -0
  96. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/conversion_utils.py +0 -0
  97. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/metricsrecord.py +0 -0
  98. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/parametersrecord.py +0 -0
  99. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/recordset.py +0 -0
  100. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/record/typeddict.py +0 -0
  101. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/recordset_compat.py +0 -0
  102. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/retry_invoker.py +0 -0
  103. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  104. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  105. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  106. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  107. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  108. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  109. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  110. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  111. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/serde.py +0 -0
  112. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/telemetry.py +0 -0
  113. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/typing.py +0 -0
  114. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/common/version.py +0 -0
  115. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/__init__.py +0 -0
  116. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/driver_pb2.py +0 -0
  117. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  118. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  119. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  120. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/error_pb2.py +0 -0
  121. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/error_pb2.pyi +0 -0
  122. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  123. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  124. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/fleet_pb2.py +0 -0
  125. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  126. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  127. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  128. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/node_pb2.py +0 -0
  129. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/node_pb2.pyi +0 -0
  130. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  131. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  132. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/recordset_pb2.py +0 -0
  133. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  134. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  135. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  136. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/task_pb2.py +0 -0
  137. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/task_pb2.pyi +0 -0
  138. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  139. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  140. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/transport_pb2.py +0 -0
  141. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  142. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  143. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  144. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/py.typed +0 -0
  145. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/__init__.py +0 -0
  146. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/client_manager.py +0 -0
  147. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/client_proxy.py +0 -0
  148. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/compat/__init__.py +0 -0
  149. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/compat/app.py +0 -0
  150. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/compat/app_utils.py +0 -0
  151. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  152. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/compat/legacy_context.py +0 -0
  153. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/criterion.py +0 -0
  154. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/driver/__init__.py +0 -0
  155. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/driver/driver.py +0 -0
  156. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  157. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  158. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/history.py +0 -0
  159. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/run_serverapp.py +0 -0
  160. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/server.py +0 -0
  161. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/server_app.py +0 -0
  162. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/server_config.py +0 -0
  163. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/__init__.py +0 -0
  164. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/aggregate.py +0 -0
  165. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/bulyan.py +0 -0
  166. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  167. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  168. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  169. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  170. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  171. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  172. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedadam.py +0 -0
  173. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedavg.py +0 -0
  174. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  175. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  176. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  177. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedopt.py +0 -0
  178. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedprox.py +0 -0
  179. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  180. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  181. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  182. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  183. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  184. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/krum.py +0 -0
  185. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  186. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/strategy/strategy.py +0 -0
  187. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/__init__.py +0 -0
  188. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  189. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  190. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  191. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  192. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  193. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  194. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  195. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  196. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  197. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  198. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  199. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  200. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  201. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  202. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  203. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  204. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  205. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  206. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  207. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  208. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  209. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  210. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  211. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  212. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/state.py +0 -0
  213. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  214. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/superlink/state/utils.py +0 -0
  215. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/typing.py +0 -0
  216. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/utils/__init__.py +0 -0
  217. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/utils/tensorboard.py +0 -0
  218. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/utils/validator.py +0 -0
  219. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/__init__.py +0 -0
  220. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/constant.py +0 -0
  221. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  222. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  223. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  224. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  225. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/__init__.py +0 -0
  226. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/app.py +0 -0
  227. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  228. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  229. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  230. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  231. {flwr_nightly-1.9.0.dev20240527 → flwr_nightly-1.9.0.dev20240529}/src/py/flwr/simulation/run_simulation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240527
3
+ Version: 1.9.0.dev20240529
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -203,6 +203,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
203
203
  - [Flower through Docker Compose and with Grafana dashboard](https://github.com/adap/flower/tree/main/examples/flower-via-docker-compose)
204
204
  - [Flower with KaplanMeierFitter from the lifelines library](https://github.com/adap/flower/tree/main/examples/federated-kaplan-meier-fitter)
205
205
  - [Sample Level Privacy with Opacus](https://github.com/adap/flower/tree/main/examples/opacus)
206
+ - [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
206
207
 
207
208
  ## Community
208
209
 
@@ -152,6 +152,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
152
152
  - [Flower through Docker Compose and with Grafana dashboard](https://github.com/adap/flower/tree/main/examples/flower-via-docker-compose)
153
153
  - [Flower with KaplanMeierFitter from the lifelines library](https://github.com/adap/flower/tree/main/examples/federated-kaplan-meier-fitter)
154
154
  - [Sample Level Privacy with Opacus](https://github.com/adap/flower/tree/main/examples/opacus)
155
+ - [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
155
156
 
156
157
  ## Community
157
158
 
@@ -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.dev20240527"
7
+ version = "1.9.0.dev20240529"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -19,10 +19,10 @@ import csv
19
19
  import importlib.util
20
20
  import sys
21
21
  import threading
22
- from logging import ERROR, INFO, WARN
22
+ from logging import INFO, WARN
23
23
  from os.path import isfile
24
24
  from pathlib import Path
25
- from typing import List, Optional, Sequence, Set, Tuple
25
+ from typing import Optional, Sequence, Set, Tuple
26
26
 
27
27
  import grpc
28
28
  from cryptography.exceptions import UnsupportedAlgorithm
@@ -346,6 +346,9 @@ def run_superlink() -> None:
346
346
  sys.exit(MISSING_EXTRA_REST)
347
347
  address_arg = args.rest_fleet_api_address
348
348
  parsed_address = parse_address(address_arg)
349
+ _, ssl_certfile, ssl_keyfile = (
350
+ certificates if certificates is not None else (None, None, None)
351
+ )
349
352
  if not parsed_address:
350
353
  sys.exit(f"Fleet IP address ({address_arg}) cannot be parsed.")
351
354
  host, port, _ = parsed_address
@@ -354,8 +357,8 @@ def run_superlink() -> None:
354
357
  args=(
355
358
  host,
356
359
  port,
357
- args.ssl_keyfile,
358
- args.ssl_certfile,
360
+ ssl_keyfile,
361
+ ssl_certfile,
359
362
  state_factory,
360
363
  args.rest_fleet_api_workers,
361
364
  ),
@@ -442,8 +445,8 @@ def _try_setup_client_authentication(
442
445
  if certificates is None:
443
446
  sys.exit(
444
447
  "Authentication requires secure connections. "
445
- "Please provide certificate paths using '--certificates' and "
446
- "try again."
448
+ "Please provide certificate paths to `--ssl-certfile`, "
449
+ "`--ssl-keyfile`, and `—-ssl-ca-certfile` and try again."
447
450
  )
448
451
 
449
452
  client_keys_file_path = Path(args.auth_list_public_keys)
@@ -512,21 +515,52 @@ def _try_obtain_certificates(
512
515
  # Obtain certificates
513
516
  if args.insecure:
514
517
  log(WARN, "Option `--insecure` was set. Starting insecure HTTP server.")
515
- certificates = None
518
+ return None
516
519
  # Check if certificates are provided
517
- elif args.certificates:
518
- certificates = (
519
- Path(args.certificates[0]).read_bytes(), # CA certificate
520
- Path(args.certificates[1]).read_bytes(), # server certificate
521
- Path(args.certificates[2]).read_bytes(), # server private key
522
- )
523
- else:
524
- sys.exit(
525
- "Certificates are required unless running in insecure mode. "
526
- "Please provide certificate paths with '--certificates' or run the server "
527
- "in insecure mode using '--insecure' if you understand the risks."
528
- )
529
- return certificates
520
+ if args.fleet_api_type == TRANSPORT_TYPE_GRPC_RERE:
521
+ if args.ssl_certfile and args.ssl_keyfile and args.ssl_ca_certfile:
522
+ if not isfile(args.ssl_ca_certfile):
523
+ sys.exit("Path argument `--ssl-ca-certfile` does not point to a file.")
524
+ if not isfile(args.ssl_certfile):
525
+ sys.exit("Path argument `--ssl-certfile` does not point to a file.")
526
+ if not isfile(args.ssl_keyfile):
527
+ sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
528
+ certificates = (
529
+ Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
530
+ Path(args.ssl_certfile).read_bytes(), # server certificate
531
+ Path(args.ssl_keyfile).read_bytes(), # server private key
532
+ )
533
+ return certificates
534
+ if args.ssl_certfile or args.ssl_keyfile or args.ssl_ca_certfile:
535
+ sys.exit(
536
+ "You need to provide valid file paths to `--ssl-certfile`, "
537
+ "`--ssl-keyfile`, and `—-ssl-ca-certfile` to create a secure "
538
+ "connection in Fleet API server (gRPC-rere)."
539
+ )
540
+ if args.fleet_api_type == TRANSPORT_TYPE_REST:
541
+ if args.ssl_certfile and args.ssl_keyfile:
542
+ if not isfile(args.ssl_certfile):
543
+ sys.exit("Path argument `--ssl-certfile` does not point to a file.")
544
+ if not isfile(args.ssl_keyfile):
545
+ sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
546
+ certificates = (
547
+ b"",
548
+ Path(args.ssl_certfile).read_bytes(), # server certificate
549
+ Path(args.ssl_keyfile).read_bytes(), # server private key
550
+ )
551
+ return certificates
552
+ if args.ssl_certfile or args.ssl_keyfile:
553
+ sys.exit(
554
+ "You need to provide valid file paths to `--ssl-certfile` "
555
+ "and `--ssl-keyfile` to create a secure connection "
556
+ "in Fleet API server (REST, experimental)."
557
+ )
558
+ sys.exit(
559
+ "Certificates are required unless running in insecure mode. "
560
+ "Please provide certificate paths to `--ssl-certfile`, "
561
+ "`--ssl-keyfile`, and `—-ssl-ca-certfile` or run the server "
562
+ "in insecure mode using '--insecure' if you understand the risks."
563
+ )
530
564
 
531
565
 
532
566
  def _run_fleet_api_grpc_rere(
@@ -582,14 +616,6 @@ def _run_fleet_api_rest(
582
616
  # See: https://www.starlette.io/applications/#accessing-the-app-instance
583
617
  fast_api_app.state.STATE_FACTORY = state_factory
584
618
 
585
- validation_exceptions = _validate_ssl_files(
586
- ssl_certfile=ssl_certfile, ssl_keyfile=ssl_keyfile
587
- )
588
- if any(validation_exceptions):
589
- # Starting with 3.11 we can use ExceptionGroup but for now
590
- # this seems to be the reasonable approach.
591
- raise ValueError(validation_exceptions)
592
-
593
619
  uvicorn.run(
594
620
  app="flwr.server.superlink.fleet.rest_rere.rest_api:app",
595
621
  port=port,
@@ -602,32 +628,6 @@ def _run_fleet_api_rest(
602
628
  )
603
629
 
604
630
 
605
- def _validate_ssl_files(
606
- ssl_keyfile: Optional[str], ssl_certfile: Optional[str]
607
- ) -> List[ValueError]:
608
- validation_exceptions = []
609
-
610
- if ssl_keyfile is not None and not isfile(ssl_keyfile):
611
- msg = "Path argument `--ssl-keyfile` does not point to a file."
612
- log(ERROR, msg)
613
- validation_exceptions.append(ValueError(msg))
614
-
615
- if ssl_certfile is not None and not isfile(ssl_certfile):
616
- msg = "Path argument `--ssl-certfile` does not point to a file."
617
- log(ERROR, msg)
618
- validation_exceptions.append(ValueError(msg))
619
-
620
- if not bool(ssl_keyfile) == bool(ssl_certfile):
621
- msg = (
622
- "When setting one of `--ssl-keyfile` and "
623
- "`--ssl-certfile`, both have to be used."
624
- )
625
- log(ERROR, msg)
626
- validation_exceptions.append(ValueError(msg))
627
-
628
- return validation_exceptions
629
-
630
-
631
631
  def _parse_args_run_driver_api() -> argparse.ArgumentParser:
632
632
  """Parse command line arguments for Driver API."""
633
633
  parser = argparse.ArgumentParser(
@@ -684,13 +684,23 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
684
684
  "Use this flag only if you understand the risks.",
685
685
  )
686
686
  parser.add_argument(
687
- "--certificates",
688
- nargs=3,
689
- metavar=("CA_CERT", "SERVER_CERT", "PRIVATE_KEY"),
687
+ "--ssl-certfile",
688
+ help="Fleet API server SSL certificate file (as a path str) "
689
+ "to create a secure connection.",
690
+ type=str,
691
+ default=None,
692
+ )
693
+ parser.add_argument(
694
+ "--ssl-keyfile",
695
+ help="Fleet API server SSL private key file (as a path str) "
696
+ "to create a secure connection.",
697
+ type=str,
698
+ )
699
+ parser.add_argument(
700
+ "--ssl-ca-certfile",
701
+ help="Fleet API server SSL CA certificate file (as a path str) "
702
+ "to create a secure connection.",
690
703
  type=str,
691
- help="Paths to the CA certificate, server certificate, and server private "
692
- "key, in that order. Note: The server can only be started without "
693
- "certificates by enabling the `--insecure` flag.",
694
704
  )
695
705
  parser.add_argument(
696
706
  "--database",
@@ -763,18 +773,6 @@ def _add_args_fleet_api(parser: argparse.ArgumentParser) -> None:
763
773
  help="Fleet API (REST) server address (IPv4, IPv6, or a domain name)",
764
774
  default=ADDRESS_FLEET_API_REST,
765
775
  )
766
- rest_group.add_argument(
767
- "--ssl-certfile",
768
- help="Fleet API (REST) server SSL certificate file (as a path str), "
769
- "needed for using 'https'.",
770
- default=None,
771
- )
772
- rest_group.add_argument(
773
- "--ssl-keyfile",
774
- help="Fleet API (REST) server SSL private key file (as a path str), "
775
- "needed for using 'https'.",
776
- default=None,
777
- )
778
776
  rest_group.add_argument(
779
777
  "--rest-fleet-api-workers",
780
778
  help="Set the number of concurrent workers for the Fleet API REST server.",