flwr-nightly 1.21.0.dev20250730__tar.gz → 1.21.0.dev20250801__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.dev20250730 → flwr_nightly-1.21.0.dev20250801}/PKG-INFO +1 -1
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/connection.py +1 -12
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/rest_client/connection.py +3 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/args.py +2 -6
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/retry_invoker.py +30 -11
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/app.py +2 -2
- flwr_nightly-1.21.0.dev20250801/py/flwr/superexec/deployment.py +20 -0
- flwr_nightly-1.21.0.dev20250801/py/flwr/superexec/simulation.py +20 -0
- flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor/__init__.py +28 -0
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/app.py +1 -1
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/deployment.py +0 -3
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/simulation.py +0 -3
- flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/__init__.py +15 -0
- flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec/__init__.py +22 -0
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_event_log_interceptor.py +1 -1
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_grpc.py +5 -5
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_license_interceptor.py +1 -1
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_servicer.py +3 -3
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/servicer/exec}/exec_user_auth_interceptor.py +1 -1
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/start_client_internal.py +10 -41
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/pyproject.toml +1 -1
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/README.md +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/inflatable_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/object_store/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/scheduler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/scheduler/plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supercore/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730/py/flwr/superexec → flwr_nightly-1.21.0.dev20250801/py/flwr/superlink/executor}/executor.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/scheduler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.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.dev20250801
|
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
|
@@ -40,7 +40,7 @@ from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
|
40
40
|
generate_key_pairs,
|
41
41
|
)
|
42
42
|
from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
|
43
|
-
from flwr.common.typing import Fab, Run
|
43
|
+
from flwr.common.typing import Fab, Run
|
44
44
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
45
45
|
from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
46
46
|
CreateNodeRequest,
|
@@ -157,17 +157,6 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
157
157
|
stub = adapter_cls(channel)
|
158
158
|
node: Optional[Node] = None
|
159
159
|
|
160
|
-
def _should_giveup_fn(e: Exception) -> bool:
|
161
|
-
if e.code() == grpc.StatusCode.PERMISSION_DENIED: # type: ignore
|
162
|
-
raise RunNotRunningException
|
163
|
-
if e.code() == grpc.StatusCode.UNAVAILABLE: # type: ignore
|
164
|
-
return False
|
165
|
-
return True
|
166
|
-
|
167
|
-
# Restrict retries to cases where the status code is UNAVAILABLE
|
168
|
-
# If the status code is PERMISSION_DENIED, additionally raise RunNotRunningException
|
169
|
-
retry_invoker.should_giveup = _should_giveup_fn
|
170
|
-
|
171
160
|
# Wrap stub
|
172
161
|
_wrap_stub(stub, retry_invoker)
|
173
162
|
###########################################################################
|
@@ -176,6 +176,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
176
176
|
# Shared variables for inner functions
|
177
177
|
node: Optional[Node] = None
|
178
178
|
|
179
|
+
# Remove should_giveup from RetryInvoker as REST does not support gRPC status codes
|
180
|
+
retry_invoker.should_giveup = None
|
181
|
+
|
179
182
|
###########################################################################
|
180
183
|
# heartbeat/create_node/delete_node/receive/send/get_run functions
|
181
184
|
###########################################################################
|
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
import argparse
|
19
19
|
import sys
|
20
|
-
from logging import DEBUG, ERROR, WARN
|
20
|
+
from logging import DEBUG, ERROR, INFO, WARN
|
21
21
|
from os.path import isfile
|
22
22
|
from pathlib import Path
|
23
23
|
from typing import Optional, Union
|
@@ -72,11 +72,7 @@ def try_obtain_root_certificates(
|
|
72
72
|
else:
|
73
73
|
# Load the certificates if provided, or load the system certificates
|
74
74
|
if root_cert_path is None:
|
75
|
-
log(
|
76
|
-
WARN,
|
77
|
-
"Both `--insecure` and `--root-certificates` were not set. "
|
78
|
-
"Using system certificates.",
|
79
|
-
)
|
75
|
+
log(INFO, "Using system certificates")
|
80
76
|
root_certificates = None
|
81
77
|
elif not isfile(root_cert_path):
|
82
78
|
log(ERROR, "Path argument `--root-certificates` does not point to a file.")
|
{flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/common/retry_invoker.py
RENAMED
@@ -17,6 +17,7 @@
|
|
17
17
|
|
18
18
|
import itertools
|
19
19
|
import random
|
20
|
+
import threading
|
20
21
|
import time
|
21
22
|
from collections.abc import Generator, Iterable
|
22
23
|
from dataclasses import dataclass
|
@@ -319,8 +320,12 @@ class RetryInvoker:
|
|
319
320
|
|
320
321
|
def _make_simple_grpc_retry_invoker() -> RetryInvoker:
|
321
322
|
"""Create a simple gRPC retry invoker."""
|
323
|
+
lock = threading.Lock()
|
324
|
+
system_healthy = threading.Event()
|
325
|
+
system_healthy.set() # Initially, the connection is healthy
|
322
326
|
|
323
|
-
def
|
327
|
+
def _on_success(retry_state: RetryState) -> None:
|
328
|
+
system_healthy.set()
|
324
329
|
if retry_state.tries > 1:
|
325
330
|
log(
|
326
331
|
INFO,
|
@@ -329,17 +334,11 @@ def _make_simple_grpc_retry_invoker() -> RetryInvoker:
|
|
329
334
|
retry_state.tries,
|
330
335
|
)
|
331
336
|
|
332
|
-
def _on_backoff(
|
333
|
-
|
334
|
-
log(WARN, "Connection attempt failed, retrying...")
|
335
|
-
else:
|
336
|
-
log(
|
337
|
-
WARN,
|
338
|
-
"Connection attempt failed, retrying in %.2f seconds",
|
339
|
-
retry_state.actual_wait,
|
340
|
-
)
|
337
|
+
def _on_backoff(_: RetryState) -> None:
|
338
|
+
system_healthy.clear()
|
341
339
|
|
342
340
|
def _on_giveup(retry_state: RetryState) -> None:
|
341
|
+
system_healthy.clear()
|
343
342
|
if retry_state.tries > 1:
|
344
343
|
log(
|
345
344
|
WARN,
|
@@ -355,15 +354,35 @@ def _make_simple_grpc_retry_invoker() -> RetryInvoker:
|
|
355
354
|
return False
|
356
355
|
return True
|
357
356
|
|
357
|
+
def _wait(wait_time: float) -> None:
|
358
|
+
# Use a lock to prevent multiple gRPC calls from retrying concurrently,
|
359
|
+
# which is unnecessary since they are all likely to fail.
|
360
|
+
with lock:
|
361
|
+
# Log the wait time
|
362
|
+
log(
|
363
|
+
WARN,
|
364
|
+
"Connection attempt failed, retrying in %.2f seconds",
|
365
|
+
wait_time,
|
366
|
+
)
|
367
|
+
|
368
|
+
start = time.monotonic()
|
369
|
+
# Avoid sequential waits if the system is healthy
|
370
|
+
system_healthy.wait(wait_time)
|
371
|
+
|
372
|
+
remaining_time = wait_time - (time.monotonic() - start)
|
373
|
+
if remaining_time > 0:
|
374
|
+
time.sleep(remaining_time)
|
375
|
+
|
358
376
|
return RetryInvoker(
|
359
377
|
wait_gen_factory=lambda: exponential(max_delay=MAX_RETRY_DELAY),
|
360
378
|
recoverable_exceptions=grpc.RpcError,
|
361
379
|
max_tries=None,
|
362
380
|
max_time=None,
|
363
|
-
on_success=
|
381
|
+
on_success=_on_success,
|
364
382
|
on_backoff=_on_backoff,
|
365
383
|
on_giveup=_on_giveup,
|
366
384
|
should_giveup=_should_giveup_fn,
|
385
|
+
wait_function=_wait,
|
367
386
|
)
|
368
387
|
|
369
388
|
|
@@ -73,8 +73,8 @@ from flwr.server.serverapp.app import flwr_serverapp
|
|
73
73
|
from flwr.simulation.app import flwr_simulation
|
74
74
|
from flwr.supercore.ffs import FfsFactory
|
75
75
|
from flwr.supercore.object_store import ObjectStoreFactory
|
76
|
-
from flwr.
|
77
|
-
from flwr.
|
76
|
+
from flwr.superlink.executor import load_executor
|
77
|
+
from flwr.superlink.servicer.exec import run_exec_api_grpc
|
78
78
|
|
79
79
|
from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
|
80
80
|
from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Deployment engine executor for backward compatibility."""
|
16
|
+
|
17
|
+
|
18
|
+
from flwr.superlink.executor import DeploymentEngine
|
19
|
+
|
20
|
+
executor = DeploymentEngine()
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Simulation engine executor for backward compatibility."""
|
16
|
+
|
17
|
+
|
18
|
+
from flwr.superlink.executor import SimulationEngine
|
19
|
+
|
20
|
+
executor = SimulationEngine()
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Executor for Exec API."""
|
16
|
+
|
17
|
+
|
18
|
+
from .app import load_executor
|
19
|
+
from .deployment import DeploymentEngine
|
20
|
+
from .executor import Executor
|
21
|
+
from .simulation import SimulationEngine
|
22
|
+
|
23
|
+
__all__ = [
|
24
|
+
"DeploymentEngine",
|
25
|
+
"Executor",
|
26
|
+
"SimulationEngine",
|
27
|
+
"load_executor",
|
28
|
+
]
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""
|
15
|
+
"""Function for loading executor."""
|
16
16
|
|
17
17
|
|
18
18
|
import argparse
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Flower SuperLink servicers."""
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Copyright 2025 Flower Labs GmbH. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
# ==============================================================================
|
15
|
+
"""Exec API Servicer."""
|
16
|
+
|
17
|
+
|
18
|
+
from .exec_grpc import run_exec_api_grpc
|
19
|
+
|
20
|
+
__all__ = [
|
21
|
+
"run_exec_api_grpc",
|
22
|
+
]
|
@@ -49,7 +49,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
49
49
|
return continuation(handler_call_details)
|
50
50
|
|
51
51
|
# One of the method handlers in
|
52
|
-
# `flwr.
|
52
|
+
# `flwr.superlink.servicer.exec.ExecServicer`
|
53
53
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|
54
54
|
method_name: str = handler_call_details.method
|
55
55
|
return self._generic_event_log_unary_method_handler(method_handler, method_name)
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""
|
15
|
+
"""Exec API server."""
|
16
16
|
|
17
17
|
|
18
18
|
from logging import INFO
|
@@ -32,12 +32,12 @@ from flwr.server.superlink.linkstate import LinkStateFactory
|
|
32
32
|
from flwr.supercore.ffs import FfsFactory
|
33
33
|
from flwr.supercore.license_plugin import LicensePlugin
|
34
34
|
from flwr.supercore.object_store import ObjectStoreFactory
|
35
|
-
from flwr.superexec.exec_event_log_interceptor import ExecEventLogInterceptor
|
36
|
-
from flwr.superexec.exec_license_interceptor import ExecLicenseInterceptor
|
37
|
-
from flwr.superexec.exec_user_auth_interceptor import ExecUserAuthInterceptor
|
38
35
|
|
36
|
+
from ...executor import Executor
|
37
|
+
from .exec_event_log_interceptor import ExecEventLogInterceptor
|
38
|
+
from .exec_license_interceptor import ExecLicenseInterceptor
|
39
39
|
from .exec_servicer import ExecServicer
|
40
|
-
from .
|
40
|
+
from .exec_user_auth_interceptor import ExecUserAuthInterceptor
|
41
41
|
|
42
42
|
try:
|
43
43
|
from flwr.ee import get_license_plugin
|
@@ -47,7 +47,7 @@ class ExecLicenseInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
47
47
|
return continuation(handler_call_details)
|
48
48
|
|
49
49
|
# One of the method handlers in
|
50
|
-
# `flwr.
|
50
|
+
# `flwr.superlink.servicer.exec.ExecServicer`
|
51
51
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|
52
52
|
return self._generic_license_unary_method_handler(method_handler)
|
53
53
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
# ==============================================================================
|
15
|
-
"""
|
15
|
+
"""Exec API servicer."""
|
16
16
|
|
17
17
|
|
18
18
|
import time
|
@@ -57,12 +57,12 @@ from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
|
|
57
57
|
from flwr.supercore.ffs import FfsFactory
|
58
58
|
from flwr.supercore.object_store import ObjectStore, ObjectStoreFactory
|
59
59
|
|
60
|
+
from ...executor.executor import Executor
|
60
61
|
from .exec_user_auth_interceptor import shared_account_info
|
61
|
-
from .executor import Executor
|
62
62
|
|
63
63
|
|
64
64
|
class ExecServicer(exec_pb2_grpc.ExecServicer):
|
65
|
-
"""
|
65
|
+
"""Exec API servicer."""
|
66
66
|
|
67
67
|
def __init__( # pylint: disable=R0913, R0917
|
68
68
|
self,
|
@@ -77,7 +77,7 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
77
77
|
return continuation(handler_call_details)
|
78
78
|
|
79
79
|
# One of the method handlers in
|
80
|
-
# `flwr.
|
80
|
+
# `flwr.superlink.servicer.exec.ExecServicer`
|
81
81
|
method_handler: grpc.RpcMethodHandler = continuation(handler_call_details)
|
82
82
|
return self._generic_auth_unary_method_handler(method_handler)
|
83
83
|
|
@@ -21,7 +21,7 @@ import time
|
|
21
21
|
from collections.abc import Iterator
|
22
22
|
from contextlib import contextmanager
|
23
23
|
from functools import partial
|
24
|
-
from logging import INFO
|
24
|
+
from logging import INFO
|
25
25
|
from pathlib import Path
|
26
26
|
from typing import Callable, Optional, Union, cast
|
27
27
|
|
@@ -38,7 +38,6 @@ from flwr.common.constant import (
|
|
38
38
|
CLIENT_OCTET,
|
39
39
|
CLIENTAPPIO_API_DEFAULT_SERVER_ADDRESS,
|
40
40
|
ISOLATION_MODE_SUBPROCESS,
|
41
|
-
MAX_RETRY_DELAY,
|
42
41
|
SERVER_OCTET,
|
43
42
|
TRANSPORT_TYPE_GRPC_ADAPTER,
|
44
43
|
TRANSPORT_TYPE_GRPC_RERE,
|
@@ -54,7 +53,7 @@ from flwr.common.inflatable_utils import (
|
|
54
53
|
push_object_contents_from_iterable,
|
55
54
|
)
|
56
55
|
from flwr.common.logger import log
|
57
|
-
from flwr.common.retry_invoker import RetryInvoker,
|
56
|
+
from flwr.common.retry_invoker import RetryInvoker, _make_simple_grpc_retry_invoker
|
58
57
|
from flwr.common.telemetry import EventType
|
59
58
|
from flwr.common.typing import Fab, Run, RunNotRunningException, UserConfig
|
60
59
|
from flwr.proto.clientappio_pb2_grpc import add_ClientAppIoServicer_to_server
|
@@ -521,44 +520,14 @@ def _make_fleet_connection_retry_invoker(
|
|
521
520
|
connection_error_type: type[Exception] = RpcError,
|
522
521
|
) -> RetryInvoker:
|
523
522
|
"""Create a retry invoker for fleet connection."""
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
)
|
533
|
-
|
534
|
-
def _on_backoff(retry_state: RetryState) -> None:
|
535
|
-
if retry_state.tries == 1:
|
536
|
-
log(WARN, "Connection attempt failed, retrying...")
|
537
|
-
else:
|
538
|
-
log(
|
539
|
-
WARN,
|
540
|
-
"Connection attempt failed, retrying in %.2f seconds",
|
541
|
-
retry_state.actual_wait,
|
542
|
-
)
|
543
|
-
|
544
|
-
return RetryInvoker(
|
545
|
-
wait_gen_factory=lambda: exponential(max_delay=MAX_RETRY_DELAY),
|
546
|
-
recoverable_exceptions=connection_error_type,
|
547
|
-
max_tries=max_retries + 1 if max_retries is not None else None,
|
548
|
-
max_time=max_wait_time,
|
549
|
-
on_giveup=lambda retry_state: (
|
550
|
-
log(
|
551
|
-
WARN,
|
552
|
-
"Giving up reconnection after %.2f seconds and %s tries.",
|
553
|
-
retry_state.elapsed_time,
|
554
|
-
retry_state.tries,
|
555
|
-
)
|
556
|
-
if retry_state.tries > 1
|
557
|
-
else None
|
558
|
-
),
|
559
|
-
on_success=_on_success,
|
560
|
-
on_backoff=_on_backoff,
|
561
|
-
)
|
523
|
+
retry_invoker = _make_simple_grpc_retry_invoker()
|
524
|
+
retry_invoker.recoverable_exceptions = connection_error_type
|
525
|
+
if max_retries is not None:
|
526
|
+
retry_invoker.max_tries = max_retries + 1
|
527
|
+
if max_wait_time is not None:
|
528
|
+
retry_invoker.max_time = max_wait_time
|
529
|
+
|
530
|
+
return retry_invoker
|
562
531
|
|
563
532
|
|
564
533
|
def run_clientappio_api_grpc(
|
@@ -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.dev20250801"
|
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.dev20250730 → flwr_nightly-1.21.0.dev20250801}/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.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/py/flwr/cli/login/login.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250730 → flwr_nightly-1.21.0.dev20250801}/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
|