flwr-nightly 1.13.0.dev20241024__tar.gz → 1.13.0.dev20241028__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/PKG-INFO +1 -1
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/pyproject.toml +1 -1
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/app.py +10 -8
- flwr_nightly-1.13.0.dev20241028/src/py/flwr/server/serverapp/app.py +141 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/driver/driver_servicer.py +57 -15
- flwr_nightly-1.13.0.dev20241024/src/py/flwr/server/serverapp/app.py +0 -78
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/LICENSE +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/README.md +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/common_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/common_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/superexec/simulation.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.13.0.
|
|
7
|
+
version = "1.13.0.dev20241028"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/server/app.py
RENAMED
|
@@ -50,7 +50,6 @@ from flwr.common.constant import (
|
|
|
50
50
|
TRANSPORT_TYPE_GRPC_ADAPTER,
|
|
51
51
|
TRANSPORT_TYPE_GRPC_RERE,
|
|
52
52
|
TRANSPORT_TYPE_REST,
|
|
53
|
-
Status,
|
|
54
53
|
)
|
|
55
54
|
from flwr.common.exit_handlers import register_exit_handlers
|
|
56
55
|
from flwr.common.logger import log
|
|
@@ -58,7 +57,6 @@ from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
|
|
58
57
|
private_key_to_bytes,
|
|
59
58
|
public_key_to_bytes,
|
|
60
59
|
)
|
|
61
|
-
from flwr.common.typing import RunStatus
|
|
62
60
|
from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
|
|
63
61
|
add_FleetServicer_to_server,
|
|
64
62
|
)
|
|
@@ -345,7 +343,7 @@ def run_superlink() -> None:
|
|
|
345
343
|
# Scheduler thread
|
|
346
344
|
scheduler_th = threading.Thread(
|
|
347
345
|
target=_flwr_serverapp_scheduler,
|
|
348
|
-
args=(state_factory, args.driver_api_address),
|
|
346
|
+
args=(state_factory, args.driver_api_address, args.ssl_ca_certfile),
|
|
349
347
|
)
|
|
350
348
|
scheduler_th.start()
|
|
351
349
|
bckg_threads.append(scheduler_th)
|
|
@@ -367,7 +365,9 @@ def run_superlink() -> None:
|
|
|
367
365
|
|
|
368
366
|
|
|
369
367
|
def _flwr_serverapp_scheduler(
|
|
370
|
-
state_factory: LinkStateFactory,
|
|
368
|
+
state_factory: LinkStateFactory,
|
|
369
|
+
driver_api_address: str,
|
|
370
|
+
ssl_ca_certfile: Optional[str],
|
|
371
371
|
) -> None:
|
|
372
372
|
log(DEBUG, "Started flwr-serverapp scheduler thread.")
|
|
373
373
|
|
|
@@ -380,10 +380,6 @@ def _flwr_serverapp_scheduler(
|
|
|
380
380
|
|
|
381
381
|
if pending_run_id:
|
|
382
382
|
|
|
383
|
-
# Set run as starting
|
|
384
|
-
state.update_run_status(
|
|
385
|
-
run_id=pending_run_id, new_status=RunStatus(Status.STARTING, "", "")
|
|
386
|
-
)
|
|
387
383
|
log(
|
|
388
384
|
INFO,
|
|
389
385
|
"Launching `flwr-serverapp` subprocess with run-id %d. "
|
|
@@ -399,6 +395,12 @@ def _flwr_serverapp_scheduler(
|
|
|
399
395
|
"--run-id",
|
|
400
396
|
str(pending_run_id),
|
|
401
397
|
]
|
|
398
|
+
if ssl_ca_certfile:
|
|
399
|
+
command.append("--root-certificates")
|
|
400
|
+
command.append(ssl_ca_certfile)
|
|
401
|
+
else:
|
|
402
|
+
command.append("--insecure")
|
|
403
|
+
|
|
402
404
|
subprocess.run(
|
|
403
405
|
command,
|
|
404
406
|
stdout=None,
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Copyright 2024 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 ServerApp process."""
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
import sys
|
|
19
|
+
from logging import DEBUG, INFO, WARN
|
|
20
|
+
from os.path import isfile
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
from typing import Optional
|
|
23
|
+
|
|
24
|
+
from flwr.common.logger import log
|
|
25
|
+
from flwr.server.driver.grpc_driver import GrpcDriver
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def flwr_serverapp() -> None:
|
|
29
|
+
"""Run process-isolated Flower ServerApp."""
|
|
30
|
+
log(INFO, "Starting Flower ServerApp")
|
|
31
|
+
|
|
32
|
+
parser = argparse.ArgumentParser(
|
|
33
|
+
description="Run a Flower ServerApp",
|
|
34
|
+
)
|
|
35
|
+
parser.add_argument(
|
|
36
|
+
"--superlink",
|
|
37
|
+
type=str,
|
|
38
|
+
help="Address of SuperLink's DriverAPI",
|
|
39
|
+
)
|
|
40
|
+
parser.add_argument(
|
|
41
|
+
"--run-id",
|
|
42
|
+
type=int,
|
|
43
|
+
required=False,
|
|
44
|
+
help="Id of the Run this process should start. If not supplied, this "
|
|
45
|
+
"function will request a pending run to the LinkState.",
|
|
46
|
+
)
|
|
47
|
+
parser.add_argument(
|
|
48
|
+
"--flwr-dir",
|
|
49
|
+
default=None,
|
|
50
|
+
help="""The path containing installed Flower Apps.
|
|
51
|
+
By default, this value is equal to:
|
|
52
|
+
|
|
53
|
+
- `$FLWR_HOME/` if `$FLWR_HOME` is defined
|
|
54
|
+
- `$XDG_DATA_HOME/.flwr/` if `$XDG_DATA_HOME` is defined
|
|
55
|
+
- `$HOME/.flwr/` in all other cases
|
|
56
|
+
""",
|
|
57
|
+
)
|
|
58
|
+
parser.add_argument(
|
|
59
|
+
"--insecure",
|
|
60
|
+
action="store_true",
|
|
61
|
+
help="Run the server without HTTPS, regardless of whether certificate "
|
|
62
|
+
"paths are provided. By default, the server runs with HTTPS enabled. "
|
|
63
|
+
"Use this flag only if you understand the risks.",
|
|
64
|
+
)
|
|
65
|
+
parser.add_argument(
|
|
66
|
+
"--root-certificates",
|
|
67
|
+
metavar="ROOT_CERT",
|
|
68
|
+
type=str,
|
|
69
|
+
help="Specifies the path to the PEM-encoded root certificate file for "
|
|
70
|
+
"establishing secure HTTPS connections.",
|
|
71
|
+
)
|
|
72
|
+
args = parser.parse_args()
|
|
73
|
+
|
|
74
|
+
certificates = _try_obtain_certificates(args)
|
|
75
|
+
|
|
76
|
+
log(
|
|
77
|
+
DEBUG,
|
|
78
|
+
"Staring isolated `ServerApp` connected to SuperLink DriverAPI at %s "
|
|
79
|
+
"for run-id %s",
|
|
80
|
+
args.superlink,
|
|
81
|
+
args.run_id,
|
|
82
|
+
)
|
|
83
|
+
run_serverapp(
|
|
84
|
+
superlink=args.superlink,
|
|
85
|
+
run_id=args.run_id,
|
|
86
|
+
flwr_dir_=args.flwr_dir,
|
|
87
|
+
certificates=certificates,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _try_obtain_certificates(
|
|
92
|
+
args: argparse.Namespace,
|
|
93
|
+
) -> Optional[bytes]:
|
|
94
|
+
|
|
95
|
+
if args.insecure:
|
|
96
|
+
if args.root_certificates is not None:
|
|
97
|
+
sys.exit(
|
|
98
|
+
"Conflicting options: The '--insecure' flag disables HTTPS, "
|
|
99
|
+
"but '--root-certificates' was also specified. Please remove "
|
|
100
|
+
"the '--root-certificates' option when running in insecure mode, "
|
|
101
|
+
"or omit '--insecure' to use HTTPS."
|
|
102
|
+
)
|
|
103
|
+
log(
|
|
104
|
+
WARN,
|
|
105
|
+
"Option `--insecure` was set. Starting insecure HTTP channel to %s.",
|
|
106
|
+
args.superlink,
|
|
107
|
+
)
|
|
108
|
+
root_certificates = None
|
|
109
|
+
else:
|
|
110
|
+
# Load the certificates if provided, or load the system certificates
|
|
111
|
+
if not isfile(args.root_certificates):
|
|
112
|
+
sys.exit("Path argument `--root-certificates` does not point to a file.")
|
|
113
|
+
root_certificates = Path(args.root_certificates).read_bytes()
|
|
114
|
+
log(
|
|
115
|
+
DEBUG,
|
|
116
|
+
"Starting secure HTTPS channel to %s "
|
|
117
|
+
"with the following certificates: %s.",
|
|
118
|
+
args.superlink,
|
|
119
|
+
args.root_certificates,
|
|
120
|
+
)
|
|
121
|
+
return root_certificates
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def run_serverapp( # pylint: disable=R0914
|
|
125
|
+
superlink: str,
|
|
126
|
+
run_id: Optional[int] = None,
|
|
127
|
+
flwr_dir_: Optional[str] = None,
|
|
128
|
+
certificates: Optional[bytes] = None,
|
|
129
|
+
) -> None:
|
|
130
|
+
"""Run Flower ServerApp process."""
|
|
131
|
+
_ = GrpcDriver(
|
|
132
|
+
run_id=run_id if run_id else 0,
|
|
133
|
+
driver_service_address=superlink,
|
|
134
|
+
root_certificates=certificates,
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
log(INFO, "%s", flwr_dir_)
|
|
138
|
+
|
|
139
|
+
# Then, GetServerInputs
|
|
140
|
+
|
|
141
|
+
# Then, run ServerApp
|
|
@@ -15,21 +15,26 @@
|
|
|
15
15
|
"""Driver API servicer."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
import threading
|
|
18
19
|
import time
|
|
19
|
-
from logging import DEBUG
|
|
20
|
+
from logging import DEBUG, INFO
|
|
20
21
|
from typing import Optional
|
|
21
22
|
from uuid import UUID
|
|
22
23
|
|
|
23
24
|
import grpc
|
|
25
|
+
from google.protobuf.message import Message as GrpcMessage
|
|
24
26
|
|
|
27
|
+
from flwr.common.constant import Status
|
|
25
28
|
from flwr.common.logger import log
|
|
26
29
|
from flwr.common.serde import (
|
|
30
|
+
context_from_proto,
|
|
31
|
+
context_to_proto,
|
|
27
32
|
fab_from_proto,
|
|
28
33
|
fab_to_proto,
|
|
34
|
+
run_to_proto,
|
|
29
35
|
user_config_from_proto,
|
|
30
|
-
user_config_to_proto,
|
|
31
36
|
)
|
|
32
|
-
from flwr.common.typing import Fab
|
|
37
|
+
from flwr.common.typing import Fab, RunStatus
|
|
33
38
|
from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
|
|
34
39
|
from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
35
40
|
GetNodesRequest,
|
|
@@ -50,7 +55,6 @@ from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
|
50
55
|
CreateRunResponse,
|
|
51
56
|
GetRunRequest,
|
|
52
57
|
GetRunResponse,
|
|
53
|
-
Run,
|
|
54
58
|
)
|
|
55
59
|
from flwr.proto.task_pb2 import TaskRes # pylint: disable=E0611
|
|
56
60
|
from flwr.server.superlink.ffs.ffs import Ffs
|
|
@@ -67,6 +71,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
67
71
|
) -> None:
|
|
68
72
|
self.state_factory = state_factory
|
|
69
73
|
self.ffs_factory = ffs_factory
|
|
74
|
+
self.lock = threading.RLock()
|
|
70
75
|
|
|
71
76
|
def GetNodes(
|
|
72
77
|
self, request: GetNodesRequest, context: grpc.ServicerContext
|
|
@@ -181,15 +186,7 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
181
186
|
if run is None:
|
|
182
187
|
return GetRunResponse()
|
|
183
188
|
|
|
184
|
-
return GetRunResponse(
|
|
185
|
-
run=Run(
|
|
186
|
-
run_id=run.run_id,
|
|
187
|
-
fab_id=run.fab_id,
|
|
188
|
-
fab_version=run.fab_version,
|
|
189
|
-
override_config=user_config_to_proto(run.override_config),
|
|
190
|
-
fab_hash=run.fab_hash,
|
|
191
|
-
)
|
|
192
|
-
)
|
|
189
|
+
return GetRunResponse(run=run_to_proto(run))
|
|
193
190
|
|
|
194
191
|
def GetFab(
|
|
195
192
|
self, request: GetFabRequest, context: grpc.ServicerContext
|
|
@@ -208,15 +205,60 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
208
205
|
self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
|
|
209
206
|
) -> PullServerAppInputsResponse:
|
|
210
207
|
"""Pull ServerApp process inputs."""
|
|
211
|
-
|
|
208
|
+
log(DEBUG, "DriverServicer.PullServerAppInputs")
|
|
209
|
+
# Init access to LinkState and Ffs
|
|
210
|
+
state = self.state_factory.state()
|
|
211
|
+
ffs = self.ffs_factory.ffs()
|
|
212
|
+
|
|
213
|
+
# Lock access to LinkState, preventing obtaining the same pending run_id
|
|
214
|
+
with self.lock:
|
|
215
|
+
# If run_id is provided, use it, otherwise use the pending run_id
|
|
216
|
+
if _has_field(request, "run_id"):
|
|
217
|
+
run_id: Optional[int] = request.run_id
|
|
218
|
+
else:
|
|
219
|
+
run_id = state.get_pending_run_id()
|
|
220
|
+
# If there's no pending run, return an empty response
|
|
221
|
+
if run_id is None:
|
|
222
|
+
return PullServerAppInputsResponse()
|
|
223
|
+
|
|
224
|
+
# Retrieve Context, Run and Fab for the run_id
|
|
225
|
+
serverapp_ctxt = state.get_serverapp_context(run_id)
|
|
226
|
+
run = state.get_run(run_id)
|
|
227
|
+
fab = None
|
|
228
|
+
if run and run.fab_hash:
|
|
229
|
+
if result := ffs.get(run.fab_hash):
|
|
230
|
+
fab = Fab(run.fab_hash, result[0])
|
|
231
|
+
if run and fab:
|
|
232
|
+
# Update run status to STARTING
|
|
233
|
+
if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
|
|
234
|
+
log(INFO, "Starting run %d", run_id)
|
|
235
|
+
return PullServerAppInputsResponse(
|
|
236
|
+
context=(
|
|
237
|
+
context_to_proto(serverapp_ctxt) if serverapp_ctxt else None
|
|
238
|
+
),
|
|
239
|
+
run=run_to_proto(run),
|
|
240
|
+
fab=fab_to_proto(fab),
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
# Raise an exception if the Run or Fab is not found,
|
|
244
|
+
# or if the status cannot be updated to STARTING
|
|
245
|
+
raise RuntimeError(f"Failed to start run {run_id}")
|
|
212
246
|
|
|
213
247
|
def PushServerAppOutputs(
|
|
214
248
|
self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
|
|
215
249
|
) -> PushServerAppOutputsResponse:
|
|
216
250
|
"""Push ServerApp process outputs."""
|
|
217
|
-
|
|
251
|
+
log(DEBUG, "DriverServicer.PushServerAppOutputs")
|
|
252
|
+
state = self.state_factory.state()
|
|
253
|
+
state.set_serverapp_context(request.run_id, context_from_proto(request.context))
|
|
254
|
+
return PushServerAppOutputsResponse()
|
|
218
255
|
|
|
219
256
|
|
|
220
257
|
def _raise_if(validation_error: bool, detail: str) -> None:
|
|
221
258
|
if validation_error:
|
|
222
259
|
raise ValueError(f"Malformed PushTaskInsRequest: {detail}")
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
def _has_field(message: GrpcMessage, field_name: str) -> bool:
|
|
263
|
+
"""Check if a certain field is set for the message, including scalar fields."""
|
|
264
|
+
return field_name in {fld.name for fld, _ in message.ListFields()}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Copyright 2024 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 ServerApp process."""
|
|
16
|
-
|
|
17
|
-
import argparse
|
|
18
|
-
from logging import DEBUG, INFO
|
|
19
|
-
from typing import Optional
|
|
20
|
-
|
|
21
|
-
from flwr.common.logger import log
|
|
22
|
-
from flwr.server.driver.grpc_driver import GrpcDriver
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def flwr_serverapp() -> None:
|
|
26
|
-
"""Run process-isolated Flower ServerApp."""
|
|
27
|
-
log(INFO, "Starting Flower ServerApp")
|
|
28
|
-
|
|
29
|
-
parser = argparse.ArgumentParser(
|
|
30
|
-
description="Run a Flower ServerApp",
|
|
31
|
-
)
|
|
32
|
-
parser.add_argument(
|
|
33
|
-
"--superlink",
|
|
34
|
-
type=str,
|
|
35
|
-
help="Address of SuperLink's DriverAPI",
|
|
36
|
-
)
|
|
37
|
-
parser.add_argument(
|
|
38
|
-
"--run-id",
|
|
39
|
-
type=int,
|
|
40
|
-
required=False,
|
|
41
|
-
help="Id of the Run this process should start. If not supplied, this "
|
|
42
|
-
"function will request a pending run to the LinkState.",
|
|
43
|
-
)
|
|
44
|
-
args = parser.parse_args()
|
|
45
|
-
|
|
46
|
-
log(
|
|
47
|
-
DEBUG,
|
|
48
|
-
"Staring isolated `ServerApp` connected to SuperLink DriverAPI at %s "
|
|
49
|
-
"for run-id %s",
|
|
50
|
-
args.superlink,
|
|
51
|
-
args.run_id,
|
|
52
|
-
)
|
|
53
|
-
run_serverapp(superlink=args.superlink, run_id=args.run_id)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def run_serverapp( # pylint: disable=R0914
|
|
57
|
-
superlink: str,
|
|
58
|
-
run_id: Optional[int] = None,
|
|
59
|
-
) -> None:
|
|
60
|
-
"""Run Flower ServerApp process.
|
|
61
|
-
|
|
62
|
-
Parameters
|
|
63
|
-
----------
|
|
64
|
-
superlink : str
|
|
65
|
-
Address of SuperLink
|
|
66
|
-
run_id : Optional[int] (default: None)
|
|
67
|
-
Unique identifier of a Run registered at the LinkState. If not supplied,
|
|
68
|
-
this function will request a pending run to the LinkState.
|
|
69
|
-
"""
|
|
70
|
-
_ = GrpcDriver(
|
|
71
|
-
run_id=run_id if run_id else 0,
|
|
72
|
-
driver_service_address=superlink,
|
|
73
|
-
root_certificates=None,
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
# Then, GetServerInputs
|
|
77
|
-
|
|
78
|
-
# Then, run ServerApp
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/build.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/config_utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/example.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/install.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/new/new.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
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/run/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/run/run.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/cli/utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/app.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/py/flwr/client/client.py
RENAMED
|
File without changes
|
{flwr_nightly-1.13.0.dev20241024 → flwr_nightly-1.13.0.dev20241028}/src/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
|