flwr-nightly 1.14.0.dev20241212__tar.gz → 1.14.0.dev20241213__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 (327) hide show
  1. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/PKG-INFO +1 -1
  2. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/pyproject.toml +1 -1
  3. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/app.py +1 -0
  4. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/build.py +1 -0
  5. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/config_utils.py +1 -0
  6. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/example.py +1 -0
  7. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/install.py +1 -0
  8. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/log.py +1 -0
  9. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/login/__init__.py +1 -0
  10. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/login/login.py +1 -0
  11. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/__init__.py +1 -0
  12. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/new.py +1 -0
  13. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/run/__init__.py +1 -0
  14. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/run/run.py +1 -0
  15. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/utils.py +1 -0
  16. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/app.py +3 -2
  17. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/client.py +1 -0
  18. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/clientapp/app.py +1 -0
  19. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/clientapp/utils.py +1 -0
  20. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_adapter_client/connection.py +1 -1
  21. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_client/connection.py +1 -1
  22. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_rere_client/connection.py +3 -3
  23. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/message_handler/message_handler.py +1 -0
  24. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/comms_mods.py +1 -0
  25. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/nodestate/__init__.py +1 -0
  26. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/nodestate/nodestate.py +1 -0
  27. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/nodestate/nodestate_factory.py +1 -0
  28. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/rest_client/connection.py +3 -3
  29. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/supernode/app.py +1 -0
  30. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/address.py +1 -0
  31. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/args.py +1 -0
  32. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/config.py +1 -0
  33. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/logger.py +1 -0
  34. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/message.py +1 -0
  35. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/pyproject.py +1 -0
  36. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/__init__.py +1 -0
  37. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/parametersrecord.py +1 -0
  38. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/version.py +1 -0
  39. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/app.py +1 -0
  40. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/driver/grpc_driver.py +1 -0
  41. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/driver/inmemory_driver.py +5 -1
  42. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/serverapp/app.py +1 -0
  43. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/dpfedavg_fixed.py +1 -0
  44. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +1 -0
  45. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +6 -18
  46. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/ffs/disk_ffs.py +1 -0
  47. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -0
  48. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/vce/__init__.py +1 -0
  49. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +1 -0
  50. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +1 -0
  51. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +14 -30
  52. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/linkstate.py +13 -2
  53. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +24 -44
  54. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +1 -0
  55. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/app.py +1 -0
  56. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/ray_transport/ray_actor.py +1 -0
  57. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/ray_transport/utils.py +1 -0
  58. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/run_simulation.py +1 -0
  59. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/app.py +1 -0
  60. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/deployment.py +1 -0
  61. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/exec_grpc.py +1 -0
  62. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/exec_servicer.py +8 -0
  63. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/executor.py +1 -0
  64. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/LICENSE +0 -0
  65. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/README.md +0 -0
  66. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/__init__.py +0 -0
  67. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/__init__.py +0 -0
  68. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
  69. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/ls.py +0 -0
  70. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  71. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  72. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
  73. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
  74. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
  75. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  76. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  77. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
  78. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  79. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  80. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
  81. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
  82. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
  83. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
  84. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  85. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  86. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
  87. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  88. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
  89. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
  90. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
  91. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
  92. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
  93. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
  94. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
  95. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
  96. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
  97. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
  98. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
  99. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
  100. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  101. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  102. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
  103. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  104. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
  105. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
  106. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
  107. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
  108. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
  109. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  110. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
  111. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
  112. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
  113. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
  114. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
  115. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
  116. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
  117. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
  118. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  119. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  120. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
  121. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  122. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/cli/stop.py +0 -0
  123. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/__init__.py +0 -0
  124. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/client_app.py +0 -0
  125. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/clientapp/__init__.py +0 -0
  126. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
  127. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  128. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  129. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  130. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  131. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
  132. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  133. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/heartbeat.py +0 -0
  134. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/message_handler/__init__.py +0 -0
  135. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  136. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/__init__.py +0 -0
  137. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  138. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  139. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  140. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  141. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  142. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/mod/utils.py +0 -0
  143. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
  144. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/numpy_client.py +0 -0
  145. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/rest_client/__init__.py +0 -0
  146. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/run_info_store.py +0 -0
  147. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/supernode/__init__.py +0 -0
  148. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/client/typing.py +0 -0
  149. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/__init__.py +0 -0
  150. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
  151. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
  152. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/constant.py +0 -0
  153. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/context.py +0 -0
  154. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/date.py +0 -0
  155. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/differential_privacy.py +0 -0
  156. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  157. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/dp.py +0 -0
  158. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/exit_handlers.py +0 -0
  159. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/grpc.py +0 -0
  160. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/object_ref.py +0 -0
  161. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/parameter.py +0 -0
  162. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/configsrecord.py +0 -0
  163. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/conversion_utils.py +0 -0
  164. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/metricsrecord.py +0 -0
  165. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/recordset.py +0 -0
  166. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/record/typeddict.py +0 -0
  167. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/recordset_compat.py +0 -0
  168. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/retry_invoker.py +0 -0
  169. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  170. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  171. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  172. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  173. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  174. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  175. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  176. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  177. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/serde.py +0 -0
  178. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/telemetry.py +0 -0
  179. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/common/typing.py +0 -0
  180. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/__init__.py +0 -0
  181. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/clientappio_pb2.py +0 -0
  182. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
  183. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
  184. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
  185. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/error_pb2.py +0 -0
  186. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/error_pb2.pyi +0 -0
  187. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  188. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  189. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/exec_pb2.py +0 -0
  190. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/exec_pb2.pyi +0 -0
  191. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
  192. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
  193. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fab_pb2.py +0 -0
  194. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fab_pb2.pyi +0 -0
  195. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
  196. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  197. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fleet_pb2.py +0 -0
  198. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  199. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  200. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  201. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
  202. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  203. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  204. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  205. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/log_pb2.py +0 -0
  206. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/log_pb2.pyi +0 -0
  207. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
  208. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  209. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/message_pb2.py +0 -0
  210. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/message_pb2.pyi +0 -0
  211. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
  212. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  213. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/node_pb2.py +0 -0
  214. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/node_pb2.pyi +0 -0
  215. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  216. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  217. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/recordset_pb2.py +0 -0
  218. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  219. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  220. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  221. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/run_pb2.py +0 -0
  222. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/run_pb2.pyi +0 -0
  223. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
  224. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  225. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/serverappio_pb2.py +0 -0
  226. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
  227. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
  228. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
  229. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/simulationio_pb2.py +0 -0
  230. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
  231. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
  232. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
  233. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/task_pb2.py +0 -0
  234. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/task_pb2.pyi +0 -0
  235. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  236. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  237. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/transport_pb2.py +0 -0
  238. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  239. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  240. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  241. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/py.typed +0 -0
  242. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/__init__.py +0 -0
  243. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/client_manager.py +0 -0
  244. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/client_proxy.py +0 -0
  245. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/compat/__init__.py +0 -0
  246. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/compat/app.py +0 -0
  247. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/compat/app_utils.py +0 -0
  248. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
  249. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/compat/legacy_context.py +0 -0
  250. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/criterion.py +0 -0
  251. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/driver/__init__.py +0 -0
  252. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/driver/driver.py +0 -0
  253. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/history.py +0 -0
  254. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/run_serverapp.py +0 -0
  255. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/server.py +0 -0
  256. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/server_app.py +0 -0
  257. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/server_config.py +0 -0
  258. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/serverapp/__init__.py +0 -0
  259. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/serverapp_components.py +0 -0
  260. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/__init__.py +0 -0
  261. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/aggregate.py +0 -0
  262. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/bulyan.py +0 -0
  263. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  264. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  265. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  266. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  267. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  268. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedadam.py +0 -0
  269. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedavg.py +0 -0
  270. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  271. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  272. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  273. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedopt.py +0 -0
  274. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedprox.py +0 -0
  275. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  276. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  277. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  278. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  279. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  280. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/krum.py +0 -0
  281. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  282. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/strategy/strategy.py +0 -0
  283. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/__init__.py +0 -0
  284. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  285. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
  286. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
  287. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
  288. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  289. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  290. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  291. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  292. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  293. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  294. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  295. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  296. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  297. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
  298. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  299. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  300. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  301. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  302. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  303. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  304. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  305. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
  306. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
  307. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
  308. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  309. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/superlink/utils.py +0 -0
  310. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/typing.py +0 -0
  311. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/utils/__init__.py +0 -0
  312. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/utils/tensorboard.py +0 -0
  313. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/utils/validator.py +0 -0
  314. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/__init__.py +0 -0
  315. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/constant.py +0 -0
  316. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  317. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  318. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  319. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  320. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/__init__.py +0 -0
  321. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/legacy_app.py +0 -0
  322. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  323. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  324. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/simulation/simulationio_connection.py +0 -0
  325. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/__init__.py +0 -0
  326. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
  327. {flwr_nightly-1.14.0.dev20241212 → flwr_nightly-1.14.0.dev20241213}/src/py/flwr/superexec/simulation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.14.0.dev20241212
3
+ Version: 1.14.0.dev20241213
4
4
  Summary: Flower: A Friendly Federated AI 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.14.0.dev20241212"
7
+ version = "1.14.0.dev20241213"
8
8
  description = "Flower: A Friendly Federated AI Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface."""
16
16
 
17
+
17
18
  import typer
18
19
  from typer.main import get_command
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `build` command."""
16
16
 
17
+
17
18
  import hashlib
18
19
  import os
19
20
  import shutil
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Utility to validate the `pyproject.toml` file."""
16
16
 
17
+
17
18
  import zipfile
18
19
  from io import BytesIO
19
20
  from pathlib import Path
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `example` command."""
16
16
 
17
+
17
18
  import json
18
19
  import os
19
20
  import subprocess
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `install` command."""
16
16
 
17
+
17
18
  import hashlib
18
19
  import shutil
19
20
  import tempfile
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `log` command."""
16
16
 
17
+
17
18
  import time
18
19
  from logging import DEBUG, ERROR, INFO
19
20
  from pathlib import Path
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `login` command."""
16
16
 
17
+
17
18
  from .login import login as login
18
19
 
19
20
  __all__ = [
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `login` command."""
16
16
 
17
+
17
18
  from pathlib import Path
18
19
  from typing import Annotated, Optional
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `new` command."""
16
16
 
17
+
17
18
  from .new import new as new
18
19
 
19
20
  __all__ = [
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `new` command."""
16
16
 
17
+
17
18
  import re
18
19
  from enum import Enum
19
20
  from pathlib import Path
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `run` command."""
16
16
 
17
+
17
18
  from .run import run as run
18
19
 
19
20
  __all__ = [
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface `run` command."""
16
16
 
17
+
17
18
  import io
18
19
  import json
19
20
  import subprocess
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower command line interface utils."""
16
16
 
17
+
17
18
  import hashlib
18
19
  import json
19
20
  import re
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower client app."""
16
16
 
17
+
17
18
  import signal
18
19
  import subprocess
19
20
  import sys
@@ -474,7 +475,7 @@ def start_client_internal(
474
475
 
475
476
  run: Run = runs[run_id]
476
477
  if get_fab is not None and run.fab_hash:
477
- fab = get_fab(run.fab_hash)
478
+ fab = get_fab(run.fab_hash, run_id)
478
479
  if not isolation:
479
480
  # If `ClientApp` runs in the same process, install the FAB
480
481
  install_from_fab(fab.content, flwr_path, True)
@@ -752,7 +753,7 @@ def _init_connection(transport: Optional[str], server_address: str) -> tuple[
752
753
  Optional[Callable[[], Optional[int]]],
753
754
  Optional[Callable[[], None]],
754
755
  Optional[Callable[[int], Run]],
755
- Optional[Callable[[str], Fab]],
756
+ Optional[Callable[[str, int], Fab]],
756
757
  ]
757
758
  ],
758
759
  ],
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower client (abstract base class)."""
16
16
 
17
+
17
18
  # Needed to `Client` class can return a type of `Client` (not needed in py3.11+)
18
19
  from __future__ import annotations
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower ClientApp process."""
16
16
 
17
+
17
18
  import argparse
18
19
  import sys
19
20
  import time
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower ClientApp loading utils."""
16
16
 
17
+
17
18
  from logging import DEBUG
18
19
  from pathlib import Path
19
20
  from typing import Callable, Optional
@@ -48,7 +48,7 @@ def grpc_adapter( # pylint: disable=R0913,too-many-positional-arguments
48
48
  Optional[Callable[[], Optional[int]]],
49
49
  Optional[Callable[[], None]],
50
50
  Optional[Callable[[int], Run]],
51
- Optional[Callable[[str], Fab]],
51
+ Optional[Callable[[str, int], Fab]],
52
52
  ]
53
53
  ]:
54
54
  """Primitives for request/response-based interaction with a server via GrpcAdapter.
@@ -76,7 +76,7 @@ def grpc_connection( # pylint: disable=R0913,R0915,too-many-positional-argument
76
76
  Optional[Callable[[], Optional[int]]],
77
77
  Optional[Callable[[], None]],
78
78
  Optional[Callable[[int], Run]],
79
- Optional[Callable[[str], Fab]],
79
+ Optional[Callable[[str, int], Fab]],
80
80
  ]
81
81
  ]:
82
82
  """Establish a gRPC connection to a gRPC server.
@@ -84,7 +84,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
84
84
  Optional[Callable[[], Optional[int]]],
85
85
  Optional[Callable[[], None]],
86
86
  Optional[Callable[[int], Run]],
87
- Optional[Callable[[str], Fab]],
87
+ Optional[Callable[[str, int], Fab]],
88
88
  ]
89
89
  ]:
90
90
  """Primitives for request/response-based interaction with a server.
@@ -290,9 +290,9 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
290
290
  # Return fab_id and fab_version
291
291
  return run_from_proto(get_run_response.run)
292
292
 
293
- def get_fab(fab_hash: str) -> Fab:
293
+ def get_fab(fab_hash: str, run_id: int) -> Fab:
294
294
  # Call FleetAPI
295
- get_fab_request = GetFabRequest(node=node, hash_str=fab_hash)
295
+ get_fab_request = GetFabRequest(node=node, hash_str=fab_hash, run_id=run_id)
296
296
  get_fab_response: GetFabResponse = retry_invoker.invoke(
297
297
  stub.GetFab,
298
298
  request=get_fab_request,
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Client-side message handler."""
16
16
 
17
+
17
18
  from logging import WARN
18
19
  from typing import Optional, cast
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Mods that report statistics about message communication."""
16
16
 
17
+
17
18
  from logging import INFO
18
19
 
19
20
  import numpy as np
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower NodeState."""
16
16
 
17
+
17
18
  from .in_memory_nodestate import InMemoryNodeState as InMemoryNodeState
18
19
  from .nodestate import NodeState as NodeState
19
20
  from .nodestate_factory import NodeStateFactory as NodeStateFactory
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Abstract base class NodeState."""
16
16
 
17
+
17
18
  import abc
18
19
  from typing import Optional
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Factory class that creates NodeState instances."""
16
16
 
17
+
17
18
  import threading
18
19
  from typing import Optional
19
20
 
@@ -96,7 +96,7 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
96
96
  Optional[Callable[[], Optional[int]]],
97
97
  Optional[Callable[[], None]],
98
98
  Optional[Callable[[int], Run]],
99
- Optional[Callable[[str], Fab]],
99
+ Optional[Callable[[str, int], Fab]],
100
100
  ]
101
101
  ]:
102
102
  """Primitives for request/response-based interaction with a server.
@@ -361,9 +361,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
361
361
 
362
362
  return run_from_proto(res.run)
363
363
 
364
- def get_fab(fab_hash: str) -> Fab:
364
+ def get_fab(fab_hash: str, run_id: int) -> Fab:
365
365
  # Construct the request
366
- req = GetFabRequest(node=node, hash_str=fab_hash)
366
+ req = GetFabRequest(node=node, hash_str=fab_hash, run_id=run_id)
367
367
 
368
368
  # Send the request
369
369
  res = _request(req, GetFabResponse, PATH_GET_FAB)
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower SuperNode."""
16
16
 
17
+
17
18
  import argparse
18
19
  import sys
19
20
  from logging import DEBUG, ERROR, INFO, WARN
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower IP address utils."""
16
16
 
17
+
17
18
  import socket
18
19
  from ipaddress import ip_address
19
20
  from typing import Optional
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Common Flower arguments."""
16
16
 
17
+
17
18
  import argparse
18
19
  import sys
19
20
  from logging import DEBUG, ERROR, WARN
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Provide functions for managing global Flower config."""
16
16
 
17
+
17
18
  import os
18
19
  import re
19
20
  from pathlib import Path
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower Logger."""
16
16
 
17
+
17
18
  import logging
18
19
  import re
19
20
  import sys
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Message."""
16
16
 
17
+
17
18
  from __future__ import annotations
18
19
 
19
20
  import time
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Validates the project's name property."""
16
16
 
17
+
17
18
  import re
18
19
 
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Record APIs."""
16
16
 
17
+
17
18
  from .configsrecord import ConfigsRecord
18
19
  from .conversion_utils import array_from_numpy
19
20
  from .metricsrecord import MetricsRecord
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """ParametersRecord and Array."""
16
16
 
17
+
17
18
  from collections import OrderedDict
18
19
  from dataclasses import dataclass
19
20
  from io import BytesIO
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower package version helper."""
16
16
 
17
+
17
18
  import importlib.metadata as importlib_metadata
18
19
 
19
20
 
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower server app."""
16
16
 
17
+
17
18
  import argparse
18
19
  import csv
19
20
  import importlib.util
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower gRPC Driver."""
16
16
 
17
+
17
18
  import time
18
19
  import warnings
19
20
  from collections.abc import Iterable
@@ -142,7 +142,11 @@ class InMemoryDriver(Driver):
142
142
  # Pull TaskRes
143
143
  task_res_list = self.state.get_task_res(task_ids=msg_ids)
144
144
  # Delete tasks in state
145
- self.state.delete_tasks(msg_ids)
145
+ # Delete the TaskIns/TaskRes pairs if TaskRes is found
146
+ task_ins_ids_to_delete = {
147
+ UUID(task_res.task.ancestry[0]) for task_res in task_res_list
148
+ }
149
+ self.state.delete_tasks(task_ins_ids=task_ins_ids_to_delete)
146
150
  # Convert TaskRes to Message
147
151
  msgs = [message_from_taskres(taskres) for taskres in task_res_list]
148
152
  return msgs
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Flower ServerApp process."""
16
16
 
17
+
17
18
  import argparse
18
19
  import sys
19
20
  from logging import DEBUG, ERROR, INFO
@@ -17,6 +17,7 @@
17
17
  Paper: arxiv.org/pdf/1710.06963.pdf
18
18
  """
19
19
 
20
+
20
21
  from typing import Optional, Union
21
22
 
22
23
  from flwr.common import EvaluateIns, EvaluateRes, FitIns, FitRes, Parameters, Scalar
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """ServerAppIo gRPC API."""
16
16
 
17
+
17
18
  from logging import INFO
18
19
  from typing import Optional
19
20
 
@@ -190,27 +190,15 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
190
190
  # Convert each task_id str to UUID
191
191
  task_ids: set[UUID] = {UUID(task_id) for task_id in request.task_ids}
192
192
 
193
- # Register callback
194
- def on_rpc_done() -> None:
195
- log(
196
- DEBUG,
197
- "ServerAppIoServicer.PullTaskRes callback: delete TaskIns/TaskRes",
198
- )
199
-
200
- if context.is_active():
201
- return
202
- if context.code() != grpc.StatusCode.OK:
203
- return
204
-
205
- # Delete delivered TaskIns and TaskRes
206
- state.delete_tasks(task_ids=task_ids)
207
-
208
- context.add_callback(on_rpc_done)
209
-
210
193
  # Read from state
211
194
  task_res_list: list[TaskRes] = state.get_task_res(task_ids=task_ids)
212
195
 
213
- context.set_code(grpc.StatusCode.OK)
196
+ # Delete the TaskIns/TaskRes pairs if TaskRes is found
197
+ task_ins_ids_to_delete = {
198
+ UUID(task_res.task.ancestry[0]) for task_res in task_res_list
199
+ }
200
+ state.delete_tasks(task_ins_ids=task_ins_ids_to_delete)
201
+
214
202
  return PullTaskResResponse(task_res_list=task_res_list)
215
203
 
216
204
  def GetRun(
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Disk based Flower File Storage."""
16
16
 
17
+
17
18
  import hashlib
18
19
  import json
19
20
  from pathlib import Path
@@ -18,6 +18,7 @@ Relevant knowledge for reading this modules code:
18
18
  - https://github.com/grpc/grpc/blob/master/doc/statuscodes.md
19
19
  """
20
20
 
21
+
21
22
  import uuid
22
23
  from collections.abc import Iterator
23
24
  from typing import Callable
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Fleet Simulation Engine side."""
16
16
 
17
+
17
18
  from .vce_api import start_vce
18
19
 
19
20
  __all__ = [
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Simulation Engine Backends."""
16
16
 
17
+
17
18
  import importlib
18
19
 
19
20
  from .backend import Backend, BackendConfig
@@ -14,6 +14,7 @@
14
14
  # ==============================================================================
15
15
  """Ray backend for the Fleet API using the Simulation Engine."""
16
16
 
17
+
17
18
  import sys
18
19
  from logging import DEBUG, ERROR
19
20
  from typing import Callable, Optional, Union
@@ -265,41 +265,15 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
265
265
  for task_res in task_res_found:
266
266
  task_res.task.delivered_at = delivered_at
267
267
 
268
- # Cleanup
269
- self._force_delete_tasks_by_ids(set(ret.keys()))
270
-
271
268
  return list(ret.values())
272
269
 
273
- def delete_tasks(self, task_ids: set[UUID]) -> None:
274
- """Delete all delivered TaskIns/TaskRes pairs."""
275
- task_ins_to_be_deleted: set[UUID] = set()
276
- task_res_to_be_deleted: set[UUID] = set()
277
-
278
- with self.lock:
279
- for task_ins_id in task_ids:
280
- # Find the task_id of the matching task_res
281
- for task_res_id, task_res in self.task_res_store.items():
282
- if UUID(task_res.task.ancestry[0]) != task_ins_id:
283
- continue
284
- if task_res.task.delivered_at == "":
285
- continue
286
-
287
- task_ins_to_be_deleted.add(task_ins_id)
288
- task_res_to_be_deleted.add(task_res_id)
289
-
290
- for task_id in task_ins_to_be_deleted:
291
- del self.task_ins_store[task_id]
292
- del self.task_ins_id_to_task_res_id[task_id]
293
- for task_id in task_res_to_be_deleted:
294
- del self.task_res_store[task_id]
295
-
296
- def _force_delete_tasks_by_ids(self, task_ids: set[UUID]) -> None:
297
- """Delete tasks based on a set of TaskIns IDs."""
298
- if not task_ids:
270
+ def delete_tasks(self, task_ins_ids: set[UUID]) -> None:
271
+ """Delete TaskIns/TaskRes pairs based on provided TaskIns IDs."""
272
+ if not task_ins_ids:
299
273
  return
300
274
 
301
275
  with self.lock:
302
- for task_id in task_ids:
276
+ for task_id in task_ins_ids:
303
277
  # Delete TaskIns
304
278
  if task_id in self.task_ins_store:
305
279
  del self.task_ins_store[task_id]
@@ -308,6 +282,16 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
308
282
  task_res_id = self.task_ins_id_to_task_res_id.pop(task_id)
309
283
  del self.task_res_store[task_res_id]
310
284
 
285
+ def get_task_ids_from_run_id(self, run_id: int) -> set[UUID]:
286
+ """Get all TaskIns IDs for the given run_id."""
287
+ task_id_list: set[UUID] = set()
288
+ with self.lock:
289
+ for task_id, task_ins in self.task_ins_store.items():
290
+ if task_ins.run_id == run_id:
291
+ task_id_list.add(task_id)
292
+
293
+ return task_id_list
294
+
311
295
  def num_task_ins(self) -> int:
312
296
  """Calculate the number of task_ins in store.
313
297
 
@@ -139,8 +139,19 @@ class LinkState(abc.ABC): # pylint: disable=R0904
139
139
  """
140
140
 
141
141
  @abc.abstractmethod
142
- def delete_tasks(self, task_ids: set[UUID]) -> None:
143
- """Delete all delivered TaskIns/TaskRes pairs."""
142
+ def delete_tasks(self, task_ins_ids: set[UUID]) -> None:
143
+ """Delete TaskIns/TaskRes pairs based on provided TaskIns IDs.
144
+
145
+ Parameters
146
+ ----------
147
+ task_ins_ids : set[UUID]
148
+ A set of TaskIns IDs. For each ID in the set, the corresponding
149
+ TaskIns and its associated TaskRes will be deleted.
150
+ """
151
+
152
+ @abc.abstractmethod
153
+ def get_task_ids_from_run_id(self, run_id: int) -> set[UUID]:
154
+ """Get all TaskIns IDs for the given run_id."""
144
155
 
145
156
  @abc.abstractmethod
146
157
  def create_node(