flwr-nightly 1.15.0.dev20250128__tar.gz → 1.15.0.dev20250129__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.dev20250128 → flwr_nightly-1.15.0.dev20250129}/PKG-INFO +1 -1
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/pyproject.toml +1 -1
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/utils.py +5 -8
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/clientapp/app.py +15 -19
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_client/connection.py +1 -6
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_rere_client/connection.py +12 -12
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -16
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/message_handler/task_handler.py +0 -17
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/differential_privacy.py +2 -1
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/grpc.py +6 -1
- flwr_nightly-1.15.0.dev20250129/src/py/flwr/proto/fleet_pb2.py +66 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fleet_pb2.pyi +0 -84
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fleet_pb2_grpc.py +5 -93
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fleet_pb2_grpc.pyi +12 -38
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/app.py +6 -2
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/driver/grpc_driver.py +2 -1
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/serverapp/app.py +7 -5
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +6 -43
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +1 -49
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -27
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/simulationio_connection.py +2 -1
- flwr_nightly-1.15.0.dev20250128/src/py/flwr/proto/fleet_pb2.py +0 -79
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/LICENSE +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/README.md +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/nodestate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/driver/serverappio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/driver/serverappio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/exec_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/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.dev20250129"
|
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.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/cli/utils.py
RENAMED
@@ -20,7 +20,6 @@ import json
|
|
20
20
|
import re
|
21
21
|
from collections.abc import Iterator
|
22
22
|
from contextlib import contextmanager
|
23
|
-
from logging import DEBUG
|
24
23
|
from pathlib import Path
|
25
24
|
from typing import Any, Callable, Optional, Union, cast
|
26
25
|
|
@@ -30,8 +29,11 @@ import typer
|
|
30
29
|
from flwr.cli.cli_user_auth_interceptor import CliUserAuthInterceptor
|
31
30
|
from flwr.common.auth_plugin import CliAuthPlugin
|
32
31
|
from flwr.common.constant import AUTH_TYPE_KEY, CREDENTIALS_DIR, FLWR_DIR
|
33
|
-
from flwr.common.grpc import
|
34
|
-
|
32
|
+
from flwr.common.grpc import (
|
33
|
+
GRPC_MAX_MESSAGE_LENGTH,
|
34
|
+
create_channel,
|
35
|
+
on_channel_state_change,
|
36
|
+
)
|
35
37
|
|
36
38
|
from .auth_plugin import get_cli_auth_plugins
|
37
39
|
from .config_utils import validate_certificate_in_federation_config
|
@@ -264,11 +266,6 @@ def init_channel(
|
|
264
266
|
app: Path, federation_config: dict[str, Any], auth_plugin: Optional[CliAuthPlugin]
|
265
267
|
) -> grpc.Channel:
|
266
268
|
"""Initialize gRPC channel to the Exec API."""
|
267
|
-
|
268
|
-
def on_channel_state_change(channel_connectivity: str) -> None:
|
269
|
-
"""Log channel connectivity."""
|
270
|
-
log(DEBUG, channel_connectivity)
|
271
|
-
|
272
269
|
insecure, root_certificates_bytes = validate_certificate_in_federation_config(
|
273
270
|
app, federation_config
|
274
271
|
)
|
@@ -29,7 +29,7 @@ from flwr.common.args import add_args_flwr_app_common
|
|
29
29
|
from flwr.common.config import get_flwr_dir
|
30
30
|
from flwr.common.constant import CLIENTAPPIO_API_DEFAULT_CLIENT_ADDRESS, ErrorCode
|
31
31
|
from flwr.common.exit import ExitCode, flwr_exit
|
32
|
-
from flwr.common.grpc import create_channel
|
32
|
+
from flwr.common.grpc import create_channel, on_channel_state_change
|
33
33
|
from flwr.common.logger import log
|
34
34
|
from flwr.common.message import Error
|
35
35
|
from flwr.common.retry_invoker import _make_simple_grpc_retry_invoker, _wrap_stub
|
@@ -66,11 +66,11 @@ def flwr_clientapp() -> None:
|
|
66
66
|
"flwr-clientapp does not support TLS yet.",
|
67
67
|
)
|
68
68
|
|
69
|
-
log(INFO, "
|
69
|
+
log(INFO, "Start `flwr-clientapp` process")
|
70
70
|
log(
|
71
71
|
DEBUG,
|
72
|
-
"
|
73
|
-
"with token %s",
|
72
|
+
"`flwr-clientapp` will attempt to connect to SuperNode's "
|
73
|
+
"ClientAppIo API at %s with token %s",
|
74
74
|
args.clientappio_api_address,
|
75
75
|
args.token,
|
76
76
|
)
|
@@ -83,11 +83,6 @@ def flwr_clientapp() -> None:
|
|
83
83
|
)
|
84
84
|
|
85
85
|
|
86
|
-
def on_channel_state_change(channel_connectivity: str) -> None:
|
87
|
-
"""Log channel connectivity."""
|
88
|
-
log(DEBUG, channel_connectivity)
|
89
|
-
|
90
|
-
|
91
86
|
def run_clientapp( # pylint: disable=R0914
|
92
87
|
clientappio_api_address: str,
|
93
88
|
run_once: bool,
|
@@ -116,11 +111,11 @@ def run_clientapp( # pylint: disable=R0914
|
|
116
111
|
time.sleep(1)
|
117
112
|
|
118
113
|
# Pull Message, Context, Run and (optional) FAB from SuperNode
|
119
|
-
message, context, run, fab =
|
114
|
+
message, context, run, fab = pull_clientappinputs(stub=stub, token=token)
|
120
115
|
|
121
116
|
# Install FAB, if provided
|
122
117
|
if fab:
|
123
|
-
log(DEBUG, "
|
118
|
+
log(DEBUG, "[flwr-clientapp] Start FAB installation.")
|
124
119
|
install_from_fab(fab.content, flwr_dir=flwr_dir_, skip_prompt=True)
|
125
120
|
|
126
121
|
load_client_app_fn = get_load_client_app_fn(
|
@@ -132,6 +127,7 @@ def run_clientapp( # pylint: disable=R0914
|
|
132
127
|
|
133
128
|
try:
|
134
129
|
# Load ClientApp
|
130
|
+
log(DEBUG, "[flwr-clientapp] Start `ClientApp` Loading.")
|
135
131
|
client_app: ClientApp = load_client_app_fn(
|
136
132
|
run.fab_id, run.fab_version, fab.hash_str if fab else ""
|
137
133
|
)
|
@@ -160,7 +156,7 @@ def run_clientapp( # pylint: disable=R0914
|
|
160
156
|
)
|
161
157
|
|
162
158
|
# Push Message and Context to SuperNode
|
163
|
-
_ =
|
159
|
+
_ = push_clientappoutputs(
|
164
160
|
stub=stub, token=token, message=reply_message, context=context
|
165
161
|
)
|
166
162
|
|
@@ -183,7 +179,7 @@ def run_clientapp( # pylint: disable=R0914
|
|
183
179
|
|
184
180
|
def get_token(stub: grpc.Channel) -> Optional[int]:
|
185
181
|
"""Get a token from SuperNode."""
|
186
|
-
log(DEBUG, "
|
182
|
+
log(DEBUG, "[flwr-clientapp] Request token")
|
187
183
|
try:
|
188
184
|
res: GetTokenResponse = stub.GetToken(GetTokenRequest())
|
189
185
|
log(DEBUG, "[GetToken] Received token: %s", res.token)
|
@@ -196,11 +192,11 @@ def get_token(stub: grpc.Channel) -> Optional[int]:
|
|
196
192
|
return None
|
197
193
|
|
198
194
|
|
199
|
-
def
|
195
|
+
def pull_clientappinputs(
|
200
196
|
stub: grpc.Channel, token: int
|
201
197
|
) -> tuple[Message, Context, Run, Optional[Fab]]:
|
202
|
-
"""Pull
|
203
|
-
log(INFO, "
|
198
|
+
"""Pull ClientAppInputs from SuperNode."""
|
199
|
+
log(INFO, "[flwr-clientapp] Pull `ClientAppInputs` for token %s", token)
|
204
200
|
try:
|
205
201
|
res: PullClientAppInputsResponse = stub.PullClientAppInputs(
|
206
202
|
PullClientAppInputsRequest(token=token)
|
@@ -215,11 +211,11 @@ def pull_message(
|
|
215
211
|
raise e
|
216
212
|
|
217
213
|
|
218
|
-
def
|
214
|
+
def push_clientappoutputs(
|
219
215
|
stub: grpc.Channel, token: int, message: Message, context: Context
|
220
216
|
) -> PushClientAppOutputsResponse:
|
221
|
-
"""Push
|
222
|
-
log(INFO, "
|
217
|
+
"""Push ClientAppOutputs to SuperNode."""
|
218
|
+
log(INFO, "[flwr-clientapp] Push `ClientAppOutputs` for token %s", token)
|
223
219
|
proto_message = message_to_proto(message)
|
224
220
|
proto_context = context_to_proto(context)
|
225
221
|
|
@@ -36,7 +36,7 @@ from flwr.common import (
|
|
36
36
|
from flwr.common import recordset_compat as compat
|
37
37
|
from flwr.common import serde
|
38
38
|
from flwr.common.constant import MessageType, MessageTypeLegacy
|
39
|
-
from flwr.common.grpc import create_channel
|
39
|
+
from flwr.common.grpc import create_channel, on_channel_state_change
|
40
40
|
from flwr.common.logger import log
|
41
41
|
from flwr.common.retry_invoker import RetryInvoker
|
42
42
|
from flwr.common.typing import Fab, Run
|
@@ -48,11 +48,6 @@ from flwr.proto.transport_pb2 import ( # pylint: disable=E0611
|
|
48
48
|
from flwr.proto.transport_pb2_grpc import FlowerServiceStub # pylint: disable=E0611
|
49
49
|
|
50
50
|
|
51
|
-
def on_channel_state_change(channel_connectivity: str) -> None:
|
52
|
-
"""Log channel connectivity."""
|
53
|
-
log(DEBUG, channel_connectivity)
|
54
|
-
|
55
|
-
|
56
51
|
@contextmanager
|
57
52
|
def grpc_connection( # pylint: disable=R0913,R0915,too-many-positional-arguments
|
58
53
|
server_address: str,
|
@@ -20,7 +20,7 @@ import threading
|
|
20
20
|
from collections.abc import Iterator, Sequence
|
21
21
|
from contextlib import contextmanager
|
22
22
|
from copy import copy
|
23
|
-
from logging import
|
23
|
+
from logging import ERROR
|
24
24
|
from pathlib import Path
|
25
25
|
from typing import Callable, Optional, Union, cast
|
26
26
|
|
@@ -36,10 +36,13 @@ from flwr.common.constant import (
|
|
36
36
|
PING_DEFAULT_INTERVAL,
|
37
37
|
PING_RANDOM_RANGE,
|
38
38
|
)
|
39
|
-
from flwr.common.grpc import create_channel
|
39
|
+
from flwr.common.grpc import create_channel, on_channel_state_change
|
40
40
|
from flwr.common.logger import log
|
41
41
|
from flwr.common.message import Message, Metadata
|
42
42
|
from flwr.common.retry_invoker import RetryInvoker
|
43
|
+
from flwr.common.secure_aggregation.crypto.symmetric_encryption import (
|
44
|
+
generate_key_pairs,
|
45
|
+
)
|
43
46
|
from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
|
44
47
|
from flwr.common.typing import Fab, Run, RunNotRunningException
|
45
48
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
@@ -60,11 +63,6 @@ from .client_interceptor import AuthenticateClientInterceptor
|
|
60
63
|
from .grpc_adapter import GrpcAdapter
|
61
64
|
|
62
65
|
|
63
|
-
def on_channel_state_change(channel_connectivity: str) -> None:
|
64
|
-
"""Log channel connectivity."""
|
65
|
-
log(DEBUG, channel_connectivity)
|
66
|
-
|
67
|
-
|
68
66
|
@contextmanager
|
69
67
|
def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
70
68
|
server_address: str,
|
@@ -130,12 +128,14 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
|
|
130
128
|
if isinstance(root_certificates, str):
|
131
129
|
root_certificates = Path(root_certificates).read_bytes()
|
132
130
|
|
133
|
-
|
134
|
-
if authentication_keys is
|
135
|
-
|
136
|
-
authentication_keys[0], authentication_keys[1]
|
137
|
-
)
|
131
|
+
# Automatic node auth: generate keys if user didn't provide any
|
132
|
+
if authentication_keys is None:
|
133
|
+
authentication_keys = generate_key_pairs()
|
138
134
|
|
135
|
+
# Always configure auth interceptor, with either user-provided or generated keys
|
136
|
+
interceptors: Sequence[grpc.UnaryUnaryClientInterceptor] = [
|
137
|
+
AuthenticateClientInterceptor(*authentication_keys),
|
138
|
+
]
|
139
139
|
channel = create_channel(
|
140
140
|
server_address=server_address,
|
141
141
|
insecure=insecure,
|
@@ -42,12 +42,8 @@ from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
|
|
42
42
|
PingResponse,
|
43
43
|
PullMessagesRequest,
|
44
44
|
PullMessagesResponse,
|
45
|
-
PullTaskInsRequest,
|
46
|
-
PullTaskInsResponse,
|
47
45
|
PushMessagesRequest,
|
48
46
|
PushMessagesResponse,
|
49
|
-
PushTaskResRequest,
|
50
|
-
PushTaskResResponse,
|
51
47
|
)
|
52
48
|
from flwr.proto.grpcadapter_pb2 import MessageContainer # pylint: disable=E0611
|
53
49
|
from flwr.proto.grpcadapter_pb2_grpc import GrpcAdapterStub
|
@@ -130,24 +126,12 @@ class GrpcAdapter:
|
|
130
126
|
"""."""
|
131
127
|
return self._send_and_receive(request, PingResponse, **kwargs)
|
132
128
|
|
133
|
-
def PullTaskIns( # pylint: disable=C0103
|
134
|
-
self, request: PullTaskInsRequest, **kwargs: Any
|
135
|
-
) -> PullTaskInsResponse:
|
136
|
-
"""."""
|
137
|
-
return self._send_and_receive(request, PullTaskInsResponse, **kwargs)
|
138
|
-
|
139
129
|
def PullMessages( # pylint: disable=C0103
|
140
130
|
self, request: PullMessagesRequest, **kwargs: Any
|
141
131
|
) -> PullMessagesResponse:
|
142
132
|
"""."""
|
143
133
|
return self._send_and_receive(request, PullMessagesResponse, **kwargs)
|
144
134
|
|
145
|
-
def PushTaskRes( # pylint: disable=C0103
|
146
|
-
self, request: PushTaskResRequest, **kwargs: Any
|
147
|
-
) -> PushTaskResResponse:
|
148
|
-
"""."""
|
149
|
-
return self._send_and_receive(request, PushTaskResResponse, **kwargs)
|
150
|
-
|
151
135
|
def PushMessages( # pylint: disable=C0103
|
152
136
|
self, request: PushMessagesRequest, **kwargs: Any
|
153
137
|
) -> PushMessagesResponse:
|
@@ -15,9 +15,6 @@
|
|
15
15
|
"""Task handling."""
|
16
16
|
|
17
17
|
|
18
|
-
from typing import Optional
|
19
|
-
|
20
|
-
from flwr.proto.fleet_pb2 import PullTaskInsResponse # pylint: disable=E0611
|
21
18
|
from flwr.proto.task_pb2 import TaskIns # pylint: disable=E0611
|
22
19
|
|
23
20
|
|
@@ -38,17 +35,3 @@ def validate_task_ins(task_ins: TaskIns) -> bool:
|
|
38
35
|
if not (task_ins.HasField("task") and task_ins.task.HasField("recordset")):
|
39
36
|
return False
|
40
37
|
return True
|
41
|
-
|
42
|
-
|
43
|
-
def get_task_ins(
|
44
|
-
pull_task_ins_response: PullTaskInsResponse,
|
45
|
-
) -> Optional[TaskIns]:
|
46
|
-
"""Get the first TaskIns, if available."""
|
47
|
-
# Extract a single ServerMessage from the response, if possible
|
48
|
-
if len(pull_task_ins_response.task_ins_list) == 0:
|
49
|
-
return None
|
50
|
-
|
51
|
-
# Only evaluate the first message
|
52
|
-
task_ins: TaskIns = pull_task_ins_response.task_ins_list[0]
|
53
|
-
|
54
|
-
return task_ins
|
@@ -39,7 +39,8 @@ def get_norm(input_arrays: NDArrays) -> float:
|
|
39
39
|
def add_gaussian_noise_inplace(input_arrays: NDArrays, std_dev: float) -> None:
|
40
40
|
"""Add Gaussian noise to each element of the input arrays."""
|
41
41
|
for array in input_arrays:
|
42
|
-
|
42
|
+
noise = np.random.normal(0, std_dev, array.shape).astype(array.dtype)
|
43
|
+
array += noise
|
43
44
|
|
44
45
|
|
45
46
|
def clip_inputs_inplace(input_arrays: NDArrays, clipping_norm: float) -> None:
|
{flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/common/grpc.py
RENAMED
@@ -80,7 +80,7 @@ def create_channel(
|
|
80
80
|
log(DEBUG, "Opened secure gRPC connection using certificates")
|
81
81
|
|
82
82
|
if interceptors is not None:
|
83
|
-
channel = grpc.intercept_channel(channel, interceptors)
|
83
|
+
channel = grpc.intercept_channel(channel, *interceptors)
|
84
84
|
|
85
85
|
return channel
|
86
86
|
|
@@ -224,3 +224,8 @@ def generic_create_grpc_server( # pylint: disable=too-many-arguments,R0917
|
|
224
224
|
server.add_insecure_port(server_address)
|
225
225
|
|
226
226
|
return server
|
227
|
+
|
228
|
+
|
229
|
+
def on_channel_state_change(channel_connectivity: str) -> None:
|
230
|
+
"""Log channel connectivity."""
|
231
|
+
log(DEBUG, channel_connectivity)
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
4
|
+
# source: flwr/proto/fleet.proto
|
5
|
+
# Protobuf Python Version: 5.29.0
|
6
|
+
"""Generated protocol buffer code."""
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
11
|
+
from google.protobuf.internal import builder as _builder
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
14
|
+
5,
|
15
|
+
29,
|
16
|
+
0,
|
17
|
+
'',
|
18
|
+
'flwr/proto/fleet.proto'
|
19
|
+
)
|
20
|
+
# @@protoc_insertion_point(imports)
|
21
|
+
|
22
|
+
_sym_db = _symbol_database.Default()
|
23
|
+
|
24
|
+
|
25
|
+
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
26
|
+
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
27
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
28
|
+
from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
|
29
|
+
|
30
|
+
|
31
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/fleet.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x18\x66lwr/proto/message.proto\"*\n\x11\x43reateNodeRequest\x12\x15\n\rping_interval\x18\x01 \x01(\x01\"4\n\x12\x43reateNodeResponse\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"3\n\x11\x44\x65leteNodeRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\"\x14\n\x12\x44\x65leteNodeResponse\"D\n\x0bPingRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x15\n\rping_interval\x18\x02 \x01(\x01\"\x1f\n\x0cPingResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"J\n\x13PullMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\"l\n\x14PullMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\"a\n\x13PushMessagesRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\"\xb0\x01\n\x14PushMessagesResponse\x12(\n\treconnect\x18\x01 \x01(\x0b\x32\x15.flwr.proto.Reconnect\x12>\n\x07results\x18\x02 \x03(\x0b\x32-.flwr.proto.PushMessagesResponse.ResultsEntry\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\x1e\n\tReconnect\x12\x11\n\treconnect\x18\x01 \x01(\x04\x32\x92\x04\n\x05\x46leet\x12M\n\nCreateNode\x12\x1d.flwr.proto.CreateNodeRequest\x1a\x1e.flwr.proto.CreateNodeResponse\"\x00\x12M\n\nDeleteNode\x12\x1d.flwr.proto.DeleteNodeRequest\x1a\x1e.flwr.proto.DeleteNodeResponse\"\x00\x12;\n\x04Ping\x12\x17.flwr.proto.PingRequest\x1a\x18.flwr.proto.PingResponse\"\x00\x12S\n\x0cPullMessages\x12\x1f.flwr.proto.PullMessagesRequest\x1a .flwr.proto.PullMessagesResponse\"\x00\x12S\n\x0cPushMessages\x12\x1f.flwr.proto.PushMessagesRequest\x1a .flwr.proto.PushMessagesResponse\"\x00\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3')
|
32
|
+
|
33
|
+
_globals = globals()
|
34
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
35
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fleet_pb2', _globals)
|
36
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
37
|
+
DESCRIPTOR._loaded_options = None
|
38
|
+
_globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._loaded_options = None
|
39
|
+
_globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_options = b'8\001'
|
40
|
+
_globals['_CREATENODEREQUEST']._serialized_start=131
|
41
|
+
_globals['_CREATENODEREQUEST']._serialized_end=173
|
42
|
+
_globals['_CREATENODERESPONSE']._serialized_start=175
|
43
|
+
_globals['_CREATENODERESPONSE']._serialized_end=227
|
44
|
+
_globals['_DELETENODEREQUEST']._serialized_start=229
|
45
|
+
_globals['_DELETENODEREQUEST']._serialized_end=280
|
46
|
+
_globals['_DELETENODERESPONSE']._serialized_start=282
|
47
|
+
_globals['_DELETENODERESPONSE']._serialized_end=302
|
48
|
+
_globals['_PINGREQUEST']._serialized_start=304
|
49
|
+
_globals['_PINGREQUEST']._serialized_end=372
|
50
|
+
_globals['_PINGRESPONSE']._serialized_start=374
|
51
|
+
_globals['_PINGRESPONSE']._serialized_end=405
|
52
|
+
_globals['_PULLMESSAGESREQUEST']._serialized_start=407
|
53
|
+
_globals['_PULLMESSAGESREQUEST']._serialized_end=481
|
54
|
+
_globals['_PULLMESSAGESRESPONSE']._serialized_start=483
|
55
|
+
_globals['_PULLMESSAGESRESPONSE']._serialized_end=591
|
56
|
+
_globals['_PUSHMESSAGESREQUEST']._serialized_start=593
|
57
|
+
_globals['_PUSHMESSAGESREQUEST']._serialized_end=690
|
58
|
+
_globals['_PUSHMESSAGESRESPONSE']._serialized_start=693
|
59
|
+
_globals['_PUSHMESSAGESRESPONSE']._serialized_end=869
|
60
|
+
_globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_start=823
|
61
|
+
_globals['_PUSHMESSAGESRESPONSE_RESULTSENTRY']._serialized_end=869
|
62
|
+
_globals['_RECONNECT']._serialized_start=871
|
63
|
+
_globals['_RECONNECT']._serialized_end=901
|
64
|
+
_globals['_FLEET']._serialized_start=904
|
65
|
+
_globals['_FLEET']._serialized_end=1434
|
66
|
+
# @@protoc_insertion_point(module_scope)
|
{flwr_nightly-1.15.0.dev20250128 → flwr_nightly-1.15.0.dev20250129}/src/py/flwr/proto/fleet_pb2.pyi
RENAMED
@@ -5,7 +5,6 @@ isort:skip_file
|
|
5
5
|
import builtins
|
6
6
|
import flwr.proto.message_pb2
|
7
7
|
import flwr.proto.node_pb2
|
8
|
-
import flwr.proto.task_pb2
|
9
8
|
import google.protobuf.descriptor
|
10
9
|
import google.protobuf.internal.containers
|
11
10
|
import google.protobuf.message
|
@@ -87,89 +86,6 @@ class PingResponse(google.protobuf.message.Message):
|
|
87
86
|
def ClearField(self, field_name: typing_extensions.Literal["success",b"success"]) -> None: ...
|
88
87
|
global___PingResponse = PingResponse
|
89
88
|
|
90
|
-
class PullTaskInsRequest(google.protobuf.message.Message):
|
91
|
-
"""PullTaskIns messages"""
|
92
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
93
|
-
NODE_FIELD_NUMBER: builtins.int
|
94
|
-
TASK_IDS_FIELD_NUMBER: builtins.int
|
95
|
-
@property
|
96
|
-
def node(self) -> flwr.proto.node_pb2.Node: ...
|
97
|
-
@property
|
98
|
-
def task_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
99
|
-
def __init__(self,
|
100
|
-
*,
|
101
|
-
node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
|
102
|
-
task_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
103
|
-
) -> None: ...
|
104
|
-
def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
|
105
|
-
def ClearField(self, field_name: typing_extensions.Literal["node",b"node","task_ids",b"task_ids"]) -> None: ...
|
106
|
-
global___PullTaskInsRequest = PullTaskInsRequest
|
107
|
-
|
108
|
-
class PullTaskInsResponse(google.protobuf.message.Message):
|
109
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
110
|
-
RECONNECT_FIELD_NUMBER: builtins.int
|
111
|
-
TASK_INS_LIST_FIELD_NUMBER: builtins.int
|
112
|
-
@property
|
113
|
-
def reconnect(self) -> global___Reconnect: ...
|
114
|
-
@property
|
115
|
-
def task_ins_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskIns]: ...
|
116
|
-
def __init__(self,
|
117
|
-
*,
|
118
|
-
reconnect: typing.Optional[global___Reconnect] = ...,
|
119
|
-
task_ins_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskIns]] = ...,
|
120
|
-
) -> None: ...
|
121
|
-
def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
|
122
|
-
def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect","task_ins_list",b"task_ins_list"]) -> None: ...
|
123
|
-
global___PullTaskInsResponse = PullTaskInsResponse
|
124
|
-
|
125
|
-
class PushTaskResRequest(google.protobuf.message.Message):
|
126
|
-
"""PushTaskRes messages"""
|
127
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
128
|
-
NODE_FIELD_NUMBER: builtins.int
|
129
|
-
TASK_RES_LIST_FIELD_NUMBER: builtins.int
|
130
|
-
@property
|
131
|
-
def node(self) -> flwr.proto.node_pb2.Node: ...
|
132
|
-
@property
|
133
|
-
def task_res_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.task_pb2.TaskRes]: ...
|
134
|
-
def __init__(self,
|
135
|
-
*,
|
136
|
-
node: typing.Optional[flwr.proto.node_pb2.Node] = ...,
|
137
|
-
task_res_list: typing.Optional[typing.Iterable[flwr.proto.task_pb2.TaskRes]] = ...,
|
138
|
-
) -> None: ...
|
139
|
-
def HasField(self, field_name: typing_extensions.Literal["node",b"node"]) -> builtins.bool: ...
|
140
|
-
def ClearField(self, field_name: typing_extensions.Literal["node",b"node","task_res_list",b"task_res_list"]) -> None: ...
|
141
|
-
global___PushTaskResRequest = PushTaskResRequest
|
142
|
-
|
143
|
-
class PushTaskResResponse(google.protobuf.message.Message):
|
144
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
145
|
-
class ResultsEntry(google.protobuf.message.Message):
|
146
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
147
|
-
KEY_FIELD_NUMBER: builtins.int
|
148
|
-
VALUE_FIELD_NUMBER: builtins.int
|
149
|
-
key: typing.Text
|
150
|
-
value: builtins.int
|
151
|
-
def __init__(self,
|
152
|
-
*,
|
153
|
-
key: typing.Text = ...,
|
154
|
-
value: builtins.int = ...,
|
155
|
-
) -> None: ...
|
156
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
157
|
-
|
158
|
-
RECONNECT_FIELD_NUMBER: builtins.int
|
159
|
-
RESULTS_FIELD_NUMBER: builtins.int
|
160
|
-
@property
|
161
|
-
def reconnect(self) -> global___Reconnect: ...
|
162
|
-
@property
|
163
|
-
def results(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, builtins.int]: ...
|
164
|
-
def __init__(self,
|
165
|
-
*,
|
166
|
-
reconnect: typing.Optional[global___Reconnect] = ...,
|
167
|
-
results: typing.Optional[typing.Mapping[typing.Text, builtins.int]] = ...,
|
168
|
-
) -> None: ...
|
169
|
-
def HasField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect"]) -> builtins.bool: ...
|
170
|
-
def ClearField(self, field_name: typing_extensions.Literal["reconnect",b"reconnect","results",b"results"]) -> None: ...
|
171
|
-
global___PushTaskResResponse = PushTaskResResponse
|
172
|
-
|
173
89
|
class PullMessagesRequest(google.protobuf.message.Message):
|
174
90
|
"""PullMessages messages"""
|
175
91
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
@@ -51,21 +51,11 @@ class FleetStub(object):
|
|
51
51
|
request_serializer=flwr_dot_proto_dot_fleet__pb2.PingRequest.SerializeToString,
|
52
52
|
response_deserializer=flwr_dot_proto_dot_fleet__pb2.PingResponse.FromString,
|
53
53
|
_registered_method=True)
|
54
|
-
self.PullTaskIns = channel.unary_unary(
|
55
|
-
'/flwr.proto.Fleet/PullTaskIns',
|
56
|
-
request_serializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsRequest.SerializeToString,
|
57
|
-
response_deserializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsResponse.FromString,
|
58
|
-
_registered_method=True)
|
59
54
|
self.PullMessages = channel.unary_unary(
|
60
55
|
'/flwr.proto.Fleet/PullMessages',
|
61
56
|
request_serializer=flwr_dot_proto_dot_fleet__pb2.PullMessagesRequest.SerializeToString,
|
62
57
|
response_deserializer=flwr_dot_proto_dot_fleet__pb2.PullMessagesResponse.FromString,
|
63
58
|
_registered_method=True)
|
64
|
-
self.PushTaskRes = channel.unary_unary(
|
65
|
-
'/flwr.proto.Fleet/PushTaskRes',
|
66
|
-
request_serializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResRequest.SerializeToString,
|
67
|
-
response_deserializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResResponse.FromString,
|
68
|
-
_registered_method=True)
|
69
59
|
self.PushMessages = channel.unary_unary(
|
70
60
|
'/flwr.proto.Fleet/PushMessages',
|
71
61
|
request_serializer=flwr_dot_proto_dot_fleet__pb2.PushMessagesRequest.SerializeToString,
|
@@ -104,33 +94,19 @@ class FleetServicer(object):
|
|
104
94
|
context.set_details('Method not implemented!')
|
105
95
|
raise NotImplementedError('Method not implemented!')
|
106
96
|
|
107
|
-
def PullTaskIns(self, request, context):
|
108
|
-
"""Retrieve one or more tasks, if possible
|
109
|
-
|
110
|
-
HTTP API path: /api/v1/fleet/pull-task-ins
|
111
|
-
"""
|
112
|
-
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
113
|
-
context.set_details('Method not implemented!')
|
114
|
-
raise NotImplementedError('Method not implemented!')
|
115
|
-
|
116
97
|
def PullMessages(self, request, context):
|
117
|
-
"""
|
118
|
-
"""
|
119
|
-
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
120
|
-
context.set_details('Method not implemented!')
|
121
|
-
raise NotImplementedError('Method not implemented!')
|
98
|
+
"""Retrieve one or more messages, if possible
|
122
99
|
|
123
|
-
|
124
|
-
"""Complete one or more tasks, if possible
|
125
|
-
|
126
|
-
HTTP API path: /api/v1/fleet/push-task-res
|
100
|
+
HTTP API path: /api/v1/fleet/pull-messages
|
127
101
|
"""
|
128
102
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
129
103
|
context.set_details('Method not implemented!')
|
130
104
|
raise NotImplementedError('Method not implemented!')
|
131
105
|
|
132
106
|
def PushMessages(self, request, context):
|
133
|
-
"""
|
107
|
+
"""Complete one or more messages, if possible
|
108
|
+
|
109
|
+
HTTP API path: /api/v1/fleet/push-messages
|
134
110
|
"""
|
135
111
|
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
136
112
|
context.set_details('Method not implemented!')
|
@@ -167,21 +143,11 @@ def add_FleetServicer_to_server(servicer, server):
|
|
167
143
|
request_deserializer=flwr_dot_proto_dot_fleet__pb2.PingRequest.FromString,
|
168
144
|
response_serializer=flwr_dot_proto_dot_fleet__pb2.PingResponse.SerializeToString,
|
169
145
|
),
|
170
|
-
'PullTaskIns': grpc.unary_unary_rpc_method_handler(
|
171
|
-
servicer.PullTaskIns,
|
172
|
-
request_deserializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsRequest.FromString,
|
173
|
-
response_serializer=flwr_dot_proto_dot_fleet__pb2.PullTaskInsResponse.SerializeToString,
|
174
|
-
),
|
175
146
|
'PullMessages': grpc.unary_unary_rpc_method_handler(
|
176
147
|
servicer.PullMessages,
|
177
148
|
request_deserializer=flwr_dot_proto_dot_fleet__pb2.PullMessagesRequest.FromString,
|
178
149
|
response_serializer=flwr_dot_proto_dot_fleet__pb2.PullMessagesResponse.SerializeToString,
|
179
150
|
),
|
180
|
-
'PushTaskRes': grpc.unary_unary_rpc_method_handler(
|
181
|
-
servicer.PushTaskRes,
|
182
|
-
request_deserializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResRequest.FromString,
|
183
|
-
response_serializer=flwr_dot_proto_dot_fleet__pb2.PushTaskResResponse.SerializeToString,
|
184
|
-
),
|
185
151
|
'PushMessages': grpc.unary_unary_rpc_method_handler(
|
186
152
|
servicer.PushMessages,
|
187
153
|
request_deserializer=flwr_dot_proto_dot_fleet__pb2.PushMessagesRequest.FromString,
|
@@ -289,33 +255,6 @@ class Fleet(object):
|
|
289
255
|
metadata,
|
290
256
|
_registered_method=True)
|
291
257
|
|
292
|
-
@staticmethod
|
293
|
-
def PullTaskIns(request,
|
294
|
-
target,
|
295
|
-
options=(),
|
296
|
-
channel_credentials=None,
|
297
|
-
call_credentials=None,
|
298
|
-
insecure=False,
|
299
|
-
compression=None,
|
300
|
-
wait_for_ready=None,
|
301
|
-
timeout=None,
|
302
|
-
metadata=None):
|
303
|
-
return grpc.experimental.unary_unary(
|
304
|
-
request,
|
305
|
-
target,
|
306
|
-
'/flwr.proto.Fleet/PullTaskIns',
|
307
|
-
flwr_dot_proto_dot_fleet__pb2.PullTaskInsRequest.SerializeToString,
|
308
|
-
flwr_dot_proto_dot_fleet__pb2.PullTaskInsResponse.FromString,
|
309
|
-
options,
|
310
|
-
channel_credentials,
|
311
|
-
insecure,
|
312
|
-
call_credentials,
|
313
|
-
compression,
|
314
|
-
wait_for_ready,
|
315
|
-
timeout,
|
316
|
-
metadata,
|
317
|
-
_registered_method=True)
|
318
|
-
|
319
258
|
@staticmethod
|
320
259
|
def PullMessages(request,
|
321
260
|
target,
|
@@ -343,33 +282,6 @@ class Fleet(object):
|
|
343
282
|
metadata,
|
344
283
|
_registered_method=True)
|
345
284
|
|
346
|
-
@staticmethod
|
347
|
-
def PushTaskRes(request,
|
348
|
-
target,
|
349
|
-
options=(),
|
350
|
-
channel_credentials=None,
|
351
|
-
call_credentials=None,
|
352
|
-
insecure=False,
|
353
|
-
compression=None,
|
354
|
-
wait_for_ready=None,
|
355
|
-
timeout=None,
|
356
|
-
metadata=None):
|
357
|
-
return grpc.experimental.unary_unary(
|
358
|
-
request,
|
359
|
-
target,
|
360
|
-
'/flwr.proto.Fleet/PushTaskRes',
|
361
|
-
flwr_dot_proto_dot_fleet__pb2.PushTaskResRequest.SerializeToString,
|
362
|
-
flwr_dot_proto_dot_fleet__pb2.PushTaskResResponse.FromString,
|
363
|
-
options,
|
364
|
-
channel_credentials,
|
365
|
-
insecure,
|
366
|
-
call_credentials,
|
367
|
-
compression,
|
368
|
-
wait_for_ready,
|
369
|
-
timeout,
|
370
|
-
metadata,
|
371
|
-
_registered_method=True)
|
372
|
-
|
373
285
|
@staticmethod
|
374
286
|
def PushMessages(request,
|
375
287
|
target,
|