flwr-nightly 1.15.0.dev20250124__tar.gz → 1.15.0.dev20250125__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.dev20250124 → flwr_nightly-1.15.0.dev20250125}/PKG-INFO +1 -1
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/pyproject.toml +1 -1
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/app.py +18 -79
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +2 -25
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/linkstate.py +2 -16
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +3 -48
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/README.md +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/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.dev20250125"
|
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.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/server/app.py
RENAMED
@@ -31,12 +31,8 @@ from typing import Any, Optional
|
|
31
31
|
|
32
32
|
import grpc
|
33
33
|
import yaml
|
34
|
-
from cryptography.exceptions import UnsupportedAlgorithm
|
35
34
|
from cryptography.hazmat.primitives.asymmetric import ec
|
36
|
-
from cryptography.hazmat.primitives.serialization import
|
37
|
-
load_ssh_private_key,
|
38
|
-
load_ssh_public_key,
|
39
|
-
)
|
35
|
+
from cryptography.hazmat.primitives.serialization import load_ssh_public_key
|
40
36
|
|
41
37
|
from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, event
|
42
38
|
from flwr.common.address import parse_address
|
@@ -64,7 +60,6 @@ from flwr.common.exit_handlers import register_exit_handlers
|
|
64
60
|
from flwr.common.grpc import generic_create_grpc_server
|
65
61
|
from flwr.common.logger import log, warn_deprecated_feature
|
66
62
|
from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
67
|
-
private_key_to_bytes,
|
68
63
|
public_key_to_bytes,
|
69
64
|
)
|
70
65
|
from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
|
@@ -378,21 +373,12 @@ def run_superlink() -> None:
|
|
378
373
|
fleet_thread.start()
|
379
374
|
bckg_threads.append(fleet_thread)
|
380
375
|
elif args.fleet_api_type == TRANSPORT_TYPE_GRPC_RERE:
|
381
|
-
|
376
|
+
node_public_keys = _try_load_public_keys_node_authentication(args)
|
382
377
|
interceptors: Optional[Sequence[grpc.ServerInterceptor]] = None
|
383
|
-
if
|
384
|
-
(
|
385
|
-
node_public_keys,
|
386
|
-
server_private_key,
|
387
|
-
server_public_key,
|
388
|
-
) = maybe_keys
|
378
|
+
if node_public_keys is not None:
|
389
379
|
state = state_factory.state()
|
390
|
-
state.
|
380
|
+
state.clear_supernode_auth_keys()
|
391
381
|
state.store_node_public_keys(node_public_keys)
|
392
|
-
state.store_server_private_public_key(
|
393
|
-
private_key_to_bytes(server_private_key),
|
394
|
-
public_key_to_bytes(server_public_key),
|
395
|
-
)
|
396
382
|
log(
|
397
383
|
INFO,
|
398
384
|
"Node authentication enabled with %d known public keys",
|
@@ -541,34 +527,20 @@ def _format_address(address: str) -> tuple[str, str, int]:
|
|
541
527
|
return (f"[{host}]:{port}" if is_v6 else f"{host}:{port}", host, port)
|
542
528
|
|
543
529
|
|
544
|
-
def
|
530
|
+
def _try_load_public_keys_node_authentication(
|
545
531
|
args: argparse.Namespace,
|
546
|
-
|
547
|
-
|
548
|
-
if
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
if (
|
556
|
-
not args.auth_list_public_keys
|
557
|
-
or not args.auth_superlink_private_key
|
558
|
-
or not args.auth_superlink_public_key
|
559
|
-
):
|
560
|
-
sys.exit(
|
561
|
-
"Authentication requires providing file paths for "
|
562
|
-
"'--auth-list-public-keys', '--auth-superlink-private-key' and "
|
563
|
-
"'--auth-superlink-public-key'. Provide all three to enable authentication."
|
532
|
+
) -> Optional[set[bytes]]:
|
533
|
+
"""Return a set of node public keys."""
|
534
|
+
if args.auth_superlink_private_key or args.auth_superlink_public_key:
|
535
|
+
log(
|
536
|
+
WARN,
|
537
|
+
"The `--auth-superlink-private-key` and `--auth-superlink-public-key` "
|
538
|
+
"arguments are deprecated and will be removed in a future release. Node "
|
539
|
+
"authentication no longer requires these arguments.",
|
564
540
|
)
|
565
541
|
|
566
|
-
if
|
567
|
-
|
568
|
-
"Authentication requires secure connections. "
|
569
|
-
"Please provide certificate paths to `--ssl-certfile`, "
|
570
|
-
"`--ssl-keyfile`, and `—-ssl-ca-certfile` and try again."
|
571
|
-
)
|
542
|
+
if not args.auth_list_public_keys:
|
543
|
+
return None
|
572
544
|
|
573
545
|
node_keys_file_path = Path(args.auth_list_public_keys)
|
574
546
|
if not node_keys_file_path.exists():
|
@@ -581,35 +553,6 @@ def _try_setup_node_authentication(
|
|
581
553
|
|
582
554
|
node_public_keys: set[bytes] = set()
|
583
555
|
|
584
|
-
try:
|
585
|
-
ssh_private_key = load_ssh_private_key(
|
586
|
-
Path(args.auth_superlink_private_key).read_bytes(),
|
587
|
-
None,
|
588
|
-
)
|
589
|
-
if not isinstance(ssh_private_key, ec.EllipticCurvePrivateKey):
|
590
|
-
raise ValueError()
|
591
|
-
except (ValueError, UnsupportedAlgorithm):
|
592
|
-
sys.exit(
|
593
|
-
"Error: Unable to parse the private key file in "
|
594
|
-
"'--auth-superlink-private-key'. Authentication requires elliptic "
|
595
|
-
"curve private and public key pair. Please ensure that the file "
|
596
|
-
"path points to a valid private key file and try again."
|
597
|
-
)
|
598
|
-
|
599
|
-
try:
|
600
|
-
ssh_public_key = load_ssh_public_key(
|
601
|
-
Path(args.auth_superlink_public_key).read_bytes()
|
602
|
-
)
|
603
|
-
if not isinstance(ssh_public_key, ec.EllipticCurvePublicKey):
|
604
|
-
raise ValueError()
|
605
|
-
except (ValueError, UnsupportedAlgorithm):
|
606
|
-
sys.exit(
|
607
|
-
"Error: Unable to parse the public key file in "
|
608
|
-
"'--auth-superlink-public-key'. Authentication requires elliptic "
|
609
|
-
"curve private and public key pair. Please ensure that the file "
|
610
|
-
"path points to a valid public key file and try again."
|
611
|
-
)
|
612
|
-
|
613
556
|
with open(node_keys_file_path, newline="", encoding="utf-8") as csvfile:
|
614
557
|
reader = csv.reader(csvfile)
|
615
558
|
for row in reader:
|
@@ -623,11 +566,7 @@ def _try_setup_node_authentication(
|
|
623
566
|
"file. Please ensure that the CSV file path points to a valid "
|
624
567
|
"known SSH public keys files and try again."
|
625
568
|
)
|
626
|
-
|
627
|
-
node_public_keys,
|
628
|
-
ssh_private_key,
|
629
|
-
ssh_public_key,
|
630
|
-
)
|
569
|
+
return node_public_keys
|
631
570
|
|
632
571
|
|
633
572
|
def _try_obtain_exec_auth_plugin(
|
@@ -840,12 +779,12 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
|
|
840
779
|
parser.add_argument(
|
841
780
|
"--auth-superlink-private-key",
|
842
781
|
type=str,
|
843
|
-
help="
|
782
|
+
help="This argument is deprecated and will be removed in a future release.",
|
844
783
|
)
|
845
784
|
parser.add_argument(
|
846
785
|
"--auth-superlink-public-key",
|
847
786
|
type=str,
|
848
|
-
help="
|
787
|
+
help="This argument is deprecated and will be removed in a future release.",
|
849
788
|
)
|
850
789
|
|
851
790
|
|
@@ -74,8 +74,6 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
|
|
74
74
|
self.task_ins_id_to_task_res_id: dict[UUID, UUID] = {}
|
75
75
|
|
76
76
|
self.node_public_keys: set[bytes] = set()
|
77
|
-
self.server_public_key: Optional[bytes] = None
|
78
|
-
self.server_private_key: Optional[bytes] = None
|
79
77
|
|
80
78
|
self.lock = threading.RLock()
|
81
79
|
|
@@ -403,30 +401,9 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
|
|
403
401
|
log(ERROR, "Unexpected run creation failure.")
|
404
402
|
return 0
|
405
403
|
|
406
|
-
def
|
407
|
-
|
408
|
-
) -> None:
|
409
|
-
"""Store `server_private_key` and `server_public_key` in the link state."""
|
404
|
+
def clear_supernode_auth_keys(self) -> None:
|
405
|
+
"""Clear stored `node_public_keys` in the link state if any."""
|
410
406
|
with self.lock:
|
411
|
-
if self.server_private_key is None and self.server_public_key is None:
|
412
|
-
self.server_private_key = private_key
|
413
|
-
self.server_public_key = public_key
|
414
|
-
else:
|
415
|
-
raise RuntimeError("Server private and public key already set")
|
416
|
-
|
417
|
-
def get_server_private_key(self) -> Optional[bytes]:
|
418
|
-
"""Retrieve `server_private_key` in urlsafe bytes."""
|
419
|
-
return self.server_private_key
|
420
|
-
|
421
|
-
def get_server_public_key(self) -> Optional[bytes]:
|
422
|
-
"""Retrieve `server_public_key` in urlsafe bytes."""
|
423
|
-
return self.server_public_key
|
424
|
-
|
425
|
-
def clear_supernode_auth_keys_and_credentials(self) -> None:
|
426
|
-
"""Clear stored `node_public_keys` and credentials in the link state if any."""
|
427
|
-
with self.lock:
|
428
|
-
self.server_private_key = None
|
429
|
-
self.server_public_key = None
|
430
407
|
self.node_public_keys.clear()
|
431
408
|
|
432
409
|
def store_node_public_keys(self, public_keys: set[bytes]) -> None:
|
@@ -264,22 +264,8 @@ class LinkState(abc.ABC): # pylint: disable=R0904
|
|
264
264
|
"""
|
265
265
|
|
266
266
|
@abc.abstractmethod
|
267
|
-
def
|
268
|
-
|
269
|
-
) -> None:
|
270
|
-
"""Store `server_private_key` and `server_public_key` in the link state."""
|
271
|
-
|
272
|
-
@abc.abstractmethod
|
273
|
-
def get_server_private_key(self) -> Optional[bytes]:
|
274
|
-
"""Retrieve `server_private_key` in urlsafe bytes."""
|
275
|
-
|
276
|
-
@abc.abstractmethod
|
277
|
-
def get_server_public_key(self) -> Optional[bytes]:
|
278
|
-
"""Retrieve `server_public_key` in urlsafe bytes."""
|
279
|
-
|
280
|
-
@abc.abstractmethod
|
281
|
-
def clear_supernode_auth_keys_and_credentials(self) -> None:
|
282
|
-
"""Clear stored `node_public_keys` and credentials in the link state if any."""
|
267
|
+
def clear_supernode_auth_keys(self) -> None:
|
268
|
+
"""Clear stored `node_public_keys` in the link state if any."""
|
283
269
|
|
284
270
|
@abc.abstractmethod
|
285
271
|
def store_node_public_keys(self, public_keys: set[bytes]) -> None:
|
@@ -71,13 +71,6 @@ CREATE TABLE IF NOT EXISTS node(
|
|
71
71
|
);
|
72
72
|
"""
|
73
73
|
|
74
|
-
SQL_CREATE_TABLE_CREDENTIAL = """
|
75
|
-
CREATE TABLE IF NOT EXISTS credential(
|
76
|
-
private_key BLOB PRIMARY KEY,
|
77
|
-
public_key BLOB
|
78
|
-
);
|
79
|
-
"""
|
80
|
-
|
81
74
|
SQL_CREATE_TABLE_PUBLIC_KEY = """
|
82
75
|
CREATE TABLE IF NOT EXISTS public_key(
|
83
76
|
public_key BLOB PRIMARY KEY
|
@@ -208,7 +201,6 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
208
201
|
cur.execute(SQL_CREATE_TABLE_TASK_INS)
|
209
202
|
cur.execute(SQL_CREATE_TABLE_TASK_RES)
|
210
203
|
cur.execute(SQL_CREATE_TABLE_NODE)
|
211
|
-
cur.execute(SQL_CREATE_TABLE_CREDENTIAL)
|
212
204
|
cur.execute(SQL_CREATE_TABLE_PUBLIC_KEY)
|
213
205
|
cur.execute(SQL_CREATE_INDEX_ONLINE_UNTIL)
|
214
206
|
res = cur.execute("SELECT name FROM sqlite_schema;")
|
@@ -773,46 +765,9 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
773
765
|
log(ERROR, "Unexpected run creation failure.")
|
774
766
|
return 0
|
775
767
|
|
776
|
-
def
|
777
|
-
|
778
|
-
|
779
|
-
"""Store `server_private_key` and `server_public_key` in the link state."""
|
780
|
-
query = "SELECT COUNT(*) FROM credential"
|
781
|
-
count = self.query(query)[0]["COUNT(*)"]
|
782
|
-
if count < 1:
|
783
|
-
query = (
|
784
|
-
"INSERT OR REPLACE INTO credential (private_key, public_key) "
|
785
|
-
"VALUES (:private_key, :public_key)"
|
786
|
-
)
|
787
|
-
self.query(query, {"private_key": private_key, "public_key": public_key})
|
788
|
-
else:
|
789
|
-
raise RuntimeError("Server private and public key already set")
|
790
|
-
|
791
|
-
def get_server_private_key(self) -> Optional[bytes]:
|
792
|
-
"""Retrieve `server_private_key` in urlsafe bytes."""
|
793
|
-
query = "SELECT private_key FROM credential"
|
794
|
-
rows = self.query(query)
|
795
|
-
try:
|
796
|
-
private_key: Optional[bytes] = rows[0]["private_key"]
|
797
|
-
except IndexError:
|
798
|
-
private_key = None
|
799
|
-
return private_key
|
800
|
-
|
801
|
-
def get_server_public_key(self) -> Optional[bytes]:
|
802
|
-
"""Retrieve `server_public_key` in urlsafe bytes."""
|
803
|
-
query = "SELECT public_key FROM credential"
|
804
|
-
rows = self.query(query)
|
805
|
-
try:
|
806
|
-
public_key: Optional[bytes] = rows[0]["public_key"]
|
807
|
-
except IndexError:
|
808
|
-
public_key = None
|
809
|
-
return public_key
|
810
|
-
|
811
|
-
def clear_supernode_auth_keys_and_credentials(self) -> None:
|
812
|
-
"""Clear stored `node_public_keys` and credentials in the link state if any."""
|
813
|
-
queries = ["DELETE FROM public_key;", "DELETE FROM credential;"]
|
814
|
-
for query in queries:
|
815
|
-
self.query(query)
|
768
|
+
def clear_supernode_auth_keys(self) -> None:
|
769
|
+
"""Clear stored `node_public_keys` in the link state if any."""
|
770
|
+
self.query("DELETE FROM public_key;")
|
816
771
|
|
817
772
|
def store_node_public_keys(self, public_keys: set[bytes]) -> None:
|
818
773
|
"""Store a set of `node_public_keys` in the link state."""
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/__init__.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/build.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/config_utils.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/constant.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/example.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/install.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/login/login.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/new/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/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.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/run/run.py
RENAMED
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/cli/utils.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/__init__.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/app.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/client.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/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.dev20250124 → flwr_nightly-1.15.0.dev20250125}/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
|
File without changes
|
File without changes
|
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/mod/utils.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
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/client/typing.py
RENAMED
File without changes
|
{flwr_nightly-1.15.0.dev20250124 → flwr_nightly-1.15.0.dev20250125}/src/py/flwr/common/__init__.py
RENAMED
File without changes
|