flwr-nightly 1.13.0.dev20241023__tar.gz → 1.13.0.dev20241024__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/PKG-INFO +1 -1
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/pyproject.toml +1 -1
- flwr_nightly-1.13.0.dev20241024/src/py/flwr/proto/driver_pb2.py +51 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2.pyi +59 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2_grpc.py +68 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2_grpc.pyi +26 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/app.py +4 -2
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/run_serverapp.py +13 -9
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/driver_servicer.py +16 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +12 -1
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/linkstate.py +29 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +51 -6
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/utils.py +12 -1
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/run_simulation.py +12 -4
- flwr_nightly-1.13.0.dev20241024/src/py/flwr/superexec/app.py +58 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/deployment.py +34 -25
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/exec_grpc.py +15 -8
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/exec_servicer.py +11 -1
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/executor.py +19 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/simulation.py +8 -0
- flwr_nightly-1.13.0.dev20241023/src/py/flwr/client/node_state_tests.py +0 -65
- flwr_nightly-1.13.0.dev20241023/src/py/flwr/proto/driver_pb2.py +0 -42
- flwr_nightly-1.13.0.dev20241023/src/py/flwr/superexec/app.py +0 -193
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/LICENSE +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/README.md +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/superexec/__init__.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.13.0.
|
|
7
|
+
version = "1.13.0.dev20241024"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: flwr/proto/driver.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.0
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
16
|
+
from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
|
|
17
|
+
from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2
|
|
18
|
+
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
19
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x15\x66lwr/proto/task.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"@\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"F\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes\",\n\x1aPullServerAppInputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\x7f\n\x1bPullServerAppInputsResponse\x12$\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Fab\"S\n\x1bPushServerAppOutputsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\"\x1e\n\x1cPushServerAppOutputsResponse2\x9e\x05\n\x06\x44river\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\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\x12h\n\x13PullServerAppInputs\x12&.flwr.proto.PullServerAppInputsRequest\x1a\'.flwr.proto.PullServerAppInputsResponse\"\x00\x12k\n\x14PushServerAppOutputs\x12\'.flwr.proto.PushServerAppOutputsRequest\x1a(.flwr.proto.PushServerAppOutputsResponse\"\x00\x62\x06proto3')
|
|
23
|
+
|
|
24
|
+
_globals = globals()
|
|
25
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
26
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.driver_pb2', _globals)
|
|
27
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
28
|
+
DESCRIPTOR._options = None
|
|
29
|
+
_globals['_GETNODESREQUEST']._serialized_start=155
|
|
30
|
+
_globals['_GETNODESREQUEST']._serialized_end=188
|
|
31
|
+
_globals['_GETNODESRESPONSE']._serialized_start=190
|
|
32
|
+
_globals['_GETNODESRESPONSE']._serialized_end=241
|
|
33
|
+
_globals['_PUSHTASKINSREQUEST']._serialized_start=243
|
|
34
|
+
_globals['_PUSHTASKINSREQUEST']._serialized_end=307
|
|
35
|
+
_globals['_PUSHTASKINSRESPONSE']._serialized_start=309
|
|
36
|
+
_globals['_PUSHTASKINSRESPONSE']._serialized_end=348
|
|
37
|
+
_globals['_PULLTASKRESREQUEST']._serialized_start=350
|
|
38
|
+
_globals['_PULLTASKRESREQUEST']._serialized_end=420
|
|
39
|
+
_globals['_PULLTASKRESRESPONSE']._serialized_start=422
|
|
40
|
+
_globals['_PULLTASKRESRESPONSE']._serialized_end=487
|
|
41
|
+
_globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_start=489
|
|
42
|
+
_globals['_PULLSERVERAPPINPUTSREQUEST']._serialized_end=533
|
|
43
|
+
_globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_start=535
|
|
44
|
+
_globals['_PULLSERVERAPPINPUTSRESPONSE']._serialized_end=662
|
|
45
|
+
_globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_start=664
|
|
46
|
+
_globals['_PUSHSERVERAPPOUTPUTSREQUEST']._serialized_end=747
|
|
47
|
+
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_start=749
|
|
48
|
+
_globals['_PUSHSERVERAPPOUTPUTSRESPONSE']._serialized_end=779
|
|
49
|
+
_globals['_DRIVER']._serialized_start=782
|
|
50
|
+
_globals['_DRIVER']._serialized_end=1452
|
|
51
|
+
# @@protoc_insertion_point(module_scope)
|
{flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/proto/driver_pb2.pyi
RENAMED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
+
import flwr.proto.fab_pb2
|
|
7
|
+
import flwr.proto.message_pb2
|
|
6
8
|
import flwr.proto.node_pb2
|
|
9
|
+
import flwr.proto.run_pb2
|
|
7
10
|
import flwr.proto.task_pb2
|
|
8
11
|
import google.protobuf.descriptor
|
|
9
12
|
import google.protobuf.internal.containers
|
|
@@ -91,3 +94,59 @@ class PullTaskResResponse(google.protobuf.message.Message):
|
|
|
91
94
|
) -> None: ...
|
|
92
95
|
def ClearField(self, field_name: typing_extensions.Literal["task_res_list",b"task_res_list"]) -> None: ...
|
|
93
96
|
global___PullTaskResResponse = PullTaskResResponse
|
|
97
|
+
|
|
98
|
+
class PullServerAppInputsRequest(google.protobuf.message.Message):
|
|
99
|
+
"""PullServerAppInputs messages"""
|
|
100
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
101
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
|
102
|
+
run_id: builtins.int
|
|
103
|
+
def __init__(self,
|
|
104
|
+
*,
|
|
105
|
+
run_id: builtins.int = ...,
|
|
106
|
+
) -> None: ...
|
|
107
|
+
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
|
|
108
|
+
global___PullServerAppInputsRequest = PullServerAppInputsRequest
|
|
109
|
+
|
|
110
|
+
class PullServerAppInputsResponse(google.protobuf.message.Message):
|
|
111
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
112
|
+
CONTEXT_FIELD_NUMBER: builtins.int
|
|
113
|
+
RUN_FIELD_NUMBER: builtins.int
|
|
114
|
+
FAB_FIELD_NUMBER: builtins.int
|
|
115
|
+
@property
|
|
116
|
+
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
117
|
+
@property
|
|
118
|
+
def run(self) -> flwr.proto.run_pb2.Run: ...
|
|
119
|
+
@property
|
|
120
|
+
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
|
121
|
+
def __init__(self,
|
|
122
|
+
*,
|
|
123
|
+
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
124
|
+
run: typing.Optional[flwr.proto.run_pb2.Run] = ...,
|
|
125
|
+
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
|
126
|
+
) -> None: ...
|
|
127
|
+
def HasField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> builtins.bool: ...
|
|
128
|
+
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","fab",b"fab","run",b"run"]) -> None: ...
|
|
129
|
+
global___PullServerAppInputsResponse = PullServerAppInputsResponse
|
|
130
|
+
|
|
131
|
+
class PushServerAppOutputsRequest(google.protobuf.message.Message):
|
|
132
|
+
"""PushServerAppOutputs messages"""
|
|
133
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
134
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
|
135
|
+
CONTEXT_FIELD_NUMBER: builtins.int
|
|
136
|
+
run_id: builtins.int
|
|
137
|
+
@property
|
|
138
|
+
def context(self) -> flwr.proto.message_pb2.Context: ...
|
|
139
|
+
def __init__(self,
|
|
140
|
+
*,
|
|
141
|
+
run_id: builtins.int = ...,
|
|
142
|
+
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
|
143
|
+
) -> None: ...
|
|
144
|
+
def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
|
|
145
|
+
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
|
|
146
|
+
global___PushServerAppOutputsRequest = PushServerAppOutputsRequest
|
|
147
|
+
|
|
148
|
+
class PushServerAppOutputsResponse(google.protobuf.message.Message):
|
|
149
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
150
|
+
def __init__(self,
|
|
151
|
+
) -> None: ...
|
|
152
|
+
global___PushServerAppOutputsResponse = PushServerAppOutputsResponse
|
|
@@ -46,6 +46,16 @@ class DriverStub(object):
|
|
|
46
46
|
request_serializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.SerializeToString,
|
|
47
47
|
response_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
|
|
48
48
|
)
|
|
49
|
+
self.PullServerAppInputs = channel.unary_unary(
|
|
50
|
+
'/flwr.proto.Driver/PullServerAppInputs',
|
|
51
|
+
request_serializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.SerializeToString,
|
|
52
|
+
response_deserializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.FromString,
|
|
53
|
+
)
|
|
54
|
+
self.PushServerAppOutputs = channel.unary_unary(
|
|
55
|
+
'/flwr.proto.Driver/PushServerAppOutputs',
|
|
56
|
+
request_serializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.SerializeToString,
|
|
57
|
+
response_deserializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.FromString,
|
|
58
|
+
)
|
|
49
59
|
|
|
50
60
|
|
|
51
61
|
class DriverServicer(object):
|
|
@@ -93,6 +103,20 @@ class DriverServicer(object):
|
|
|
93
103
|
context.set_details('Method not implemented!')
|
|
94
104
|
raise NotImplementedError('Method not implemented!')
|
|
95
105
|
|
|
106
|
+
def PullServerAppInputs(self, request, context):
|
|
107
|
+
"""Pull ServerApp inputs
|
|
108
|
+
"""
|
|
109
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
110
|
+
context.set_details('Method not implemented!')
|
|
111
|
+
raise NotImplementedError('Method not implemented!')
|
|
112
|
+
|
|
113
|
+
def PushServerAppOutputs(self, request, context):
|
|
114
|
+
"""Push ServerApp outputs
|
|
115
|
+
"""
|
|
116
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
117
|
+
context.set_details('Method not implemented!')
|
|
118
|
+
raise NotImplementedError('Method not implemented!')
|
|
119
|
+
|
|
96
120
|
|
|
97
121
|
def add_DriverServicer_to_server(servicer, server):
|
|
98
122
|
rpc_method_handlers = {
|
|
@@ -126,6 +150,16 @@ def add_DriverServicer_to_server(servicer, server):
|
|
|
126
150
|
request_deserializer=flwr_dot_proto_dot_fab__pb2.GetFabRequest.FromString,
|
|
127
151
|
response_serializer=flwr_dot_proto_dot_fab__pb2.GetFabResponse.SerializeToString,
|
|
128
152
|
),
|
|
153
|
+
'PullServerAppInputs': grpc.unary_unary_rpc_method_handler(
|
|
154
|
+
servicer.PullServerAppInputs,
|
|
155
|
+
request_deserializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.FromString,
|
|
156
|
+
response_serializer=flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.SerializeToString,
|
|
157
|
+
),
|
|
158
|
+
'PushServerAppOutputs': grpc.unary_unary_rpc_method_handler(
|
|
159
|
+
servicer.PushServerAppOutputs,
|
|
160
|
+
request_deserializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.FromString,
|
|
161
|
+
response_serializer=flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.SerializeToString,
|
|
162
|
+
),
|
|
129
163
|
}
|
|
130
164
|
generic_handler = grpc.method_handlers_generic_handler(
|
|
131
165
|
'flwr.proto.Driver', rpc_method_handlers)
|
|
@@ -237,3 +271,37 @@ class Driver(object):
|
|
|
237
271
|
flwr_dot_proto_dot_fab__pb2.GetFabResponse.FromString,
|
|
238
272
|
options, channel_credentials,
|
|
239
273
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
274
|
+
|
|
275
|
+
@staticmethod
|
|
276
|
+
def PullServerAppInputs(request,
|
|
277
|
+
target,
|
|
278
|
+
options=(),
|
|
279
|
+
channel_credentials=None,
|
|
280
|
+
call_credentials=None,
|
|
281
|
+
insecure=False,
|
|
282
|
+
compression=None,
|
|
283
|
+
wait_for_ready=None,
|
|
284
|
+
timeout=None,
|
|
285
|
+
metadata=None):
|
|
286
|
+
return grpc.experimental.unary_unary(request, target, '/flwr.proto.Driver/PullServerAppInputs',
|
|
287
|
+
flwr_dot_proto_dot_driver__pb2.PullServerAppInputsRequest.SerializeToString,
|
|
288
|
+
flwr_dot_proto_dot_driver__pb2.PullServerAppInputsResponse.FromString,
|
|
289
|
+
options, channel_credentials,
|
|
290
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
291
|
+
|
|
292
|
+
@staticmethod
|
|
293
|
+
def PushServerAppOutputs(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(request, target, '/flwr.proto.Driver/PushServerAppOutputs',
|
|
304
|
+
flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsRequest.SerializeToString,
|
|
305
|
+
flwr_dot_proto_dot_driver__pb2.PushServerAppOutputsResponse.FromString,
|
|
306
|
+
options, channel_credentials,
|
|
307
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
|
@@ -40,6 +40,16 @@ class DriverStub:
|
|
|
40
40
|
flwr.proto.fab_pb2.GetFabResponse]
|
|
41
41
|
"""Get FAB"""
|
|
42
42
|
|
|
43
|
+
PullServerAppInputs: grpc.UnaryUnaryMultiCallable[
|
|
44
|
+
flwr.proto.driver_pb2.PullServerAppInputsRequest,
|
|
45
|
+
flwr.proto.driver_pb2.PullServerAppInputsResponse]
|
|
46
|
+
"""Pull ServerApp inputs"""
|
|
47
|
+
|
|
48
|
+
PushServerAppOutputs: grpc.UnaryUnaryMultiCallable[
|
|
49
|
+
flwr.proto.driver_pb2.PushServerAppOutputsRequest,
|
|
50
|
+
flwr.proto.driver_pb2.PushServerAppOutputsResponse]
|
|
51
|
+
"""Push ServerApp outputs"""
|
|
52
|
+
|
|
43
53
|
|
|
44
54
|
class DriverServicer(metaclass=abc.ABCMeta):
|
|
45
55
|
@abc.abstractmethod
|
|
@@ -90,5 +100,21 @@ class DriverServicer(metaclass=abc.ABCMeta):
|
|
|
90
100
|
"""Get FAB"""
|
|
91
101
|
pass
|
|
92
102
|
|
|
103
|
+
@abc.abstractmethod
|
|
104
|
+
def PullServerAppInputs(self,
|
|
105
|
+
request: flwr.proto.driver_pb2.PullServerAppInputsRequest,
|
|
106
|
+
context: grpc.ServicerContext,
|
|
107
|
+
) -> flwr.proto.driver_pb2.PullServerAppInputsResponse:
|
|
108
|
+
"""Pull ServerApp inputs"""
|
|
109
|
+
pass
|
|
110
|
+
|
|
111
|
+
@abc.abstractmethod
|
|
112
|
+
def PushServerAppOutputs(self,
|
|
113
|
+
request: flwr.proto.driver_pb2.PushServerAppOutputsRequest,
|
|
114
|
+
context: grpc.ServicerContext,
|
|
115
|
+
) -> flwr.proto.driver_pb2.PushServerAppOutputsResponse:
|
|
116
|
+
"""Push ServerApp outputs"""
|
|
117
|
+
pass
|
|
118
|
+
|
|
93
119
|
|
|
94
120
|
def add_DriverServicer_to_server(servicer: DriverServicer, server: grpc.Server) -> None: ...
|
{flwr_nightly-1.13.0.dev20241023 → flwr_nightly-1.13.0.dev20241024}/src/py/flwr/server/app.py
RENAMED
|
@@ -64,7 +64,7 @@ from flwr.proto.fleet_pb2_grpc import ( # pylint: disable=E0611
|
|
|
64
64
|
)
|
|
65
65
|
from flwr.proto.grpcadapter_pb2_grpc import add_GrpcAdapterServicer_to_server
|
|
66
66
|
from flwr.superexec.app import load_executor
|
|
67
|
-
from flwr.superexec.exec_grpc import
|
|
67
|
+
from flwr.superexec.exec_grpc import run_exec_api_grpc
|
|
68
68
|
|
|
69
69
|
from .client_manager import ClientManager
|
|
70
70
|
from .history import History
|
|
@@ -329,8 +329,10 @@ def run_superlink() -> None:
|
|
|
329
329
|
raise ValueError(f"Unknown fleet_api_type: {args.fleet_api_type}")
|
|
330
330
|
|
|
331
331
|
# Start Exec API
|
|
332
|
-
exec_server: grpc.Server =
|
|
332
|
+
exec_server: grpc.Server = run_exec_api_grpc(
|
|
333
333
|
address=exec_address,
|
|
334
|
+
state_factory=state_factory,
|
|
335
|
+
ffs_factory=ffs_factory,
|
|
334
336
|
executor=load_executor(args),
|
|
335
337
|
certificates=certificates,
|
|
336
338
|
config=parse_config_args(
|
|
@@ -34,7 +34,6 @@ from flwr.common.config import (
|
|
|
34
34
|
from flwr.common.constant import DRIVER_API_DEFAULT_ADDRESS
|
|
35
35
|
from flwr.common.logger import log, update_console_handler, warn_deprecated_feature
|
|
36
36
|
from flwr.common.object_ref import load_app
|
|
37
|
-
from flwr.common.typing import UserConfig
|
|
38
37
|
from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
|
|
39
38
|
from flwr.proto.run_pb2 import ( # pylint: disable=E0611
|
|
40
39
|
CreateRunRequest,
|
|
@@ -46,13 +45,14 @@ from .driver.grpc_driver import GrpcDriver
|
|
|
46
45
|
from .server_app import LoadServerAppError, ServerApp
|
|
47
46
|
|
|
48
47
|
|
|
48
|
+
# pylint: disable-next=too-many-arguments,too-many-positional-arguments
|
|
49
49
|
def run(
|
|
50
50
|
driver: Driver,
|
|
51
|
+
context: Context,
|
|
51
52
|
server_app_dir: str,
|
|
52
|
-
server_app_run_config: UserConfig,
|
|
53
53
|
server_app_attr: Optional[str] = None,
|
|
54
54
|
loaded_server_app: Optional[ServerApp] = None,
|
|
55
|
-
) ->
|
|
55
|
+
) -> Context:
|
|
56
56
|
"""Run ServerApp with a given Driver."""
|
|
57
57
|
if not (server_app_attr is None) ^ (loaded_server_app is None):
|
|
58
58
|
raise ValueError(
|
|
@@ -78,15 +78,11 @@ def run(
|
|
|
78
78
|
|
|
79
79
|
server_app = _load()
|
|
80
80
|
|
|
81
|
-
# Initialize Context
|
|
82
|
-
context = Context(
|
|
83
|
-
node_id=0, node_config={}, state=RecordSet(), run_config=server_app_run_config
|
|
84
|
-
)
|
|
85
|
-
|
|
86
81
|
# Call ServerApp
|
|
87
82
|
server_app(driver=driver, context=context)
|
|
88
83
|
|
|
89
84
|
log(DEBUG, "ServerApp finished running.")
|
|
85
|
+
return context
|
|
90
86
|
|
|
91
87
|
|
|
92
88
|
# pylint: disable-next=too-many-branches,too-many-statements,too-many-locals
|
|
@@ -225,11 +221,19 @@ def run_server_app() -> None:
|
|
|
225
221
|
root_certificates,
|
|
226
222
|
)
|
|
227
223
|
|
|
224
|
+
# Initialize Context
|
|
225
|
+
context = Context(
|
|
226
|
+
node_id=0,
|
|
227
|
+
node_config={},
|
|
228
|
+
state=RecordSet(),
|
|
229
|
+
run_config=server_app_run_config,
|
|
230
|
+
)
|
|
231
|
+
|
|
228
232
|
# Run the ServerApp with the Driver
|
|
229
233
|
run(
|
|
230
234
|
driver=driver,
|
|
235
|
+
context=context,
|
|
231
236
|
server_app_dir=app_path,
|
|
232
|
-
server_app_run_config=server_app_run_config,
|
|
233
237
|
server_app_attr=server_app_attr,
|
|
234
238
|
)
|
|
235
239
|
|
|
@@ -34,8 +34,12 @@ from flwr.proto import driver_pb2_grpc # pylint: disable=E0611
|
|
|
34
34
|
from flwr.proto.driver_pb2 import ( # pylint: disable=E0611
|
|
35
35
|
GetNodesRequest,
|
|
36
36
|
GetNodesResponse,
|
|
37
|
+
PullServerAppInputsRequest,
|
|
38
|
+
PullServerAppInputsResponse,
|
|
37
39
|
PullTaskResRequest,
|
|
38
40
|
PullTaskResResponse,
|
|
41
|
+
PushServerAppOutputsRequest,
|
|
42
|
+
PushServerAppOutputsResponse,
|
|
39
43
|
PushTaskInsRequest,
|
|
40
44
|
PushTaskInsResponse,
|
|
41
45
|
)
|
|
@@ -200,6 +204,18 @@ class DriverServicer(driver_pb2_grpc.DriverServicer):
|
|
|
200
204
|
|
|
201
205
|
raise ValueError(f"Found no FAB with hash: {request.hash_str}")
|
|
202
206
|
|
|
207
|
+
def PullServerAppInputs(
|
|
208
|
+
self, request: PullServerAppInputsRequest, context: grpc.ServicerContext
|
|
209
|
+
) -> PullServerAppInputsResponse:
|
|
210
|
+
"""Pull ServerApp process inputs."""
|
|
211
|
+
raise NotImplementedError()
|
|
212
|
+
|
|
213
|
+
def PushServerAppOutputs(
|
|
214
|
+
self, request: PushServerAppOutputsRequest, context: grpc.ServicerContext
|
|
215
|
+
) -> PushServerAppOutputsResponse:
|
|
216
|
+
"""Push ServerApp process outputs."""
|
|
217
|
+
raise NotImplementedError()
|
|
218
|
+
|
|
203
219
|
|
|
204
220
|
def _raise_if(validation_error: bool, detail: str) -> None:
|
|
205
221
|
if validation_error:
|
|
@@ -22,7 +22,7 @@ from logging import ERROR, WARNING
|
|
|
22
22
|
from typing import Optional
|
|
23
23
|
from uuid import UUID, uuid4
|
|
24
24
|
|
|
25
|
-
from flwr.common import log, now
|
|
25
|
+
from flwr.common import Context, log, now
|
|
26
26
|
from flwr.common.constant import (
|
|
27
27
|
MESSAGE_TTL_TOLERANCE,
|
|
28
28
|
NODE_ID_NUM_BYTES,
|
|
@@ -65,6 +65,7 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
|
|
|
65
65
|
|
|
66
66
|
# Map run_id to RunRecord
|
|
67
67
|
self.run_ids: dict[int, RunRecord] = {}
|
|
68
|
+
self.contexts: dict[int, Context] = {}
|
|
68
69
|
self.task_ins_store: dict[UUID, TaskIns] = {}
|
|
69
70
|
self.task_res_store: dict[UUID, TaskRes] = {}
|
|
70
71
|
|
|
@@ -500,3 +501,13 @@ class InMemoryLinkState(LinkState): # pylint: disable=R0902,R0904
|
|
|
500
501
|
self.node_ids[node_id] = (time.time() + ping_interval, ping_interval)
|
|
501
502
|
return True
|
|
502
503
|
return False
|
|
504
|
+
|
|
505
|
+
def get_serverapp_context(self, run_id: int) -> Optional[Context]:
|
|
506
|
+
"""Get the context for the specified `run_id`."""
|
|
507
|
+
return self.contexts.get(run_id)
|
|
508
|
+
|
|
509
|
+
def set_serverapp_context(self, run_id: int, context: Context) -> None:
|
|
510
|
+
"""Set the context for the specified `run_id`."""
|
|
511
|
+
if run_id not in self.run_ids:
|
|
512
|
+
raise ValueError(f"Run {run_id} not found")
|
|
513
|
+
self.contexts[run_id] = context
|
|
@@ -19,6 +19,7 @@ import abc
|
|
|
19
19
|
from typing import Optional
|
|
20
20
|
from uuid import UUID
|
|
21
21
|
|
|
22
|
+
from flwr.common import Context
|
|
22
23
|
from flwr.common.typing import Run, RunStatus, UserConfig
|
|
23
24
|
from flwr.proto.task_pb2 import TaskIns, TaskRes # pylint: disable=E0611
|
|
24
25
|
|
|
@@ -270,3 +271,31 @@ class LinkState(abc.ABC): # pylint: disable=R0904
|
|
|
270
271
|
is_acknowledged : bool
|
|
271
272
|
True if the ping is successfully acknowledged; otherwise, False.
|
|
272
273
|
"""
|
|
274
|
+
|
|
275
|
+
@abc.abstractmethod
|
|
276
|
+
def get_serverapp_context(self, run_id: int) -> Optional[Context]:
|
|
277
|
+
"""Get the context for the specified `run_id`.
|
|
278
|
+
|
|
279
|
+
Parameters
|
|
280
|
+
----------
|
|
281
|
+
run_id : int
|
|
282
|
+
The identifier of the run for which to retrieve the context.
|
|
283
|
+
|
|
284
|
+
Returns
|
|
285
|
+
-------
|
|
286
|
+
Optional[Context]
|
|
287
|
+
The context associated with the specified `run_id`, or `None` if no context
|
|
288
|
+
exists for the given `run_id`.
|
|
289
|
+
"""
|
|
290
|
+
|
|
291
|
+
@abc.abstractmethod
|
|
292
|
+
def set_serverapp_context(self, run_id: int, context: Context) -> None:
|
|
293
|
+
"""Set the context for the specified `run_id`.
|
|
294
|
+
|
|
295
|
+
Parameters
|
|
296
|
+
----------
|
|
297
|
+
run_id : int
|
|
298
|
+
The identifier of the run for which to set the context.
|
|
299
|
+
context : Context
|
|
300
|
+
The context to be associated with the specified `run_id`.
|
|
301
|
+
"""
|
|
@@ -19,13 +19,14 @@
|
|
|
19
19
|
import json
|
|
20
20
|
import re
|
|
21
21
|
import sqlite3
|
|
22
|
+
import threading
|
|
22
23
|
import time
|
|
23
24
|
from collections.abc import Sequence
|
|
24
25
|
from logging import DEBUG, ERROR, WARNING
|
|
25
26
|
from typing import Any, Optional, Union, cast
|
|
26
27
|
from uuid import UUID, uuid4
|
|
27
28
|
|
|
28
|
-
from flwr.common import log, now
|
|
29
|
+
from flwr.common import Context, log, now
|
|
29
30
|
from flwr.common.constant import (
|
|
30
31
|
MESSAGE_TTL_TOLERANCE,
|
|
31
32
|
NODE_ID_NUM_BYTES,
|
|
@@ -33,13 +34,19 @@ from flwr.common.constant import (
|
|
|
33
34
|
Status,
|
|
34
35
|
)
|
|
35
36
|
from flwr.common.typing import Run, RunStatus, UserConfig
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
from flwr.proto.
|
|
37
|
+
|
|
38
|
+
# pylint: disable=E0611
|
|
39
|
+
from flwr.proto.node_pb2 import Node
|
|
40
|
+
from flwr.proto.recordset_pb2 import RecordSet as ProtoRecordSet
|
|
41
|
+
from flwr.proto.task_pb2 import Task, TaskIns, TaskRes
|
|
42
|
+
|
|
43
|
+
# pylint: enable=E0611
|
|
39
44
|
from flwr.server.utils.validator import validate_task_ins_or_res
|
|
40
45
|
|
|
41
46
|
from .linkstate import LinkState
|
|
42
47
|
from .utils import (
|
|
48
|
+
context_from_bytes,
|
|
49
|
+
context_to_bytes,
|
|
43
50
|
convert_sint64_to_uint64,
|
|
44
51
|
convert_sint64_values_in_dict_to_uint64,
|
|
45
52
|
convert_uint64_to_sint64,
|
|
@@ -92,6 +99,14 @@ CREATE TABLE IF NOT EXISTS run(
|
|
|
92
99
|
);
|
|
93
100
|
"""
|
|
94
101
|
|
|
102
|
+
SQL_CREATE_TABLE_CONTEXT = """
|
|
103
|
+
CREATE TABLE IF NOT EXISTS context(
|
|
104
|
+
run_id INTEGER UNIQUE,
|
|
105
|
+
context BLOB,
|
|
106
|
+
FOREIGN KEY(run_id) REFERENCES run(run_id)
|
|
107
|
+
);
|
|
108
|
+
"""
|
|
109
|
+
|
|
95
110
|
SQL_CREATE_TABLE_TASK_INS = """
|
|
96
111
|
CREATE TABLE IF NOT EXISTS task_ins(
|
|
97
112
|
task_id TEXT UNIQUE,
|
|
@@ -152,6 +167,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
|
152
167
|
"""
|
|
153
168
|
self.database_path = database_path
|
|
154
169
|
self.conn: Optional[sqlite3.Connection] = None
|
|
170
|
+
self.lock = threading.RLock()
|
|
155
171
|
|
|
156
172
|
def initialize(self, log_queries: bool = False) -> list[tuple[str]]:
|
|
157
173
|
"""Create tables if they don't exist yet.
|
|
@@ -175,6 +191,7 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
|
175
191
|
|
|
176
192
|
# Create each table if not exists queries
|
|
177
193
|
cur.execute(SQL_CREATE_TABLE_RUN)
|
|
194
|
+
cur.execute(SQL_CREATE_TABLE_CONTEXT)
|
|
178
195
|
cur.execute(SQL_CREATE_TABLE_TASK_INS)
|
|
179
196
|
cur.execute(SQL_CREATE_TABLE_TASK_RES)
|
|
180
197
|
cur.execute(SQL_CREATE_TABLE_NODE)
|
|
@@ -970,6 +987,34 @@ class SqliteLinkState(LinkState): # pylint: disable=R0904
|
|
|
970
987
|
log(ERROR, "`node_id` does not exist.")
|
|
971
988
|
return False
|
|
972
989
|
|
|
990
|
+
def get_serverapp_context(self, run_id: int) -> Optional[Context]:
|
|
991
|
+
"""Get the context for the specified `run_id`."""
|
|
992
|
+
# Retrieve context if any
|
|
993
|
+
query = "SELECT context FROM context WHERE run_id = ?;"
|
|
994
|
+
rows = self.query(query, (convert_uint64_to_sint64(run_id),))
|
|
995
|
+
context = context_from_bytes(rows[0]["context"]) if rows else None
|
|
996
|
+
return context
|
|
997
|
+
|
|
998
|
+
def set_serverapp_context(self, run_id: int, context: Context) -> None:
|
|
999
|
+
"""Set the context for the specified `run_id`."""
|
|
1000
|
+
# Convert context to bytes
|
|
1001
|
+
context_bytes = context_to_bytes(context)
|
|
1002
|
+
sint_run_id = convert_uint64_to_sint64(run_id)
|
|
1003
|
+
|
|
1004
|
+
# Check if any existing Context assigned to the run_id
|
|
1005
|
+
query = "SELECT COUNT(*) FROM context WHERE run_id = ?;"
|
|
1006
|
+
if self.query(query, (sint_run_id,))[0]["COUNT(*)"] > 0:
|
|
1007
|
+
# Update context
|
|
1008
|
+
query = "UPDATE context SET context = ? WHERE run_id = ?;"
|
|
1009
|
+
self.query(query, (context_bytes, sint_run_id))
|
|
1010
|
+
else:
|
|
1011
|
+
try:
|
|
1012
|
+
# Store context
|
|
1013
|
+
query = "INSERT INTO context (run_id, context) VALUES (?, ?);"
|
|
1014
|
+
self.query(query, (sint_run_id, context_bytes))
|
|
1015
|
+
except sqlite3.IntegrityError:
|
|
1016
|
+
raise ValueError(f"Run {run_id} not found") from None
|
|
1017
|
+
|
|
973
1018
|
def get_valid_task_ins(self, task_id: str) -> Optional[dict[str, Any]]:
|
|
974
1019
|
"""Check if the TaskIns exists and is valid (not expired).
|
|
975
1020
|
|
|
@@ -1054,7 +1099,7 @@ def task_res_to_dict(task_msg: TaskRes) -> dict[str, Any]:
|
|
|
1054
1099
|
|
|
1055
1100
|
def dict_to_task_ins(task_dict: dict[str, Any]) -> TaskIns:
|
|
1056
1101
|
"""Turn task_dict into protobuf message."""
|
|
1057
|
-
recordset =
|
|
1102
|
+
recordset = ProtoRecordSet()
|
|
1058
1103
|
recordset.ParseFromString(task_dict["recordset"])
|
|
1059
1104
|
|
|
1060
1105
|
result = TaskIns(
|
|
@@ -1084,7 +1129,7 @@ def dict_to_task_ins(task_dict: dict[str, Any]) -> TaskIns:
|
|
|
1084
1129
|
|
|
1085
1130
|
def dict_to_task_res(task_dict: dict[str, Any]) -> TaskRes:
|
|
1086
1131
|
"""Turn task_dict into protobuf message."""
|
|
1087
|
-
recordset =
|
|
1132
|
+
recordset = ProtoRecordSet()
|
|
1088
1133
|
recordset.ParseFromString(task_dict["recordset"])
|
|
1089
1134
|
|
|
1090
1135
|
result = TaskRes(
|
|
@@ -20,10 +20,11 @@ from logging import ERROR
|
|
|
20
20
|
from os import urandom
|
|
21
21
|
from uuid import uuid4
|
|
22
22
|
|
|
23
|
-
from flwr.common import log
|
|
23
|
+
from flwr.common import Context, log, serde
|
|
24
24
|
from flwr.common.constant import ErrorCode, Status, SubStatus
|
|
25
25
|
from flwr.common.typing import RunStatus
|
|
26
26
|
from flwr.proto.error_pb2 import Error # pylint: disable=E0611
|
|
27
|
+
from flwr.proto.message_pb2 import Context as ProtoContext # pylint: disable=E0611
|
|
27
28
|
from flwr.proto.node_pb2 import Node # pylint: disable=E0611
|
|
28
29
|
from flwr.proto.task_pb2 import Task, TaskIns, TaskRes # pylint: disable=E0611
|
|
29
30
|
|
|
@@ -135,6 +136,16 @@ def convert_sint64_values_in_dict_to_uint64(
|
|
|
135
136
|
data_dict[key] = convert_sint64_to_uint64(data_dict[key])
|
|
136
137
|
|
|
137
138
|
|
|
139
|
+
def context_to_bytes(context: Context) -> bytes:
|
|
140
|
+
"""Serialize `Context` to bytes."""
|
|
141
|
+
return serde.context_to_proto(context).SerializeToString()
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def context_from_bytes(context_bytes: bytes) -> Context:
|
|
145
|
+
"""Deserialize `Context` from bytes."""
|
|
146
|
+
return serde.context_from_proto(ProtoContext.FromString(context_bytes))
|
|
147
|
+
|
|
148
|
+
|
|
138
149
|
def make_node_unavailable_taskres(ref_taskins: TaskIns) -> TaskRes:
|
|
139
150
|
"""Generate a TaskRes with a node unavailable error from a TaskIns."""
|
|
140
151
|
current_time = time.time()
|
|
@@ -29,7 +29,7 @@ from typing import Any, Optional
|
|
|
29
29
|
|
|
30
30
|
from flwr.cli.config_utils import load_and_validate
|
|
31
31
|
from flwr.client import ClientApp
|
|
32
|
-
from flwr.common import EventType, event, log, now
|
|
32
|
+
from flwr.common import Context, EventType, RecordSet, event, log, now
|
|
33
33
|
from flwr.common.config import get_fused_config_from_dir, parse_config_args
|
|
34
34
|
from flwr.common.constant import RUN_ID_NUM_BYTES, Status
|
|
35
35
|
from flwr.common.logger import (
|
|
@@ -40,7 +40,7 @@ from flwr.common.logger import (
|
|
|
40
40
|
)
|
|
41
41
|
from flwr.common.typing import Run, RunStatus, UserConfig
|
|
42
42
|
from flwr.server.driver import Driver, InMemoryDriver
|
|
43
|
-
from flwr.server.run_serverapp import run as
|
|
43
|
+
from flwr.server.run_serverapp import run as _run
|
|
44
44
|
from flwr.server.server_app import ServerApp
|
|
45
45
|
from flwr.server.superlink.fleet import vce
|
|
46
46
|
from flwr.server.superlink.fleet.vce.backend.backend import BackendConfig
|
|
@@ -333,11 +333,19 @@ def run_serverapp_th(
|
|
|
333
333
|
log(INFO, "Enabling GPU growth for Tensorflow on the server thread.")
|
|
334
334
|
enable_gpu_growth()
|
|
335
335
|
|
|
336
|
+
# Initialize Context
|
|
337
|
+
context = Context(
|
|
338
|
+
node_id=0,
|
|
339
|
+
node_config={},
|
|
340
|
+
state=RecordSet(),
|
|
341
|
+
run_config=_server_app_run_config,
|
|
342
|
+
)
|
|
343
|
+
|
|
336
344
|
# Run ServerApp
|
|
337
|
-
|
|
345
|
+
_run(
|
|
338
346
|
driver=_driver,
|
|
347
|
+
context=context,
|
|
339
348
|
server_app_dir=_server_app_dir,
|
|
340
|
-
server_app_run_config=_server_app_run_config,
|
|
341
349
|
server_app_attr=_server_app_attr,
|
|
342
350
|
loaded_server_app=_server_app,
|
|
343
351
|
)
|