flwr-nightly 1.21.0.dev20250814__tar.gz → 1.21.0.dev20250817__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.
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/PKG-INFO +1 -1
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/args.py +5 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/serverapp/app.py +19 -8
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/app.py +20 -9
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/app_utils.py +1 -3
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/run_superexec.py +53 -2
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/cli/flwr_clientapp.py +18 -8
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/runtime/run_clientapp.py +40 -62
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/pyproject.toml +1 -1
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/README.md +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/inflatable_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/appio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/appio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/cli/flower_superexec.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/corestate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/corestate/corestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/object_store/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superexec/simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/executor/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/executor/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/executor/deployment.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/executor/executor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/executor/simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/superlink/servicer/control/control_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/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.21.0.
|
3
|
+
Version: 1.21.0.dev20250817
|
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
|
@@ -60,6 +60,11 @@ def add_args_flwr_app_common(parser: argparse.ArgumentParser) -> None:
|
|
60
60
|
help="The PID of the parent process. When set, the process will terminate "
|
61
61
|
"when the parent process exits.",
|
62
62
|
)
|
63
|
+
parser.add_argument(
|
64
|
+
"--run-once",
|
65
|
+
action="store_true",
|
66
|
+
help="This flag is deprecated and will be removed in a future release.",
|
67
|
+
)
|
63
68
|
|
64
69
|
|
65
70
|
def try_obtain_root_certificates(
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/server/serverapp/app.py
RENAMED
@@ -34,6 +34,7 @@ from flwr.common.config import (
|
|
34
34
|
)
|
35
35
|
from flwr.common.constant import (
|
36
36
|
SERVERAPPIO_API_DEFAULT_CLIENT_ADDRESS,
|
37
|
+
ExecPluginType,
|
37
38
|
Status,
|
38
39
|
SubStatus,
|
39
40
|
)
|
@@ -61,9 +62,12 @@ from flwr.proto.appio_pb2 import ( # pylint: disable=E0611
|
|
61
62
|
PushAppOutputsRequest,
|
62
63
|
)
|
63
64
|
from flwr.proto.run_pb2 import UpdateRunStatusRequest # pylint: disable=E0611
|
65
|
+
from flwr.proto.serverappio_pb2_grpc import ServerAppIoStub
|
64
66
|
from flwr.server.grid.grpc_grid import GrpcGrid
|
65
67
|
from flwr.server.run_serverapp import run as run_
|
66
68
|
from flwr.supercore.app_utils import simple_get_token, start_parent_process_monitor
|
69
|
+
from flwr.supercore.superexec.plugin import ServerAppExecPlugin
|
70
|
+
from flwr.supercore.superexec.run_superexec import run_with_deprecation_warning
|
67
71
|
|
68
72
|
|
69
73
|
def flwr_serverapp() -> None:
|
@@ -74,14 +78,27 @@ def flwr_serverapp() -> None:
|
|
74
78
|
|
75
79
|
args = _parse_args_run_flwr_serverapp().parse_args()
|
76
80
|
|
77
|
-
log(INFO, "Start `flwr-serverapp` process")
|
78
|
-
|
79
81
|
if not args.insecure:
|
80
82
|
flwr_exit(
|
81
83
|
ExitCode.COMMON_TLS_NOT_SUPPORTED,
|
82
84
|
"`flwr-serverapp` does not support TLS yet.",
|
83
85
|
)
|
84
86
|
|
87
|
+
# Disallow long-running `flwr-serverapp` processes
|
88
|
+
if args.token is None:
|
89
|
+
run_with_deprecation_warning(
|
90
|
+
cmd="flwr-serverapp",
|
91
|
+
plugin_type=ExecPluginType.SERVER_APP,
|
92
|
+
plugin_class=ServerAppExecPlugin,
|
93
|
+
stub_class=ServerAppIoStub,
|
94
|
+
appio_api_address=args.serverappio_api_address,
|
95
|
+
flwr_dir=args.flwr_dir,
|
96
|
+
parent_pid=args.parent_pid,
|
97
|
+
warn_run_once=args.run_once,
|
98
|
+
)
|
99
|
+
return
|
100
|
+
|
101
|
+
log(INFO, "Start `flwr-serverapp` process")
|
85
102
|
log(
|
86
103
|
DEBUG,
|
87
104
|
"`flwr-serverapp` will attempt to connect to SuperLink's "
|
@@ -287,11 +304,5 @@ def _parse_args_run_flwr_serverapp() -> argparse.ArgumentParser:
|
|
287
304
|
help="Address of SuperLink's ServerAppIo API (IPv4, IPv6, or a domain name)."
|
288
305
|
f"By default, it is set to {SERVERAPPIO_API_DEFAULT_CLIENT_ADDRESS}.",
|
289
306
|
)
|
290
|
-
parser.add_argument(
|
291
|
-
"--run-once",
|
292
|
-
action="store_true",
|
293
|
-
help="When set, this process will start a single ServerApp for a pending Run. "
|
294
|
-
"If there is no pending Run, the process will exit.",
|
295
|
-
)
|
296
307
|
add_args_flwr_app_common(parser=parser)
|
297
308
|
return parser
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/simulation/app.py
RENAMED
@@ -35,6 +35,7 @@ from flwr.common.config import (
|
|
35
35
|
)
|
36
36
|
from flwr.common.constant import (
|
37
37
|
SIMULATIONIO_API_DEFAULT_CLIENT_ADDRESS,
|
38
|
+
ExecPluginType,
|
38
39
|
Status,
|
39
40
|
SubStatus,
|
40
41
|
)
|
@@ -66,10 +67,13 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
66
67
|
GetFederationOptionsResponse,
|
67
68
|
UpdateRunStatusRequest,
|
68
69
|
)
|
70
|
+
from flwr.proto.simulationio_pb2_grpc import SimulationIoStub
|
69
71
|
from flwr.server.superlink.fleet.vce.backend.backend import BackendConfig
|
70
72
|
from flwr.simulation.run_simulation import _run_simulation
|
71
73
|
from flwr.simulation.simulationio_connection import SimulationIoConnection
|
72
74
|
from flwr.supercore.app_utils import simple_get_token, start_parent_process_monitor
|
75
|
+
from flwr.supercore.superexec.plugin import SimulationExecPlugin
|
76
|
+
from flwr.supercore.superexec.run_superexec import run_with_deprecation_warning
|
73
77
|
|
74
78
|
|
75
79
|
def flwr_simulation() -> None:
|
@@ -80,14 +84,27 @@ def flwr_simulation() -> None:
|
|
80
84
|
|
81
85
|
args = _parse_args_run_flwr_simulation().parse_args()
|
82
86
|
|
83
|
-
log(INFO, "Starting Flower Simulation")
|
84
|
-
|
85
87
|
if not args.insecure:
|
86
88
|
flwr_exit(
|
87
89
|
ExitCode.COMMON_TLS_NOT_SUPPORTED,
|
88
|
-
"`flwr-simulation` does not support TLS yet.
|
90
|
+
"`flwr-simulation` does not support TLS yet.",
|
91
|
+
)
|
92
|
+
|
93
|
+
# Disallow long-running `flwr-simulation` processes
|
94
|
+
if args.token is None:
|
95
|
+
run_with_deprecation_warning(
|
96
|
+
cmd="flwr-simulation",
|
97
|
+
plugin_type=ExecPluginType.SIMULATION,
|
98
|
+
plugin_class=SimulationExecPlugin,
|
99
|
+
stub_class=SimulationIoStub,
|
100
|
+
appio_api_address=args.simulationio_api_address,
|
101
|
+
flwr_dir=args.flwr_dir,
|
102
|
+
parent_pid=args.parent_pid,
|
103
|
+
warn_run_once=args.run_once,
|
89
104
|
)
|
105
|
+
return
|
90
106
|
|
107
|
+
log(INFO, "Starting Flower Simulation")
|
91
108
|
log(
|
92
109
|
DEBUG,
|
93
110
|
"Starting isolated `Simulation` connected to SuperLink SimulationAppIo API "
|
@@ -309,11 +326,5 @@ def _parse_args_run_flwr_simulation() -> argparse.ArgumentParser:
|
|
309
326
|
help="Address of SuperLink's SimulationIO API (IPv4, IPv6, or a domain name)."
|
310
327
|
f"By default, it is set to {SIMULATIONIO_API_DEFAULT_CLIENT_ADDRESS}.",
|
311
328
|
)
|
312
|
-
parser.add_argument(
|
313
|
-
"--run-once",
|
314
|
-
action="store_true",
|
315
|
-
help="When set, this process will start a single simulation "
|
316
|
-
"for a pending Run. If no pending run the process will exit. ",
|
317
|
-
)
|
318
329
|
add_args_flwr_app_common(parser=parser)
|
319
330
|
return parser
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/supercore/app_utils.py
RENAMED
@@ -64,9 +64,7 @@ def start_parent_process_monitor(
|
|
64
64
|
while True:
|
65
65
|
time.sleep(0.2)
|
66
66
|
if not _pid_exists(parent_pid):
|
67
|
-
|
68
|
-
# Avoid `os.kill` on Windows
|
69
|
-
signal.raise_signal(signal.SIGTERM)
|
67
|
+
os.kill(os.getpid(), signal.SIGKILL)
|
70
68
|
|
71
69
|
threading.Thread(target=monitor, daemon=True).start()
|
72
70
|
|
@@ -16,11 +16,13 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
import time
|
19
|
-
from
|
19
|
+
from logging import WARN
|
20
|
+
from typing import Optional, Union
|
20
21
|
|
21
22
|
from flwr.common.config import get_flwr_dir
|
22
23
|
from flwr.common.exit_handlers import register_exit_handlers
|
23
24
|
from flwr.common.grpc import create_channel, on_channel_state_change
|
25
|
+
from flwr.common.logger import log
|
24
26
|
from flwr.common.retry_invoker import _make_simple_grpc_retry_invoker, _wrap_stub
|
25
27
|
from flwr.common.serde import run_from_proto
|
26
28
|
from flwr.common.telemetry import EventType
|
@@ -31,6 +33,8 @@ from flwr.proto.appio_pb2 import ( # pylint: disable=E0611
|
|
31
33
|
)
|
32
34
|
from flwr.proto.clientappio_pb2_grpc import ClientAppIoStub
|
33
35
|
from flwr.proto.run_pb2 import GetRunRequest # pylint: disable=E0611
|
36
|
+
from flwr.proto.serverappio_pb2_grpc import ServerAppIoStub
|
37
|
+
from flwr.proto.simulationio_pb2_grpc import SimulationIoStub
|
34
38
|
from flwr.supercore.app_utils import start_parent_process_monitor
|
35
39
|
|
36
40
|
from .plugin import ExecPlugin
|
@@ -38,7 +42,9 @@ from .plugin import ExecPlugin
|
|
38
42
|
|
39
43
|
def run_superexec(
|
40
44
|
plugin_class: type[ExecPlugin],
|
41
|
-
stub_class:
|
45
|
+
stub_class: Union[
|
46
|
+
type[ClientAppIoStub], type[ServerAppIoStub], type[SimulationIoStub]
|
47
|
+
],
|
42
48
|
appio_api_address: str,
|
43
49
|
flwr_dir: Optional[str] = None,
|
44
50
|
parent_pid: Optional[int] = None,
|
@@ -120,3 +126,48 @@ def run_superexec(
|
|
120
126
|
time.sleep(1)
|
121
127
|
finally:
|
122
128
|
channel.close()
|
129
|
+
|
130
|
+
|
131
|
+
def run_with_deprecation_warning( # pylint: disable=R0913, R0917
|
132
|
+
cmd: str,
|
133
|
+
plugin_type: str,
|
134
|
+
plugin_class: type[ExecPlugin],
|
135
|
+
stub_class: Union[
|
136
|
+
type[ClientAppIoStub], type[ServerAppIoStub], type[SimulationIoStub]
|
137
|
+
],
|
138
|
+
appio_api_address: str,
|
139
|
+
flwr_dir: Optional[str],
|
140
|
+
parent_pid: Optional[int],
|
141
|
+
warn_run_once: bool,
|
142
|
+
) -> None:
|
143
|
+
"""Log a deprecation warning and run the equivalent `flower-superexec` command.
|
144
|
+
|
145
|
+
Used for legacy long-running `flwr-*` commands (i.e., without `--token`) that will
|
146
|
+
be removed in favor of `flower-superexec`.
|
147
|
+
"""
|
148
|
+
log(
|
149
|
+
WARN,
|
150
|
+
"Directly executing `%s` is DEPRECATED and will be prohibited "
|
151
|
+
"in a future release. Please use `flower-superexec` instead.",
|
152
|
+
cmd,
|
153
|
+
)
|
154
|
+
log(WARN, "For now, the following command is being run automatically:")
|
155
|
+
new_cmd = f"flower-superexec --insecure --plugin-type {plugin_type} "
|
156
|
+
new_cmd += f"--appio-api-address {appio_api_address} "
|
157
|
+
if flwr_dir is not None:
|
158
|
+
new_cmd += f"--flwr-dir {flwr_dir} "
|
159
|
+
if parent_pid is not None:
|
160
|
+
new_cmd += f"--parent-pid {parent_pid}"
|
161
|
+
log(WARN, new_cmd)
|
162
|
+
|
163
|
+
# Warn about unsupported `--run-once` flag
|
164
|
+
if warn_run_once:
|
165
|
+
log(WARN, "`flower-superexec` does not support the `--run-once` flag.")
|
166
|
+
|
167
|
+
run_superexec(
|
168
|
+
plugin_class=plugin_class,
|
169
|
+
stub_class=stub_class,
|
170
|
+
appio_api_address=appio_api_address,
|
171
|
+
flwr_dir=flwr_dir,
|
172
|
+
parent_pid=parent_pid,
|
173
|
+
)
|
@@ -19,9 +19,12 @@ import argparse
|
|
19
19
|
from logging import DEBUG, INFO
|
20
20
|
|
21
21
|
from flwr.common.args import add_args_flwr_app_common
|
22
|
-
from flwr.common.constant import CLIENTAPPIO_API_DEFAULT_CLIENT_ADDRESS
|
22
|
+
from flwr.common.constant import CLIENTAPPIO_API_DEFAULT_CLIENT_ADDRESS, ExecPluginType
|
23
23
|
from flwr.common.exit import ExitCode, flwr_exit
|
24
24
|
from flwr.common.logger import log
|
25
|
+
from flwr.proto.clientappio_pb2_grpc import ClientAppIoStub
|
26
|
+
from flwr.supercore.superexec.plugin import ClientAppExecPlugin
|
27
|
+
from flwr.supercore.superexec.run_superexec import run_with_deprecation_warning
|
25
28
|
from flwr.supercore.utils import mask_string
|
26
29
|
from flwr.supernode.runtime.run_clientapp import run_clientapp
|
27
30
|
|
@@ -35,6 +38,20 @@ def flwr_clientapp() -> None:
|
|
35
38
|
"flwr-clientapp does not support TLS yet.",
|
36
39
|
)
|
37
40
|
|
41
|
+
# Disallow long-running `flwr-clientapp` processes
|
42
|
+
if args.token is None:
|
43
|
+
run_with_deprecation_warning(
|
44
|
+
cmd="flwr-clientapp",
|
45
|
+
plugin_type=ExecPluginType.CLIENT_APP,
|
46
|
+
plugin_class=ClientAppExecPlugin,
|
47
|
+
stub_class=ClientAppIoStub,
|
48
|
+
appio_api_address=args.clientappio_api_address,
|
49
|
+
flwr_dir=args.flwr_dir,
|
50
|
+
parent_pid=args.parent_pid,
|
51
|
+
warn_run_once=args.run_once,
|
52
|
+
)
|
53
|
+
return
|
54
|
+
|
38
55
|
log(INFO, "Start `flwr-clientapp` process")
|
39
56
|
log(
|
40
57
|
DEBUG,
|
@@ -45,7 +62,6 @@ def flwr_clientapp() -> None:
|
|
45
62
|
)
|
46
63
|
run_clientapp(
|
47
64
|
clientappio_api_address=args.clientappio_api_address,
|
48
|
-
run_once=(args.token is not None) or args.run_once,
|
49
65
|
token=args.token,
|
50
66
|
flwr_dir=args.flwr_dir,
|
51
67
|
certificates=None,
|
@@ -65,11 +81,5 @@ def _parse_args_run_flwr_clientapp() -> argparse.ArgumentParser:
|
|
65
81
|
help="Address of SuperNode's ClientAppIo API (IPv4, IPv6, or a domain name)."
|
66
82
|
f"By default, it is set to {CLIENTAPPIO_API_DEFAULT_CLIENT_ADDRESS}.",
|
67
83
|
)
|
68
|
-
parser.add_argument(
|
69
|
-
"--run-once",
|
70
|
-
action="store_true",
|
71
|
-
help="When set, this process will start a single ClientApp for a pending "
|
72
|
-
"message. If there is no pending message, the process will exit.",
|
73
|
-
)
|
74
84
|
add_args_flwr_app_common(parser=parser)
|
75
85
|
return parser
|
@@ -62,14 +62,13 @@ from flwr.proto.appio_pb2 import ( # pylint: disable=E0611
|
|
62
62
|
)
|
63
63
|
from flwr.proto.clientappio_pb2_grpc import ClientAppIoStub
|
64
64
|
from flwr.proto.node_pb2 import Node # pylint: disable=E0611
|
65
|
-
from flwr.supercore.app_utils import
|
65
|
+
from flwr.supercore.app_utils import start_parent_process_monitor
|
66
66
|
from flwr.supercore.utils import mask_string
|
67
67
|
|
68
68
|
|
69
69
|
def run_clientapp( # pylint: disable=R0913, R0914, R0917
|
70
70
|
clientappio_api_address: str,
|
71
|
-
|
72
|
-
token: Optional[str] = None,
|
71
|
+
token: str,
|
73
72
|
flwr_dir: Optional[str] = None,
|
74
73
|
certificates: Optional[bytes] = None,
|
75
74
|
parent_pid: Optional[int] = None,
|
@@ -92,76 +91,55 @@ def run_clientapp( # pylint: disable=R0913, R0914, R0917
|
|
92
91
|
stub = ClientAppIoStub(channel)
|
93
92
|
_wrap_stub(stub, _make_simple_grpc_retry_invoker())
|
94
93
|
|
95
|
-
|
96
|
-
|
97
|
-
if token is None:
|
98
|
-
log(DEBUG, "[flwr-clientapp] Request token")
|
99
|
-
token = simple_get_token(stub)
|
100
|
-
|
101
|
-
# Pull Message, Context, Run and (optional) FAB from SuperNode
|
102
|
-
message, context, run, fab = pull_clientappinputs(stub=stub, token=token)
|
103
|
-
|
104
|
-
# Install FAB, if provided
|
105
|
-
if fab:
|
106
|
-
log(DEBUG, "[flwr-clientapp] Start FAB installation.")
|
107
|
-
install_from_fab(fab.content, flwr_dir=flwr_dir_, skip_prompt=True)
|
108
|
-
|
109
|
-
load_client_app_fn = get_load_client_app_fn(
|
110
|
-
default_app_ref="",
|
111
|
-
app_path=None,
|
112
|
-
multi_app=True,
|
113
|
-
flwr_dir=str(flwr_dir_),
|
114
|
-
)
|
94
|
+
# Pull Message, Context, Run and (optional) FAB from SuperNode
|
95
|
+
message, context, run, fab = pull_clientappinputs(stub=stub, token=token)
|
115
96
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
run.fab_id, run.fab_version, fab.hash_str if fab else ""
|
121
|
-
)
|
97
|
+
# Install FAB, if provided
|
98
|
+
if fab:
|
99
|
+
log(DEBUG, "[flwr-clientapp] Start FAB installation.")
|
100
|
+
install_from_fab(fab.content, flwr_dir=flwr_dir_, skip_prompt=True)
|
122
101
|
|
123
|
-
|
124
|
-
|
102
|
+
load_client_app_fn = get_load_client_app_fn(
|
103
|
+
default_app_ref="",
|
104
|
+
app_path=None,
|
105
|
+
multi_app=True,
|
106
|
+
flwr_dir=str(flwr_dir_),
|
107
|
+
)
|
125
108
|
|
126
|
-
|
127
|
-
|
109
|
+
try:
|
110
|
+
# Load ClientApp
|
111
|
+
log(DEBUG, "[flwr-clientapp] Start `ClientApp` Loading.")
|
112
|
+
client_app: ClientApp = load_client_app_fn(
|
113
|
+
run.fab_id, run.fab_version, fab.hash_str if fab else ""
|
114
|
+
)
|
128
115
|
|
129
|
-
|
130
|
-
|
131
|
-
reason = str(type(ex)) + ":<'" + str(ex) + "'>"
|
132
|
-
exc_entity = "ClientApp"
|
133
|
-
if isinstance(ex, LoadClientAppError):
|
134
|
-
reason = (
|
135
|
-
"An exception was raised when attempting to load `ClientApp`"
|
136
|
-
)
|
137
|
-
e_code = ErrorCode.LOAD_CLIENT_APP_EXCEPTION
|
116
|
+
# Execute ClientApp
|
117
|
+
reply_message = client_app(message=message, context=context)
|
138
118
|
|
139
|
-
|
119
|
+
except Exception as ex: # pylint: disable=broad-exception-caught
|
120
|
+
# Don't update/change NodeState
|
140
121
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
122
|
+
e_code = ErrorCode.CLIENT_APP_RAISED_EXCEPTION
|
123
|
+
# Ex fmt: "<class 'ZeroDivisionError'>:<'division by zero'>"
|
124
|
+
reason = str(type(ex)) + ":<'" + str(ex) + "'>"
|
125
|
+
exc_entity = "ClientApp"
|
126
|
+
if isinstance(ex, LoadClientAppError):
|
127
|
+
reason = "An exception was raised when attempting to load `ClientApp`"
|
128
|
+
e_code = ErrorCode.LOAD_CLIENT_APP_EXCEPTION
|
145
129
|
|
146
|
-
|
147
|
-
_ = push_clientappoutputs(
|
148
|
-
stub=stub, token=token, message=reply_message, context=context
|
149
|
-
)
|
130
|
+
log(ERROR, "%s raised an exception", exc_entity, exc_info=ex)
|
150
131
|
|
151
|
-
|
152
|
-
|
132
|
+
# Create error message
|
133
|
+
reply_message = Message(Error(code=e_code, reason=reason), reply_to=message)
|
153
134
|
|
154
|
-
|
155
|
-
|
156
|
-
token =
|
135
|
+
# Push Message and Context to SuperNode
|
136
|
+
_ = push_clientappoutputs(
|
137
|
+
stub=stub, token=token, message=reply_message, context=context
|
138
|
+
)
|
157
139
|
|
158
|
-
|
159
|
-
|
160
|
-
if run_once:
|
161
|
-
break
|
140
|
+
del client_app, message, context, run, fab, reply_message
|
141
|
+
gc.collect()
|
162
142
|
|
163
|
-
except KeyboardInterrupt:
|
164
|
-
log(INFO, "Closing connection")
|
165
143
|
except grpc.RpcError as e:
|
166
144
|
log(ERROR, "GRPC error occurred: %s", str(e))
|
167
145
|
finally:
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
4
4
|
|
5
5
|
[tool.poetry]
|
6
6
|
name = "flwr-nightly"
|
7
|
-
version = "1.21.0.
|
7
|
+
version = "1.21.0.dev20250817"
|
8
8
|
description = "Flower: A Friendly Federated AI Framework"
|
9
9
|
license = "Apache-2.0"
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/config_utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/login/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/login/login.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/new/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250814 → flwr_nightly-1.21.0.dev20250817}/py/flwr/cli/run/__init__.py
RENAMED
File without changes
|