flwr-nightly 1.15.0.dev20250122__tar.gz → 1.15.0.dev20250123__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.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/PKG-INFO +1 -1
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/pyproject.toml +1 -1
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/config_utils.py +15 -2
- flwr_nightly-1.15.0.dev20250123/src/py/flwr/cli/constant.py +27 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/log.py +17 -2
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/login/login.py +9 -1
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/ls.py +10 -2
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/run/run.py +20 -10
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/stop.py +9 -1
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/config.py +21 -10
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/README.md +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/nodestate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/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.15.0.
|
7
|
+
version = "1.15.0.dev20250123"
|
8
8
|
description = "Flower: A Friendly Federated AI Framework"
|
9
9
|
license = "Apache-2.0"
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/config_utils.py
RENAMED
@@ -21,7 +21,13 @@ from typing import Any, Optional, Union
|
|
21
21
|
import tomli
|
22
22
|
import typer
|
23
23
|
|
24
|
-
from flwr.common.config import
|
24
|
+
from flwr.common.config import (
|
25
|
+
fuse_dicts,
|
26
|
+
get_fab_config,
|
27
|
+
get_metadata_from_config,
|
28
|
+
parse_config_args,
|
29
|
+
validate_config,
|
30
|
+
)
|
25
31
|
|
26
32
|
|
27
33
|
def get_fab_metadata(fab_file: Union[Path, bytes]) -> tuple[str, str]:
|
@@ -127,7 +133,9 @@ def process_loaded_project_config(
|
|
127
133
|
|
128
134
|
|
129
135
|
def validate_federation_in_project_config(
|
130
|
-
federation: Optional[str],
|
136
|
+
federation: Optional[str],
|
137
|
+
config: dict[str, Any],
|
138
|
+
overrides: Optional[list[str]] = None,
|
131
139
|
) -> tuple[str, dict[str, Any]]:
|
132
140
|
"""Validate the federation name in the Flower project configuration."""
|
133
141
|
federation = federation or config["tool"]["flwr"]["federations"].get("default")
|
@@ -157,6 +165,11 @@ def validate_federation_in_project_config(
|
|
157
165
|
)
|
158
166
|
raise typer.Exit(code=1)
|
159
167
|
|
168
|
+
# Override the federation configuration if provided
|
169
|
+
if overrides:
|
170
|
+
overrides_dict = parse_config_args(overrides, flatten=False)
|
171
|
+
federation_config = fuse_dicts(federation_config, overrides_dict)
|
172
|
+
|
160
173
|
return federation, federation_config
|
161
174
|
|
162
175
|
|
@@ -0,0 +1,27 @@
|
|
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
|
+
"""Constants for CLI commands."""
|
16
|
+
|
17
|
+
|
18
|
+
# The help message for `--federation-config` option
|
19
|
+
FEDERATION_CONFIG_HELP_MESSAGE = (
|
20
|
+
"Override federation configuration values in the format:\n\n"
|
21
|
+
"`--federation-config 'key1=value1 key2=value2' --federation-config "
|
22
|
+
"'key3=value3'`\n\nValues can be of any type supported in TOML, such as "
|
23
|
+
"bool, int, float, or string. Ensure that the keys (`key1`, `key2`, `key3` "
|
24
|
+
"in this example) exist in the federation configuration under the "
|
25
|
+
"`[tool.flwr.federations.<YOUR_FEDERATION>]` table of the `pyproject.toml` "
|
26
|
+
"for proper overriding."
|
27
|
+
)
|
@@ -29,6 +29,7 @@ from flwr.cli.config_utils import (
|
|
29
29
|
process_loaded_project_config,
|
30
30
|
validate_federation_in_project_config,
|
31
31
|
)
|
32
|
+
from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
32
33
|
from flwr.common.constant import CONN_RECONNECT_INTERVAL, CONN_REFRESH_PERIOD
|
33
34
|
from flwr.common.logger import log as logger
|
34
35
|
from flwr.proto.exec_pb2 import StreamLogsRequest # pylint: disable=E0611
|
@@ -57,6 +58,8 @@ def start_stream(
|
|
57
58
|
logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
|
58
59
|
if e.code() == grpc.StatusCode.CANCELLED:
|
59
60
|
pass
|
61
|
+
else:
|
62
|
+
raise e
|
60
63
|
finally:
|
61
64
|
channel.close()
|
62
65
|
|
@@ -123,6 +126,7 @@ def print_logs(run_id: int, channel: grpc.Channel, timeout: int) -> None:
|
|
123
126
|
break
|
124
127
|
if e.code() == grpc.StatusCode.CANCELLED:
|
125
128
|
break
|
129
|
+
raise e
|
126
130
|
except KeyboardInterrupt:
|
127
131
|
logger(DEBUG, "Stream interrupted by user")
|
128
132
|
finally:
|
@@ -143,6 +147,13 @@ def log(
|
|
143
147
|
Optional[str],
|
144
148
|
typer.Argument(help="Name of the federation to run the app on"),
|
145
149
|
] = None,
|
150
|
+
federation_config_overrides: Annotated[
|
151
|
+
Optional[list[str]],
|
152
|
+
typer.Option(
|
153
|
+
"--federation-config",
|
154
|
+
help=FEDERATION_CONFIG_HELP_MESSAGE,
|
155
|
+
),
|
156
|
+
] = None,
|
146
157
|
stream: Annotated[
|
147
158
|
bool,
|
148
159
|
typer.Option(
|
@@ -158,11 +169,15 @@ def log(
|
|
158
169
|
config, errors, warnings = load_and_validate(path=pyproject_path)
|
159
170
|
config = process_loaded_project_config(config, errors, warnings)
|
160
171
|
federation, federation_config = validate_federation_in_project_config(
|
161
|
-
federation, config
|
172
|
+
federation, config, federation_config_overrides
|
162
173
|
)
|
163
174
|
exit_if_no_address(federation_config, "log")
|
164
175
|
|
165
|
-
|
176
|
+
try:
|
177
|
+
_log_with_exec_api(app, federation, federation_config, run_id, stream)
|
178
|
+
except Exception as err: # pylint: disable=broad-except
|
179
|
+
typer.secho(str(err), fg=typer.colors.RED, bold=True)
|
180
|
+
raise typer.Exit(code=1) from None
|
166
181
|
|
167
182
|
|
168
183
|
def _log_with_exec_api(
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/login/login.py
RENAMED
@@ -26,6 +26,7 @@ from flwr.cli.config_utils import (
|
|
26
26
|
process_loaded_project_config,
|
27
27
|
validate_federation_in_project_config,
|
28
28
|
)
|
29
|
+
from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
29
30
|
from flwr.common.typing import UserAuthLoginDetails
|
30
31
|
from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
|
31
32
|
GetLoginDetailsRequest,
|
@@ -45,6 +46,13 @@ def login( # pylint: disable=R0914
|
|
45
46
|
Optional[str],
|
46
47
|
typer.Argument(help="Name of the federation to login into."),
|
47
48
|
] = None,
|
49
|
+
federation_config_overrides: Annotated[
|
50
|
+
Optional[list[str]],
|
51
|
+
typer.Option(
|
52
|
+
"--federation-config",
|
53
|
+
help=FEDERATION_CONFIG_HELP_MESSAGE,
|
54
|
+
),
|
55
|
+
] = None,
|
48
56
|
) -> None:
|
49
57
|
"""Login to Flower SuperLink."""
|
50
58
|
typer.secho("Loading project configuration... ", fg=typer.colors.BLUE)
|
@@ -54,7 +62,7 @@ def login( # pylint: disable=R0914
|
|
54
62
|
|
55
63
|
config = process_loaded_project_config(config, errors, warnings)
|
56
64
|
federation, federation_config = validate_federation_in_project_config(
|
57
|
-
federation, config
|
65
|
+
federation, config, federation_config_overrides
|
58
66
|
)
|
59
67
|
exit_if_no_address(federation_config, "login")
|
60
68
|
channel = init_channel(app, federation_config, None)
|
@@ -32,6 +32,7 @@ from flwr.cli.config_utils import (
|
|
32
32
|
process_loaded_project_config,
|
33
33
|
validate_federation_in_project_config,
|
34
34
|
)
|
35
|
+
from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
35
36
|
from flwr.common.constant import FAB_CONFIG_FILE, CliOutputFormat, SubStatus
|
36
37
|
from flwr.common.date import format_timedelta, isoformat8601_utc
|
37
38
|
from flwr.common.logger import print_json_error, redirect_output, restore_output
|
@@ -48,7 +49,7 @@ from .utils import init_channel, try_obtain_cli_auth_plugin, unauthenticated_exc
|
|
48
49
|
_RunListType = tuple[int, str, str, str, str, str, str, str, str]
|
49
50
|
|
50
51
|
|
51
|
-
def ls( # pylint: disable=too-many-locals, too-many-branches
|
52
|
+
def ls( # pylint: disable=too-many-locals, too-many-branches, R0913, R0917
|
52
53
|
app: Annotated[
|
53
54
|
Path,
|
54
55
|
typer.Argument(help="Path of the Flower project"),
|
@@ -57,6 +58,13 @@ def ls( # pylint: disable=too-many-locals, too-many-branches
|
|
57
58
|
Optional[str],
|
58
59
|
typer.Argument(help="Name of the federation"),
|
59
60
|
] = None,
|
61
|
+
federation_config_overrides: Annotated[
|
62
|
+
Optional[list[str]],
|
63
|
+
typer.Option(
|
64
|
+
"--federation-config",
|
65
|
+
help=FEDERATION_CONFIG_HELP_MESSAGE,
|
66
|
+
),
|
67
|
+
] = None,
|
60
68
|
runs: Annotated[
|
61
69
|
bool,
|
62
70
|
typer.Option(
|
@@ -106,7 +114,7 @@ def ls( # pylint: disable=too-many-locals, too-many-branches
|
|
106
114
|
config, errors, warnings = load_and_validate(path=pyproject_path)
|
107
115
|
config = process_loaded_project_config(config, errors, warnings)
|
108
116
|
federation, federation_config = validate_federation_in_project_config(
|
109
|
-
federation, config
|
117
|
+
federation, config, federation_config_overrides
|
110
118
|
)
|
111
119
|
exit_if_no_address(federation_config, "ls")
|
112
120
|
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/run/run.py
RENAMED
@@ -31,6 +31,7 @@ from flwr.cli.config_utils import (
|
|
31
31
|
process_loaded_project_config,
|
32
32
|
validate_federation_in_project_config,
|
33
33
|
)
|
34
|
+
from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
34
35
|
from flwr.common.config import (
|
35
36
|
flatten_dict,
|
36
37
|
parse_config_args,
|
@@ -57,7 +58,7 @@ from ..utils import (
|
|
57
58
|
CONN_REFRESH_PERIOD = 60 # Connection refresh period for log streaming (seconds)
|
58
59
|
|
59
60
|
|
60
|
-
# pylint: disable-next=too-many-locals
|
61
|
+
# pylint: disable-next=too-many-locals, R0913, R0917
|
61
62
|
def run(
|
62
63
|
app: Annotated[
|
63
64
|
Path,
|
@@ -67,16 +68,23 @@ def run(
|
|
67
68
|
Optional[str],
|
68
69
|
typer.Argument(help="Name of the federation to run the app on."),
|
69
70
|
] = None,
|
70
|
-
|
71
|
+
run_config_overrides: Annotated[
|
71
72
|
Optional[list[str]],
|
72
73
|
typer.Option(
|
73
74
|
"--run-config",
|
74
75
|
"-c",
|
75
|
-
help="Override configuration
|
76
|
-
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
76
|
+
help="Override run configuration values in the format:\n\n"
|
77
|
+
"`--run-config 'key1=value1 key2=value2' --run-config 'key3=value3'`\n\n"
|
78
|
+
"Values can be of any type supported in TOML, such as bool, int, "
|
79
|
+
"float, or string. Ensure that the keys (`key1`, `key2`, `key3` "
|
80
|
+
"in this example) exist in `pyproject.toml` for proper overriding.",
|
81
|
+
),
|
82
|
+
] = None,
|
83
|
+
federation_config_overrides: Annotated[
|
84
|
+
Optional[list[str]],
|
85
|
+
typer.Option(
|
86
|
+
"--federation-config",
|
87
|
+
help=FEDERATION_CONFIG_HELP_MESSAGE,
|
80
88
|
),
|
81
89
|
] = None,
|
82
90
|
stream: Annotated[
|
@@ -108,7 +116,7 @@ def run(
|
|
108
116
|
config, errors, warnings = load_and_validate(path=pyproject_path)
|
109
117
|
config = process_loaded_project_config(config, errors, warnings)
|
110
118
|
federation, federation_config = validate_federation_in_project_config(
|
111
|
-
federation, config
|
119
|
+
federation, config, federation_config_overrides
|
112
120
|
)
|
113
121
|
|
114
122
|
if "address" in federation_config:
|
@@ -116,12 +124,14 @@ def run(
|
|
116
124
|
app,
|
117
125
|
federation,
|
118
126
|
federation_config,
|
119
|
-
|
127
|
+
run_config_overrides,
|
120
128
|
stream,
|
121
129
|
output_format,
|
122
130
|
)
|
123
131
|
else:
|
124
|
-
_run_without_exec_api(
|
132
|
+
_run_without_exec_api(
|
133
|
+
app, federation_config, run_config_overrides, federation
|
134
|
+
)
|
125
135
|
except (typer.Exit, Exception) as err: # pylint: disable=broad-except
|
126
136
|
if suppress_output:
|
127
137
|
restore_output()
|
@@ -29,6 +29,7 @@ from flwr.cli.config_utils import (
|
|
29
29
|
process_loaded_project_config,
|
30
30
|
validate_federation_in_project_config,
|
31
31
|
)
|
32
|
+
from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
32
33
|
from flwr.common.constant import FAB_CONFIG_FILE, CliOutputFormat
|
33
34
|
from flwr.common.logger import print_json_error, redirect_output, restore_output
|
34
35
|
from flwr.proto.exec_pb2 import StopRunRequest, StopRunResponse # pylint: disable=E0611
|
@@ -50,6 +51,13 @@ def stop( # pylint: disable=R0914
|
|
50
51
|
Optional[str],
|
51
52
|
typer.Argument(help="Name of the federation"),
|
52
53
|
] = None,
|
54
|
+
federation_config_overrides: Annotated[
|
55
|
+
Optional[list[str]],
|
56
|
+
typer.Option(
|
57
|
+
"--federation-config",
|
58
|
+
help=FEDERATION_CONFIG_HELP_MESSAGE,
|
59
|
+
),
|
60
|
+
] = None,
|
53
61
|
output_format: Annotated[
|
54
62
|
str,
|
55
63
|
typer.Option(
|
@@ -73,7 +81,7 @@ def stop( # pylint: disable=R0914
|
|
73
81
|
config, errors, warnings = load_and_validate(path=pyproject_path)
|
74
82
|
config = process_loaded_project_config(config, errors, warnings)
|
75
83
|
federation, federation_config = validate_federation_in_project_config(
|
76
|
-
federation, config
|
84
|
+
federation, config, federation_config_overrides
|
77
85
|
)
|
78
86
|
exit_if_no_address(federation_config, "stop")
|
79
87
|
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/common/config.py
RENAMED
@@ -20,7 +20,7 @@ import re
|
|
20
20
|
import zipfile
|
21
21
|
from io import BytesIO
|
22
22
|
from pathlib import Path
|
23
|
-
from typing import IO, Any, Optional, Union, cast, get_args
|
23
|
+
from typing import IO, Any, Optional, TypeVar, Union, cast, get_args
|
24
24
|
|
25
25
|
import tomli
|
26
26
|
|
@@ -35,6 +35,8 @@ from flwr.common.typing import Run, UserConfig, UserConfigValue
|
|
35
35
|
|
36
36
|
from . import ConfigsRecord, object_ref
|
37
37
|
|
38
|
+
T_dict = TypeVar("T_dict", bound=dict[str, Any]) # pylint: disable=invalid-name
|
39
|
+
|
38
40
|
|
39
41
|
def get_flwr_dir(provided_path: Optional[str] = None) -> Path:
|
40
42
|
"""Return the Flower home directory based on env variables."""
|
@@ -93,19 +95,28 @@ def get_project_config(project_dir: Union[str, Path]) -> dict[str, Any]:
|
|
93
95
|
|
94
96
|
|
95
97
|
def fuse_dicts(
|
96
|
-
main_dict:
|
97
|
-
override_dict:
|
98
|
-
|
98
|
+
main_dict: T_dict,
|
99
|
+
override_dict: T_dict,
|
100
|
+
check_keys: bool = True,
|
101
|
+
) -> T_dict:
|
99
102
|
"""Merge a config with the overrides.
|
100
103
|
|
101
|
-
|
102
|
-
|
104
|
+
If `check_keys` is set to True, an error will be raised if the override
|
105
|
+
dictionary contains keys that are not present in the main dictionary.
|
106
|
+
Otherwise, only the keys present in the main dictionary will be updated.
|
103
107
|
"""
|
104
|
-
|
108
|
+
if not isinstance(main_dict, dict) or not isinstance(override_dict, dict):
|
109
|
+
raise ValueError("Both dictionaries must be of type dict")
|
110
|
+
|
111
|
+
fused_dict = cast(T_dict, main_dict.copy())
|
105
112
|
|
106
113
|
for key, value in override_dict.items():
|
107
114
|
if key in main_dict:
|
115
|
+
if isinstance(value, dict):
|
116
|
+
fused_dict[key] = fuse_dicts(main_dict[key], value)
|
108
117
|
fused_dict[key] = value
|
118
|
+
elif check_keys:
|
119
|
+
raise ValueError(f"Key '{key}' is not present in the main dictionary")
|
109
120
|
|
110
121
|
return fused_dict
|
111
122
|
|
@@ -194,8 +205,8 @@ def unflatten_dict(flat_dict: dict[str, Any]) -> dict[str, Any]:
|
|
194
205
|
|
195
206
|
|
196
207
|
def parse_config_args(
|
197
|
-
config: Optional[list[str]],
|
198
|
-
) ->
|
208
|
+
config: Optional[list[str]], flatten: bool = True
|
209
|
+
) -> dict[str, Any]:
|
199
210
|
"""Parse separator separated list of key-value pairs separated by '='."""
|
200
211
|
overrides: UserConfig = {}
|
201
212
|
|
@@ -223,7 +234,7 @@ def parse_config_args(
|
|
223
234
|
matches = pattern.findall(config_line)
|
224
235
|
toml_str = "\n".join(f"{k} = {v}" for k, v in matches)
|
225
236
|
overrides.update(tomli.loads(toml_str))
|
226
|
-
flat_overrides = flatten_dict(overrides)
|
237
|
+
flat_overrides = flatten_dict(overrides) if flatten else overrides
|
227
238
|
|
228
239
|
return flat_overrides
|
229
240
|
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/__init__.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/build.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/example.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/install.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/new/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/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
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/run/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/cli/utils.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/app.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/client.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/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
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250122 → flwr_nightly-1.15.0.dev20250123}/src/py/flwr/client/heartbeat.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
|