flwr-nightly 1.11.0.dev20240823__tar.gz → 1.11.0.dev20240824__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/PKG-INFO +2 -2
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/README.md +1 -1
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/pyproject.toml +1 -1
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/app.py +13 -13
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/run_serverapp.py +15 -1
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +19 -8
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +11 -11
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/in_memory_state.py +15 -15
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/sqlite_state.py +10 -10
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/state.py +8 -8
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/LICENSE +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/config.yaml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/flwr_tune/static_config.yaml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/node_state.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/node_state_tests.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/common_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/common_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/superlink/state/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/superexec/simulation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.11.0.
|
|
3
|
+
Version: 1.11.0.dev20240824
|
|
4
4
|
Summary: Flower: A Friendly Federated Learning Framework
|
|
5
5
|
Home-page: https://flower.ai
|
|
6
6
|
License: Apache-2.0
|
|
@@ -196,7 +196,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
196
196
|
- [Vertical FL](https://github.com/adap/flower/tree/main/examples/vertical-fl)
|
|
197
197
|
- [Federated Finetuning of OpenAI's Whisper](https://github.com/adap/flower/tree/main/examples/whisper-federated-finetuning)
|
|
198
198
|
- [Federated Finetuning of Large Language Model](https://github.com/adap/flower/tree/main/examples/llm-flowertune)
|
|
199
|
-
- [Federated Finetuning of a Vision Transformer](https://github.com/adap/flower/tree/main/examples/vit
|
|
199
|
+
- [Federated Finetuning of a Vision Transformer](https://github.com/adap/flower/tree/main/examples/flowertune-vit)
|
|
200
200
|
- [Advanced Flower with TensorFlow/Keras](https://github.com/adap/flower/tree/main/examples/advanced-tensorflow)
|
|
201
201
|
- [Advanced Flower with PyTorch](https://github.com/adap/flower/tree/main/examples/advanced-pytorch)
|
|
202
202
|
- Single-Machine Simulation of Federated Learning Systems ([PyTorch](https://github.com/adap/flower/tree/main/examples/simulation-pytorch)) ([Tensorflow](https://github.com/adap/flower/tree/main/examples/simulation-tensorflow))
|
|
@@ -144,7 +144,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
144
144
|
- [Vertical FL](https://github.com/adap/flower/tree/main/examples/vertical-fl)
|
|
145
145
|
- [Federated Finetuning of OpenAI's Whisper](https://github.com/adap/flower/tree/main/examples/whisper-federated-finetuning)
|
|
146
146
|
- [Federated Finetuning of Large Language Model](https://github.com/adap/flower/tree/main/examples/llm-flowertune)
|
|
147
|
-
- [Federated Finetuning of a Vision Transformer](https://github.com/adap/flower/tree/main/examples/vit
|
|
147
|
+
- [Federated Finetuning of a Vision Transformer](https://github.com/adap/flower/tree/main/examples/flowertune-vit)
|
|
148
148
|
- [Advanced Flower with TensorFlow/Keras](https://github.com/adap/flower/tree/main/examples/advanced-tensorflow)
|
|
149
149
|
- [Advanced Flower with PyTorch](https://github.com/adap/flower/tree/main/examples/advanced-pytorch)
|
|
150
150
|
- Single-Machine Simulation of Federated Learning Systems ([PyTorch](https://github.com/adap/flower/tree/main/examples/simulation-pytorch)) ([Tensorflow](https://github.com/adap/flower/tree/main/examples/simulation-tensorflow))
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.11.0.
|
|
7
|
+
version = "1.11.0.dev20240824"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/server/app.py
RENAMED
|
@@ -278,24 +278,24 @@ def run_superlink() -> None:
|
|
|
278
278
|
fleet_thread.start()
|
|
279
279
|
bckg_threads.append(fleet_thread)
|
|
280
280
|
elif args.fleet_api_type == TRANSPORT_TYPE_GRPC_RERE:
|
|
281
|
-
maybe_keys =
|
|
281
|
+
maybe_keys = _try_setup_node_authentication(args, certificates)
|
|
282
282
|
interceptors: Optional[Sequence[grpc.ServerInterceptor]] = None
|
|
283
283
|
if maybe_keys is not None:
|
|
284
284
|
(
|
|
285
|
-
|
|
285
|
+
node_public_keys,
|
|
286
286
|
server_private_key,
|
|
287
287
|
server_public_key,
|
|
288
288
|
) = maybe_keys
|
|
289
289
|
state = state_factory.state()
|
|
290
|
-
state.
|
|
290
|
+
state.store_node_public_keys(node_public_keys)
|
|
291
291
|
state.store_server_private_public_key(
|
|
292
292
|
private_key_to_bytes(server_private_key),
|
|
293
293
|
public_key_to_bytes(server_public_key),
|
|
294
294
|
)
|
|
295
295
|
log(
|
|
296
296
|
INFO,
|
|
297
|
-
"
|
|
298
|
-
len(
|
|
297
|
+
"Node authentication enabled with %d known public keys",
|
|
298
|
+
len(node_public_keys),
|
|
299
299
|
)
|
|
300
300
|
interceptors = [AuthenticateServerInterceptor(state)]
|
|
301
301
|
|
|
@@ -344,7 +344,7 @@ def _format_address(address: str) -> Tuple[str, str, int]:
|
|
|
344
344
|
return (f"[{host}]:{port}" if is_v6 else f"{host}:{port}", host, port)
|
|
345
345
|
|
|
346
346
|
|
|
347
|
-
def
|
|
347
|
+
def _try_setup_node_authentication(
|
|
348
348
|
args: argparse.Namespace,
|
|
349
349
|
certificates: Optional[Tuple[bytes, bytes, bytes]],
|
|
350
350
|
) -> Optional[Tuple[Set[bytes], ec.EllipticCurvePrivateKey, ec.EllipticCurvePublicKey]]:
|
|
@@ -373,16 +373,16 @@ def _try_setup_client_authentication(
|
|
|
373
373
|
"`--ssl-keyfile`, and `—-ssl-ca-certfile` and try again."
|
|
374
374
|
)
|
|
375
375
|
|
|
376
|
-
|
|
377
|
-
if not
|
|
376
|
+
node_keys_file_path = Path(args.auth_list_public_keys)
|
|
377
|
+
if not node_keys_file_path.exists():
|
|
378
378
|
sys.exit(
|
|
379
379
|
"The provided path to the known public keys CSV file does not exist: "
|
|
380
|
-
f"{
|
|
380
|
+
f"{node_keys_file_path}. "
|
|
381
381
|
"Please provide the CSV file path containing known public keys "
|
|
382
382
|
"to '--auth-list-public-keys'."
|
|
383
383
|
)
|
|
384
384
|
|
|
385
|
-
|
|
385
|
+
node_public_keys: Set[bytes] = set()
|
|
386
386
|
|
|
387
387
|
try:
|
|
388
388
|
ssh_private_key = load_ssh_private_key(
|
|
@@ -413,13 +413,13 @@ def _try_setup_client_authentication(
|
|
|
413
413
|
"path points to a valid public key file and try again."
|
|
414
414
|
)
|
|
415
415
|
|
|
416
|
-
with open(
|
|
416
|
+
with open(node_keys_file_path, newline="", encoding="utf-8") as csvfile:
|
|
417
417
|
reader = csv.reader(csvfile)
|
|
418
418
|
for row in reader:
|
|
419
419
|
for element in row:
|
|
420
420
|
public_key = load_ssh_public_key(element.encode())
|
|
421
421
|
if isinstance(public_key, ec.EllipticCurvePublicKey):
|
|
422
|
-
|
|
422
|
+
node_public_keys.add(public_key_to_bytes(public_key))
|
|
423
423
|
else:
|
|
424
424
|
sys.exit(
|
|
425
425
|
"Error: Unable to parse the public keys in the CSV "
|
|
@@ -427,7 +427,7 @@ def _try_setup_client_authentication(
|
|
|
427
427
|
"known SSH public keys files and try again."
|
|
428
428
|
)
|
|
429
429
|
return (
|
|
430
|
-
|
|
430
|
+
node_public_keys,
|
|
431
431
|
ssh_private_key,
|
|
432
432
|
ssh_public_key,
|
|
433
433
|
)
|
|
@@ -97,6 +97,21 @@ def run_server_app() -> None:
|
|
|
97
97
|
|
|
98
98
|
args = _parse_args_run_server_app().parse_args()
|
|
99
99
|
|
|
100
|
+
# Check if the server app reference is passed.
|
|
101
|
+
# Since Flower 1.11, passing a reference is not allowed.
|
|
102
|
+
app_path: Optional[str] = args.app
|
|
103
|
+
# If the provided app_path doesn't exist, and contains a ":",
|
|
104
|
+
# it is likely to be a server app reference instead of a path.
|
|
105
|
+
if app_path is not None and not Path(app_path).exists() and ":" in app_path:
|
|
106
|
+
sys.exit(
|
|
107
|
+
"It appears you've passed a reference like `server:app`.\n\n"
|
|
108
|
+
"Note that since version `1.11.0`, `flower-server-app` no longer supports "
|
|
109
|
+
"passing a reference to a `ServerApp` attribute. Instead, you need to pass "
|
|
110
|
+
"the path to Flower app via the argument `--app`. This is the path to a "
|
|
111
|
+
"directory containing a `pyproject.toml`. You can create a valid Flower "
|
|
112
|
+
"app by executing `flwr new` and following the prompt."
|
|
113
|
+
)
|
|
114
|
+
|
|
100
115
|
if args.server != ADDRESS_DRIVER_API:
|
|
101
116
|
warn = "Passing flag --server is deprecated. Use --superlink instead."
|
|
102
117
|
warn_deprecated_feature(warn)
|
|
@@ -151,7 +166,6 @@ def run_server_app() -> None:
|
|
|
151
166
|
cert_path,
|
|
152
167
|
)
|
|
153
168
|
|
|
154
|
-
app_path: Optional[str] = args.app
|
|
155
169
|
if not (app_path is None) ^ (args.run_id is None):
|
|
156
170
|
raise sys.exit(
|
|
157
171
|
"Please provide either a Flower App path or a Run ID, but not both. "
|
|
@@ -51,19 +51,22 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
51
51
|
self, request: CreateNodeRequest, context: grpc.ServicerContext
|
|
52
52
|
) -> CreateNodeResponse:
|
|
53
53
|
"""."""
|
|
54
|
-
log(INFO, "
|
|
54
|
+
log(INFO, "[Fleet.CreateNode] Request ping_interval=%s", request.ping_interval)
|
|
55
|
+
log(DEBUG, "[Fleet.CreateNode] Request: %s", request)
|
|
55
56
|
response = message_handler.create_node(
|
|
56
57
|
request=request,
|
|
57
58
|
state=self.state_factory.state(),
|
|
58
59
|
)
|
|
59
|
-
log(INFO, "
|
|
60
|
+
log(INFO, "[Fleet.CreateNode] Created node_id=%s", response.node.node_id)
|
|
61
|
+
log(DEBUG, "[Fleet.CreateNode] Response: %s", response)
|
|
60
62
|
return response
|
|
61
63
|
|
|
62
64
|
def DeleteNode(
|
|
63
65
|
self, request: DeleteNodeRequest, context: grpc.ServicerContext
|
|
64
66
|
) -> DeleteNodeResponse:
|
|
65
67
|
"""."""
|
|
66
|
-
log(INFO, "
|
|
68
|
+
log(INFO, "[Fleet.DeleteNode] Delete node_id=%s", request.node.node_id)
|
|
69
|
+
log(DEBUG, "[Fleet.DeleteNode] Request: %s", request)
|
|
67
70
|
return message_handler.delete_node(
|
|
68
71
|
request=request,
|
|
69
72
|
state=self.state_factory.state(),
|
|
@@ -71,7 +74,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
71
74
|
|
|
72
75
|
def Ping(self, request: PingRequest, context: grpc.ServicerContext) -> PingResponse:
|
|
73
76
|
"""."""
|
|
74
|
-
log(DEBUG, "
|
|
77
|
+
log(DEBUG, "[Fleet.Ping] Request: %s", request)
|
|
75
78
|
return message_handler.ping(
|
|
76
79
|
request=request,
|
|
77
80
|
state=self.state_factory.state(),
|
|
@@ -81,7 +84,8 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
81
84
|
self, request: PullTaskInsRequest, context: grpc.ServicerContext
|
|
82
85
|
) -> PullTaskInsResponse:
|
|
83
86
|
"""Pull TaskIns."""
|
|
84
|
-
log(INFO, "
|
|
87
|
+
log(INFO, "[Fleet.PullTaskIns] node_id=%s", request.node.node_id)
|
|
88
|
+
log(DEBUG, "[Fleet.PullTaskIns] Request: %s", request)
|
|
85
89
|
return message_handler.pull_task_ins(
|
|
86
90
|
request=request,
|
|
87
91
|
state=self.state_factory.state(),
|
|
@@ -91,7 +95,14 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
91
95
|
self, request: PushTaskResRequest, context: grpc.ServicerContext
|
|
92
96
|
) -> PushTaskResResponse:
|
|
93
97
|
"""Push TaskRes."""
|
|
94
|
-
|
|
98
|
+
if request.task_res_list:
|
|
99
|
+
log(
|
|
100
|
+
INFO,
|
|
101
|
+
"[Fleet.PushTaskRes] Push results from node_id=%s",
|
|
102
|
+
request.task_res_list[0].task.producer.node_id,
|
|
103
|
+
)
|
|
104
|
+
else:
|
|
105
|
+
log(INFO, "[Fleet.PushTaskRes] No task results to push")
|
|
95
106
|
return message_handler.push_task_res(
|
|
96
107
|
request=request,
|
|
97
108
|
state=self.state_factory.state(),
|
|
@@ -101,7 +112,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
101
112
|
self, request: GetRunRequest, context: grpc.ServicerContext
|
|
102
113
|
) -> GetRunResponse:
|
|
103
114
|
"""Get run information."""
|
|
104
|
-
log(INFO, "
|
|
115
|
+
log(INFO, "[Fleet.GetRun] Requesting `Run` for run_id=%s", request.run_id)
|
|
105
116
|
return message_handler.get_run(
|
|
106
117
|
request=request,
|
|
107
118
|
state=self.state_factory.state(),
|
|
@@ -111,7 +122,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
|
|
|
111
122
|
self, request: GetFabRequest, context: grpc.ServicerContext
|
|
112
123
|
) -> GetFabResponse:
|
|
113
124
|
"""Get FAB."""
|
|
114
|
-
log(
|
|
125
|
+
log(INFO, "[Fleet.GetFab] Requesting FAB for fab_hash=%s", request.hash_str)
|
|
115
126
|
return message_handler.get_fab(
|
|
116
127
|
request=request,
|
|
117
128
|
ffs=self.ffs_factory.ffs(),
|
|
@@ -78,13 +78,13 @@ def _get_value_from_tuples(
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
81
|
-
"""Server interceptor for
|
|
81
|
+
"""Server interceptor for node authentication."""
|
|
82
82
|
|
|
83
83
|
def __init__(self, state: State):
|
|
84
84
|
self.state = state
|
|
85
85
|
|
|
86
|
-
self.
|
|
87
|
-
if len(self.
|
|
86
|
+
self.node_public_keys = state.get_node_public_keys()
|
|
87
|
+
if len(self.node_public_keys) == 0:
|
|
88
88
|
log(WARNING, "Authentication enabled, but no known public keys configured")
|
|
89
89
|
|
|
90
90
|
private_key = self.state.get_server_private_key()
|
|
@@ -103,9 +103,9 @@ class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
103
103
|
) -> grpc.RpcMethodHandler:
|
|
104
104
|
"""Flower server interceptor authentication logic.
|
|
105
105
|
|
|
106
|
-
Intercept all unary calls from
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
Intercept all unary calls from nodes and authenticate nodes by validating auth
|
|
107
|
+
metadata sent by the node. Continue RPC call if node is authenticated, else,
|
|
108
|
+
terminate RPC call by setting context to abort.
|
|
109
109
|
"""
|
|
110
110
|
# One of the method handlers in
|
|
111
111
|
# `flwr.server.superlink.fleet.grpc_rere.fleet_server.FleetServicer`
|
|
@@ -119,17 +119,17 @@ class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
119
119
|
request: Request,
|
|
120
120
|
context: grpc.ServicerContext,
|
|
121
121
|
) -> Response:
|
|
122
|
-
|
|
122
|
+
node_public_key_bytes = base64.urlsafe_b64decode(
|
|
123
123
|
_get_value_from_tuples(
|
|
124
124
|
_PUBLIC_KEY_HEADER, context.invocation_metadata()
|
|
125
125
|
)
|
|
126
126
|
)
|
|
127
|
-
if
|
|
127
|
+
if node_public_key_bytes not in self.node_public_keys:
|
|
128
128
|
context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied")
|
|
129
129
|
|
|
130
130
|
if isinstance(request, CreateNodeRequest):
|
|
131
131
|
response = self._create_authenticated_node(
|
|
132
|
-
|
|
132
|
+
node_public_key_bytes, request, context
|
|
133
133
|
)
|
|
134
134
|
log(
|
|
135
135
|
INFO,
|
|
@@ -144,13 +144,13 @@ class AuthenticateServerInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
|
144
144
|
_AUTH_TOKEN_HEADER, context.invocation_metadata()
|
|
145
145
|
)
|
|
146
146
|
)
|
|
147
|
-
public_key = bytes_to_public_key(
|
|
147
|
+
public_key = bytes_to_public_key(node_public_key_bytes)
|
|
148
148
|
|
|
149
149
|
if not self._verify_hmac(public_key, request, hmac_value):
|
|
150
150
|
context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied")
|
|
151
151
|
|
|
152
152
|
# Verify node_id
|
|
153
|
-
node_id = self.state.get_node_id(
|
|
153
|
+
node_id = self.state.get_node_id(node_public_key_bytes)
|
|
154
154
|
|
|
155
155
|
if not self._verify_node_id(node_id, request):
|
|
156
156
|
context.abort(grpc.StatusCode.UNAUTHENTICATED, "Access denied")
|
|
@@ -45,7 +45,7 @@ class InMemoryState(State): # pylint: disable=R0902,R0904
|
|
|
45
45
|
self.task_ins_store: Dict[UUID, TaskIns] = {}
|
|
46
46
|
self.task_res_store: Dict[UUID, TaskRes] = {}
|
|
47
47
|
|
|
48
|
-
self.
|
|
48
|
+
self.node_public_keys: Set[bytes] = set()
|
|
49
49
|
self.server_public_key: Optional[bytes] = None
|
|
50
50
|
self.server_private_key: Optional[bytes] = None
|
|
51
51
|
|
|
@@ -237,7 +237,7 @@ class InMemoryState(State): # pylint: disable=R0902,R0904
|
|
|
237
237
|
return node_id
|
|
238
238
|
|
|
239
239
|
def delete_node(self, node_id: int, public_key: Optional[bytes] = None) -> None:
|
|
240
|
-
"""Delete a
|
|
240
|
+
"""Delete a node."""
|
|
241
241
|
with self.lock:
|
|
242
242
|
if node_id not in self.node_ids:
|
|
243
243
|
raise ValueError(f"Node {node_id} not found")
|
|
@@ -254,7 +254,7 @@ class InMemoryState(State): # pylint: disable=R0902,R0904
|
|
|
254
254
|
del self.node_ids[node_id]
|
|
255
255
|
|
|
256
256
|
def get_nodes(self, run_id: int) -> Set[int]:
|
|
257
|
-
"""Return all available
|
|
257
|
+
"""Return all available nodes.
|
|
258
258
|
|
|
259
259
|
Constraints
|
|
260
260
|
-----------
|
|
@@ -271,9 +271,9 @@ class InMemoryState(State): # pylint: disable=R0902,R0904
|
|
|
271
271
|
if online_until > current_time
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
def get_node_id(self,
|
|
275
|
-
"""Retrieve stored `node_id` filtered by `
|
|
276
|
-
return self.public_key_to_node_id.get(
|
|
274
|
+
def get_node_id(self, node_public_key: bytes) -> Optional[int]:
|
|
275
|
+
"""Retrieve stored `node_id` filtered by `node_public_keys`."""
|
|
276
|
+
return self.public_key_to_node_id.get(node_public_key)
|
|
277
277
|
|
|
278
278
|
def create_run(
|
|
279
279
|
self,
|
|
@@ -318,19 +318,19 @@ class InMemoryState(State): # pylint: disable=R0902,R0904
|
|
|
318
318
|
"""Retrieve `server_public_key` in urlsafe bytes."""
|
|
319
319
|
return self.server_public_key
|
|
320
320
|
|
|
321
|
-
def
|
|
322
|
-
"""Store a set of `
|
|
321
|
+
def store_node_public_keys(self, public_keys: Set[bytes]) -> None:
|
|
322
|
+
"""Store a set of `node_public_keys` in state."""
|
|
323
323
|
with self.lock:
|
|
324
|
-
self.
|
|
324
|
+
self.node_public_keys = public_keys
|
|
325
325
|
|
|
326
|
-
def
|
|
327
|
-
"""Store a `
|
|
326
|
+
def store_node_public_key(self, public_key: bytes) -> None:
|
|
327
|
+
"""Store a `node_public_key` in state."""
|
|
328
328
|
with self.lock:
|
|
329
|
-
self.
|
|
329
|
+
self.node_public_keys.add(public_key)
|
|
330
330
|
|
|
331
|
-
def
|
|
332
|
-
"""Retrieve all currently stored `
|
|
333
|
-
return self.
|
|
331
|
+
def get_node_public_keys(self) -> Set[bytes]:
|
|
332
|
+
"""Retrieve all currently stored `node_public_keys` as a set."""
|
|
333
|
+
return self.node_public_keys
|
|
334
334
|
|
|
335
335
|
def get_run(self, run_id: int) -> Optional[Run]:
|
|
336
336
|
"""Retrieve information about the run with the specified `run_id`."""
|
|
@@ -569,7 +569,7 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
569
569
|
return node_id
|
|
570
570
|
|
|
571
571
|
def delete_node(self, node_id: int, public_key: Optional[bytes] = None) -> None:
|
|
572
|
-
"""Delete a
|
|
572
|
+
"""Delete a node."""
|
|
573
573
|
query = "DELETE FROM node WHERE node_id = ?"
|
|
574
574
|
params = (node_id,)
|
|
575
575
|
|
|
@@ -607,10 +607,10 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
607
607
|
result: Set[int] = {row["node_id"] for row in rows}
|
|
608
608
|
return result
|
|
609
609
|
|
|
610
|
-
def get_node_id(self,
|
|
611
|
-
"""Retrieve stored `node_id` filtered by `
|
|
610
|
+
def get_node_id(self, node_public_key: bytes) -> Optional[int]:
|
|
611
|
+
"""Retrieve stored `node_id` filtered by `node_public_keys`."""
|
|
612
612
|
query = "SELECT node_id FROM node WHERE public_key = :public_key;"
|
|
613
|
-
row = self.query(query, {"public_key":
|
|
613
|
+
row = self.query(query, {"public_key": node_public_key})
|
|
614
614
|
if len(row) > 0:
|
|
615
615
|
node_id: int = row[0]["node_id"]
|
|
616
616
|
return node_id
|
|
@@ -684,19 +684,19 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
684
684
|
public_key = None
|
|
685
685
|
return public_key
|
|
686
686
|
|
|
687
|
-
def
|
|
688
|
-
"""Store a set of `
|
|
687
|
+
def store_node_public_keys(self, public_keys: Set[bytes]) -> None:
|
|
688
|
+
"""Store a set of `node_public_keys` in state."""
|
|
689
689
|
query = "INSERT INTO public_key (public_key) VALUES (?)"
|
|
690
690
|
data = [(key,) for key in public_keys]
|
|
691
691
|
self.query(query, data)
|
|
692
692
|
|
|
693
|
-
def
|
|
694
|
-
"""Store a `
|
|
693
|
+
def store_node_public_key(self, public_key: bytes) -> None:
|
|
694
|
+
"""Store a `node_public_key` in state."""
|
|
695
695
|
query = "INSERT INTO public_key (public_key) VALUES (:public_key)"
|
|
696
696
|
self.query(query, {"public_key": public_key})
|
|
697
697
|
|
|
698
|
-
def
|
|
699
|
-
"""Retrieve all currently stored `
|
|
698
|
+
def get_node_public_keys(self) -> Set[bytes]:
|
|
699
|
+
"""Retrieve all currently stored `node_public_keys` as a set."""
|
|
700
700
|
query = "SELECT public_key FROM public_key"
|
|
701
701
|
rows = self.query(query)
|
|
702
702
|
result: Set[bytes] = {row["public_key"] for row in rows}
|
|
@@ -153,8 +153,8 @@ class State(abc.ABC): # pylint: disable=R0904
|
|
|
153
153
|
"""
|
|
154
154
|
|
|
155
155
|
@abc.abstractmethod
|
|
156
|
-
def get_node_id(self,
|
|
157
|
-
"""Retrieve stored `node_id` filtered by `
|
|
156
|
+
def get_node_id(self, node_public_key: bytes) -> Optional[int]:
|
|
157
|
+
"""Retrieve stored `node_id` filtered by `node_public_keys`."""
|
|
158
158
|
|
|
159
159
|
@abc.abstractmethod
|
|
160
160
|
def create_run(
|
|
@@ -199,16 +199,16 @@ class State(abc.ABC): # pylint: disable=R0904
|
|
|
199
199
|
"""Retrieve `server_public_key` in urlsafe bytes."""
|
|
200
200
|
|
|
201
201
|
@abc.abstractmethod
|
|
202
|
-
def
|
|
203
|
-
"""Store a set of `
|
|
202
|
+
def store_node_public_keys(self, public_keys: Set[bytes]) -> None:
|
|
203
|
+
"""Store a set of `node_public_keys` in state."""
|
|
204
204
|
|
|
205
205
|
@abc.abstractmethod
|
|
206
|
-
def
|
|
207
|
-
"""Store a `
|
|
206
|
+
def store_node_public_key(self, public_key: bytes) -> None:
|
|
207
|
+
"""Store a `node_public_key` in state."""
|
|
208
208
|
|
|
209
209
|
@abc.abstractmethod
|
|
210
|
-
def
|
|
211
|
-
"""Retrieve all currently stored `
|
|
210
|
+
def get_node_public_keys(self) -> Set[bytes]:
|
|
211
|
+
"""Retrieve all currently stored `node_public_keys` as a set."""
|
|
212
212
|
|
|
213
213
|
@abc.abstractmethod
|
|
214
214
|
def acknowledge_ping(self, node_id: int, ping_interval: float) -> bool:
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/build.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/config_utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/example.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/install.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/new/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/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
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/run/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/run/run.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/cli/utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/app.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/src/py/flwr/client/client.py
RENAMED
|
File without changes
|
{flwr_nightly-1.11.0.dev20240823 → flwr_nightly-1.11.0.dev20240824}/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
|