flwr-nightly 1.23.0.dev20251021__tar.gz → 1.23.0.dev20251023__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.
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/PKG-INFO +1 -1
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/app.py +4 -6
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +2 -2
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/vce/vce_api.py +2 -1
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/linkstate_factory.py +2 -1
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +35 -40
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/utils.py +3 -54
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/run_simulation.py +2 -1
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/constant.py +3 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -4
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/object_store/object_store_factory.py +26 -6
- flwr_nightly-1.23.0.dev20251023/py/flwr/supercore/object_store/sqlite_object_store.py +252 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/sqlite_mixin.py +5 -37
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/utils.py +20 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/pyproject.toml +1 -1
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/README.md +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/app/exception.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/auth_plugin/noop_auth_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/cli_account_auth_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/__init__.pytorch_legacy_api.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.pytorch_legacy_api.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/client.xgboost.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.pytorch_legacy_api.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/server.xgboost.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.pytorch_legacy_api.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/task.xgboost.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.pytorch_legacy_api.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/pull.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/supernode/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/supernode/ls.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/supernode/register.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/supernode/unregister.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/grpc_rere_client/node_auth_client_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/client_app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/mod/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/typing.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/clientapp/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/exit/exit_handler.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/exit/signal_handler.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/inflatable_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/appio_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/appio_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/exception.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/bulyan.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedadam.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedopt.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedprox.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/krum.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/multikrum.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/result.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/strategy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/serverapp/strategy/strategy_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/app_utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/cli/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/cli/flower_superexec.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/corestate/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/corestate/corestate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/grpc_health/health_server.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/object_store/utils.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/primitives/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/primitives/asymmetric.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/superexec/run_superexec.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/artifact_provider/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/artifact_provider/artifact_provider.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/auth_plugin/noop_auth_plugin.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/control_account_auth_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -0
- {flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/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.23.0.
|
|
3
|
+
Version: 1.23.0.dev20251023
|
|
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
|
|
@@ -64,6 +64,7 @@ from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
|
|
|
64
64
|
)
|
|
65
65
|
from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
|
|
66
66
|
from flwr.server.fleet_event_log_interceptor import FleetEventLogInterceptor
|
|
67
|
+
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
|
|
67
68
|
from flwr.supercore.ffs import FfsFactory
|
|
68
69
|
from flwr.supercore.grpc_health import add_args_health, run_health_server_grpc_no_tls
|
|
69
70
|
from flwr.supercore.object_store import ObjectStoreFactory
|
|
@@ -85,7 +86,6 @@ from .superlink.linkstate import LinkStateFactory
|
|
|
85
86
|
from .superlink.serverappio.serverappio_grpc import run_serverappio_api_grpc
|
|
86
87
|
from .superlink.simulation.simulationio_grpc import run_simulationio_api_grpc
|
|
87
88
|
|
|
88
|
-
DATABASE = ":flwr-in-memory-state:"
|
|
89
89
|
BASE_DIR = get_flwr_dir() / "superlink" / "ffs"
|
|
90
90
|
P = TypeVar("P", ControlAuthnPlugin, ControlAuthzPlugin)
|
|
91
91
|
|
|
@@ -272,7 +272,7 @@ def run_superlink() -> None:
|
|
|
272
272
|
ffs_factory = FfsFactory(args.storage_dir)
|
|
273
273
|
|
|
274
274
|
# Initialize ObjectStoreFactory
|
|
275
|
-
objectstore_factory = ObjectStoreFactory()
|
|
275
|
+
objectstore_factory = ObjectStoreFactory(args.database)
|
|
276
276
|
|
|
277
277
|
# Start Control API
|
|
278
278
|
is_simulation = args.simulation
|
|
@@ -710,11 +710,9 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
|
|
|
710
710
|
parser.add_argument(
|
|
711
711
|
"--database",
|
|
712
712
|
help="A string representing the path to the database "
|
|
713
|
-
"file that will be opened.
|
|
714
|
-
"will open a connection to a database that is in RAM, "
|
|
715
|
-
"instead of on disk. If nothing is provided, "
|
|
713
|
+
"file that will be opened. If nothing is provided, "
|
|
716
714
|
"Flower will just create a state in memory.",
|
|
717
|
-
default=
|
|
715
|
+
default=FLWR_IN_MEMORY_DB_NAME,
|
|
718
716
|
)
|
|
719
717
|
parser.add_argument(
|
|
720
718
|
"--storage-dir",
|
|
@@ -247,7 +247,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
247
247
|
"""Push an object to the ObjectStore."""
|
|
248
248
|
log(
|
|
249
249
|
DEBUG,
|
|
250
|
-
"[
|
|
250
|
+
"[Fleet.PushObject] Push Object with object_id=%s",
|
|
251
251
|
request.object_id,
|
|
252
252
|
)
|
|
253
253
|
|
|
@@ -272,7 +272,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
272
272
|
"""Pull an object from the ObjectStore."""
|
|
273
273
|
log(
|
|
274
274
|
DEBUG,
|
|
275
|
-
"[
|
|
275
|
+
"[Fleet.PullObject] Pull Object with object_id=%s",
|
|
276
276
|
request.object_id,
|
|
277
277
|
)
|
|
278
278
|
|
|
@@ -42,6 +42,7 @@ from flwr.common.constant import (
|
|
|
42
42
|
from flwr.common.logger import log
|
|
43
43
|
from flwr.common.typing import Run
|
|
44
44
|
from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
|
|
45
|
+
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
|
|
45
46
|
|
|
46
47
|
from .backend import Backend, error_messages_backends, supported_backends
|
|
47
48
|
|
|
@@ -312,7 +313,7 @@ def start_vce(
|
|
|
312
313
|
if not state_factory:
|
|
313
314
|
log(INFO, "A StateFactory was not supplied to the SimulationEngine.")
|
|
314
315
|
# Create an empty in-memory state factory
|
|
315
|
-
state_factory = LinkStateFactory(
|
|
316
|
+
state_factory = LinkStateFactory(FLWR_IN_MEMORY_DB_NAME)
|
|
316
317
|
log(INFO, "Created new %s.", state_factory.__class__.__name__)
|
|
317
318
|
|
|
318
319
|
if num_supernodes:
|
|
@@ -19,6 +19,7 @@ from logging import DEBUG
|
|
|
19
19
|
from typing import Optional
|
|
20
20
|
|
|
21
21
|
from flwr.common.logger import log
|
|
22
|
+
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
|
|
22
23
|
|
|
23
24
|
from .in_memory_linkstate import InMemoryLinkState
|
|
24
25
|
from .linkstate import LinkState
|
|
@@ -44,7 +45,7 @@ class LinkStateFactory:
|
|
|
44
45
|
def state(self) -> LinkState:
|
|
45
46
|
"""Return a State instance and create it, if necessary."""
|
|
46
47
|
# InMemoryState
|
|
47
|
-
if self.database ==
|
|
48
|
+
if self.database == FLWR_IN_MEMORY_DB_NAME:
|
|
48
49
|
if self.state_instance is None:
|
|
49
50
|
self.state_instance = InMemoryLinkState()
|
|
50
51
|
log(DEBUG, "Using InMemoryState")
|
|
@@ -52,6 +52,7 @@ from flwr.proto.recorddict_pb2 import RecordDict as ProtoRecordDict
|
|
|
52
52
|
from flwr.server.utils.validator import validate_message
|
|
53
53
|
from flwr.supercore.constant import NodeStatus
|
|
54
54
|
from flwr.supercore.sqlite_mixin import SqliteMixin
|
|
55
|
+
from flwr.supercore.utils import int64_to_uint64, uint64_to_int64
|
|
55
56
|
|
|
56
57
|
from .linkstate import LinkState
|
|
57
58
|
from .utils import (
|
|
@@ -60,9 +61,7 @@ from .utils import (
|
|
|
60
61
|
configrecord_to_bytes,
|
|
61
62
|
context_from_bytes,
|
|
62
63
|
context_to_bytes,
|
|
63
|
-
convert_sint64_to_uint64,
|
|
64
64
|
convert_sint64_values_in_dict_to_uint64,
|
|
65
|
-
convert_uint64_to_sint64,
|
|
66
65
|
convert_uint64_values_in_dict_to_sint64,
|
|
67
66
|
generate_rand_int_from_bytes,
|
|
68
67
|
has_valid_sub_status,
|
|
@@ -265,7 +264,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
265
264
|
data: dict[str, Union[str, int]] = {}
|
|
266
265
|
|
|
267
266
|
# Convert the uint64 value to sint64 for SQLite
|
|
268
|
-
data["node_id"] =
|
|
267
|
+
data["node_id"] = uint64_to_int64(node_id)
|
|
269
268
|
|
|
270
269
|
# Retrieve all Messages for node_id
|
|
271
270
|
query = """
|
|
@@ -340,8 +339,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
340
339
|
if (
|
|
341
340
|
msg_ins
|
|
342
341
|
and message
|
|
343
|
-
and
|
|
344
|
-
!= res_metadata.src_node_id
|
|
342
|
+
and int64_to_uint64(msg_ins["dst_node_id"]) != res_metadata.src_node_id
|
|
345
343
|
):
|
|
346
344
|
return None
|
|
347
345
|
|
|
@@ -417,7 +415,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
417
415
|
dst_node_ids: set[int] = set()
|
|
418
416
|
for message_id in message_ids:
|
|
419
417
|
in_message = found_message_ins_dict[message_id]
|
|
420
|
-
sint_node_id =
|
|
418
|
+
sint_node_id = uint64_to_int64(in_message.metadata.dst_node_id)
|
|
421
419
|
dst_node_ids.add(sint_node_id)
|
|
422
420
|
query = f"""
|
|
423
421
|
SELECT node_id, online_until
|
|
@@ -430,8 +428,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
430
428
|
inquired_in_message_ids=message_ids,
|
|
431
429
|
found_in_message_dict=found_message_ins_dict,
|
|
432
430
|
node_id_to_online_until={
|
|
433
|
-
|
|
434
|
-
for row in rows
|
|
431
|
+
int64_to_uint64(row["node_id"]): row["online_until"] for row in rows
|
|
435
432
|
},
|
|
436
433
|
current_time=current,
|
|
437
434
|
)
|
|
@@ -532,7 +529,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
532
529
|
WHERE run_id = :run_id;
|
|
533
530
|
"""
|
|
534
531
|
|
|
535
|
-
sint64_run_id =
|
|
532
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
536
533
|
data = {"run_id": sint64_run_id}
|
|
537
534
|
|
|
538
535
|
with self.conn:
|
|
@@ -550,7 +547,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
550
547
|
)
|
|
551
548
|
|
|
552
549
|
# Convert the uint64 value to sint64 for SQLite
|
|
553
|
-
sint64_node_id =
|
|
550
|
+
sint64_node_id = uint64_to_int64(uint64_node_id)
|
|
554
551
|
|
|
555
552
|
query = """
|
|
556
553
|
INSERT INTO node
|
|
@@ -589,7 +586,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
589
586
|
|
|
590
587
|
def delete_node(self, owner_aid: str, node_id: int) -> None:
|
|
591
588
|
"""Delete a node."""
|
|
592
|
-
sint64_node_id =
|
|
589
|
+
sint64_node_id = uint64_to_int64(node_id)
|
|
593
590
|
|
|
594
591
|
query = """
|
|
595
592
|
UPDATE node
|
|
@@ -628,7 +625,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
628
625
|
raise AttributeError("LinkState not initialized")
|
|
629
626
|
|
|
630
627
|
# Convert the uint64 value to sint64 for SQLite
|
|
631
|
-
sint64_run_id =
|
|
628
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
632
629
|
|
|
633
630
|
# Validate run ID
|
|
634
631
|
query = "SELECT COUNT(*) FROM run WHERE run_id = ?"
|
|
@@ -673,9 +670,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
673
670
|
conditions = []
|
|
674
671
|
params = []
|
|
675
672
|
if node_ids is not None:
|
|
676
|
-
sint64_node_ids = [
|
|
677
|
-
convert_uint64_to_sint64(node_id) for node_id in node_ids
|
|
678
|
-
]
|
|
673
|
+
sint64_node_ids = [uint64_to_int64(node_id) for node_id in node_ids]
|
|
679
674
|
placeholders = ",".join(["?"] * len(sint64_node_ids))
|
|
680
675
|
conditions.append(f"node_id IN ({placeholders})")
|
|
681
676
|
params.extend(sint64_node_ids)
|
|
@@ -698,7 +693,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
698
693
|
result: list[NodeInfo] = []
|
|
699
694
|
for row in rows:
|
|
700
695
|
# Convert sint64 node_id to uint64
|
|
701
|
-
row["node_id"] =
|
|
696
|
+
row["node_id"] = int64_to_uint64(row["node_id"])
|
|
702
697
|
result.append(NodeInfo(**row))
|
|
703
698
|
|
|
704
699
|
return result
|
|
@@ -706,7 +701,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
706
701
|
def get_node_public_key(self, node_id: int) -> bytes:
|
|
707
702
|
"""Get `public_key` for the specified `node_id`."""
|
|
708
703
|
# Convert the uint64 value to sint64 for SQLite
|
|
709
|
-
sint64_node_id =
|
|
704
|
+
sint64_node_id = uint64_to_int64(node_id)
|
|
710
705
|
|
|
711
706
|
# Query the public key for the given node_id
|
|
712
707
|
query = "SELECT public_key FROM node WHERE node_id = ? AND status != ?;"
|
|
@@ -730,7 +725,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
730
725
|
return None
|
|
731
726
|
|
|
732
727
|
# Convert sint64 node_id to uint64
|
|
733
|
-
node_id =
|
|
728
|
+
node_id = int64_to_uint64(rows[0]["node_id"])
|
|
734
729
|
return node_id
|
|
735
730
|
|
|
736
731
|
# pylint: disable=too-many-arguments,too-many-positional-arguments
|
|
@@ -748,7 +743,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
748
743
|
uint64_run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES)
|
|
749
744
|
|
|
750
745
|
# Convert the uint64 value to sint64 for SQLite
|
|
751
|
-
sint64_run_id =
|
|
746
|
+
sint64_run_id = uint64_to_int64(uint64_run_id)
|
|
752
747
|
|
|
753
748
|
# Check conflicts
|
|
754
749
|
query = "SELECT COUNT(*) FROM run WHERE run_id = ?;"
|
|
@@ -796,7 +791,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
796
791
|
)
|
|
797
792
|
else:
|
|
798
793
|
rows = self.query("SELECT run_id FROM run;", ())
|
|
799
|
-
return {
|
|
794
|
+
return {int64_to_uint64(row["run_id"]) for row in rows}
|
|
800
795
|
|
|
801
796
|
def _check_and_tag_inactive_run(self, run_ids: set[int]) -> None:
|
|
802
797
|
"""Check if any runs are no longer active.
|
|
@@ -804,7 +799,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
804
799
|
Marks runs with status 'starting' or 'running' as failed
|
|
805
800
|
if they have not sent a heartbeat before `active_until`.
|
|
806
801
|
"""
|
|
807
|
-
sint_run_ids = [
|
|
802
|
+
sint_run_ids = [uint64_to_int64(run_id) for run_id in run_ids]
|
|
808
803
|
query = "UPDATE run SET finished_at = ?, sub_status = ?, details = ? "
|
|
809
804
|
query += "WHERE starting_at != '' AND finished_at = '' AND active_until < ?"
|
|
810
805
|
query += f" AND run_id IN ({','.join(['?'] * len(run_ids))});"
|
|
@@ -826,13 +821,13 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
826
821
|
self._check_and_tag_inactive_run(run_ids={run_id})
|
|
827
822
|
|
|
828
823
|
# Convert the uint64 value to sint64 for SQLite
|
|
829
|
-
sint64_run_id =
|
|
824
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
830
825
|
query = "SELECT * FROM run WHERE run_id = ?;"
|
|
831
826
|
rows = self.query(query, (sint64_run_id,))
|
|
832
827
|
if rows:
|
|
833
828
|
row = rows[0]
|
|
834
829
|
return Run(
|
|
835
|
-
run_id=
|
|
830
|
+
run_id=int64_to_uint64(row["run_id"]),
|
|
836
831
|
fab_id=row["fab_id"],
|
|
837
832
|
fab_version=row["fab_version"],
|
|
838
833
|
fab_hash=row["fab_hash"],
|
|
@@ -857,13 +852,13 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
857
852
|
self._check_and_tag_inactive_run(run_ids=run_ids)
|
|
858
853
|
|
|
859
854
|
# Convert the uint64 value to sint64 for SQLite
|
|
860
|
-
sint64_run_ids = (
|
|
855
|
+
sint64_run_ids = (uint64_to_int64(run_id) for run_id in set(run_ids))
|
|
861
856
|
query = f"SELECT * FROM run WHERE run_id IN ({','.join(['?'] * len(run_ids))});"
|
|
862
857
|
rows = self.query(query, tuple(sint64_run_ids))
|
|
863
858
|
|
|
864
859
|
return {
|
|
865
860
|
# Restore uint64 run IDs
|
|
866
|
-
|
|
861
|
+
int64_to_uint64(row["run_id"]): RunStatus(
|
|
867
862
|
status=determine_run_status(row),
|
|
868
863
|
sub_status=row["sub_status"],
|
|
869
864
|
details=row["details"],
|
|
@@ -877,7 +872,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
877
872
|
self._check_and_tag_inactive_run(run_ids={run_id})
|
|
878
873
|
|
|
879
874
|
# Convert the uint64 value to sint64 for SQLite
|
|
880
|
-
sint64_run_id =
|
|
875
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
881
876
|
query = "SELECT * FROM run WHERE run_id = ?;"
|
|
882
877
|
rows = self.query(query, (sint64_run_id,))
|
|
883
878
|
|
|
@@ -943,7 +938,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
943
938
|
new_status.details,
|
|
944
939
|
active_until,
|
|
945
940
|
heartbeat_interval,
|
|
946
|
-
|
|
941
|
+
uint64_to_int64(run_id),
|
|
947
942
|
)
|
|
948
943
|
self.query(query % timestamp_fld, data)
|
|
949
944
|
return True
|
|
@@ -956,14 +951,14 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
956
951
|
query = "SELECT * FROM run WHERE starting_at = '' LIMIT 1;"
|
|
957
952
|
rows = self.query(query)
|
|
958
953
|
if rows:
|
|
959
|
-
pending_run_id =
|
|
954
|
+
pending_run_id = int64_to_uint64(rows[0]["run_id"])
|
|
960
955
|
|
|
961
956
|
return pending_run_id
|
|
962
957
|
|
|
963
958
|
def get_federation_options(self, run_id: int) -> Optional[ConfigRecord]:
|
|
964
959
|
"""Retrieve the federation options for the specified `run_id`."""
|
|
965
960
|
# Convert the uint64 value to sint64 for SQLite
|
|
966
|
-
sint64_run_id =
|
|
961
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
967
962
|
query = "SELECT federation_options FROM run WHERE run_id = ?;"
|
|
968
963
|
rows = self.query(query, (sint64_run_id,))
|
|
969
964
|
|
|
@@ -988,7 +983,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
988
983
|
if self.conn is None:
|
|
989
984
|
raise AttributeError("LinkState not initialized")
|
|
990
985
|
|
|
991
|
-
sint64_node_id =
|
|
986
|
+
sint64_node_id = uint64_to_int64(node_id)
|
|
992
987
|
|
|
993
988
|
with self.conn:
|
|
994
989
|
# Check if node exists and not deleted
|
|
@@ -1030,7 +1025,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1030
1025
|
self._check_and_tag_inactive_run(run_ids={run_id})
|
|
1031
1026
|
|
|
1032
1027
|
# Search for the run
|
|
1033
|
-
sint_run_id =
|
|
1028
|
+
sint_run_id = uint64_to_int64(run_id)
|
|
1034
1029
|
query = "SELECT * FROM run WHERE run_id = ?;"
|
|
1035
1030
|
rows = self.query(query, (sint_run_id,))
|
|
1036
1031
|
|
|
@@ -1060,7 +1055,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1060
1055
|
"""Get the context for the specified `run_id`."""
|
|
1061
1056
|
# Retrieve context if any
|
|
1062
1057
|
query = "SELECT context FROM context WHERE run_id = ?;"
|
|
1063
|
-
rows = self.query(query, (
|
|
1058
|
+
rows = self.query(query, (uint64_to_int64(run_id),))
|
|
1064
1059
|
context = context_from_bytes(rows[0]["context"]) if rows else None
|
|
1065
1060
|
return context
|
|
1066
1061
|
|
|
@@ -1068,7 +1063,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1068
1063
|
"""Set the context for the specified `run_id`."""
|
|
1069
1064
|
# Convert context to bytes
|
|
1070
1065
|
context_bytes = context_to_bytes(context)
|
|
1071
|
-
sint_run_id =
|
|
1066
|
+
sint_run_id = uint64_to_int64(run_id)
|
|
1072
1067
|
|
|
1073
1068
|
# Check if any existing Context assigned to the run_id
|
|
1074
1069
|
query = "SELECT COUNT(*) FROM context WHERE run_id = ?;"
|
|
@@ -1087,7 +1082,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1087
1082
|
def add_serverapp_log(self, run_id: int, log_message: str) -> None:
|
|
1088
1083
|
"""Add a log entry to the ServerApp logs for the specified `run_id`."""
|
|
1089
1084
|
# Convert the uint64 value to sint64 for SQLite
|
|
1090
|
-
sint64_run_id =
|
|
1085
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
1091
1086
|
|
|
1092
1087
|
# Store log
|
|
1093
1088
|
try:
|
|
@@ -1103,7 +1098,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1103
1098
|
) -> tuple[str, float]:
|
|
1104
1099
|
"""Get the ServerApp logs for the specified `run_id`."""
|
|
1105
1100
|
# Convert the uint64 value to sint64 for SQLite
|
|
1106
|
-
sint64_run_id =
|
|
1101
|
+
sint64_run_id = uint64_to_int64(run_id)
|
|
1107
1102
|
|
|
1108
1103
|
# Check if the run_id exists
|
|
1109
1104
|
query = "SELECT run_id FROM run WHERE run_id = ?;"
|
|
@@ -1153,7 +1148,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1153
1148
|
"""Create a token for the given run ID."""
|
|
1154
1149
|
token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
|
|
1155
1150
|
query = "INSERT INTO token_store (run_id, token) VALUES (:run_id, :token);"
|
|
1156
|
-
data = {"run_id":
|
|
1151
|
+
data = {"run_id": uint64_to_int64(run_id), "token": token}
|
|
1157
1152
|
try:
|
|
1158
1153
|
self.query(query, data)
|
|
1159
1154
|
except sqlite3.IntegrityError:
|
|
@@ -1163,7 +1158,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1163
1158
|
def verify_token(self, run_id: int, token: str) -> bool:
|
|
1164
1159
|
"""Verify a token for the given run ID."""
|
|
1165
1160
|
query = "SELECT token FROM token_store WHERE run_id = :run_id;"
|
|
1166
|
-
data = {"run_id":
|
|
1161
|
+
data = {"run_id": uint64_to_int64(run_id)}
|
|
1167
1162
|
rows = self.query(query, data)
|
|
1168
1163
|
if not rows:
|
|
1169
1164
|
return False
|
|
@@ -1172,7 +1167,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1172
1167
|
def delete_token(self, run_id: int) -> None:
|
|
1173
1168
|
"""Delete the token for the given run ID."""
|
|
1174
1169
|
query = "DELETE FROM token_store WHERE run_id = :run_id;"
|
|
1175
|
-
data = {"run_id":
|
|
1170
|
+
data = {"run_id": uint64_to_int64(run_id)}
|
|
1176
1171
|
self.query(query, data)
|
|
1177
1172
|
|
|
1178
1173
|
def get_run_id_by_token(self, token: str) -> Optional[int]:
|
|
@@ -1182,7 +1177,7 @@ class SqliteLinkState(LinkState, SqliteMixin): # pylint: disable=R0904
|
|
|
1182
1177
|
rows = self.query(query, data)
|
|
1183
1178
|
if not rows:
|
|
1184
1179
|
return None
|
|
1185
|
-
return
|
|
1180
|
+
return int64_to_uint64(rows[0]["run_id"])
|
|
1186
1181
|
|
|
1187
1182
|
|
|
1188
1183
|
def message_to_dict(message: Message) -> dict[str, Any]:
|
|
@@ -1237,5 +1232,5 @@ def determine_run_status(row: dict[str, Any]) -> str:
|
|
|
1237
1232
|
return Status.RUNNING
|
|
1238
1233
|
return Status.STARTING
|
|
1239
1234
|
return Status.PENDING
|
|
1240
|
-
run_id =
|
|
1235
|
+
run_id = int64_to_uint64(row["run_id"])
|
|
1241
1236
|
raise sqlite3.IntegrityError(f"The run {run_id} does not have a valid status.")
|
|
@@ -33,6 +33,7 @@ from flwr.common.typing import RunStatus
|
|
|
33
33
|
# pylint: disable=E0611
|
|
34
34
|
from flwr.proto.message_pb2 import Context as ProtoContext
|
|
35
35
|
from flwr.proto.recorddict_pb2 import ConfigRecord as ProtoConfigRecord
|
|
36
|
+
from flwr.supercore.utils import int64_to_uint64, uint64_to_int64
|
|
36
37
|
|
|
37
38
|
# pylint: enable=E0611
|
|
38
39
|
VALID_RUN_STATUS_TRANSITIONS = {
|
|
@@ -76,58 +77,6 @@ def generate_rand_int_from_bytes(
|
|
|
76
77
|
return num
|
|
77
78
|
|
|
78
79
|
|
|
79
|
-
def convert_uint64_to_sint64(u: int) -> int:
|
|
80
|
-
"""Convert a uint64 value to a sint64 value with the same bit sequence.
|
|
81
|
-
|
|
82
|
-
Parameters
|
|
83
|
-
----------
|
|
84
|
-
u : int
|
|
85
|
-
The unsigned 64-bit integer to convert.
|
|
86
|
-
|
|
87
|
-
Returns
|
|
88
|
-
-------
|
|
89
|
-
int
|
|
90
|
-
The signed 64-bit integer equivalent.
|
|
91
|
-
|
|
92
|
-
The signed 64-bit integer will have the same bit pattern as the
|
|
93
|
-
unsigned 64-bit integer but may have a different decimal value.
|
|
94
|
-
|
|
95
|
-
For numbers within the range [0, `sint64` max value], the decimal
|
|
96
|
-
value remains the same. However, for numbers greater than the `sint64`
|
|
97
|
-
max value, the decimal value will differ due to the wraparound caused
|
|
98
|
-
by the sign bit.
|
|
99
|
-
"""
|
|
100
|
-
if u >= (1 << 63):
|
|
101
|
-
return u - (1 << 64)
|
|
102
|
-
return u
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def convert_sint64_to_uint64(s: int) -> int:
|
|
106
|
-
"""Convert a sint64 value to a uint64 value with the same bit sequence.
|
|
107
|
-
|
|
108
|
-
Parameters
|
|
109
|
-
----------
|
|
110
|
-
s : int
|
|
111
|
-
The signed 64-bit integer to convert.
|
|
112
|
-
|
|
113
|
-
Returns
|
|
114
|
-
-------
|
|
115
|
-
int
|
|
116
|
-
The unsigned 64-bit integer equivalent.
|
|
117
|
-
|
|
118
|
-
The unsigned 64-bit integer will have the same bit pattern as the
|
|
119
|
-
signed 64-bit integer but may have a different decimal value.
|
|
120
|
-
|
|
121
|
-
For negative `sint64` values, the conversion adds 2^64 to the
|
|
122
|
-
signed value to obtain the equivalent `uint64` value. For non-negative
|
|
123
|
-
`sint64` values, the decimal value remains unchanged in the `uint64`
|
|
124
|
-
representation.
|
|
125
|
-
"""
|
|
126
|
-
if s < 0:
|
|
127
|
-
return s + (1 << 64)
|
|
128
|
-
return s
|
|
129
|
-
|
|
130
|
-
|
|
131
80
|
def convert_uint64_values_in_dict_to_sint64(
|
|
132
81
|
data_dict: dict[str, int], keys: list[str]
|
|
133
82
|
) -> None:
|
|
@@ -142,7 +91,7 @@ def convert_uint64_values_in_dict_to_sint64(
|
|
|
142
91
|
"""
|
|
143
92
|
for key in keys:
|
|
144
93
|
if key in data_dict:
|
|
145
|
-
data_dict[key] =
|
|
94
|
+
data_dict[key] = uint64_to_int64(data_dict[key])
|
|
146
95
|
|
|
147
96
|
|
|
148
97
|
def convert_sint64_values_in_dict_to_uint64(
|
|
@@ -159,7 +108,7 @@ def convert_sint64_values_in_dict_to_uint64(
|
|
|
159
108
|
"""
|
|
160
109
|
for key in keys:
|
|
161
110
|
if key in data_dict:
|
|
162
|
-
data_dict[key] =
|
|
111
|
+
data_dict[key] = int64_to_uint64(data_dict[key])
|
|
163
112
|
|
|
164
113
|
|
|
165
114
|
def context_to_bytes(context: Context) -> bytes:
|
|
@@ -51,6 +51,7 @@ from flwr.server.superlink.linkstate.utils import generate_rand_int_from_bytes
|
|
|
51
51
|
from flwr.simulation.ray_transport.utils import (
|
|
52
52
|
enable_tf_gpu_growth as enable_gpu_growth,
|
|
53
53
|
)
|
|
54
|
+
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
|
|
54
55
|
|
|
55
56
|
|
|
56
57
|
def _replace_keys(d: Any, match: str, target: str) -> Any:
|
|
@@ -336,7 +337,7 @@ def _main_loop(
|
|
|
336
337
|
) -> Context:
|
|
337
338
|
"""Start ServerApp on a separate thread, then launch Simulation Engine."""
|
|
338
339
|
# Initialize StateFactory
|
|
339
|
-
state_factory = LinkStateFactory(
|
|
340
|
+
state_factory = LinkStateFactory(FLWR_IN_MEMORY_DB_NAME)
|
|
340
341
|
|
|
341
342
|
f_stop = threading.Event()
|
|
342
343
|
# A Threading event to indicate if an exception was raised in the ServerApp thread
|
{flwr_nightly-1.23.0.dev20251021 → flwr_nightly-1.23.0.dev20251023}/py/flwr/supercore/constant.py
RENAMED
|
@@ -20,6 +20,9 @@ from __future__ import annotations
|
|
|
20
20
|
# Top-level key in YAML config for exec plugin settings
|
|
21
21
|
EXEC_PLUGIN_SECTION = "exec_plugin"
|
|
22
22
|
|
|
23
|
+
# Flower in-memory Python-based database name
|
|
24
|
+
FLWR_IN_MEMORY_DB_NAME = ":flwr-in-memory:"
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
class NodeStatus:
|
|
25
28
|
"""Event log writer types."""
|
|
@@ -48,9 +48,6 @@ class InMemoryObjectStore(ObjectStore):
|
|
|
48
48
|
self.verify = verify
|
|
49
49
|
self.store: dict[str, ObjectEntry] = {}
|
|
50
50
|
self.lock_store = threading.RLock()
|
|
51
|
-
# Mapping the Object ID of a message to the list of descendant object IDs
|
|
52
|
-
self.msg_descendant_objects_mapping: dict[str, list[str]] = {}
|
|
53
|
-
self.lock_msg_mapping = threading.RLock()
|
|
54
51
|
# Mapping each run ID to a set of object IDs that are used in that run
|
|
55
52
|
self.run_objects_mapping: dict[int, set[str]] = {}
|
|
56
53
|
|
|
@@ -215,7 +212,6 @@ class InMemoryObjectStore(ObjectStore):
|
|
|
215
212
|
"""Clear the store."""
|
|
216
213
|
with self.lock_store:
|
|
217
214
|
self.store.clear()
|
|
218
|
-
self.msg_descendant_objects_mapping.clear()
|
|
219
215
|
self.run_objects_mapping.clear()
|
|
220
216
|
|
|
221
217
|
def __contains__(self, object_id: str) -> bool:
|
|
@@ -19,15 +19,27 @@ from logging import DEBUG
|
|
|
19
19
|
from typing import Optional
|
|
20
20
|
|
|
21
21
|
from flwr.common.logger import log
|
|
22
|
+
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
|
|
22
23
|
|
|
23
24
|
from .in_memory_object_store import InMemoryObjectStore
|
|
24
25
|
from .object_store import ObjectStore
|
|
26
|
+
from .sqlite_object_store import SqliteObjectStore
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
class ObjectStoreFactory:
|
|
28
|
-
"""Factory class that creates ObjectStore instances.
|
|
30
|
+
"""Factory class that creates ObjectStore instances.
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
Parameters
|
|
33
|
+
----------
|
|
34
|
+
database : str (default: FLWR_IN_MEMORY_DB_NAME)
|
|
35
|
+
A string representing the path to the database file that will be opened.
|
|
36
|
+
Note that passing ":memory:" will open a connection to a database that is
|
|
37
|
+
in RAM, instead of on disk. And FLWR_IN_MEMORY_DB_NAME will create an
|
|
38
|
+
Python-based in-memory ObjectStore.
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
def __init__(self, database: str = FLWR_IN_MEMORY_DB_NAME) -> None:
|
|
42
|
+
self.database = database
|
|
31
43
|
self.store_instance: Optional[ObjectStore] = None
|
|
32
44
|
|
|
33
45
|
def store(self) -> ObjectStore:
|
|
@@ -38,7 +50,15 @@ class ObjectStoreFactory:
|
|
|
38
50
|
ObjectStore
|
|
39
51
|
An ObjectStore instance for storing objects by object_id.
|
|
40
52
|
"""
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
# InMemoryObjectStore
|
|
54
|
+
if self.database == FLWR_IN_MEMORY_DB_NAME:
|
|
55
|
+
if self.store_instance is None:
|
|
56
|
+
self.store_instance = InMemoryObjectStore()
|
|
57
|
+
log(DEBUG, "Using InMemoryObjectStore")
|
|
58
|
+
return self.store_instance
|
|
59
|
+
|
|
60
|
+
# SqliteObjectStore
|
|
61
|
+
store = SqliteObjectStore(self.database)
|
|
62
|
+
store.initialize()
|
|
63
|
+
log(DEBUG, "Using SqliteObjectStore")
|
|
64
|
+
return store
|