flwr-nightly 1.19.0.dev20250522__tar.gz → 1.19.0.dev20250524__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.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/PKG-INFO +1 -1
- flwr_nightly-1.19.0.dev20250524/py/flwr/compat/server/app.py +174 -0
- flwr_nightly-1.19.0.dev20250524/py/flwr/proto/run_pb2.py +56 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2.pyi +0 -51
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2.py +2 -2
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2_grpc.py +0 -34
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -13
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/__init__.py +1 -1
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/app.py +1 -150
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +1 -31
- flwr_nightly-1.19.0.dev20250524/py/flwr/supernode/cli/__init__.py +20 -0
- flwr_nightly-1.19.0.dev20250522/py/flwr/client/supernode/app.py → flwr_nightly-1.19.0.dev20250524/py/flwr/supernode/cli/flower_supernode.py +2 -2
- {flwr_nightly-1.19.0.dev20250522/py/flwr/client → flwr_nightly-1.19.0.dev20250524/py/flwr/supernode}/start_client_internal.py +154 -163
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/pyproject.toml +2 -2
- flwr_nightly-1.19.0.dev20250522/py/flwr/client/supernode/__init__.py +0 -22
- flwr_nightly-1.19.0.dev20250522/py/flwr/proto/run_pb2.py +0 -64
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/README.md +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/inflatable_grpc_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_event_log_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superexec/simulation.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.19.0.
|
3
|
+
Version: 1.19.0.dev20250524
|
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
|
@@ -0,0 +1,174 @@
|
|
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 server app."""
|
16
|
+
|
17
|
+
|
18
|
+
import sys
|
19
|
+
from logging import INFO
|
20
|
+
from typing import Optional
|
21
|
+
|
22
|
+
from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
|
23
|
+
from flwr.common.address import parse_address
|
24
|
+
from flwr.common.constant import FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS
|
25
|
+
from flwr.common.exit_handlers import register_exit_handlers
|
26
|
+
from flwr.common.logger import log, warn_deprecated_feature
|
27
|
+
from flwr.server.client_manager import ClientManager
|
28
|
+
from flwr.server.history import History
|
29
|
+
from flwr.server.server import Server, init_defaults, run_fl
|
30
|
+
from flwr.server.server_config import ServerConfig
|
31
|
+
from flwr.server.strategy import Strategy
|
32
|
+
from flwr.server.superlink.fleet.grpc_bidi.grpc_server import start_grpc_server
|
33
|
+
|
34
|
+
|
35
|
+
def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
36
|
+
*,
|
37
|
+
server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
|
38
|
+
server: Optional[Server] = None,
|
39
|
+
config: Optional[ServerConfig] = None,
|
40
|
+
strategy: Optional[Strategy] = None,
|
41
|
+
client_manager: Optional[ClientManager] = None,
|
42
|
+
grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
|
43
|
+
certificates: Optional[tuple[bytes, bytes, bytes]] = None,
|
44
|
+
) -> History:
|
45
|
+
"""Start a Flower server using the gRPC transport layer.
|
46
|
+
|
47
|
+
Warning
|
48
|
+
-------
|
49
|
+
This function is deprecated since 1.13.0. Use the :code:`flower-superlink` command
|
50
|
+
instead to start a SuperLink.
|
51
|
+
|
52
|
+
Parameters
|
53
|
+
----------
|
54
|
+
server_address : Optional[str]
|
55
|
+
The IPv4 or IPv6 address of the server. Defaults to `"[::]:8080"`.
|
56
|
+
server : Optional[flwr.server.Server] (default: None)
|
57
|
+
A server implementation, either `flwr.server.Server` or a subclass
|
58
|
+
thereof. If no instance is provided, then `start_server` will create
|
59
|
+
one.
|
60
|
+
config : Optional[ServerConfig] (default: None)
|
61
|
+
Currently supported values are `num_rounds` (int, default: 1) and
|
62
|
+
`round_timeout` in seconds (float, default: None).
|
63
|
+
strategy : Optional[flwr.server.Strategy] (default: None).
|
64
|
+
An implementation of the abstract base class
|
65
|
+
`flwr.server.strategy.Strategy`. If no strategy is provided, then
|
66
|
+
`start_server` will use `flwr.server.strategy.FedAvg`.
|
67
|
+
client_manager : Optional[flwr.server.ClientManager] (default: None)
|
68
|
+
An implementation of the abstract base class
|
69
|
+
`flwr.server.ClientManager`. If no implementation is provided, then
|
70
|
+
`start_server` will use
|
71
|
+
`flwr.server.client_manager.SimpleClientManager`.
|
72
|
+
grpc_max_message_length : int (default: 536_870_912, this equals 512MB)
|
73
|
+
The maximum length of gRPC messages that can be exchanged with the
|
74
|
+
Flower clients. The default should be sufficient for most models.
|
75
|
+
Users who train very large models might need to increase this
|
76
|
+
value. Note that the Flower clients need to be started with the
|
77
|
+
same value (see `flwr.client.start_client`), otherwise clients will
|
78
|
+
not know about the increased limit and block larger messages.
|
79
|
+
certificates : Tuple[bytes, bytes, bytes] (default: None)
|
80
|
+
Tuple containing root certificate, server certificate, and private key
|
81
|
+
to start a secure SSL-enabled server. The tuple is expected to have
|
82
|
+
three bytes elements in the following order:
|
83
|
+
|
84
|
+
* CA certificate.
|
85
|
+
* server certificate.
|
86
|
+
* server private key.
|
87
|
+
|
88
|
+
Returns
|
89
|
+
-------
|
90
|
+
hist : flwr.server.history.History
|
91
|
+
Object containing training and evaluation metrics.
|
92
|
+
|
93
|
+
Examples
|
94
|
+
--------
|
95
|
+
Starting an insecure server::
|
96
|
+
|
97
|
+
start_server()
|
98
|
+
|
99
|
+
Starting a TLS-enabled server::
|
100
|
+
|
101
|
+
start_server(
|
102
|
+
certificates=(
|
103
|
+
Path("/crts/root.pem").read_bytes(),
|
104
|
+
Path("/crts/localhost.crt").read_bytes(),
|
105
|
+
Path("/crts/localhost.key").read_bytes()
|
106
|
+
)
|
107
|
+
)
|
108
|
+
"""
|
109
|
+
msg = (
|
110
|
+
"flwr.server.start_server() is deprecated."
|
111
|
+
"\n\tInstead, use the `flower-superlink` CLI command to start a SuperLink "
|
112
|
+
"as shown below:"
|
113
|
+
"\n\n\t\t$ flower-superlink --insecure"
|
114
|
+
"\n\n\tTo view usage and all available options, run:"
|
115
|
+
"\n\n\t\t$ flower-superlink --help"
|
116
|
+
"\n\n\tUsing `start_server()` is deprecated."
|
117
|
+
)
|
118
|
+
warn_deprecated_feature(name=msg)
|
119
|
+
|
120
|
+
event(EventType.START_SERVER_ENTER)
|
121
|
+
|
122
|
+
# Parse IP address
|
123
|
+
parsed_address = parse_address(server_address)
|
124
|
+
if not parsed_address:
|
125
|
+
sys.exit(f"Server IP address ({server_address}) cannot be parsed.")
|
126
|
+
host, port, is_v6 = parsed_address
|
127
|
+
address = f"[{host}]:{port}" if is_v6 else f"{host}:{port}"
|
128
|
+
|
129
|
+
# Initialize server and server config
|
130
|
+
initialized_server, initialized_config = init_defaults(
|
131
|
+
server=server,
|
132
|
+
config=config,
|
133
|
+
strategy=strategy,
|
134
|
+
client_manager=client_manager,
|
135
|
+
)
|
136
|
+
log(
|
137
|
+
INFO,
|
138
|
+
"Starting Flower server, config: %s",
|
139
|
+
initialized_config,
|
140
|
+
)
|
141
|
+
|
142
|
+
# Start gRPC server
|
143
|
+
grpc_server = start_grpc_server(
|
144
|
+
client_manager=initialized_server.client_manager(),
|
145
|
+
server_address=address,
|
146
|
+
max_message_length=grpc_max_message_length,
|
147
|
+
certificates=certificates,
|
148
|
+
)
|
149
|
+
log(
|
150
|
+
INFO,
|
151
|
+
"Flower ECE: gRPC server running (%s rounds), SSL is %s",
|
152
|
+
initialized_config.num_rounds,
|
153
|
+
"enabled" if certificates is not None else "disabled",
|
154
|
+
)
|
155
|
+
|
156
|
+
# Graceful shutdown
|
157
|
+
register_exit_handlers(
|
158
|
+
event_type=EventType.START_SERVER_LEAVE,
|
159
|
+
exit_message="Flower server terminated gracefully.",
|
160
|
+
grpc_servers=[grpc_server],
|
161
|
+
)
|
162
|
+
|
163
|
+
# Start training
|
164
|
+
hist = run_fl(
|
165
|
+
server=initialized_server,
|
166
|
+
config=initialized_config,
|
167
|
+
)
|
168
|
+
|
169
|
+
# Stop the gRPC server
|
170
|
+
grpc_server.stop(grace=1)
|
171
|
+
|
172
|
+
event(EventType.START_SERVER_LEAVE)
|
173
|
+
|
174
|
+
return hist
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: flwr/proto/run.proto
|
4
|
+
# Protobuf Python Version: 4.25.1
|
5
|
+
"""Generated protocol buffer code."""
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
9
|
+
from google.protobuf.internal import builder as _builder
|
10
|
+
# @@protoc_insertion_point(imports)
|
11
|
+
|
12
|
+
_sym_db = _symbol_database.Default()
|
13
|
+
|
14
|
+
|
15
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
16
|
+
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
17
|
+
from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
|
18
|
+
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
19
|
+
|
20
|
+
|
21
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xce\x02\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x12\x12\n\npending_at\x18\x06 \x01(\t\x12\x13\n\x0bstarting_at\x18\x07 \x01(\t\x12\x12\n\nrunning_at\x18\x08 \x01(\t\x12\x13\n\x0b\x66inished_at\x18\t \x01(\t\x12%\n\x06status\x18\n \x01(\x0b\x32\x15.flwr.proto.RunStatus\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"@\n\tRunStatus\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x12\n\nsub_status\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x65tails\x18\x03 \x01(\t\"?\n\rGetRunRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Run\"S\n\x16UpdateRunStatusRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12)\n\nrun_status\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus\"\x19\n\x17UpdateRunStatusResponse\"F\n\x13GetRunStatusRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x0f\n\x07run_ids\x18\x02 \x03(\x04\"\xb1\x01\n\x14GetRunStatusResponse\x12L\n\x0frun_status_dict\x18\x01 \x03(\x0b\x32\x33.flwr.proto.GetRunStatusResponse.RunStatusDictEntry\x1aK\n\x12RunStatusDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RunStatus:\x02\x38\x01\"-\n\x1bGetFederationOptionsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"T\n\x1cGetFederationOptionsResponse\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x01 \x01(\x0b\x32\x18.flwr.proto.ConfigRecordb\x06proto3')
|
22
|
+
|
23
|
+
_globals = globals()
|
24
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
25
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.run_pb2', _globals)
|
26
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
27
|
+
DESCRIPTOR._options = None
|
28
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._options = None
|
29
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
30
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._options = None
|
31
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_options = b'8\001'
|
32
|
+
_globals['_RUN']._serialized_start=139
|
33
|
+
_globals['_RUN']._serialized_end=473
|
34
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_start=400
|
35
|
+
_globals['_RUN_OVERRIDECONFIGENTRY']._serialized_end=473
|
36
|
+
_globals['_RUNSTATUS']._serialized_start=475
|
37
|
+
_globals['_RUNSTATUS']._serialized_end=539
|
38
|
+
_globals['_GETRUNREQUEST']._serialized_start=541
|
39
|
+
_globals['_GETRUNREQUEST']._serialized_end=604
|
40
|
+
_globals['_GETRUNRESPONSE']._serialized_start=606
|
41
|
+
_globals['_GETRUNRESPONSE']._serialized_end=652
|
42
|
+
_globals['_UPDATERUNSTATUSREQUEST']._serialized_start=654
|
43
|
+
_globals['_UPDATERUNSTATUSREQUEST']._serialized_end=737
|
44
|
+
_globals['_UPDATERUNSTATUSRESPONSE']._serialized_start=739
|
45
|
+
_globals['_UPDATERUNSTATUSRESPONSE']._serialized_end=764
|
46
|
+
_globals['_GETRUNSTATUSREQUEST']._serialized_start=766
|
47
|
+
_globals['_GETRUNSTATUSREQUEST']._serialized_end=836
|
48
|
+
_globals['_GETRUNSTATUSRESPONSE']._serialized_start=839
|
49
|
+
_globals['_GETRUNSTATUSRESPONSE']._serialized_end=1016
|
50
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_start=941
|
51
|
+
_globals['_GETRUNSTATUSRESPONSE_RUNSTATUSDICTENTRY']._serialized_end=1016
|
52
|
+
_globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_start=1018
|
53
|
+
_globals['_GETFEDERATIONOPTIONSREQUEST']._serialized_end=1063
|
54
|
+
_globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_start=1065
|
55
|
+
_globals['_GETFEDERATIONOPTIONSRESPONSE']._serialized_end=1149
|
56
|
+
# @@protoc_insertion_point(module_scope)
|
{flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/run_pb2.pyi
RENAMED
@@ -3,7 +3,6 @@
|
|
3
3
|
isort:skip_file
|
4
4
|
"""
|
5
5
|
import builtins
|
6
|
-
import flwr.proto.fab_pb2
|
7
6
|
import flwr.proto.node_pb2
|
8
7
|
import flwr.proto.recorddict_pb2
|
9
8
|
import flwr.proto.transport_pb2
|
@@ -94,56 +93,6 @@ class RunStatus(google.protobuf.message.Message):
|
|
94
93
|
def ClearField(self, field_name: typing_extensions.Literal["details",b"details","status",b"status","sub_status",b"sub_status"]) -> None: ...
|
95
94
|
global___RunStatus = RunStatus
|
96
95
|
|
97
|
-
class CreateRunRequest(google.protobuf.message.Message):
|
98
|
-
"""CreateRun"""
|
99
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
100
|
-
class OverrideConfigEntry(google.protobuf.message.Message):
|
101
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
102
|
-
KEY_FIELD_NUMBER: builtins.int
|
103
|
-
VALUE_FIELD_NUMBER: builtins.int
|
104
|
-
key: typing.Text
|
105
|
-
@property
|
106
|
-
def value(self) -> flwr.proto.transport_pb2.Scalar: ...
|
107
|
-
def __init__(self,
|
108
|
-
*,
|
109
|
-
key: typing.Text = ...,
|
110
|
-
value: typing.Optional[flwr.proto.transport_pb2.Scalar] = ...,
|
111
|
-
) -> None: ...
|
112
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
113
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
114
|
-
|
115
|
-
FAB_ID_FIELD_NUMBER: builtins.int
|
116
|
-
FAB_VERSION_FIELD_NUMBER: builtins.int
|
117
|
-
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
118
|
-
FAB_FIELD_NUMBER: builtins.int
|
119
|
-
fab_id: typing.Text
|
120
|
-
fab_version: typing.Text
|
121
|
-
@property
|
122
|
-
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
123
|
-
@property
|
124
|
-
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
125
|
-
def __init__(self,
|
126
|
-
*,
|
127
|
-
fab_id: typing.Text = ...,
|
128
|
-
fab_version: typing.Text = ...,
|
129
|
-
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
130
|
-
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
131
|
-
) -> None: ...
|
132
|
-
def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ...
|
133
|
-
def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","fab_id",b"fab_id","fab_version",b"fab_version","override_config",b"override_config"]) -> None: ...
|
134
|
-
global___CreateRunRequest = CreateRunRequest
|
135
|
-
|
136
|
-
class CreateRunResponse(google.protobuf.message.Message):
|
137
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
138
|
-
RUN_ID_FIELD_NUMBER: builtins.int
|
139
|
-
run_id: builtins.int
|
140
|
-
def __init__(self,
|
141
|
-
*,
|
142
|
-
run_id: builtins.int = ...,
|
143
|
-
) -> None: ...
|
144
|
-
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
|
145
|
-
global___CreateRunResponse = CreateRunResponse
|
146
|
-
|
147
96
|
class GetRunRequest(google.protobuf.message.Message):
|
148
97
|
"""GetRun"""
|
149
98
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
{flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/proto/serverappio_pb2.py
RENAMED
@@ -20,7 +20,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
20
20
|
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
21
21
|
|
22
22
|
|
23
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"T\n\x16PushInsMessagesRequest\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x17PushInsMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\"=\n\x16PullResMessagesRequest\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"E\n\x17PullResMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\
|
23
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/serverappio.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/heartbeat.proto\x1a\x14\x66lwr/proto/log.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"T\n\x16PushInsMessagesRequest\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\".\n\x17PushInsMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\"=\n\x16PullResMessagesRequest\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\"E\n\x17PullResMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\"\x1c\n\x1aPullServerAppInputsRequest\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\xe4\x08\n\x0bServerAppIo\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12Y\n\x0cPushMessages\x12\".flwr.proto.PushInsMessagesRequest\x1a#.flwr.proto.PushInsMessagesResponse\"\x00\x12Y\n\x0cPullMessages\x12\".flwr.proto.PullResMessagesRequest\x1a#.flwr.proto.PullResMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x12\\\n\x0fUpdateRunStatus\x12\".flwr.proto.UpdateRunStatusRequest\x1a#.flwr.proto.UpdateRunStatusResponse\"\x00\x12S\n\x0cGetRunStatus\x12\x1f.flwr.proto.GetRunStatusRequest\x1a .flwr.proto.GetRunStatusResponse\"\x00\x12G\n\x08PushLogs\x12\x1b.flwr.proto.PushLogsRequest\x1a\x1c.flwr.proto.PushLogsResponse\"\x00\x12_\n\x10SendAppHeartbeat\x12#.flwr.proto.SendAppHeartbeatRequest\x1a$.flwr.proto.SendAppHeartbeatResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x62\x06proto3')
|
24
24
|
|
25
25
|
_globals = globals()
|
26
26
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -48,5 +48,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
48
48
|
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=787
|
49
49
|
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=817
|
50
50
|
_globals['_SERVERAPPIO']._serialized_start=820
|
51
|
-
_globals['_SERVERAPPIO']._serialized_end=
|
51
|
+
_globals['_SERVERAPPIO']._serialized_end=1944
|
52
52
|
# @@protoc_insertion_point(module_scope)
|
@@ -19,11 +19,6 @@ class ServerAppIoStub(object):
|
|
19
19
|
Args:
|
20
20
|
channel: A grpc.Channel.
|
21
21
|
"""
|
22
|
-
self.CreateRun = channel.unary_unary(
|
23
|
-
'/flwr.proto.ServerAppIo/CreateRun',
|
24
|
-
request_serializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
|
25
|
-
response_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
|
26
|
-
)
|
27
22
|
self.GetNodes = channel.unary_unary(
|
28
23
|
'/flwr.proto.ServerAppIo/GetNodes',
|
29
24
|
request_serializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.SerializeToString,
|
@@ -94,13 +89,6 @@ class ServerAppIoStub(object):
|
|
94
89
|
class ServerAppIoServicer(object):
|
95
90
|
"""Missing associated documentation comment in .proto file."""
|
96
91
|
|
97
|
-
def CreateRun(self, request, context):
|
98
|
-
"""Request run_id
|
99
|
-
"""
|
100
|
-
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
101
|
-
context.set_details('Method not implemented!')
|
102
|
-
raise NotImplementedError('Method not implemented!')
|
103
|
-
|
104
92
|
def GetNodes(self, request, context):
|
105
93
|
"""Return a set of nodes
|
106
94
|
"""
|
@@ -195,11 +183,6 @@ class ServerAppIoServicer(object):
|
|
195
183
|
|
196
184
|
def add_ServerAppIoServicer_to_server(servicer, server):
|
197
185
|
rpc_method_handlers = {
|
198
|
-
'CreateRun': grpc.unary_unary_rpc_method_handler(
|
199
|
-
servicer.CreateRun,
|
200
|
-
request_deserializer=flwr_dot_proto_dot_run__pb2.CreateRunRequest.FromString,
|
201
|
-
response_serializer=flwr_dot_proto_dot_run__pb2.CreateRunResponse.SerializeToString,
|
202
|
-
),
|
203
186
|
'GetNodes': grpc.unary_unary_rpc_method_handler(
|
204
187
|
servicer.GetNodes,
|
205
188
|
request_deserializer=flwr_dot_proto_dot_serverappio__pb2.GetNodesRequest.FromString,
|
@@ -275,23 +258,6 @@ def add_ServerAppIoServicer_to_server(servicer, server):
|
|
275
258
|
class ServerAppIo(object):
|
276
259
|
"""Missing associated documentation comment in .proto file."""
|
277
260
|
|
278
|
-
@staticmethod
|
279
|
-
def CreateRun(request,
|
280
|
-
target,
|
281
|
-
options=(),
|
282
|
-
channel_credentials=None,
|
283
|
-
call_credentials=None,
|
284
|
-
insecure=False,
|
285
|
-
compression=None,
|
286
|
-
wait_for_ready=None,
|
287
|
-
timeout=None,
|
288
|
-
metadata=None):
|
289
|
-
return grpc.experimental.unary_unary(request, target, '/flwr.proto.ServerAppIo/CreateRun',
|
290
|
-
flwr_dot_proto_dot_run__pb2.CreateRunRequest.SerializeToString,
|
291
|
-
flwr_dot_proto_dot_run__pb2.CreateRunResponse.FromString,
|
292
|
-
options, channel_credentials,
|
293
|
-
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
294
|
-
|
295
261
|
@staticmethod
|
296
262
|
def GetNodes(request,
|
297
263
|
target,
|
@@ -13,11 +13,6 @@ import grpc
|
|
13
13
|
|
14
14
|
class ServerAppIoStub:
|
15
15
|
def __init__(self, channel: grpc.Channel) -> None: ...
|
16
|
-
CreateRun: grpc.UnaryUnaryMultiCallable[
|
17
|
-
flwr.proto.run_pb2.CreateRunRequest,
|
18
|
-
flwr.proto.run_pb2.CreateRunResponse]
|
19
|
-
"""Request run_id"""
|
20
|
-
|
21
16
|
GetNodes: grpc.UnaryUnaryMultiCallable[
|
22
17
|
flwr.proto.serverappio_pb2.GetNodesRequest,
|
23
18
|
flwr.proto.serverappio_pb2.GetNodesResponse]
|
@@ -85,14 +80,6 @@ class ServerAppIoStub:
|
|
85
80
|
|
86
81
|
|
87
82
|
class ServerAppIoServicer(metaclass=abc.ABCMeta):
|
88
|
-
@abc.abstractmethod
|
89
|
-
def CreateRun(self,
|
90
|
-
request: flwr.proto.run_pb2.CreateRunRequest,
|
91
|
-
context: grpc.ServicerContext,
|
92
|
-
) -> flwr.proto.run_pb2.CreateRunResponse:
|
93
|
-
"""Request run_id"""
|
94
|
-
pass
|
95
|
-
|
96
83
|
@abc.abstractmethod
|
97
84
|
def GetNodes(self,
|
98
85
|
request: flwr.proto.serverappio_pb2.GetNodesRequest,
|
{flwr_nightly-1.19.0.dev20250522 → flwr_nightly-1.19.0.dev20250524}/py/flwr/server/__init__.py
RENAMED
@@ -15,9 +15,9 @@
|
|
15
15
|
"""Flower server."""
|
16
16
|
|
17
17
|
|
18
|
+
from ..compat.server.app import start_server as start_server # Deprecated
|
18
19
|
from . import strategy
|
19
20
|
from . import workflow as workflow
|
20
|
-
from .app import start_server as start_server
|
21
21
|
from .client_manager import ClientManager as ClientManager
|
22
22
|
from .client_manager import SimpleClientManager as SimpleClientManager
|
23
23
|
from .compat import LegacyContext as LegacyContext
|
@@ -43,7 +43,6 @@ from flwr.common.constant import (
|
|
43
43
|
AUTH_TYPE_YAML_KEY,
|
44
44
|
CLIENT_OCTET,
|
45
45
|
EXEC_API_DEFAULT_SERVER_ADDRESS,
|
46
|
-
FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
|
47
46
|
FLEET_API_GRPC_RERE_DEFAULT_ADDRESS,
|
48
47
|
FLEET_API_REST_DEFAULT_ADDRESS,
|
49
48
|
ISOLATION_MODE_PROCESS,
|
@@ -60,7 +59,7 @@ from flwr.common.event_log_plugin import EventLogWriterPlugin
|
|
60
59
|
from flwr.common.exit import ExitCode, flwr_exit
|
61
60
|
from flwr.common.exit_handlers import register_exit_handlers
|
62
61
|
from flwr.common.grpc import generic_create_grpc_server
|
63
|
-
from flwr.common.logger import log
|
62
|
+
from flwr.common.logger import log
|
64
63
|
from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
65
64
|
public_key_to_bytes,
|
66
65
|
)
|
@@ -75,14 +74,8 @@ from flwr.supercore.object_store import ObjectStoreFactory
|
|
75
74
|
from flwr.superexec.app import load_executor
|
76
75
|
from flwr.superexec.exec_grpc import run_exec_api_grpc
|
77
76
|
|
78
|
-
from .client_manager import ClientManager
|
79
|
-
from .history import History
|
80
|
-
from .server import Server, init_defaults, run_fl
|
81
|
-
from .server_config import ServerConfig
|
82
|
-
from .strategy import Strategy
|
83
77
|
from .superlink.ffs.ffs_factory import FfsFactory
|
84
78
|
from .superlink.fleet.grpc_adapter.grpc_adapter_servicer import GrpcAdapterServicer
|
85
|
-
from .superlink.fleet.grpc_bidi.grpc_server import start_grpc_server
|
86
79
|
from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
|
87
80
|
from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
|
88
81
|
from .superlink.linkstate import LinkStateFactory
|
@@ -124,148 +117,6 @@ except ImportError:
|
|
124
117
|
)
|
125
118
|
|
126
119
|
|
127
|
-
def start_server( # pylint: disable=too-many-arguments,too-many-locals
|
128
|
-
*,
|
129
|
-
server_address: str = FLEET_API_GRPC_BIDI_DEFAULT_ADDRESS,
|
130
|
-
server: Optional[Server] = None,
|
131
|
-
config: Optional[ServerConfig] = None,
|
132
|
-
strategy: Optional[Strategy] = None,
|
133
|
-
client_manager: Optional[ClientManager] = None,
|
134
|
-
grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
|
135
|
-
certificates: Optional[tuple[bytes, bytes, bytes]] = None,
|
136
|
-
) -> History:
|
137
|
-
"""Start a Flower server using the gRPC transport layer.
|
138
|
-
|
139
|
-
Warning
|
140
|
-
-------
|
141
|
-
This function is deprecated since 1.13.0. Use the :code:`flower-superlink` command
|
142
|
-
instead to start a SuperLink.
|
143
|
-
|
144
|
-
Parameters
|
145
|
-
----------
|
146
|
-
server_address : Optional[str]
|
147
|
-
The IPv4 or IPv6 address of the server. Defaults to `"[::]:8080"`.
|
148
|
-
server : Optional[flwr.server.Server] (default: None)
|
149
|
-
A server implementation, either `flwr.server.Server` or a subclass
|
150
|
-
thereof. If no instance is provided, then `start_server` will create
|
151
|
-
one.
|
152
|
-
config : Optional[ServerConfig] (default: None)
|
153
|
-
Currently supported values are `num_rounds` (int, default: 1) and
|
154
|
-
`round_timeout` in seconds (float, default: None).
|
155
|
-
strategy : Optional[flwr.server.Strategy] (default: None).
|
156
|
-
An implementation of the abstract base class
|
157
|
-
`flwr.server.strategy.Strategy`. If no strategy is provided, then
|
158
|
-
`start_server` will use `flwr.server.strategy.FedAvg`.
|
159
|
-
client_manager : Optional[flwr.server.ClientManager] (default: None)
|
160
|
-
An implementation of the abstract base class
|
161
|
-
`flwr.server.ClientManager`. If no implementation is provided, then
|
162
|
-
`start_server` will use
|
163
|
-
`flwr.server.client_manager.SimpleClientManager`.
|
164
|
-
grpc_max_message_length : int (default: 536_870_912, this equals 512MB)
|
165
|
-
The maximum length of gRPC messages that can be exchanged with the
|
166
|
-
Flower clients. The default should be sufficient for most models.
|
167
|
-
Users who train very large models might need to increase this
|
168
|
-
value. Note that the Flower clients need to be started with the
|
169
|
-
same value (see `flwr.client.start_client`), otherwise clients will
|
170
|
-
not know about the increased limit and block larger messages.
|
171
|
-
certificates : Tuple[bytes, bytes, bytes] (default: None)
|
172
|
-
Tuple containing root certificate, server certificate, and private key
|
173
|
-
to start a secure SSL-enabled server. The tuple is expected to have
|
174
|
-
three bytes elements in the following order:
|
175
|
-
|
176
|
-
* CA certificate.
|
177
|
-
* server certificate.
|
178
|
-
* server private key.
|
179
|
-
|
180
|
-
Returns
|
181
|
-
-------
|
182
|
-
hist : flwr.server.history.History
|
183
|
-
Object containing training and evaluation metrics.
|
184
|
-
|
185
|
-
Examples
|
186
|
-
--------
|
187
|
-
Starting an insecure server::
|
188
|
-
|
189
|
-
start_server()
|
190
|
-
|
191
|
-
Starting a TLS-enabled server::
|
192
|
-
|
193
|
-
start_server(
|
194
|
-
certificates=(
|
195
|
-
Path("/crts/root.pem").read_bytes(),
|
196
|
-
Path("/crts/localhost.crt").read_bytes(),
|
197
|
-
Path("/crts/localhost.key").read_bytes()
|
198
|
-
)
|
199
|
-
)
|
200
|
-
"""
|
201
|
-
msg = (
|
202
|
-
"flwr.server.start_server() is deprecated."
|
203
|
-
"\n\tInstead, use the `flower-superlink` CLI command to start a SuperLink "
|
204
|
-
"as shown below:"
|
205
|
-
"\n\n\t\t$ flower-superlink --insecure"
|
206
|
-
"\n\n\tTo view usage and all available options, run:"
|
207
|
-
"\n\n\t\t$ flower-superlink --help"
|
208
|
-
"\n\n\tUsing `start_server()` is deprecated."
|
209
|
-
)
|
210
|
-
warn_deprecated_feature(name=msg)
|
211
|
-
|
212
|
-
event(EventType.START_SERVER_ENTER)
|
213
|
-
|
214
|
-
# Parse IP address
|
215
|
-
parsed_address = parse_address(server_address)
|
216
|
-
if not parsed_address:
|
217
|
-
sys.exit(f"Server IP address ({server_address}) cannot be parsed.")
|
218
|
-
host, port, is_v6 = parsed_address
|
219
|
-
address = f"[{host}]:{port}" if is_v6 else f"{host}:{port}"
|
220
|
-
|
221
|
-
# Initialize server and server config
|
222
|
-
initialized_server, initialized_config = init_defaults(
|
223
|
-
server=server,
|
224
|
-
config=config,
|
225
|
-
strategy=strategy,
|
226
|
-
client_manager=client_manager,
|
227
|
-
)
|
228
|
-
log(
|
229
|
-
INFO,
|
230
|
-
"Starting Flower server, config: %s",
|
231
|
-
initialized_config,
|
232
|
-
)
|
233
|
-
|
234
|
-
# Start gRPC server
|
235
|
-
grpc_server = start_grpc_server(
|
236
|
-
client_manager=initialized_server.client_manager(),
|
237
|
-
server_address=address,
|
238
|
-
max_message_length=grpc_max_message_length,
|
239
|
-
certificates=certificates,
|
240
|
-
)
|
241
|
-
log(
|
242
|
-
INFO,
|
243
|
-
"Flower ECE: gRPC server running (%s rounds), SSL is %s",
|
244
|
-
initialized_config.num_rounds,
|
245
|
-
"enabled" if certificates is not None else "disabled",
|
246
|
-
)
|
247
|
-
|
248
|
-
# Graceful shutdown
|
249
|
-
register_exit_handlers(
|
250
|
-
event_type=EventType.START_SERVER_LEAVE,
|
251
|
-
exit_message="Flower server terminated gracefully.",
|
252
|
-
grpc_servers=[grpc_server],
|
253
|
-
)
|
254
|
-
|
255
|
-
# Start training
|
256
|
-
hist = run_fl(
|
257
|
-
server=initialized_server,
|
258
|
-
config=initialized_config,
|
259
|
-
)
|
260
|
-
|
261
|
-
# Stop the gRPC server
|
262
|
-
grpc_server.stop(grace=1)
|
263
|
-
|
264
|
-
event(EventType.START_SERVER_LEAVE)
|
265
|
-
|
266
|
-
return hist
|
267
|
-
|
268
|
-
|
269
120
|
# pylint: disable=too-many-branches, too-many-locals, too-many-statements
|
270
121
|
def run_superlink() -> None:
|
271
122
|
"""Run Flower SuperLink (ServerAppIo API and Fleet API)."""
|