flwr-nightly 1.21.0.dev20250806__tar.gz → 1.21.0.dev20250808__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.dev20250806 → flwr_nightly-1.21.0.dev20250808}/PKG-INFO +1 -1
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +2 -2
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +2 -2
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +22 -8
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/corestate/corestate.py +3 -2
- flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/__init__.py +15 -0
- flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/__init__.py +24 -0
- flwr_nightly-1.21.0.dev20250806/py/flwr/supernode/scheduler/simple_clientapp_scheduler_plugin.py → flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +4 -4
- flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/scheduler/plugin.py → flwr_nightly-1.21.0.dev20250808/py/flwr/supercore/superexec/plugin/exec_plugin.py +4 -4
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/in_memory_nodestate.py +2 -2
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +2 -7
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/pyproject.toml +1 -1
- flwr_nightly-1.21.0.dev20250806/py/flwr/supercore/scheduler/__init__.py +0 -22
- flwr_nightly-1.21.0.dev20250806/py/flwr/supernode/scheduler/__init__.py +0 -22
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/README.md +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/inflatable_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/corestate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/object_store/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supercore/utils.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superexec/simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/app.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/deployment.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/executor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/executor/simulation.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/superlink/servicer/control/control_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/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.dev20250808
|
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
|
@@ -686,12 +686,12 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
|
|
686
686
|
latest_timestamp = run.logs[-1][0] if index < len(run.logs) else 0.0
|
687
687
|
return "".join(log for _, log in run.logs[index:]), latest_timestamp
|
688
688
|
|
689
|
-
def create_token(self, run_id: int) -> str:
|
689
|
+
def create_token(self, run_id: int) -> Optional[str]:
|
690
690
|
"""Create a token for the given run ID."""
|
691
691
|
token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
|
692
692
|
with self.lock_token_store:
|
693
693
|
if run_id in self.token_store:
|
694
|
-
|
694
|
+
return None # Token already created for this run ID
|
695
695
|
self.token_store[run_id] = token
|
696
696
|
self.token_to_run_id[token] = run_id
|
697
697
|
return token
|
@@ -1148,7 +1148,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
1148
1148
|
|
1149
1149
|
return message_ins
|
1150
1150
|
|
1151
|
-
def create_token(self, run_id: int) -> str:
|
1151
|
+
def create_token(self, run_id: int) -> Optional[str]:
|
1152
1152
|
"""Create a token for the given run ID."""
|
1153
1153
|
token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
|
1154
1154
|
query = "INSERT INTO token_store (run_id, token) VALUES (:run_id, :token);"
|
@@ -1156,7 +1156,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
1156
1156
|
try:
|
1157
1157
|
self.query(query, data)
|
1158
1158
|
except sqlite3.IntegrityError:
|
1159
|
-
|
1159
|
+
return None # Token already created for this run ID
|
1160
1160
|
return token
|
1161
1161
|
|
1162
1162
|
def verify_token(self, run_id: int, token: str) -> bool:
|
@@ -114,21 +114,35 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
|
|
114
114
|
context: grpc.ServicerContext,
|
115
115
|
) -> ListAppsToLaunchResponse:
|
116
116
|
"""Get run IDs with pending messages."""
|
117
|
-
log(DEBUG, "
|
117
|
+
log(DEBUG, "ServerAppIoServicer.ListAppsToLaunch")
|
118
118
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
119
|
+
# Initialize state connection
|
120
|
+
state = self.state_factory.state()
|
121
|
+
|
122
|
+
# Get IDs of runs in pending status
|
123
|
+
run_ids = state.get_run_ids(flwr_aid=None)
|
124
|
+
pending_run_ids = []
|
125
|
+
for run_id, status in state.get_run_status(run_ids).items():
|
126
|
+
if status.status == Status.PENDING:
|
127
|
+
pending_run_ids.append(run_id)
|
128
|
+
|
129
|
+
# Return run IDs
|
130
|
+
return ListAppsToLaunchResponse(run_ids=pending_run_ids)
|
123
131
|
|
124
132
|
def RequestToken(
|
125
133
|
self, request: RequestTokenRequest, context: grpc.ServicerContext
|
126
134
|
) -> RequestTokenResponse:
|
127
135
|
"""Request token."""
|
128
|
-
log(DEBUG, "
|
136
|
+
log(DEBUG, "ServerAppIoServicer.RequestToken")
|
137
|
+
|
138
|
+
# Initialize state connection
|
139
|
+
state = self.state_factory.state()
|
140
|
+
|
141
|
+
# Attempt to create a token for the provided run ID
|
142
|
+
token = state.create_token(request.run_id)
|
129
143
|
|
130
|
-
|
131
|
-
|
144
|
+
# Return the token
|
145
|
+
return RequestTokenResponse(token=token or "")
|
132
146
|
|
133
147
|
def GetNodes(
|
134
148
|
self, request: GetNodesRequest, context: grpc.ServicerContext
|
@@ -23,7 +23,7 @@ class CoreState(ABC):
|
|
23
23
|
"""Abstract base class for core state."""
|
24
24
|
|
25
25
|
@abstractmethod
|
26
|
-
def create_token(self, run_id: int) -> str:
|
26
|
+
def create_token(self, run_id: int) -> Optional[str]:
|
27
27
|
"""Create a token for the given run ID.
|
28
28
|
|
29
29
|
Parameters
|
@@ -34,7 +34,8 @@ class CoreState(ABC):
|
|
34
34
|
Returns
|
35
35
|
-------
|
36
36
|
str
|
37
|
-
|
37
|
+
The newly generated token if one does not already exist
|
38
|
+
for the given run ID, otherwise None.
|
38
39
|
"""
|
39
40
|
|
40
41
|
@abstractmethod
|
@@ -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 SuperExec."""
|
@@ -0,0 +1,24 @@
|
|
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 SuperExec plugins."""
|
16
|
+
|
17
|
+
|
18
|
+
from .clientapp_exec_plugin import ClientAppExecPlugin
|
19
|
+
from .exec_plugin import ExecPlugin
|
20
|
+
|
21
|
+
__all__ = [
|
22
|
+
"ClientAppExecPlugin",
|
23
|
+
"ExecPlugin",
|
24
|
+
]
|
@@ -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
|
-
"""Simple Flower
|
15
|
+
"""Simple Flower SuperExec plugin for ClientApp."""
|
16
16
|
|
17
17
|
|
18
18
|
import os
|
@@ -20,11 +20,11 @@ import subprocess
|
|
20
20
|
from collections.abc import Sequence
|
21
21
|
from typing import Optional
|
22
22
|
|
23
|
-
from
|
23
|
+
from .exec_plugin import ExecPlugin
|
24
24
|
|
25
25
|
|
26
|
-
class
|
27
|
-
"""Simple Flower
|
26
|
+
class ClientAppExecPlugin(ExecPlugin):
|
27
|
+
"""Simple Flower SuperExec plugin for ClientApp.
|
28
28
|
|
29
29
|
The plugin always selects the first candidate run ID.
|
30
30
|
"""
|
@@ -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
|
-
"""Abstract base class
|
15
|
+
"""Abstract base class ExecPlugin."""
|
16
16
|
|
17
17
|
|
18
18
|
from abc import ABC, abstractmethod
|
@@ -22,8 +22,8 @@ from typing import Callable, Optional
|
|
22
22
|
from flwr.common.typing import Run
|
23
23
|
|
24
24
|
|
25
|
-
class
|
26
|
-
"""Abstract base class for
|
25
|
+
class ExecPlugin(ABC):
|
26
|
+
"""Abstract base class for SuperExec plugins."""
|
27
27
|
|
28
28
|
def __init__(
|
29
29
|
self,
|
@@ -59,7 +59,7 @@ class SchedulerPlugin(ABC):
|
|
59
59
|
|
60
60
|
This method starts the application process using the given `token`.
|
61
61
|
The `run_id` is used solely for bookkeeping purposes, allowing any
|
62
|
-
|
62
|
+
plugin implementation to associate this launch with a specific run.
|
63
63
|
|
64
64
|
Parameters
|
65
65
|
----------
|
@@ -171,12 +171,12 @@ class InMemoryNodeState(NodeState): # pylint: disable=too-many-instance-attribu
|
|
171
171
|
ret -= set(self.token_store.keys())
|
172
172
|
return list(ret)
|
173
173
|
|
174
|
-
def create_token(self, run_id: int) -> str:
|
174
|
+
def create_token(self, run_id: int) -> Optional[str]:
|
175
175
|
"""Create a token for the given run ID."""
|
176
176
|
token = secrets.token_hex(FLWR_APP_TOKEN_LENGTH) # Generate a random token
|
177
177
|
with self.lock_token_store:
|
178
178
|
if run_id in self.token_store:
|
179
|
-
|
179
|
+
return None # Token already created for this run ID
|
180
180
|
self.token_store[run_id] = token
|
181
181
|
self.token_to_run_id[token] = run_id
|
182
182
|
return token
|
@@ -107,15 +107,10 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
107
107
|
state = self.state_factory.state()
|
108
108
|
|
109
109
|
# Attempt to create a token for the provided run ID
|
110
|
-
|
111
|
-
token = state.create_token(request.run_id)
|
112
|
-
except ValueError:
|
113
|
-
# Return an empty token if A token already exists for this run ID,
|
114
|
-
# indicating the run is in progress
|
115
|
-
return RequestTokenResponse(token="")
|
110
|
+
token = state.create_token(request.run_id)
|
116
111
|
|
117
112
|
# Return the token
|
118
|
-
return RequestTokenResponse(token=token)
|
113
|
+
return RequestTokenResponse(token=token or "")
|
119
114
|
|
120
115
|
def GetRun(
|
121
116
|
self, request: GetRunRequest, context: grpc.ServicerContext
|
@@ -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.dev20250808"
|
8
8
|
description = "Flower: A Friendly Federated AI Framework"
|
9
9
|
license = "Apache-2.0"
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
@@ -1,22 +0,0 @@
|
|
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 App Scheduler."""
|
16
|
-
|
17
|
-
|
18
|
-
from .plugin import SchedulerPlugin
|
19
|
-
|
20
|
-
__all__ = [
|
21
|
-
"SchedulerPlugin",
|
22
|
-
]
|
@@ -1,22 +0,0 @@
|
|
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 ClientApp Scheduler."""
|
16
|
-
|
17
|
-
|
18
|
-
from .simple_clientapp_scheduler_plugin import SimpleClientAppSchedulerPlugin
|
19
|
-
|
20
|
-
__all__ = [
|
21
|
-
"SimpleClientAppSchedulerPlugin",
|
22
|
-
]
|
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.dev20250806 → flwr_nightly-1.21.0.dev20250808}/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.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/login/login.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/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.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/cli/run/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/client_app.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
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/__init__.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/comms_mods.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/mod/utils.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/numpy_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/run_info_store.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/client/typing.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/clientapp/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/address.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/config.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/constant.py
RENAMED
File without changes
|
{flwr_nightly-1.21.0.dev20250806 → flwr_nightly-1.21.0.dev20250808}/py/flwr/common/context.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|