flwr-nightly 1.13.0.dev20241111__tar.gz → 1.14.0.dev20241126__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 (333) hide show
  1. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/PKG-INFO +5 -4
  2. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/README.md +2 -2
  3. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/pyproject.toml +4 -2
  4. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/app.py +2 -0
  5. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/install.py +0 -16
  6. flwr_nightly-1.14.0.dev20241126/src/py/flwr/cli/ls.py +228 -0
  7. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/new.py +23 -13
  8. flwr_nightly-1.14.0.dev20241126/src/py/flwr/cli/new/templates/app/README.md.tpl +31 -0
  9. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
  10. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
  11. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
  12. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
  13. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
  14. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
  15. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
  16. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
  17. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
  18. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/run/run.py +4 -2
  19. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/app.py +50 -14
  20. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/clientapp/app.py +40 -23
  21. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_rere_client/connection.py +7 -12
  22. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/rest_client/connection.py +4 -14
  23. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/supernode/app.py +31 -53
  24. flwr_nightly-1.14.0.dev20241126/src/py/flwr/common/args.py +152 -0
  25. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/constant.py +24 -6
  26. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/date.py +18 -0
  27. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/grpc.py +4 -1
  28. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/serde.py +10 -0
  29. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/typing.py +31 -10
  30. flwr_nightly-1.14.0.dev20241126/src/py/flwr/proto/exec_pb2.py +50 -0
  31. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/exec_pb2.pyi +44 -0
  32. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/exec_pb2_grpc.py +34 -0
  33. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/exec_pb2_grpc.pyi +13 -0
  34. flwr_nightly-1.14.0.dev20241126/src/py/flwr/proto/run_pb2.py +64 -0
  35. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/run_pb2.pyi +18 -1
  36. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/app.py +47 -77
  37. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/driver/grpc_driver.py +66 -16
  38. flwr_nightly-1.14.0.dev20241126/src/py/flwr/server/run_serverapp.py +77 -0
  39. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/serverapp/app.py +49 -29
  40. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +10 -9
  41. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +71 -46
  42. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/linkstate/linkstate.py +19 -5
  43. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +81 -113
  44. flwr_nightly-1.14.0.dev20241126/src/py/flwr/server/superlink/linkstate/utils.py +389 -0
  45. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/app.py +52 -91
  46. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/legacy_app.py +21 -1
  47. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/run_simulation.py +7 -18
  48. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/simulationio_connection.py +2 -2
  49. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/deployment.py +12 -6
  50. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/exec_servicer.py +31 -2
  51. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/simulation.py +11 -46
  52. flwr_nightly-1.13.0.dev20241111/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -20
  53. flwr_nightly-1.13.0.dev20241111/src/py/flwr/common/args.py +0 -83
  54. flwr_nightly-1.13.0.dev20241111/src/py/flwr/proto/exec_pb2.py +0 -41
  55. flwr_nightly-1.13.0.dev20241111/src/py/flwr/proto/run_pb2.py +0 -64
  56. flwr_nightly-1.13.0.dev20241111/src/py/flwr/server/run_serverapp.py +0 -307
  57. flwr_nightly-1.13.0.dev20241111/src/py/flwr/server/superlink/linkstate/utils.py +0 -199
  58. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/LICENSE +0 -0
  59. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/__init__.py +0 -0
  60. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/__init__.py +0 -0
  61. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/build.py +0 -0
  62. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/config_utils.py +0 -0
  63. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/example.py +0 -0
  64. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/log.py +0 -0
  65. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/__init__.py +0 -0
  66. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  67. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  68. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  69. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  70. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  71. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  72. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  73. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  74. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  75. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  76. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  77. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  78. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  79. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  80. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  81. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  82. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  83. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  84. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  85. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  86. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  87. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  88. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  89. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  90. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  91. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  92. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  93. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  94. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  95. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  96. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  97. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  98. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  99. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  100. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  101. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  102. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  103. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  104. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  105. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  106. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  107. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  108. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/run/__init__.py +0 -0
  109. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/cli/utils.py +0 -0
  110. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/__init__.py +0 -0
  111. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/client.py +0 -0
  112. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/client_app.py +0 -0
  113. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/clientapp/__init__.py +0 -0
  114. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  115. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/clientapp/utils.py +0 -0
  116. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  117. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  118. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  119. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  120. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_client/connection.py +0 -0
  121. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  122. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  123. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  124. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/heartbeat.py +0 -0
  125. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/message_handler/__init__.py +0 -0
  126. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  127. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  128. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/__init__.py +0 -0
  129. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  130. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/comms_mods.py +0 -0
  131. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  132. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  133. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  134. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  135. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/mod/utils.py +0 -0
  136. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/nodestate/__init__.py +0 -0
  137. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
  138. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/nodestate/nodestate.py +0 -0
  139. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
  140. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/numpy_client.py +0 -0
  141. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/rest_client/__init__.py +0 -0
  142. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/run_info_store.py +0 -0
  143. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/supernode/__init__.py +0 -0
  144. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/client/typing.py +0 -0
  145. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/__init__.py +0 -0
  146. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/address.py +0 -0
  147. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/config.py +0 -0
  148. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/context.py +0 -0
  149. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/differential_privacy.py +0 -0
  150. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  151. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/dp.py +0 -0
  152. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/exit_handlers.py +0 -0
  153. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/logger.py +0 -0
  154. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/message.py +0 -0
  155. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/object_ref.py +0 -0
  156. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/parameter.py +0 -0
  157. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/pyproject.py +0 -0
  158. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/__init__.py +0 -0
  159. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/configsrecord.py +0 -0
  160. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/conversion_utils.py +0 -0
  161. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/metricsrecord.py +0 -0
  162. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/parametersrecord.py +0 -0
  163. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/recordset.py +0 -0
  164. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/record/typeddict.py +0 -0
  165. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/recordset_compat.py +0 -0
  166. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/retry_invoker.py +0 -0
  167. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  168. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  169. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  170. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  171. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  172. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  173. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  174. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  175. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/telemetry.py +0 -0
  176. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/common/version.py +0 -0
  177. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/__init__.py +0 -0
  178. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  179. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  180. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  181. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  182. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/common_pb2.py +0 -0
  183. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/common_pb2.pyi +0 -0
  184. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
  185. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
  186. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/control_pb2.py +0 -0
  187. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/control_pb2.pyi +0 -0
  188. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/control_pb2_grpc.py +0 -0
  189. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  190. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/error_pb2.py +0 -0
  191. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/error_pb2.pyi +0 -0
  192. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  193. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  194. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fab_pb2.py +0 -0
  195. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  196. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fleet_pb2.py +0 -0
  199. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  200. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  203. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  204. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/log_pb2.py +0 -0
  207. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/log_pb2.pyi +0 -0
  208. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
  209. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  210. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/message_pb2.py +0 -0
  211. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/message_pb2.pyi +0 -0
  212. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  213. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  214. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/node_pb2.py +0 -0
  215. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/node_pb2.pyi +0 -0
  216. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  217. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  218. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/recordset_pb2.py +0 -0
  219. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  220. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  221. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  222. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  223. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  224. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/serverappio_pb2.py +0 -0
  225. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
  226. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  227. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  228. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/simulationio_pb2.py +0 -0
  229. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
  230. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  231. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  232. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/task_pb2.py +0 -0
  233. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/task_pb2.pyi +0 -0
  234. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  235. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  236. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/transport_pb2.py +0 -0
  237. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  238. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  239. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  240. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/py.typed +0 -0
  241. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/__init__.py +0 -0
  242. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/client_manager.py +0 -0
  243. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/client_proxy.py +0 -0
  244. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/compat/__init__.py +0 -0
  245. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/compat/app.py +0 -0
  246. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/compat/app_utils.py +0 -0
  247. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  248. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/compat/legacy_context.py +0 -0
  249. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/criterion.py +0 -0
  250. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/driver/__init__.py +0 -0
  251. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/driver/driver.py +0 -0
  252. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
  253. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/history.py +0 -0
  254. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/server.py +0 -0
  255. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/server_app.py +0 -0
  256. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/server_config.py +0 -0
  257. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/serverapp/__init__.py +0 -0
  258. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/serverapp_components.py +0 -0
  259. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/__init__.py +0 -0
  260. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/aggregate.py +0 -0
  261. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/bulyan.py +0 -0
  262. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  263. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  264. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  265. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  266. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  267. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  268. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedadam.py +0 -0
  269. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedavg.py +0 -0
  270. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  271. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  272. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  273. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedopt.py +0 -0
  274. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedprox.py +0 -0
  275. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  276. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  277. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  278. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  279. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  280. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/krum.py +0 -0
  281. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  282. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/strategy/strategy.py +0 -0
  283. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/__init__.py +0 -0
  284. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  285. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
  286. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
  287. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  288. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
  289. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  290. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  291. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  292. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  293. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  294. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  295. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  296. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  297. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  298. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  299. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  300. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  301. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  302. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  303. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  304. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  305. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  306. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  307. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  308. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  309. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  310. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  311. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  312. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
  313. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  314. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  315. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/typing.py +0 -0
  316. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/utils/__init__.py +0 -0
  317. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/utils/tensorboard.py +0 -0
  318. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/utils/validator.py +0 -0
  319. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/__init__.py +0 -0
  320. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/constant.py +0 -0
  321. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  322. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  323. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  324. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  325. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/__init__.py +0 -0
  326. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  327. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  328. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  329. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
  330. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/__init__.py +0 -0
  331. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/app.py +0 -0
  332. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/exec_grpc.py +0 -0
  333. {flwr_nightly-1.13.0.dev20241111 → flwr_nightly-1.14.0.dev20241126}/src/py/flwr/superexec/executor.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.13.0.dev20241111
4
- Summary: Flower: A Friendly Federated Learning Framework
3
+ Version: 1.14.0.dev20241126
4
+ Summary: Flower: A Friendly Federated AI Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
7
7
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -41,6 +41,7 @@ Requires-Dist: protobuf (>=4.25.2,<5.0.0)
41
41
  Requires-Dist: pycryptodome (>=3.18.0,<4.0.0)
42
42
  Requires-Dist: ray (==2.10.0) ; (python_version >= "3.9" and python_version < "3.12") and (extra == "simulation")
43
43
  Requires-Dist: requests (>=2.31.0,<3.0.0) ; extra == "rest"
44
+ Requires-Dist: rich (>=13.5.0,<14.0.0)
44
45
  Requires-Dist: starlette (>=0.31.0,<0.32.0) ; extra == "rest"
45
46
  Requires-Dist: tomli (>=2.0.1,<3.0.0)
46
47
  Requires-Dist: tomli-w (>=1.0.0,<2.0.0)
@@ -50,7 +51,7 @@ Project-URL: Documentation, https://flower.ai
50
51
  Project-URL: Repository, https://github.com/adap/flower
51
52
  Description-Content-Type: text/markdown
52
53
 
53
- # Flower: A Friendly Federated Learning Framework
54
+ # Flower: A Friendly Federated AI Framework
54
55
 
55
56
  <p align="center">
56
57
  <a href="https://flower.ai/">
@@ -73,7 +74,7 @@ Description-Content-Type: text/markdown
73
74
  [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-flwr-blue)](https://hub.docker.com/u/flwr)
74
75
  [![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.ai/join-slack)
75
76
 
76
- Flower (`flwr`) is a framework for building federated learning systems. The
77
+ Flower (`flwr`) is a framework for building federated AI systems. The
77
78
  design of Flower is based on a few guiding principles:
78
79
 
79
80
  - **Customizable**: Federated learning systems vary wildly from one use case to
@@ -1,4 +1,4 @@
1
- # Flower: A Friendly Federated Learning Framework
1
+ # Flower: A Friendly Federated AI Framework
2
2
 
3
3
  <p align="center">
4
4
  <a href="https://flower.ai/">
@@ -21,7 +21,7 @@
21
21
  [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-flwr-blue)](https://hub.docker.com/u/flwr)
22
22
  [![Slack](https://img.shields.io/badge/Chat-Slack-red)](https://flower.ai/join-slack)
23
23
 
24
- Flower (`flwr`) is a framework for building federated learning systems. The
24
+ Flower (`flwr`) is a framework for building federated AI systems. The
25
25
  design of Flower is based on a few guiding principles:
26
26
 
27
27
  - **Customizable**: Federated learning systems vary wildly from one use case to
@@ -4,8 +4,8 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.13.0.dev20241111"
8
- description = "Flower: A Friendly Federated Learning Framework"
7
+ version = "1.14.0.dev20241126"
8
+ description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
11
11
  readme = "README.md"
@@ -77,6 +77,7 @@ typer = "^0.12.5"
77
77
  tomli = "^2.0.1"
78
78
  tomli-w = "^1.0.0"
79
79
  pathspec = "^0.12.1"
80
+ rich = "^13.5.0"
80
81
  # Optional dependencies (Simulation Engine)
81
82
  ray = { version = "==2.10.0", optional = true, python = ">=3.9,<3.12" }
82
83
  # Optional dependencies (REST transport layer)
@@ -125,6 +126,7 @@ nbstripout = "==0.6.1"
125
126
  ruff = "==0.1.9"
126
127
  sphinx-argparse = "==0.4.0"
127
128
  pipreqs = "==0.4.13"
129
+ mdformat = "==0.7.18"
128
130
  mdformat-gfm = "==0.3.6"
129
131
  mdformat-frontmatter = "==2.0.1"
130
132
  mdformat-beautysh = "==0.1.1"
@@ -20,6 +20,7 @@ from typer.main import get_command
20
20
  from .build import build
21
21
  from .install import install
22
22
  from .log import log
23
+ from .ls import ls
23
24
  from .new import new
24
25
  from .run import run
25
26
 
@@ -37,6 +38,7 @@ app.command()(run)
37
38
  app.command()(build)
38
39
  app.command()(install)
39
40
  app.command()(log)
41
+ app.command()(ls)
40
42
 
41
43
  typer_click_object = get_command(app)
42
44
 
@@ -16,7 +16,6 @@
16
16
 
17
17
  import hashlib
18
18
  import shutil
19
- import subprocess
20
19
  import tempfile
21
20
  import zipfile
22
21
  from io import BytesIO
@@ -188,21 +187,6 @@ def validate_and_install(
188
187
  else:
189
188
  shutil.copy2(item, install_dir / item.name)
190
189
 
191
- try:
192
- subprocess.run(
193
- ["pip", "install", "-e", install_dir, "--no-deps"],
194
- capture_output=True,
195
- text=True,
196
- check=True,
197
- )
198
- except subprocess.CalledProcessError as e:
199
- typer.secho(
200
- f"❌ Failed to `pip install` package(s) from {install_dir}:\n{e.stderr}",
201
- fg=typer.colors.RED,
202
- bold=True,
203
- )
204
- raise typer.Exit(code=1) from e
205
-
206
190
  typer.secho(
207
191
  f"🎊 Successfully installed {project_name} to {install_dir}.",
208
192
  fg=typer.colors.GREEN,
@@ -0,0 +1,228 @@
1
+ # Copyright 2024 Flower Labs GmbH. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ==============================================================================
15
+ """Flower command line interface `ls` command."""
16
+
17
+
18
+ from datetime import datetime, timedelta
19
+ from logging import DEBUG
20
+ from pathlib import Path
21
+ from typing import Annotated, Any, Optional
22
+
23
+ import grpc
24
+ import typer
25
+ from rich.console import Console
26
+ from rich.table import Table
27
+ from rich.text import Text
28
+
29
+ from flwr.cli.config_utils import (
30
+ load_and_validate,
31
+ validate_certificate_in_federation_config,
32
+ validate_federation_in_project_config,
33
+ validate_project_config,
34
+ )
35
+ from flwr.common.constant import FAB_CONFIG_FILE, SubStatus
36
+ from flwr.common.date import format_timedelta, isoformat8601_utc
37
+ from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel
38
+ from flwr.common.logger import log
39
+ from flwr.common.serde import run_from_proto
40
+ from flwr.common.typing import Run
41
+ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
42
+ ListRunsRequest,
43
+ ListRunsResponse,
44
+ )
45
+ from flwr.proto.exec_pb2_grpc import ExecStub
46
+
47
+
48
+ def ls(
49
+ app: Annotated[
50
+ Path,
51
+ typer.Argument(help="Path of the Flower project"),
52
+ ] = Path("."),
53
+ federation: Annotated[
54
+ Optional[str],
55
+ typer.Argument(help="Name of the federation"),
56
+ ] = None,
57
+ runs: Annotated[
58
+ bool,
59
+ typer.Option(
60
+ "--runs",
61
+ help="List all runs",
62
+ ),
63
+ ] = False,
64
+ run_id: Annotated[
65
+ Optional[int],
66
+ typer.Option(
67
+ "--run-id",
68
+ help="Specific run ID to display",
69
+ ),
70
+ ] = None,
71
+ ) -> None:
72
+ """List runs."""
73
+ # Load and validate federation config
74
+ typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
75
+
76
+ pyproject_path = app / FAB_CONFIG_FILE if app else None
77
+ config, errors, warnings = load_and_validate(path=pyproject_path)
78
+ config = validate_project_config(config, errors, warnings)
79
+ federation, federation_config = validate_federation_in_project_config(
80
+ federation, config
81
+ )
82
+
83
+ if "address" not in federation_config:
84
+ typer.secho(
85
+ "❌ `flwr ls` currently works with Exec API. Ensure that the correct"
86
+ "Exec API address is provided in the `pyproject.toml`.",
87
+ fg=typer.colors.RED,
88
+ bold=True,
89
+ )
90
+ raise typer.Exit(code=1)
91
+
92
+ try:
93
+ if runs and run_id is not None:
94
+ raise ValueError(
95
+ "The options '--runs' and '--run-id' are mutually exclusive."
96
+ )
97
+
98
+ channel = _init_channel(app, federation_config)
99
+ stub = ExecStub(channel)
100
+
101
+ # Display information about a specific run ID
102
+ if run_id is not None:
103
+ typer.echo(f"🔍 Displaying information for run ID {run_id}...")
104
+ _display_one_run(stub, run_id)
105
+ # By default, list all runs
106
+ else:
107
+ typer.echo("📄 Listing all runs...")
108
+ _list_runs(stub)
109
+
110
+ except ValueError as err:
111
+ typer.secho(
112
+ f"❌ {err}",
113
+ fg=typer.colors.RED,
114
+ bold=True,
115
+ )
116
+ raise typer.Exit(code=1) from err
117
+ finally:
118
+ channel.close()
119
+
120
+
121
+ def on_channel_state_change(channel_connectivity: str) -> None:
122
+ """Log channel connectivity."""
123
+ log(DEBUG, channel_connectivity)
124
+
125
+
126
+ def _init_channel(app: Path, federation_config: dict[str, Any]) -> grpc.Channel:
127
+ """Initialize gRPC channel to the Exec API."""
128
+ insecure, root_certificates_bytes = validate_certificate_in_federation_config(
129
+ app, federation_config
130
+ )
131
+ channel = create_channel(
132
+ server_address=federation_config["address"],
133
+ insecure=insecure,
134
+ root_certificates=root_certificates_bytes,
135
+ max_message_length=GRPC_MAX_MESSAGE_LENGTH,
136
+ interceptors=None,
137
+ )
138
+ channel.subscribe(on_channel_state_change)
139
+ return channel
140
+
141
+
142
+ def _format_run_table(run_dict: dict[int, Run], now_isoformat: str) -> Table:
143
+ """Format run status as a rich Table."""
144
+ table = Table(header_style="bold cyan", show_lines=True)
145
+
146
+ def _format_datetime(dt: Optional[datetime]) -> str:
147
+ return isoformat8601_utc(dt).replace("T", " ") if dt else "N/A"
148
+
149
+ # Add columns
150
+ table.add_column(
151
+ Text("Run ID", justify="center"), style="bright_white", overflow="fold"
152
+ )
153
+ table.add_column(Text("FAB", justify="center"), style="dim white")
154
+ table.add_column(Text("Status", justify="center"))
155
+ table.add_column(Text("Elapsed", justify="center"), style="blue")
156
+ table.add_column(Text("Created At", justify="center"), style="dim white")
157
+ table.add_column(Text("Running At", justify="center"), style="dim white")
158
+ table.add_column(Text("Finished At", justify="center"), style="dim white")
159
+
160
+ # Add rows
161
+ for run in sorted(
162
+ run_dict.values(), key=lambda x: datetime.fromisoformat(x.pending_at)
163
+ ):
164
+ # Combine status and sub-status into a single string
165
+ if run.status.sub_status == "":
166
+ status_text = run.status.status
167
+ else:
168
+ status_text = f"{run.status.status}:{run.status.sub_status}"
169
+
170
+ # Style the status based on its value
171
+ sub_status = run.status.sub_status
172
+ if sub_status == SubStatus.COMPLETED:
173
+ status_style = "green"
174
+ elif sub_status == SubStatus.FAILED:
175
+ status_style = "red"
176
+ else:
177
+ status_style = "yellow"
178
+
179
+ # Convert isoformat to datetime
180
+ pending_at = datetime.fromisoformat(run.pending_at) if run.pending_at else None
181
+ running_at = datetime.fromisoformat(run.running_at) if run.running_at else None
182
+ finished_at = (
183
+ datetime.fromisoformat(run.finished_at) if run.finished_at else None
184
+ )
185
+
186
+ # Calculate elapsed time
187
+ elapsed_time = timedelta()
188
+ if running_at:
189
+ if finished_at:
190
+ end_time = finished_at
191
+ else:
192
+ end_time = datetime.fromisoformat(now_isoformat)
193
+ elapsed_time = end_time - running_at
194
+
195
+ table.add_row(
196
+ f"[bold]{run.run_id}[/bold]",
197
+ f"{run.fab_id} (v{run.fab_version})",
198
+ f"[{status_style}]{status_text}[/{status_style}]",
199
+ format_timedelta(elapsed_time),
200
+ _format_datetime(pending_at),
201
+ _format_datetime(running_at),
202
+ _format_datetime(finished_at),
203
+ )
204
+ return table
205
+
206
+
207
+ def _list_runs(
208
+ stub: ExecStub,
209
+ ) -> None:
210
+ """List all runs."""
211
+ res: ListRunsResponse = stub.ListRuns(ListRunsRequest())
212
+ run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()}
213
+
214
+ Console().print(_format_run_table(run_dict, res.now))
215
+
216
+
217
+ def _display_one_run(
218
+ stub: ExecStub,
219
+ run_id: int,
220
+ ) -> None:
221
+ """Display information about a specific run."""
222
+ res: ListRunsResponse = stub.ListRuns(ListRunsRequest(run_id=run_id))
223
+ if not res.run_dict:
224
+ raise ValueError(f"Run ID {run_id} not found")
225
+
226
+ run_dict = {run_id: run_from_proto(proto) for run_id, proto in res.run_dict.items()}
227
+
228
+ Console().print(_format_run_table(run_dict, res.now))
@@ -268,20 +268,30 @@ def new(
268
268
  context=context,
269
269
  )
270
270
 
271
- print(
272
- typer.style(
273
- "🎊 Flower App creation successful.\n\n"
274
- "Use the following command to run your Flower App:\n",
275
- fg=typer.colors.GREEN,
276
- bold=True,
277
- )
271
+ prompt = typer.style(
272
+ "🎊 Flower App creation successful.\n\n"
273
+ "To run your Flower App, use the following command:\n\n",
274
+ fg=typer.colors.GREEN,
275
+ bold=True,
278
276
  )
279
277
 
280
278
  _add = " huggingface-cli login\n" if llm_challenge_str else ""
281
- print(
282
- typer.style(
283
- f" cd {package_name}\n" + " pip install -e .\n" + _add + " flwr run\n",
284
- fg=typer.colors.BRIGHT_CYAN,
285
- bold=True,
286
- )
279
+ prompt += typer.style(
280
+ _add + f" flwr run {package_name}\n\n",
281
+ fg=typer.colors.BRIGHT_CYAN,
282
+ bold=True,
283
+ )
284
+
285
+ prompt += typer.style(
286
+ "If you haven't installed all dependencies yet, follow these steps:\n\n",
287
+ fg=typer.colors.GREEN,
288
+ bold=True,
287
289
  )
290
+
291
+ prompt += typer.style(
292
+ f" cd {package_name}\n" + " pip install -e .\n" + _add + " flwr run .\n",
293
+ fg=typer.colors.BRIGHT_CYAN,
294
+ bold=True,
295
+ )
296
+
297
+ print(prompt)
@@ -0,0 +1,31 @@
1
+ # $project_name: A Flower / $framework_str app
2
+
3
+ ## Install dependencies and project
4
+
5
+ ```bash
6
+ pip install -e .
7
+ ```
8
+
9
+ ## Run with the Simulation Engine
10
+
11
+ In the `$project_name` directory, use `flwr run` to run a local simulation:
12
+
13
+ ```bash
14
+ flwr run .
15
+ ```
16
+
17
+ Refer to the [How to Run Simulations](https://flower.ai/docs/framework/how-to-run-simulations.html) guide in the documentation for advice on how to optimize your simulations.
18
+
19
+ ## Run with the Deployment Engine
20
+
21
+ > \[!NOTE\]
22
+ > An update to this example will show how to run this Flower application with the Deployment Engine and TLS certificates, or with Docker.
23
+
24
+ ## Resources
25
+
26
+ - Flower website: [flower.ai](https://flower.ai/)
27
+ - Check the documentation: [flower.ai/docs](https://flower.ai/docs/)
28
+ - Give Flower a ⭐️ on GitHub: [GitHub](https://github.com/adap/flower)
29
+ - Join the Flower community!
30
+ - [Flower Slack](https://flower.ai/join-slack/)
31
+ - [Flower Discuss](https://discuss.flower.ai/)
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "torch==2.2.1",
14
14
  "torchvision==0.17.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets>=0.3.0",
13
13
  "torch==2.3.1",
14
14
  "trl==0.8.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets>=0.3.0",
13
13
  "torch==2.2.1",
14
14
  "transformers>=4.30.0,<5.0",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "jax==0.4.30",
13
13
  "jaxlib==0.4.30",
14
14
  "scikit-learn==1.3.2",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "mlx==0.16.1",
14
14
  "numpy==1.24.4",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "numpy>=1.21.0",
13
13
  ]
14
14
 
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "torch==2.2.1",
14
14
  "torchvision==0.17.1",
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "scikit-learn>=1.1.1",
14
14
  ]
@@ -8,7 +8,7 @@ version = "1.0.0"
8
8
  description = ""
9
9
  license = "Apache-2.0"
10
10
  dependencies = [
11
- "flwr[simulation]>=1.12.0",
11
+ "flwr[simulation]>=1.13.0",
12
12
  "flwr-datasets[vision]>=0.3.0",
13
13
  "tensorflow>=2.11.1,<2.18.0",
14
14
  ]
@@ -125,6 +125,10 @@ def _run_with_exec_api(
125
125
 
126
126
  fab_path, fab_hash = build(app)
127
127
  content = Path(fab_path).read_bytes()
128
+
129
+ # Delete FAB file once the bytes is computed
130
+ Path(fab_path).unlink()
131
+
128
132
  fab = Fab(fab_hash, content)
129
133
 
130
134
  # Construct a `ConfigsRecord` out of a flattened `UserConfig`
@@ -138,8 +142,6 @@ def _run_with_exec_api(
138
142
  )
139
143
  res = stub.StartRun(req)
140
144
 
141
- # Delete FAB file once it has been sent to the Exec API
142
- Path(fab_path).unlink()
143
145
  typer.secho(f"🎊 Successfully started run {res.run_id}", fg=typer.colors.GREEN)
144
146
 
145
147
  if stream: