flwr-nightly 1.9.0.dev20240410__tar.gz → 1.9.0.dev20240411__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 (212) hide show
  1. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/PKG-INFO +1 -1
  2. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/pyproject.toml +1 -1
  3. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/new.py +16 -4
  4. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/utils.py +60 -4
  5. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/LICENSE +0 -0
  6. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/README.md +0 -0
  7. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/__init__.py +0 -0
  8. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/__init__.py +0 -0
  9. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/app.py +0 -0
  10. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/example.py +0 -0
  11. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/flower_toml.py +0 -0
  12. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/__init__.py +0 -0
  13. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  14. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  15. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  16. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  17. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  18. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  19. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  20. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  21. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  22. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  23. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  24. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  25. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/flower.toml.tpl +0 -0
  26. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  27. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  28. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  29. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/requirements.numpy.txt.tpl +0 -0
  30. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/requirements.pytorch.txt.tpl +0 -0
  31. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/new/templates/app/requirements.tensorflow.txt.tpl +0 -0
  32. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/run/__init__.py +0 -0
  33. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/cli/run/run.py +0 -0
  34. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/__init__.py +0 -0
  35. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/app.py +0 -0
  36. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/client.py +0 -0
  37. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/client_app.py +0 -0
  38. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  39. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  40. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/grpc_client/connection.py +0 -0
  41. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  42. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  43. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/heartbeat.py +0 -0
  44. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/message_handler/__init__.py +0 -0
  45. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  46. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  47. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/__init__.py +0 -0
  48. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  49. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/comms_mods.py +0 -0
  50. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  51. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  52. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  53. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  54. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/mod/utils.py +0 -0
  55. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/node_state.py +0 -0
  56. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/node_state_tests.py +0 -0
  57. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/numpy_client.py +0 -0
  58. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/rest_client/__init__.py +0 -0
  59. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/rest_client/connection.py +0 -0
  60. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/client/typing.py +0 -0
  61. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/__init__.py +0 -0
  62. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/address.py +0 -0
  63. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/constant.py +0 -0
  64. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/context.py +0 -0
  65. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/date.py +0 -0
  66. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/differential_privacy.py +0 -0
  67. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  68. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/dp.py +0 -0
  69. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/exit_handlers.py +0 -0
  70. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/grpc.py +0 -0
  71. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/logger.py +0 -0
  72. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/message.py +0 -0
  73. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/object_ref.py +0 -0
  74. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/parameter.py +0 -0
  75. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/pyproject.py +0 -0
  76. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/__init__.py +0 -0
  77. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/configsrecord.py +0 -0
  78. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/conversion_utils.py +0 -0
  79. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/metricsrecord.py +0 -0
  80. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/parametersrecord.py +0 -0
  81. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/recordset.py +0 -0
  82. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/record/typeddict.py +0 -0
  83. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/recordset_compat.py +0 -0
  84. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/retry_invoker.py +0 -0
  85. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  86. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  87. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  88. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  89. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  90. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  91. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  92. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  93. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/serde.py +0 -0
  94. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/telemetry.py +0 -0
  95. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/typing.py +0 -0
  96. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/common/version.py +0 -0
  97. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/__init__.py +0 -0
  98. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/driver_pb2.py +0 -0
  99. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  100. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  101. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  102. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/error_pb2.py +0 -0
  103. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/error_pb2.pyi +0 -0
  104. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  105. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  106. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/fleet_pb2.py +0 -0
  107. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  108. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  109. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  110. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/node_pb2.py +0 -0
  111. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/node_pb2.pyi +0 -0
  112. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  113. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  114. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/recordset_pb2.py +0 -0
  115. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  116. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  117. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  118. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/task_pb2.py +0 -0
  119. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/task_pb2.pyi +0 -0
  120. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  121. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  122. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/transport_pb2.py +0 -0
  123. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  124. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  125. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  126. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/py.typed +0 -0
  127. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/__init__.py +0 -0
  128. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/app.py +0 -0
  129. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/client_manager.py +0 -0
  130. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/client_proxy.py +0 -0
  131. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/compat/__init__.py +0 -0
  132. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/compat/app.py +0 -0
  133. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/compat/app_utils.py +0 -0
  134. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  135. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/compat/legacy_context.py +0 -0
  136. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/criterion.py +0 -0
  137. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/driver/__init__.py +0 -0
  138. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/driver/driver.py +0 -0
  139. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/driver/grpc_driver.py +0 -0
  140. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/history.py +0 -0
  141. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/run_serverapp.py +0 -0
  142. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/server.py +0 -0
  143. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/server_app.py +0 -0
  144. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/server_config.py +0 -0
  145. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/__init__.py +0 -0
  146. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/aggregate.py +0 -0
  147. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/bulyan.py +0 -0
  148. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  149. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  150. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  151. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  152. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  153. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  154. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedadam.py +0 -0
  155. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedavg.py +0 -0
  156. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  157. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  158. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  159. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedopt.py +0 -0
  160. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedprox.py +0 -0
  161. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  162. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  163. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  164. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  165. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  166. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/krum.py +0 -0
  167. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  168. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/strategy/strategy.py +0 -0
  169. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/__init__.py +0 -0
  170. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  171. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  172. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  173. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  174. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  175. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  176. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  177. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  178. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  179. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  180. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  181. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  182. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  183. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  184. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  185. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  186. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  187. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  188. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  189. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  190. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  191. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  192. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  193. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/state.py +0 -0
  194. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  195. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/superlink/state/utils.py +0 -0
  196. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/typing.py +0 -0
  197. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/utils/__init__.py +0 -0
  198. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/utils/tensorboard.py +0 -0
  199. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/utils/validator.py +0 -0
  200. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/__init__.py +0 -0
  201. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/constant.py +0 -0
  202. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  203. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  204. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  205. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  206. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/__init__.py +0 -0
  207. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/app.py +0 -0
  208. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  209. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  210. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  211. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  212. {flwr_nightly-1.9.0.dev20240410 → flwr_nightly-1.9.0.dev20240411}/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.dev20240410
3
+ Version: 1.9.0.dev20240411
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-dev20240410"
7
+ version = "1.9.0-dev20240411"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -22,7 +22,12 @@ from typing import Dict, Optional
22
22
  import typer
23
23
  from typing_extensions import Annotated
24
24
 
25
- from ..utils import prompt_options, prompt_text
25
+ from ..utils import (
26
+ is_valid_project_name,
27
+ prompt_options,
28
+ prompt_text,
29
+ sanitize_project_name,
30
+ )
26
31
 
27
32
 
28
33
  class MlFramework(str, Enum):
@@ -81,6 +86,16 @@ def new(
81
86
  ] = None,
82
87
  ) -> None:
83
88
  """Create new Flower project."""
89
+ if project_name is None:
90
+ project_name = prompt_text("Please provide project name")
91
+ if not is_valid_project_name(project_name):
92
+ project_name = prompt_text(
93
+ "Please provide a name that only contains "
94
+ "characters in {'_', 'a-zA-Z', '0-9'}",
95
+ predicate=is_valid_project_name,
96
+ default=sanitize_project_name(project_name),
97
+ )
98
+
84
99
  print(
85
100
  typer.style(
86
101
  f"🔨 Creating Flower project {project_name}...",
@@ -89,9 +104,6 @@ def new(
89
104
  )
90
105
  )
91
106
 
92
- if project_name is None:
93
- project_name = prompt_text("Please provide project name")
94
-
95
107
  if framework is not None:
96
108
  framework_str = str(framework.value)
97
109
  else:
@@ -14,18 +14,23 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface utils."""
16
16
 
17
- from typing import List, cast
17
+ from typing import Callable, List, Optional, cast
18
18
 
19
19
  import typer
20
20
 
21
21
 
22
- def prompt_text(text: str) -> str:
22
+ def prompt_text(
23
+ text: str,
24
+ predicate: Callable[[str], bool] = lambda _: True,
25
+ default: Optional[str] = None,
26
+ ) -> str:
23
27
  """Ask user to enter text input."""
24
28
  while True:
25
29
  result = typer.prompt(
26
- typer.style(f"\n💬 {text}", fg=typer.colors.MAGENTA, bold=True)
30
+ typer.style(f"\n💬 {text}", fg=typer.colors.MAGENTA, bold=True),
31
+ default=default,
27
32
  )
28
- if len(result) > 0:
33
+ if predicate(result) and len(result) > 0:
29
34
  break
30
35
  print(typer.style("❌ Invalid entry", fg=typer.colors.RED, bold=True))
31
36
 
@@ -65,3 +70,54 @@ def prompt_options(text: str, options: List[str]) -> str:
65
70
 
66
71
  result = options[int(index)]
67
72
  return result
73
+
74
+
75
+ def is_valid_project_name(name: str) -> bool:
76
+ """Check if the given string is a valid Python module name.
77
+
78
+ A valid module name must start with a letter or an underscore, and can only contain
79
+ letters, digits, and underscores.
80
+ """
81
+ if not name:
82
+ return False
83
+
84
+ # Check if the first character is a letter or underscore
85
+ if not (name[0].isalpha() or name[0] == "_"):
86
+ return False
87
+
88
+ # Check if the rest of the characters are valid (letter, digit, or underscore)
89
+ for char in name[1:]:
90
+ if not (char.isalnum() or char == "_"):
91
+ return False
92
+
93
+ return True
94
+
95
+
96
+ def sanitize_project_name(name: str) -> str:
97
+ """Sanitize the given string to make it a valid Python module name.
98
+
99
+ This version replaces hyphens with underscores, removes any characters not allowed
100
+ in Python module names, makes the string lowercase, and ensures it starts with a
101
+ valid character.
102
+ """
103
+ # Replace '-' with '_'
104
+ name_with_underscores = name.replace("-", "_").replace(" ", "_")
105
+
106
+ # Allowed characters in a module name: letters, digits, underscore
107
+ allowed_chars = set(
108
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
109
+ )
110
+
111
+ # Make the string lowercase
112
+ sanitized_name = name_with_underscores.lower()
113
+
114
+ # Remove any characters not allowed in Python module names
115
+ sanitized_name = "".join(c for c in sanitized_name if c in allowed_chars)
116
+
117
+ # Ensure the first character is a letter or underscore
118
+ if sanitized_name and (
119
+ sanitized_name[0].isdigit() or sanitized_name[0] not in allowed_chars
120
+ ):
121
+ sanitized_name = "_" + sanitized_name
122
+
123
+ return sanitized_name