flwr-nightly 1.26.0.dev20260129__tar.gz → 1.26.0.dev20260201__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.
Files changed (413) hide show
  1. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/PKG-INFO +2 -2
  2. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/build.py +1 -1
  3. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/config_migration.py +2 -2
  4. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/install.py +1 -1
  5. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/run/run.py +21 -4
  6. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/supernode/register.py +1 -2
  7. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/utils.py +2 -1
  8. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_rere_client/connection.py +1 -1
  9. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/args.py +4 -4
  10. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/config.py +2 -2
  11. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/logger.py +1 -1
  12. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/clientappio_pb2.py +1 -1
  13. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/clientappio_pb2_grpc.py +106 -90
  14. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/clientappio_pb2_grpc.pyi +145 -85
  15. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/serverappio_pb2.py +1 -1
  16. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/serverappio_pb2_grpc.py +168 -148
  17. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/serverappio_pb2_grpc.pyi +209 -134
  18. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/simulationio_pb2.py +1 -1
  19. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/simulationio_pb2_grpc.py +80 -64
  20. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/simulationio_pb2_grpc.pyi +109 -49
  21. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/app.py +1 -1
  22. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/serverapp/app.py +11 -4
  23. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/linkstate_factory.py +12 -4
  24. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/ffs/disk_ffs.py +1 -1
  25. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/object_store/object_store_factory.py +10 -2
  26. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/sql_mixin.py +8 -2
  27. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/cli/flower_supernode.py +2 -1
  28. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/pyproject.toml +3 -3
  29. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/README.md +0 -0
  30. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/__init__.py +0 -0
  31. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/__init__.py +0 -0
  32. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/error.py +0 -0
  33. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/exception.py +0 -0
  34. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/message_type.py +0 -0
  35. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/metadata.py +0 -0
  36. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/app/user_config.py +0 -0
  37. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/__init__.py +0 -0
  38. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/app.py +0 -0
  39. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/app_cmd/__init__.py +0 -0
  40. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/app_cmd/publish.py +0 -0
  41. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/app_cmd/review.py +0 -0
  42. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/auth_plugin/__init__.py +0 -0
  43. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/auth_plugin/auth_plugin.py +0 -0
  44. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/auth_plugin/noop_auth_plugin.py +0 -0
  45. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
  46. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/cli_account_auth_interceptor.py +0 -0
  47. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/config/__init__.py +0 -0
  48. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/config/ls.py +0 -0
  49. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/config_utils.py +0 -0
  50. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/constant.py +0 -0
  51. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/example.py +0 -0
  52. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/federation/__init__.py +0 -0
  53. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/federation/ls.py +0 -0
  54. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/flower_config.py +0 -0
  55. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/log.py +0 -0
  56. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/login/__init__.py +0 -0
  57. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/login/login.py +0 -0
  58. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/ls.py +0 -0
  59. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/new/__init__.py +0 -0
  60. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/new/new.py +0 -0
  61. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/pull.py +0 -0
  62. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/run/__init__.py +0 -0
  63. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/run_utils.py +0 -0
  64. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/stop.py +0 -0
  65. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/supernode/__init__.py +0 -0
  66. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/supernode/ls.py +0 -0
  67. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/supernode/unregister.py +0 -0
  68. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/cli/typing.py +0 -0
  69. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/__init__.py +0 -0
  70. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/client.py +0 -0
  71. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  72. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
  73. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
  74. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  75. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
  76. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/grpc_rere_client/node_auth_client_interceptor.py +0 -0
  77. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/message_handler/__init__.py +0 -0
  78. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/message_handler/message_handler.py +0 -0
  79. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/__init__.py +0 -0
  80. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/centraldp_mods.py +0 -0
  81. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/comms_mods.py +0 -0
  82. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/localdp_mod.py +0 -0
  83. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  84. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  85. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  86. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/mod/utils.py +0 -0
  87. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/numpy_client.py +0 -0
  88. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/rest_client/__init__.py +0 -0
  89. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/rest_client/connection.py +0 -0
  90. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/run_info_store.py +0 -0
  91. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/client/typing.py +0 -0
  92. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/__init__.py +0 -0
  93. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/client_app.py +0 -0
  94. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/mod/__init__.py +0 -0
  95. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/mod/centraldp_mods.py +0 -0
  96. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/mod/localdp_mod.py +0 -0
  97. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/typing.py +0 -0
  98. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/clientapp/utils.py +0 -0
  99. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/__init__.py +0 -0
  100. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/constant.py +0 -0
  101. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/context.py +0 -0
  102. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/differential_privacy.py +0 -0
  103. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/differential_privacy_constants.py +0 -0
  104. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/dp.py +0 -0
  105. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/event_log_plugin/__init__.py +0 -0
  106. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
  107. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/exit/__init__.py +0 -0
  108. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/exit/exit.py +3 -3
  109. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/exit/exit_code.py +0 -0
  110. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/exit/exit_handler.py +0 -0
  111. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/exit/signal_handler.py +0 -0
  112. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/grpc.py +0 -0
  113. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/inflatable.py +0 -0
  114. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
  115. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/inflatable_utils.py +0 -0
  116. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/message.py +0 -0
  117. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/object_ref.py +0 -0
  118. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/parameter.py +0 -0
  119. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/__init__.py +0 -0
  120. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/array.py +0 -0
  121. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/arraychunk.py +0 -0
  122. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/arrayrecord.py +0 -0
  123. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/configrecord.py +0 -0
  124. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/conversion_utils.py +0 -0
  125. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/metricrecord.py +0 -0
  126. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/recorddict.py +0 -0
  127. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/record/typeddict.py +0 -0
  128. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/recorddict_compat.py +0 -0
  129. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/retry_invoker.py +0 -0
  130. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/__init__.py +0 -0
  131. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  132. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  133. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  134. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  135. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/quantization.py +0 -0
  136. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  137. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  138. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/serde.py +0 -0
  139. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/serde_utils.py +0 -0
  140. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/telemetry.py +0 -0
  141. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/common/typing.py +0 -0
  142. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/__init__.py +0 -0
  143. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/client/__init__.py +0 -0
  144. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/client/app.py +0 -0
  145. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
  146. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/client/grpc_client/connection.py +0 -0
  147. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/common/__init__.py +0 -0
  148. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/common/constant.py +0 -0
  149. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/server/__init__.py +0 -0
  150. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/server/app.py +0 -0
  151. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/compat/simulation/__init__.py +0 -0
  152. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/__init__.py +0 -0
  153. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/appio_pb2.py +0 -0
  154. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/appio_pb2.pyi +0 -0
  155. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/appio_pb2_grpc.py +0 -0
  156. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
  157. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/clientappio_pb2.pyi +0 -0
  158. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/control_pb2.py +0 -0
  159. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/control_pb2.pyi +0 -0
  160. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/control_pb2_grpc.py +0 -0
  161. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
  162. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/error_pb2.py +0 -0
  163. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/error_pb2.pyi +0 -0
  164. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/error_pb2_grpc.py +0 -0
  165. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  166. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fab_pb2.py +0 -0
  167. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fab_pb2.pyi +0 -0
  168. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fab_pb2_grpc.py +0 -0
  169. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
  170. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/federation_pb2.py +0 -0
  171. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/federation_pb2.pyi +0 -0
  172. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/federation_pb2_grpc.py +0 -0
  173. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/federation_pb2_grpc.pyi +0 -0
  174. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fleet_pb2.py +0 -0
  175. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fleet_pb2.pyi +0 -0
  176. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  177. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  178. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/grpcadapter_pb2.py +0 -0
  179. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
  180. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
  181. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
  182. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/heartbeat_pb2.py +0 -0
  183. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
  184. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
  185. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
  186. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/log_pb2.py +0 -0
  187. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/log_pb2.pyi +0 -0
  188. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/log_pb2_grpc.py +0 -0
  189. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
  190. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/message_pb2.py +0 -0
  191. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/message_pb2.pyi +0 -0
  192. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/message_pb2_grpc.py +0 -0
  193. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
  194. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/node_pb2.py +0 -0
  195. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/node_pb2.pyi +0 -0
  196. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/node_pb2_grpc.py +0 -0
  197. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  198. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/recorddict_pb2.py +0 -0
  199. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/recorddict_pb2.pyi +0 -0
  200. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
  201. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
  202. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/run_pb2.py +0 -0
  203. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/run_pb2.pyi +0 -0
  204. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/run_pb2_grpc.py +0 -0
  205. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
  206. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/serverappio_pb2.pyi +0 -0
  207. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/simulationio_pb2.pyi +0 -0
  208. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/transport_pb2.py +0 -0
  209. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/transport_pb2.pyi +0 -0
  210. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/transport_pb2_grpc.py +0 -0
  211. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  212. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/py.typed +0 -0
  213. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/__init__.py +0 -0
  214. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/client_manager.py +0 -0
  215. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/client_proxy.py +0 -0
  216. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/compat/__init__.py +0 -0
  217. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/compat/app.py +0 -0
  218. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/compat/app_utils.py +0 -0
  219. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/compat/grid_client_proxy.py +0 -0
  220. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/compat/legacy_context.py +0 -0
  221. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/criterion.py +0 -0
  222. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
  223. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/grid/__init__.py +0 -0
  224. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/grid/grid.py +0 -0
  225. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/grid/grpc_grid.py +0 -0
  226. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/grid/inmemory_grid.py +0 -0
  227. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/history.py +0 -0
  228. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/run_serverapp.py +0 -0
  229. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/server.py +0 -0
  230. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/server_app.py +0 -0
  231. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/server_config.py +0 -0
  232. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/serverapp/__init__.py +0 -0
  233. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/serverapp_components.py +0 -0
  234. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/__init__.py +0 -0
  235. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/aggregate.py +0 -0
  236. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/bulyan.py +0 -0
  237. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  238. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  239. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  240. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  241. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  242. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedadagrad.py +0 -0
  243. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedadam.py +0 -0
  244. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedavg.py +0 -0
  245. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedavg_android.py +0 -0
  246. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedavgm.py +0 -0
  247. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedmedian.py +0 -0
  248. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedopt.py +0 -0
  249. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedprox.py +0 -0
  250. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  251. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  252. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  253. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  254. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/fedyogi.py +0 -0
  255. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/krum.py +0 -0
  256. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/qfedavg.py +0 -0
  257. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/strategy/strategy.py +0 -0
  258. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/__init__.py +0 -0
  259. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/__init__.py +0 -0
  260. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
  261. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
  262. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  263. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  264. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  265. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  266. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  267. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  268. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  269. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +0 -0
  270. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  271. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  272. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  273. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  274. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  275. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  276. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  277. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  278. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  279. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
  280. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
  281. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
  282. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/sql_linkstate.py +0 -0
  283. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/linkstate/utils.py +0 -0
  284. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
  285. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
  286. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
  287. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/simulation/__init__.py +0 -0
  288. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
  289. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
  290. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/superlink/utils.py +0 -0
  291. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/typing.py +0 -0
  292. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/utils/__init__.py +0 -0
  293. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/utils/tensorboard.py +0 -0
  294. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/utils/validator.py +0 -0
  295. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/__init__.py +0 -0
  296. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/constant.py +0 -0
  297. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/default_workflows.py +0 -0
  298. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  299. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  300. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  301. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/__init__.py +0 -0
  302. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/exception.py +0 -0
  303. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/__init__.py +0 -0
  304. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/bulyan.py +0 -0
  305. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/dp_adaptive_clipping.py +0 -0
  306. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/dp_fixed_clipping.py +0 -0
  307. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedadagrad.py +0 -0
  308. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedadam.py +0 -0
  309. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedavg.py +0 -0
  310. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedavgm.py +0 -0
  311. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedmedian.py +0 -0
  312. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedopt.py +0 -0
  313. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedprox.py +0 -0
  314. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedtrimmedavg.py +0 -0
  315. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedxgb_bagging.py +0 -0
  316. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedxgb_cyclic.py +0 -0
  317. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/fedyogi.py +0 -0
  318. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/krum.py +0 -0
  319. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/multikrum.py +0 -0
  320. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/qfedavg.py +0 -0
  321. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/result.py +0 -0
  322. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/strategy.py +0 -0
  323. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/serverapp/strategy/strategy_utils.py +0 -0
  324. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/__init__.py +0 -0
  325. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/app.py +0 -0
  326. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/legacy_app.py +0 -0
  327. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/ray_transport/__init__.py +0 -0
  328. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  329. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  330. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/ray_transport/utils.py +0 -0
  331. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/run_simulation.py +0 -0
  332. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/simulation/simulationio_connection.py +0 -0
  333. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/__init__.py +0 -0
  334. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/address.py +0 -0
  335. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/app_utils.py +0 -0
  336. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/cli/__init__.py +0 -0
  337. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/cli/flower_superexec.py +0 -0
  338. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/constant.py +0 -0
  339. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/corestate/__init__.py +0 -0
  340. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/corestate/corestate.py +0 -0
  341. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/corestate/in_memory_corestate.py +0 -0
  342. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/corestate/sql_corestate.py +0 -0
  343. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/credential_store/__init__.py +0 -0
  344. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/credential_store/credential_store.py +0 -0
  345. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/credential_store/file_credential_store.py +0 -0
  346. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/date.py +0 -0
  347. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/ffs/__init__.py +0 -0
  348. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/ffs/ffs.py +0 -0
  349. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
  350. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/grpc_health/__init__.py +0 -0
  351. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/grpc_health/health_server.py +0 -0
  352. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
  353. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/heartbeat.py +0 -0
  354. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/license_plugin/__init__.py +0 -0
  355. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
  356. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/object_store/__init__.py +0 -0
  357. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
  358. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/object_store/object_store.py +0 -0
  359. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/object_store/sql_object_store.py +0 -0
  360. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/primitives/__init__.py +0 -0
  361. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/primitives/asymmetric.py +0 -0
  362. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/primitives/asymmetric_ed25519.py +0 -0
  363. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/__init__.py +0 -0
  364. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/__init__.py +0 -0
  365. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/env.py +0 -0
  366. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/script.py.mako +0 -0
  367. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/utils.py +0 -0
  368. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/versions/__init__.py +0 -0
  369. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/alembic/versions/rev_2026_01_28_initialize_migration_of_state_tables.py +0 -0
  370. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/schema/README.md +0 -0
  371. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/schema/__init__.py +0 -0
  372. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/schema/corestate_tables.py +0 -0
  373. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/schema/linkstate_tables.py +0 -0
  374. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/state/schema/objectstore_tables.py +0 -0
  375. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/__init__.py +0 -0
  376. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
  377. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
  378. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
  379. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
  380. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
  381. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
  382. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/superexec/run_superexec.py +0 -0
  383. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/utils.py +0 -0
  384. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supercore/version.py +0 -0
  385. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/__init__.py +0 -0
  386. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/artifact_provider/__init__.py +0 -0
  387. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/artifact_provider/artifact_provider.py +0 -0
  388. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/auth_plugin/__init__.py +0 -0
  389. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/auth_plugin/auth_plugin.py +0 -0
  390. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/auth_plugin/noop_auth_plugin.py +0 -0
  391. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/federation/__init__.py +0 -0
  392. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/federation/federation_manager.py +0 -0
  393. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/federation/noop_federation_manager.py +0 -0
  394. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/__init__.py +0 -0
  395. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/__init__.py +0 -0
  396. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/control_account_auth_interceptor.py +0 -0
  397. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
  398. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
  399. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
  400. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
  401. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/__init__.py +0 -0
  402. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/cli/__init__.py +0 -0
  403. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
  404. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/nodestate/__init__.py +0 -0
  405. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
  406. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/nodestate/nodestate.py +0 -0
  407. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
  408. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/runtime/__init__.py +0 -0
  409. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
  410. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/servicer/__init__.py +0 -0
  411. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
  412. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -0
  413. {flwr_nightly-1.26.0.dev20260129 → flwr_nightly-1.26.0.dev20260201}/py/flwr/supernode/start_client_internal.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.26.0.dev20260129
3
+ Version: 1.26.0.dev20260201
4
4
  Summary: Flower: A Friendly Federated AI Framework
5
5
  License: Apache-2.0
6
6
  Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
@@ -32,7 +32,7 @@ Provides-Extra: rest
32
32
  Provides-Extra: simulation
33
33
  Requires-Dist: SQLAlchemy (>=2.0.45,<3.0.0)
34
34
  Requires-Dist: alembic (>=1.18.1,<2.0.0)
35
- Requires-Dist: click (<8.2.0)
35
+ Requires-Dist: click (>=8.0.0,<9.0.0)
36
36
  Requires-Dist: cryptography (>=44.0.1,<45.0.0)
37
37
  Requires-Dist: grpcio (>=1.70.0,<2.0.0)
38
38
  Requires-Dist: grpcio-health-checking (>=1.70.0,<2.0.0)
@@ -106,7 +106,7 @@ def build(
106
106
  if app is None:
107
107
  app = Path.cwd()
108
108
 
109
- app = app.resolve()
109
+ app = app.expanduser().resolve()
110
110
  if not app.is_dir():
111
111
  raise click.ClickException(
112
112
  f"The path {app} is not a valid path to a Flower app."
@@ -125,7 +125,7 @@ def _migrate_pyproject_toml_to_flower_config(
125
125
  if cert_path := toml_fed_config.get("root-certificates"):
126
126
  if not Path(cert_path).is_absolute():
127
127
  toml_fed_config["root-certificates"] = str(
128
- (app / cert_path).resolve()
128
+ (app / cert_path).expanduser().resolve()
129
129
  )
130
130
  # Parse and write SuperLink connection
131
131
  conn = parse_superlink_connection(toml_fed_config, name)
@@ -223,7 +223,7 @@ def migrate(
223
223
  # Determine app path for migration
224
224
  arg1 = positional_arg_1
225
225
  app = Path(arg1) if arg1 else Path(".")
226
- app = app.resolve()
226
+ app = app.expanduser().resolve()
227
227
 
228
228
  # Check if migration is applicable and if legacy usage is detected
229
229
  is_migratable, reason = _is_migratable(app)
@@ -63,7 +63,7 @@ def install(
63
63
  if source is None:
64
64
  source = Path(typer.prompt("Enter the source FAB file"))
65
65
 
66
- source = source.resolve()
66
+ source = source.expanduser().resolve()
67
67
  if not source.exists() or not source.is_file():
68
68
  raise click.ClickException(
69
69
  f"The source {source} does not exist or is not a file."
@@ -44,7 +44,7 @@ from flwr.common.serde import config_record_to_proto, fab_to_proto, user_config_
44
44
  from flwr.common.typing import Fab
45
45
  from flwr.proto.control_pb2 import StartRunRequest # pylint: disable=E0611
46
46
  from flwr.proto.control_pb2_grpc import ControlStub
47
- from flwr.supercore.utils import parse_app_spec
47
+ from flwr.supercore.utils import check_federation_format, parse_app_spec
48
48
 
49
49
  from ..log import start_stream
50
50
  from ..utils import (
@@ -67,6 +67,14 @@ def run(
67
67
  str | None,
68
68
  typer.Argument(help="Name of the SuperLink connection."),
69
69
  ] = None,
70
+ federation: Annotated[
71
+ str | None,
72
+ typer.Option(
73
+ "--federation",
74
+ help="The federation to submit the run to; must be in the "
75
+ "format `@<account>/<federation>`.",
76
+ ),
77
+ ] = None,
70
78
  run_config_overrides: Annotated[
71
79
  list[str] | None,
72
80
  typer.Option(
@@ -125,11 +133,11 @@ def run(
125
133
 
126
134
  # Validate TOML configuration for local app
127
135
  else:
136
+ app = app.expanduser().resolve() # Resolve path to absolute
128
137
  config, warnings = load_and_validate(app / FAB_CONFIG_FILE)
129
138
  if warnings:
130
139
  typer.secho(
131
- "Missing recommended fields in Flower App configuration "
132
- "(pyproject.toml):\n"
140
+ f"Flower App configuration warnings in '{app / FAB_CONFIG_FILE}':\n"
133
141
  + "\n".join([f"- {line}" for line in warnings]),
134
142
  fg=typer.colors.YELLOW,
135
143
  bold=True,
@@ -139,6 +147,7 @@ def run(
139
147
  _run_with_control_api(
140
148
  app,
141
149
  config,
150
+ federation,
142
151
  superlink_connection,
143
152
  run_config_overrides,
144
153
  stream,
@@ -157,6 +166,7 @@ def run(
157
166
  def _run_with_control_api(
158
167
  app: Path,
159
168
  config: dict[str, Any],
169
+ federation: str | None,
160
170
  superlink_connection: SuperLinkConnection,
161
171
  config_overrides: list[str] | None,
162
172
  stream: bool,
@@ -165,6 +175,13 @@ def _run_with_control_api(
165
175
  ) -> None:
166
176
  channel = None
167
177
  is_remote_app = app_spec is not None
178
+
179
+ # Determine federation to use
180
+ if federation: # Override federation from CLI
181
+ check_federation_format(federation)
182
+ else: # Use federation from SuperLink connection if set
183
+ federation = superlink_connection.federation or ""
184
+
168
185
  try:
169
186
  channel = init_channel_from_connection(superlink_connection)
170
187
  stub = ControlStub(channel)
@@ -193,7 +210,7 @@ def _run_with_control_api(
193
210
  req = StartRunRequest(
194
211
  fab=fab_to_proto(fab),
195
212
  override_config=user_config_to_proto(parse_config_args(config_overrides)),
196
- federation=superlink_connection.federation or "",
213
+ federation=federation,
197
214
  federation_options=config_record_to_proto(c_record),
198
215
  app_spec=app_spec or "",
199
216
  )
@@ -66,8 +66,7 @@ def register( # pylint: disable=R0914
66
66
  ) -> None:
67
67
  """Add a SuperNode to the federation."""
68
68
  # Load public key
69
- public_key_path = Path(public_key)
70
- public_key_bytes = try_load_public_key(public_key_path)
69
+ public_key_bytes = try_load_public_key(public_key.expanduser())
71
70
 
72
71
  with cli_output_handler(output_format=output_format) as is_json:
73
72
  # Migrate legacy usage if any
@@ -418,7 +418,8 @@ def flwr_cli_grpc_exc_handler() -> Iterator[None]: # pylint: disable=too-many-b
418
418
  if e.details() == FEDERATION_NOT_SPECIFIED_MESSAGE: # pylint: disable=E1101
419
419
  raise click.ClickException(
420
420
  "No federation specified. "
421
- "Please specify a federation and try again.",
421
+ "Please use the `--federation` flag or set a default federation "
422
+ "in your SuperLink connection configuration."
422
423
  ) from None
423
424
  patten = re.compile(FEDERATION_NOT_FOUND_MESSAGE.replace("%s", "(.+)"))
424
425
  if m := patten.match(e.details()): # pylint: disable=E1101
@@ -136,7 +136,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
136
136
  confirm_message_received : Callable[[str], None]
137
137
  """
138
138
  if isinstance(root_certificates, str):
139
- root_certificates = Path(root_certificates).read_bytes()
139
+ root_certificates = Path(root_certificates).expanduser().read_bytes()
140
140
 
141
141
  # Automatic node auth: generate keys if user didn't provide any
142
142
  self_registered = False
@@ -95,7 +95,7 @@ def try_obtain_root_certificates(
95
95
  log(ERROR, "Path argument `--root-certificates` does not point to a file.")
96
96
  sys.exit(1)
97
97
  else:
98
- root_certificates = Path(root_cert_path).read_bytes()
98
+ root_certificates = Path(root_cert_path).expanduser().read_bytes()
99
99
  log(
100
100
  DEBUG,
101
101
  "Starting secure HTTPS channel to %s "
@@ -129,9 +129,9 @@ def try_obtain_server_certificates(
129
129
  if not isfile(args.ssl_keyfile):
130
130
  sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
131
131
  certificates = (
132
- Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
133
- Path(args.ssl_certfile).read_bytes(), # server certificate
134
- Path(args.ssl_keyfile).read_bytes(), # server private key
132
+ Path(args.ssl_ca_certfile).expanduser().read_bytes(), # CA certificate
133
+ Path(args.ssl_certfile).expanduser().read_bytes(), # server certificate
134
+ Path(args.ssl_keyfile).expanduser().read_bytes(), # server private key
135
135
  )
136
136
  return certificates
137
137
  if args.ssl_certfile or args.ssl_keyfile or args.ssl_ca_certfile:
@@ -42,7 +42,7 @@ T_dict = TypeVar("T_dict", bound=dict[str, Any]) # pylint: disable=invalid-name
42
42
 
43
43
  def get_flwr_dir(provided_path: str | None = None) -> Path:
44
44
  """Return the Flower home directory based on env variables."""
45
- if provided_path is None or not Path(provided_path).is_dir():
45
+ if provided_path is None or not Path(provided_path).expanduser().is_dir():
46
46
  return Path(
47
47
  os.getenv(
48
48
  FLWR_HOME,
@@ -213,7 +213,7 @@ def parse_config_args(config: list[str] | None, flatten: bool = True) -> dict[st
213
213
 
214
214
  # Handle if .toml file is passed
215
215
  if len(config) == 1 and config[0].endswith(".toml"):
216
- with Path(config[0]).open("rb") as config_file:
216
+ with Path(config[0]).expanduser().open("rb") as config_file:
217
217
  overrides = flatten_dict(tomli.load(config_file))
218
218
  return overrides
219
219
 
@@ -385,7 +385,7 @@ def start_log_uploader(
385
385
  ) -> threading.Thread:
386
386
  """Start the log uploader thread and return it."""
387
387
  thread = threading.Thread(
388
- target=_log_uploader, args=(log_queue, node_id, run_id, stub)
388
+ target=_log_uploader, args=(log_queue, node_id, run_id, stub), daemon=True
389
389
  )
390
390
  thread.start()
391
391
  return thread
@@ -28,7 +28,7 @@ from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
28
28
  from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\xeb\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto2\xeb\x07\n\x0b\x43lientAppIo\x12_\n\x10ListAppsToLaunch\x12#.flwr.proto.ListAppsToLaunchRequest\x1a$.flwr.proto.ListAppsToLaunchResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x62\x06proto3')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -52,26 +52,6 @@ class ClientAppIoStub(object):
52
52
  request_serializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.SerializeToString,
53
53
  response_deserializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.FromString,
54
54
  _registered_method=True)
55
- self.PullClientAppInputs = channel.unary_unary(
56
- '/flwr.proto.ClientAppIo/PullClientAppInputs',
57
- request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
58
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
59
- _registered_method=True)
60
- self.PushClientAppOutputs = channel.unary_unary(
61
- '/flwr.proto.ClientAppIo/PushClientAppOutputs',
62
- request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
63
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
64
- _registered_method=True)
65
- self.PushMessage = channel.unary_unary(
66
- '/flwr.proto.ClientAppIo/PushMessage',
67
- request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
68
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
69
- _registered_method=True)
70
- self.PullMessage = channel.unary_unary(
71
- '/flwr.proto.ClientAppIo/PullMessage',
72
- request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
73
- response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
74
- _registered_method=True)
75
55
  self.SendAppHeartbeat = channel.unary_unary(
76
56
  '/flwr.proto.ClientAppIo/SendAppHeartbeat',
77
57
  request_serializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
@@ -92,13 +72,37 @@ class ClientAppIoStub(object):
92
72
  request_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
93
73
  response_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
94
74
  _registered_method=True)
75
+ self.PullClientAppInputs = channel.unary_unary(
76
+ '/flwr.proto.ClientAppIo/PullClientAppInputs',
77
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
78
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
79
+ _registered_method=True)
80
+ self.PushClientAppOutputs = channel.unary_unary(
81
+ '/flwr.proto.ClientAppIo/PushClientAppOutputs',
82
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
83
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
84
+ _registered_method=True)
85
+ self.PushMessage = channel.unary_unary(
86
+ '/flwr.proto.ClientAppIo/PushMessage',
87
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
88
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
89
+ _registered_method=True)
90
+ self.PullMessage = channel.unary_unary(
91
+ '/flwr.proto.ClientAppIo/PullMessage',
92
+ request_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
93
+ response_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
94
+ _registered_method=True)
95
95
 
96
96
 
97
97
  class ClientAppIoServicer(object):
98
98
  """Missing associated documentation comment in .proto file."""
99
99
 
100
100
  def ListAppsToLaunch(self, request, context):
101
- """Get run IDs with pending messages
101
+ """///////////////////////////////////////////////////////////////////////////
102
+ General *AppIo endpoints for SuperExec processes
103
+ ///////////////////////////////////////////////////////////////////////////
104
+
105
+ Get run IDs with pending messages
102
106
  """
103
107
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
104
108
  context.set_details('Method not implemented!')
@@ -112,63 +116,75 @@ class ClientAppIoServicer(object):
112
116
  raise NotImplementedError('Method not implemented!')
113
117
 
114
118
  def GetRun(self, request, context):
115
- """Get run details
119
+ """///////////////////////////////////////////////////////////////////////////
120
+ General *AppIo endpoints for App Executor processes
121
+ ///////////////////////////////////////////////////////////////////////////
122
+
123
+ Get run details
116
124
  """
117
125
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
118
126
  context.set_details('Method not implemented!')
119
127
  raise NotImplementedError('Method not implemented!')
120
128
 
121
- def PullClientAppInputs(self, request, context):
122
- """Pull client app inputs
129
+ def SendAppHeartbeat(self, request, context):
130
+ """App heartbeat
123
131
  """
124
132
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
125
133
  context.set_details('Method not implemented!')
126
134
  raise NotImplementedError('Method not implemented!')
127
135
 
128
- def PushClientAppOutputs(self, request, context):
129
- """Push client app outputs
136
+ def PushObject(self, request, context):
137
+ """///////////////////////////////////////////////////////////////////////////
138
+ Specific endpoints shared by ServerAppIo and ClientAppIo
139
+ ///////////////////////////////////////////////////////////////////////////
140
+
141
+ Push Object
130
142
  """
131
143
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
132
144
  context.set_details('Method not implemented!')
133
145
  raise NotImplementedError('Method not implemented!')
134
146
 
135
- def PushMessage(self, request, context):
136
- """Push Message
147
+ def PullObject(self, request, context):
148
+ """Pull Object
137
149
  """
138
150
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
139
151
  context.set_details('Method not implemented!')
140
152
  raise NotImplementedError('Method not implemented!')
141
153
 
142
- def PullMessage(self, request, context):
143
- """Pull Message
154
+ def ConfirmMessageReceived(self, request, context):
155
+ """Confirm Message Received
144
156
  """
145
157
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
146
158
  context.set_details('Method not implemented!')
147
159
  raise NotImplementedError('Method not implemented!')
148
160
 
149
- def SendAppHeartbeat(self, request, context):
150
- """App heartbeat
161
+ def PullClientAppInputs(self, request, context):
162
+ """///////////////////////////////////////////////////////////////////////////
163
+ Specific endpoints for ClientAppIo
164
+ ///////////////////////////////////////////////////////////////////////////
165
+
166
+ Pull client app inputs
151
167
  """
152
168
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
153
169
  context.set_details('Method not implemented!')
154
170
  raise NotImplementedError('Method not implemented!')
155
171
 
156
- def PushObject(self, request, context):
157
- """Push Object
172
+ def PushClientAppOutputs(self, request, context):
173
+ """Push client app outputs
158
174
  """
159
175
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
160
176
  context.set_details('Method not implemented!')
161
177
  raise NotImplementedError('Method not implemented!')
162
178
 
163
- def PullObject(self, request, context):
164
- """Pull Object
179
+ def PushMessage(self, request, context):
180
+ """Push Message
165
181
  """
166
182
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
167
183
  context.set_details('Method not implemented!')
168
184
  raise NotImplementedError('Method not implemented!')
169
185
 
170
- def ConfirmMessageReceived(self, request, context):
171
- """Confirm Message Received
186
+ def PullMessage(self, request, context):
187
+ """Pull Message
172
188
  """
173
189
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
174
190
  context.set_details('Method not implemented!')
@@ -192,26 +208,6 @@ def add_ClientAppIoServicer_to_server(servicer, server):
192
208
  request_deserializer=flwr_dot_proto_dot_run__pb2.GetRunRequest.FromString,
193
209
  response_serializer=flwr_dot_proto_dot_run__pb2.GetRunResponse.SerializeToString,
194
210
  ),
195
- 'PullClientAppInputs': grpc.unary_unary_rpc_method_handler(
196
- servicer.PullClientAppInputs,
197
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
198
- response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
199
- ),
200
- 'PushClientAppOutputs': grpc.unary_unary_rpc_method_handler(
201
- servicer.PushClientAppOutputs,
202
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
203
- response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
204
- ),
205
- 'PushMessage': grpc.unary_unary_rpc_method_handler(
206
- servicer.PushMessage,
207
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.FromString,
208
- response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.SerializeToString,
209
- ),
210
- 'PullMessage': grpc.unary_unary_rpc_method_handler(
211
- servicer.PullMessage,
212
- request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
213
- response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
214
- ),
215
211
  'SendAppHeartbeat': grpc.unary_unary_rpc_method_handler(
216
212
  servicer.SendAppHeartbeat,
217
213
  request_deserializer=flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.FromString,
@@ -232,6 +228,26 @@ def add_ClientAppIoServicer_to_server(servicer, server):
232
228
  request_deserializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.FromString,
233
229
  response_serializer=flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.SerializeToString,
234
230
  ),
231
+ 'PullClientAppInputs': grpc.unary_unary_rpc_method_handler(
232
+ servicer.PullClientAppInputs,
233
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.FromString,
234
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.SerializeToString,
235
+ ),
236
+ 'PushClientAppOutputs': grpc.unary_unary_rpc_method_handler(
237
+ servicer.PushClientAppOutputs,
238
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.FromString,
239
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.SerializeToString,
240
+ ),
241
+ 'PushMessage': grpc.unary_unary_rpc_method_handler(
242
+ servicer.PushMessage,
243
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.FromString,
244
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.SerializeToString,
245
+ ),
246
+ 'PullMessage': grpc.unary_unary_rpc_method_handler(
247
+ servicer.PullMessage,
248
+ request_deserializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.FromString,
249
+ response_serializer=flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.SerializeToString,
250
+ ),
235
251
  }
236
252
  generic_handler = grpc.method_handlers_generic_handler(
237
253
  'flwr.proto.ClientAppIo', rpc_method_handlers)
@@ -325,7 +341,7 @@ class ClientAppIo(object):
325
341
  _registered_method=True)
326
342
 
327
343
  @staticmethod
328
- def PullClientAppInputs(request,
344
+ def SendAppHeartbeat(request,
329
345
  target,
330
346
  options=(),
331
347
  channel_credentials=None,
@@ -338,9 +354,9 @@ class ClientAppIo(object):
338
354
  return grpc.experimental.unary_unary(
339
355
  request,
340
356
  target,
341
- '/flwr.proto.ClientAppIo/PullClientAppInputs',
342
- flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
343
- flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
357
+ '/flwr.proto.ClientAppIo/SendAppHeartbeat',
358
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
359
+ flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
344
360
  options,
345
361
  channel_credentials,
346
362
  insecure,
@@ -352,7 +368,7 @@ class ClientAppIo(object):
352
368
  _registered_method=True)
353
369
 
354
370
  @staticmethod
355
- def PushClientAppOutputs(request,
371
+ def PushObject(request,
356
372
  target,
357
373
  options=(),
358
374
  channel_credentials=None,
@@ -365,9 +381,9 @@ class ClientAppIo(object):
365
381
  return grpc.experimental.unary_unary(
366
382
  request,
367
383
  target,
368
- '/flwr.proto.ClientAppIo/PushClientAppOutputs',
369
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
370
- flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
384
+ '/flwr.proto.ClientAppIo/PushObject',
385
+ flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
386
+ flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
371
387
  options,
372
388
  channel_credentials,
373
389
  insecure,
@@ -379,7 +395,7 @@ class ClientAppIo(object):
379
395
  _registered_method=True)
380
396
 
381
397
  @staticmethod
382
- def PushMessage(request,
398
+ def PullObject(request,
383
399
  target,
384
400
  options=(),
385
401
  channel_credentials=None,
@@ -392,9 +408,9 @@ class ClientAppIo(object):
392
408
  return grpc.experimental.unary_unary(
393
409
  request,
394
410
  target,
395
- '/flwr.proto.ClientAppIo/PushMessage',
396
- flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
397
- flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
411
+ '/flwr.proto.ClientAppIo/PullObject',
412
+ flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
413
+ flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
398
414
  options,
399
415
  channel_credentials,
400
416
  insecure,
@@ -406,7 +422,7 @@ class ClientAppIo(object):
406
422
  _registered_method=True)
407
423
 
408
424
  @staticmethod
409
- def PullMessage(request,
425
+ def ConfirmMessageReceived(request,
410
426
  target,
411
427
  options=(),
412
428
  channel_credentials=None,
@@ -419,9 +435,9 @@ class ClientAppIo(object):
419
435
  return grpc.experimental.unary_unary(
420
436
  request,
421
437
  target,
422
- '/flwr.proto.ClientAppIo/PullMessage',
423
- flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
424
- flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
438
+ '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
439
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
440
+ flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
425
441
  options,
426
442
  channel_credentials,
427
443
  insecure,
@@ -433,7 +449,7 @@ class ClientAppIo(object):
433
449
  _registered_method=True)
434
450
 
435
451
  @staticmethod
436
- def SendAppHeartbeat(request,
452
+ def PullClientAppInputs(request,
437
453
  target,
438
454
  options=(),
439
455
  channel_credentials=None,
@@ -446,9 +462,9 @@ class ClientAppIo(object):
446
462
  return grpc.experimental.unary_unary(
447
463
  request,
448
464
  target,
449
- '/flwr.proto.ClientAppIo/SendAppHeartbeat',
450
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatRequest.SerializeToString,
451
- flwr_dot_proto_dot_heartbeat__pb2.SendAppHeartbeatResponse.FromString,
465
+ '/flwr.proto.ClientAppIo/PullClientAppInputs',
466
+ flwr_dot_proto_dot_appio__pb2.PullAppInputsRequest.SerializeToString,
467
+ flwr_dot_proto_dot_appio__pb2.PullAppInputsResponse.FromString,
452
468
  options,
453
469
  channel_credentials,
454
470
  insecure,
@@ -460,7 +476,7 @@ class ClientAppIo(object):
460
476
  _registered_method=True)
461
477
 
462
478
  @staticmethod
463
- def PushObject(request,
479
+ def PushClientAppOutputs(request,
464
480
  target,
465
481
  options=(),
466
482
  channel_credentials=None,
@@ -473,9 +489,9 @@ class ClientAppIo(object):
473
489
  return grpc.experimental.unary_unary(
474
490
  request,
475
491
  target,
476
- '/flwr.proto.ClientAppIo/PushObject',
477
- flwr_dot_proto_dot_message__pb2.PushObjectRequest.SerializeToString,
478
- flwr_dot_proto_dot_message__pb2.PushObjectResponse.FromString,
492
+ '/flwr.proto.ClientAppIo/PushClientAppOutputs',
493
+ flwr_dot_proto_dot_appio__pb2.PushAppOutputsRequest.SerializeToString,
494
+ flwr_dot_proto_dot_appio__pb2.PushAppOutputsResponse.FromString,
479
495
  options,
480
496
  channel_credentials,
481
497
  insecure,
@@ -487,7 +503,7 @@ class ClientAppIo(object):
487
503
  _registered_method=True)
488
504
 
489
505
  @staticmethod
490
- def PullObject(request,
506
+ def PushMessage(request,
491
507
  target,
492
508
  options=(),
493
509
  channel_credentials=None,
@@ -500,9 +516,9 @@ class ClientAppIo(object):
500
516
  return grpc.experimental.unary_unary(
501
517
  request,
502
518
  target,
503
- '/flwr.proto.ClientAppIo/PullObject',
504
- flwr_dot_proto_dot_message__pb2.PullObjectRequest.SerializeToString,
505
- flwr_dot_proto_dot_message__pb2.PullObjectResponse.FromString,
519
+ '/flwr.proto.ClientAppIo/PushMessage',
520
+ flwr_dot_proto_dot_appio__pb2.PushAppMessagesRequest.SerializeToString,
521
+ flwr_dot_proto_dot_appio__pb2.PushAppMessagesResponse.FromString,
506
522
  options,
507
523
  channel_credentials,
508
524
  insecure,
@@ -514,7 +530,7 @@ class ClientAppIo(object):
514
530
  _registered_method=True)
515
531
 
516
532
  @staticmethod
517
- def ConfirmMessageReceived(request,
533
+ def PullMessage(request,
518
534
  target,
519
535
  options=(),
520
536
  channel_credentials=None,
@@ -527,9 +543,9 @@ class ClientAppIo(object):
527
543
  return grpc.experimental.unary_unary(
528
544
  request,
529
545
  target,
530
- '/flwr.proto.ClientAppIo/ConfirmMessageReceived',
531
- flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedRequest.SerializeToString,
532
- flwr_dot_proto_dot_message__pb2.ConfirmMessageReceivedResponse.FromString,
546
+ '/flwr.proto.ClientAppIo/PullMessage',
547
+ flwr_dot_proto_dot_appio__pb2.PullAppMessagesRequest.SerializeToString,
548
+ flwr_dot_proto_dot_appio__pb2.PullAppMessagesResponse.FromString,
533
549
  options,
534
550
  channel_credentials,
535
551
  insecure,