flwr-nightly 1.20.0.dev20250716__tar.gz → 1.20.0.dev20250718__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.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/PKG-INFO +1 -1
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/inflatable_protobuf_utils.py +40 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/inflatable_utils.py +78 -1
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/array.py +2 -2
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/serde.py +0 -28
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/client/app.py +14 -31
- flwr_nightly-1.20.0.dev20250718/py/flwr/proto/appio_pb2.py +47 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/appio_pb2.pyi +21 -22
- flwr_nightly-1.20.0.dev20250718/py/flwr/proto/clientappio_pb2.py +38 -0
- flwr_nightly-1.20.0.dev20250718/py/flwr/proto/clientappio_pb2.pyi +54 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/clientappio_pb2_grpc.py +128 -24
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/clientappio_pb2_grpc.pyi +57 -16
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/fleet_event_log_interceptor.py +4 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/grid/grpc_grid.py +5 -2
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +2 -5
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +5 -9
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/exec_event_log_interceptor.py +4 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/exec_license_interceptor.py +4 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/exec_user_auth_interceptor.py +4 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/runtime/run_clientapp.py +21 -15
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +94 -25
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/pyproject.toml +1 -1
- flwr_nightly-1.20.0.dev20250716/py/flwr/proto/appio_pb2.py +0 -51
- flwr_nightly-1.20.0.dev20250716/py/flwr/proto/clientappio_pb2.py +0 -57
- flwr_nightly-1.20.0.dev20250716/py/flwr/proto/clientappio_pb2.pyi +0 -196
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/README.md +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/clientapp/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/heartbeat.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supercore/utils.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superexec/simulation.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/supernode/start_client_internal.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.20.0.
|
3
|
+
Version: 1.20.0.dev20250718
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
@@ -18,6 +18,8 @@
|
|
18
18
|
from typing import Callable
|
19
19
|
|
20
20
|
from flwr.proto.message_pb2 import ( # pylint: disable=E0611
|
21
|
+
ConfirmMessageReceivedRequest,
|
22
|
+
ConfirmMessageReceivedResponse,
|
21
23
|
PullObjectRequest,
|
22
24
|
PullObjectResponse,
|
23
25
|
PushObjectRequest,
|
@@ -27,6 +29,10 @@ from flwr.proto.node_pb2 import Node # pylint: disable=E0611
|
|
27
29
|
|
28
30
|
from .inflatable_utils import ObjectIdNotPreregisteredError, ObjectUnavailableError
|
29
31
|
|
32
|
+
ConfirmMessageReceivedProtobuf = Callable[
|
33
|
+
[ConfirmMessageReceivedRequest], ConfirmMessageReceivedResponse
|
34
|
+
]
|
35
|
+
|
30
36
|
|
31
37
|
def make_pull_object_fn_protobuf(
|
32
38
|
pull_object_protobuf: Callable[[PullObjectRequest], PullObjectResponse],
|
@@ -99,3 +105,37 @@ def make_push_object_fn_protobuf(
|
|
99
105
|
raise ObjectIdNotPreregisteredError(object_id)
|
100
106
|
|
101
107
|
return push_object_fn
|
108
|
+
|
109
|
+
|
110
|
+
def make_confirm_message_received_fn_protobuf(
|
111
|
+
confirm_message_received_protobuf: ConfirmMessageReceivedProtobuf,
|
112
|
+
node: Node,
|
113
|
+
run_id: int,
|
114
|
+
) -> Callable[[str], None]:
|
115
|
+
"""Create a confirm message received function that uses protobuf.
|
116
|
+
|
117
|
+
Parameters
|
118
|
+
----------
|
119
|
+
confirm_message_received_protobuf : ConfirmMessageReceivedProtobuf
|
120
|
+
A callable that takes a `ConfirmMessageReceivedRequest` and returns a
|
121
|
+
`ConfirmMessageReceivedResponse`, confirming message receipt.
|
122
|
+
This function is typically backed by a gRPC client stub.
|
123
|
+
node : Node
|
124
|
+
The node making the request.
|
125
|
+
run_id : int
|
126
|
+
The run ID for the current message.
|
127
|
+
|
128
|
+
Returns
|
129
|
+
-------
|
130
|
+
Callable[[str], None]
|
131
|
+
A wrapper function that takes an object ID and confirms that
|
132
|
+
the message has been received.
|
133
|
+
"""
|
134
|
+
|
135
|
+
def confirm_message_received_fn(object_id: str) -> None:
|
136
|
+
request = ConfirmMessageReceivedRequest(
|
137
|
+
node=node, run_id=run_id, message_object_id=object_id
|
138
|
+
)
|
139
|
+
confirm_message_received_protobuf(request)
|
140
|
+
|
141
|
+
return confirm_message_received_fn
|
@@ -19,7 +19,9 @@ import os
|
|
19
19
|
import random
|
20
20
|
import threading
|
21
21
|
import time
|
22
|
-
from typing import Callable, Optional
|
22
|
+
from typing import Callable, Optional, TypeVar
|
23
|
+
|
24
|
+
from flwr.proto.message_pb2 import ObjectTree # pylint: disable=E0611
|
23
25
|
|
24
26
|
from .constant import (
|
25
27
|
HEAD_BODY_DIVIDER,
|
@@ -38,6 +40,7 @@ from .inflatable import (
|
|
38
40
|
get_object_head_values_from_object_content,
|
39
41
|
get_object_id,
|
40
42
|
is_valid_sha256_hash,
|
43
|
+
iterate_object_tree,
|
41
44
|
)
|
42
45
|
from .message import Message
|
43
46
|
from .record import Array, ArrayRecord, ConfigRecord, MetricRecord, RecordDict
|
@@ -54,6 +57,8 @@ inflatable_class_registry: dict[str, type[InflatableObject]] = {
|
|
54
57
|
RecordDict.__qualname__: RecordDict,
|
55
58
|
}
|
56
59
|
|
60
|
+
T = TypeVar("T", bound=InflatableObject)
|
61
|
+
|
57
62
|
|
58
63
|
class ObjectUnavailableError(Exception):
|
59
64
|
"""Exception raised when an object has been pre-registered but is not yet
|
@@ -348,3 +353,75 @@ def validate_object_content(content: bytes) -> None:
|
|
348
353
|
raise UnexpectedObjectContentError(
|
349
354
|
object_id=get_object_id(content), reason=str(err)
|
350
355
|
) from err
|
356
|
+
|
357
|
+
|
358
|
+
def pull_and_inflate_object_from_tree( # pylint: disable=R0913
|
359
|
+
object_tree: ObjectTree,
|
360
|
+
pull_object_fn: Callable[[str], bytes],
|
361
|
+
confirm_object_received_fn: Callable[[str], None],
|
362
|
+
*,
|
363
|
+
return_type: type[T] = InflatableObject, # type: ignore
|
364
|
+
max_concurrent_pulls: int = MAX_CONCURRENT_PULLS,
|
365
|
+
max_time: Optional[float] = PULL_MAX_TIME,
|
366
|
+
max_tries_per_object: Optional[int] = PULL_MAX_TRIES_PER_OBJECT,
|
367
|
+
initial_backoff: float = PULL_INITIAL_BACKOFF,
|
368
|
+
backoff_cap: float = PULL_BACKOFF_CAP,
|
369
|
+
) -> T:
|
370
|
+
"""Pull and inflate the head object from the provided object tree.
|
371
|
+
|
372
|
+
Parameters
|
373
|
+
----------
|
374
|
+
object_tree : ObjectTree
|
375
|
+
The object tree containing the object ID and its descendants.
|
376
|
+
pull_object_fn : Callable[[str], bytes]
|
377
|
+
A function that takes an object ID and returns the object content as bytes.
|
378
|
+
confirm_object_received_fn : Callable[[str], None]
|
379
|
+
A function to confirm that the object has been received.
|
380
|
+
return_type : type[T] (default: InflatableObject)
|
381
|
+
The type of the object to return. Must be a subclass of `InflatableObject`.
|
382
|
+
max_concurrent_pulls : int (default: MAX_CONCURRENT_PULLS)
|
383
|
+
The maximum number of concurrent pulls to perform.
|
384
|
+
max_time : Optional[float] (default: PULL_MAX_TIME)
|
385
|
+
The maximum time to wait for all pulls to complete. If `None`, waits
|
386
|
+
indefinitely.
|
387
|
+
max_tries_per_object : Optional[int] (default: PULL_MAX_TRIES_PER_OBJECT)
|
388
|
+
The maximum number of attempts to pull each object. If `None`, pulls
|
389
|
+
indefinitely until the object is available.
|
390
|
+
initial_backoff : float (default: PULL_INITIAL_BACKOFF)
|
391
|
+
The initial backoff time in seconds for retrying pulls after an
|
392
|
+
`ObjectUnavailableError`.
|
393
|
+
backoff_cap : float (default: PULL_BACKOFF_CAP)
|
394
|
+
The maximum backoff time in seconds. Backoff times will not exceed this value.
|
395
|
+
|
396
|
+
Returns
|
397
|
+
-------
|
398
|
+
T
|
399
|
+
An instance of the specified return type containing the inflated object.
|
400
|
+
"""
|
401
|
+
# Pull the main object and all its descendants
|
402
|
+
pulled_object_contents = pull_objects(
|
403
|
+
[tree.object_id for tree in iterate_object_tree(object_tree)],
|
404
|
+
pull_object_fn,
|
405
|
+
max_concurrent_pulls=max_concurrent_pulls,
|
406
|
+
max_time=max_time,
|
407
|
+
max_tries_per_object=max_tries_per_object,
|
408
|
+
initial_backoff=initial_backoff,
|
409
|
+
backoff_cap=backoff_cap,
|
410
|
+
)
|
411
|
+
|
412
|
+
# Confirm that all objects were pulled
|
413
|
+
confirm_object_received_fn(object_tree.object_id)
|
414
|
+
|
415
|
+
# Inflate the main object
|
416
|
+
inflated_object = inflate_object_from_contents(
|
417
|
+
object_tree.object_id, pulled_object_contents, keep_object_contents=False
|
418
|
+
)
|
419
|
+
|
420
|
+
# Check if the inflated object is of the expected type
|
421
|
+
if not isinstance(inflated_object, return_type):
|
422
|
+
raise TypeError(
|
423
|
+
f"Expected object of type {return_type.__name__}, "
|
424
|
+
f"but got {type(inflated_object).__name__}."
|
425
|
+
)
|
426
|
+
|
427
|
+
return inflated_object
|
{flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/common/record/array.py
RENAMED
@@ -321,8 +321,8 @@ class Array(InflatableObject):
|
|
321
321
|
Array
|
322
322
|
The inflated Array.
|
323
323
|
"""
|
324
|
-
if
|
325
|
-
|
324
|
+
if children is None:
|
325
|
+
children = {}
|
326
326
|
|
327
327
|
obj_body = get_object_body(object_content, cls)
|
328
328
|
|
@@ -19,7 +19,6 @@ from collections import OrderedDict
|
|
19
19
|
from typing import Any, cast
|
20
20
|
|
21
21
|
# pylint: disable=E0611
|
22
|
-
from flwr.proto.clientappio_pb2 import ClientAppOutputCode, ClientAppOutputStatus
|
23
22
|
from flwr.proto.fab_pb2 import Fab as ProtoFab
|
24
23
|
from flwr.proto.message_pb2 import Context as ProtoContext
|
25
24
|
from flwr.proto.message_pb2 import Message as ProtoMessage
|
@@ -653,33 +652,6 @@ def run_from_proto(run_proto: ProtoRun) -> typing.Run:
|
|
653
652
|
return run
|
654
653
|
|
655
654
|
|
656
|
-
# === ClientApp status messages ===
|
657
|
-
|
658
|
-
|
659
|
-
def clientappstatus_to_proto(
|
660
|
-
status: typing.ClientAppOutputStatus,
|
661
|
-
) -> ClientAppOutputStatus:
|
662
|
-
"""Serialize `ClientAppOutputStatus` to ProtoBuf."""
|
663
|
-
code = ClientAppOutputCode.SUCCESS
|
664
|
-
if status.code == typing.ClientAppOutputCode.DEADLINE_EXCEEDED:
|
665
|
-
code = ClientAppOutputCode.DEADLINE_EXCEEDED
|
666
|
-
if status.code == typing.ClientAppOutputCode.UNKNOWN_ERROR:
|
667
|
-
code = ClientAppOutputCode.UNKNOWN_ERROR
|
668
|
-
return ClientAppOutputStatus(code=code, message=status.message)
|
669
|
-
|
670
|
-
|
671
|
-
def clientappstatus_from_proto(
|
672
|
-
msg: ClientAppOutputStatus,
|
673
|
-
) -> typing.ClientAppOutputStatus:
|
674
|
-
"""Deserialize `ClientAppOutputStatus` from ProtoBuf."""
|
675
|
-
code = typing.ClientAppOutputCode.SUCCESS
|
676
|
-
if msg.code == ClientAppOutputCode.DEADLINE_EXCEEDED:
|
677
|
-
code = typing.ClientAppOutputCode.DEADLINE_EXCEEDED
|
678
|
-
if msg.code == ClientAppOutputCode.UNKNOWN_ERROR:
|
679
|
-
code = typing.ClientAppOutputCode.UNKNOWN_ERROR
|
680
|
-
return typing.ClientAppOutputStatus(code=code, message=msg.message)
|
681
|
-
|
682
|
-
|
683
655
|
# === Run status ===
|
684
656
|
|
685
657
|
|
{flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/compat/client/app.py
RENAMED
@@ -29,8 +29,6 @@ from flwr.cli.config_utils import get_fab_metadata
|
|
29
29
|
from flwr.cli.install import install_from_fab
|
30
30
|
from flwr.client.client import Client
|
31
31
|
from flwr.client.client_app import ClientApp, LoadClientAppError
|
32
|
-
from flwr.client.grpc_adapter_client.connection import grpc_adapter
|
33
|
-
from flwr.client.grpc_rere_client.connection import grpc_request_response
|
34
32
|
from flwr.client.message_handler.message_handler import handle_control_message
|
35
33
|
from flwr.client.numpy_client import NumPyClient
|
36
34
|
from flwr.client.run_info_store import DeprecatedRunInfoStore
|
@@ -39,10 +37,7 @@ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, Context, EventType, Message, ev
|
|
39
37
|
from flwr.common.address import parse_address
|
40
38
|
from flwr.common.constant import (
|
41
39
|
MAX_RETRY_DELAY,
|
42
|
-
TRANSPORT_TYPE_GRPC_ADAPTER,
|
43
40
|
TRANSPORT_TYPE_GRPC_BIDI,
|
44
|
-
TRANSPORT_TYPE_GRPC_RERE,
|
45
|
-
TRANSPORT_TYPE_REST,
|
46
41
|
TRANSPORT_TYPES,
|
47
42
|
ErrorCode,
|
48
43
|
)
|
@@ -121,10 +116,8 @@ def start_client(
|
|
121
116
|
Starts an insecure gRPC connection when True. Enables HTTPS connection
|
122
117
|
when False, using system certificates if `root_certificates` is None.
|
123
118
|
transport : Optional[str] (default: None)
|
124
|
-
|
125
|
-
|
126
|
-
- 'grpc-rere': gRPC, request-response (experimental)
|
127
|
-
- 'rest': HTTP (experimental)
|
119
|
+
**[Deprecated]** This argument is no longer supported and will be
|
120
|
+
removed in a future release.
|
128
121
|
authentication_keys : Optional[Tuple[PrivateKey, PublicKey]] (default: None)
|
129
122
|
Tuple containing the elliptic curve private key and public key for
|
130
123
|
authentication from the cryptography library.
|
@@ -180,6 +173,12 @@ def start_client(
|
|
180
173
|
)
|
181
174
|
warn_deprecated_feature(name=msg)
|
182
175
|
|
176
|
+
if transport is not None and transport != "grpc-bidi":
|
177
|
+
raise ValueError(
|
178
|
+
f"Transport type {transport} is not supported. "
|
179
|
+
"Use 'grpc-bidi' or None (default) instead."
|
180
|
+
)
|
181
|
+
|
183
182
|
event(EventType.START_CLIENT_ENTER)
|
184
183
|
start_client_internal(
|
185
184
|
server_address=server_address,
|
@@ -429,7 +428,7 @@ def start_client_internal(
|
|
429
428
|
|
430
429
|
run: Run = runs[run_id]
|
431
430
|
if get_fab is not None and run.fab_hash:
|
432
|
-
fab = get_fab(run.fab_hash, run_id)
|
431
|
+
fab = get_fab(run.fab_hash, run_id) # pylint: disable=E1102
|
433
432
|
# If `ClientApp` runs in the same process, install the FAB
|
434
433
|
install_from_fab(fab.content, flwr_path, True)
|
435
434
|
fab_id, fab_version = get_fab_metadata(fab.content)
|
@@ -573,10 +572,8 @@ def start_numpy_client(
|
|
573
572
|
Starts an insecure gRPC connection when True. Enables HTTPS connection
|
574
573
|
when False, using system certificates if `root_certificates` is None.
|
575
574
|
transport : Optional[str] (default: None)
|
576
|
-
|
577
|
-
|
578
|
-
- 'grpc-rere': gRPC, request-response (experimental)
|
579
|
-
- 'rest': HTTP (experimental)
|
575
|
+
**[Deprecated]** This argument is no longer supported and will be
|
576
|
+
removed in a future release.
|
580
577
|
|
581
578
|
Examples
|
582
579
|
--------
|
@@ -672,23 +669,9 @@ def _init_connection(transport: Optional[str], server_address: str) -> tuple[
|
|
672
669
|
if transport is None:
|
673
670
|
transport = TRANSPORT_TYPE_GRPC_BIDI
|
674
671
|
|
675
|
-
# Use
|
676
|
-
if transport ==
|
677
|
-
|
678
|
-
from requests.exceptions import ConnectionError as RequestsConnectionError
|
679
|
-
|
680
|
-
from flwr.client.rest_client.connection import http_request_response
|
681
|
-
except ModuleNotFoundError:
|
682
|
-
flwr_exit(ExitCode.COMMON_MISSING_EXTRA_REST)
|
683
|
-
if server_address[:4] != "http":
|
684
|
-
flwr_exit(ExitCode.SUPERNODE_REST_ADDRESS_INVALID)
|
685
|
-
connection, error_type = http_request_response, RequestsConnectionError
|
686
|
-
elif transport == TRANSPORT_TYPE_GRPC_RERE:
|
687
|
-
connection, error_type = grpc_request_response, RpcError
|
688
|
-
elif transport == TRANSPORT_TYPE_GRPC_ADAPTER:
|
689
|
-
connection, error_type = grpc_adapter, RpcError
|
690
|
-
elif transport == TRANSPORT_TYPE_GRPC_BIDI:
|
691
|
-
connection, error_type = grpc_connection, RpcError # type: ignore[assignment]
|
672
|
+
# Use gRPC bidirectional streaming
|
673
|
+
if transport == TRANSPORT_TYPE_GRPC_BIDI:
|
674
|
+
connection, error_type = grpc_connection, RpcError
|
692
675
|
else:
|
693
676
|
raise ValueError(
|
694
677
|
f"Unknown transport type: {transport} (possible: {TRANSPORT_TYPES})"
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: flwr/proto/appio.proto
|
4
|
+
# Protobuf Python Version: 4.25.1
|
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 message_pb2 as flwr_dot_proto_dot_message__pb2
|
16
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
17
|
+
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
18
|
+
|
19
|
+
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x66lwr/proto/appio.proto\x12\nflwr.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\"\x99\x01\n\x16PushAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12*\n\rmessages_list\x18\x02 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\x12\x34\n\x14message_object_trees\x18\x04 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"\xcc\x01\n\x17PushAppMessagesResponse\x12\x13\n\x0bmessage_ids\x18\x01 \x03(\t\x12O\n\x0fobjects_to_push\x18\x02 \x03(\x0b\x32\x36.flwr.proto.PushAppMessagesResponse.ObjectsToPushEntry\x1aK\n\x12ObjectsToPushEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12$\n\x05value\x18\x02 \x01(\x0b\x32\x15.flwr.proto.ObjectIDs:\x02\x38\x01\"L\n\x16PullAppMessagesRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x13\n\x0bmessage_ids\x18\x02 \x03(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\"{\n\x17PullAppMessagesResponse\x12*\n\rmessages_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.Message\x12\x34\n\x14message_object_trees\x18\x02 \x03(\x0b\x32\x16.flwr.proto.ObjectTree\"%\n\x14PullAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\"y\n\x15PullAppInputsResponse\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\"\\\n\x15PushAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\x04\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"\x18\n\x16PushAppOutputsResponseb\x06proto3')
|
21
|
+
|
22
|
+
_globals = globals()
|
23
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
24
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.appio_pb2', _globals)
|
25
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
26
|
+
DESCRIPTOR._options = None
|
27
|
+
_globals['_PUSHAPPMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._options = None
|
28
|
+
_globals['_PUSHAPPMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._serialized_options = b'8\001'
|
29
|
+
_globals['_PUSHAPPMESSAGESREQUEST']._serialized_start=109
|
30
|
+
_globals['_PUSHAPPMESSAGESREQUEST']._serialized_end=262
|
31
|
+
_globals['_PUSHAPPMESSAGESRESPONSE']._serialized_start=265
|
32
|
+
_globals['_PUSHAPPMESSAGESRESPONSE']._serialized_end=469
|
33
|
+
_globals['_PUSHAPPMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._serialized_start=394
|
34
|
+
_globals['_PUSHAPPMESSAGESRESPONSE_OBJECTSTOPUSHENTRY']._serialized_end=469
|
35
|
+
_globals['_PULLAPPMESSAGESREQUEST']._serialized_start=471
|
36
|
+
_globals['_PULLAPPMESSAGESREQUEST']._serialized_end=547
|
37
|
+
_globals['_PULLAPPMESSAGESRESPONSE']._serialized_start=549
|
38
|
+
_globals['_PULLAPPMESSAGESRESPONSE']._serialized_end=672
|
39
|
+
_globals['_PULLAPPINPUTSREQUEST']._serialized_start=674
|
40
|
+
_globals['_PULLAPPINPUTSREQUEST']._serialized_end=711
|
41
|
+
_globals['_PULLAPPINPUTSRESPONSE']._serialized_start=713
|
42
|
+
_globals['_PULLAPPINPUTSRESPONSE']._serialized_end=834
|
43
|
+
_globals['_PUSHAPPOUTPUTSREQUEST']._serialized_start=836
|
44
|
+
_globals['_PUSHAPPOUTPUTSREQUEST']._serialized_end=928
|
45
|
+
_globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_start=930
|
46
|
+
_globals['_PUSHAPPOUTPUTSRESPONSE']._serialized_end=954
|
47
|
+
# @@protoc_insertion_point(module_scope)
|
{flwr_nightly-1.20.0.dev20250716 → flwr_nightly-1.20.0.dev20250718}/py/flwr/proto/appio_pb2.pyi
RENAMED
@@ -20,9 +20,11 @@ class PushAppMessagesRequest(google.protobuf.message.Message):
|
|
20
20
|
PushAppMessages messages
|
21
21
|
"""
|
22
22
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
23
|
+
TOKEN_FIELD_NUMBER: builtins.int
|
23
24
|
MESSAGES_LIST_FIELD_NUMBER: builtins.int
|
24
25
|
RUN_ID_FIELD_NUMBER: builtins.int
|
25
26
|
MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
|
27
|
+
token: typing.Text
|
26
28
|
@property
|
27
29
|
def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
|
28
30
|
run_id: builtins.int
|
@@ -30,11 +32,12 @@ class PushAppMessagesRequest(google.protobuf.message.Message):
|
|
30
32
|
def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
|
31
33
|
def __init__(self,
|
32
34
|
*,
|
35
|
+
token: typing.Text = ...,
|
33
36
|
messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
|
34
37
|
run_id: builtins.int = ...,
|
35
38
|
message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
|
36
39
|
) -> None: ...
|
37
|
-
def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","run_id",b"run_id"]) -> None: ...
|
40
|
+
def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list","run_id",b"run_id","token",b"token"]) -> None: ...
|
38
41
|
global___PushAppMessagesRequest = PushAppMessagesRequest
|
39
42
|
|
40
43
|
class PushAppMessagesResponse(google.protobuf.message.Message):
|
@@ -71,55 +74,48 @@ global___PushAppMessagesResponse = PushAppMessagesResponse
|
|
71
74
|
class PullAppMessagesRequest(google.protobuf.message.Message):
|
72
75
|
"""PullAppMessages messages"""
|
73
76
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
77
|
+
TOKEN_FIELD_NUMBER: builtins.int
|
74
78
|
MESSAGE_IDS_FIELD_NUMBER: builtins.int
|
75
79
|
RUN_ID_FIELD_NUMBER: builtins.int
|
80
|
+
token: typing.Text
|
76
81
|
@property
|
77
82
|
def message_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
78
83
|
run_id: builtins.int
|
79
84
|
def __init__(self,
|
80
85
|
*,
|
86
|
+
token: typing.Text = ...,
|
81
87
|
message_ids: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
82
88
|
run_id: builtins.int = ...,
|
83
89
|
) -> None: ...
|
84
|
-
def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","run_id",b"run_id"]) -> None: ...
|
90
|
+
def ClearField(self, field_name: typing_extensions.Literal["message_ids",b"message_ids","run_id",b"run_id","token",b"token"]) -> None: ...
|
85
91
|
global___PullAppMessagesRequest = PullAppMessagesRequest
|
86
92
|
|
87
93
|
class PullAppMessagesResponse(google.protobuf.message.Message):
|
88
94
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
89
|
-
class ObjectsToPullEntry(google.protobuf.message.Message):
|
90
|
-
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
91
|
-
KEY_FIELD_NUMBER: builtins.int
|
92
|
-
VALUE_FIELD_NUMBER: builtins.int
|
93
|
-
key: typing.Text
|
94
|
-
@property
|
95
|
-
def value(self) -> flwr.proto.message_pb2.ObjectIDs: ...
|
96
|
-
def __init__(self,
|
97
|
-
*,
|
98
|
-
key: typing.Text = ...,
|
99
|
-
value: typing.Optional[flwr.proto.message_pb2.ObjectIDs] = ...,
|
100
|
-
) -> None: ...
|
101
|
-
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
102
|
-
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
103
|
-
|
104
95
|
MESSAGES_LIST_FIELD_NUMBER: builtins.int
|
105
|
-
|
96
|
+
MESSAGE_OBJECT_TREES_FIELD_NUMBER: builtins.int
|
106
97
|
@property
|
107
98
|
def messages_list(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.Message]: ...
|
108
99
|
@property
|
109
|
-
def
|
100
|
+
def message_object_trees(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flwr.proto.message_pb2.ObjectTree]: ...
|
110
101
|
def __init__(self,
|
111
102
|
*,
|
112
103
|
messages_list: typing.Optional[typing.Iterable[flwr.proto.message_pb2.Message]] = ...,
|
113
|
-
|
104
|
+
message_object_trees: typing.Optional[typing.Iterable[flwr.proto.message_pb2.ObjectTree]] = ...,
|
114
105
|
) -> None: ...
|
115
|
-
def ClearField(self, field_name: typing_extensions.Literal["
|
106
|
+
def ClearField(self, field_name: typing_extensions.Literal["message_object_trees",b"message_object_trees","messages_list",b"messages_list"]) -> None: ...
|
116
107
|
global___PullAppMessagesResponse = PullAppMessagesResponse
|
117
108
|
|
118
109
|
class PullAppInputsRequest(google.protobuf.message.Message):
|
119
110
|
"""PullAppInputs messages"""
|
120
111
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
112
|
+
TOKEN_FIELD_NUMBER: builtins.int
|
113
|
+
token: typing.Text
|
121
114
|
def __init__(self,
|
115
|
+
*,
|
116
|
+
token: typing.Text = ...,
|
122
117
|
) -> None: ...
|
118
|
+
def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
|
123
119
|
global___PullAppInputsRequest = PullAppInputsRequest
|
124
120
|
|
125
121
|
class PullAppInputsResponse(google.protobuf.message.Message):
|
@@ -146,18 +142,21 @@ global___PullAppInputsResponse = PullAppInputsResponse
|
|
146
142
|
class PushAppOutputsRequest(google.protobuf.message.Message):
|
147
143
|
"""PushAppInputs messages"""
|
148
144
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
145
|
+
TOKEN_FIELD_NUMBER: builtins.int
|
149
146
|
RUN_ID_FIELD_NUMBER: builtins.int
|
150
147
|
CONTEXT_FIELD_NUMBER: builtins.int
|
148
|
+
token: typing.Text
|
151
149
|
run_id: builtins.int
|
152
150
|
@property
|
153
151
|
def context(self) -> flwr.proto.message_pb2.Context: ...
|
154
152
|
def __init__(self,
|
155
153
|
*,
|
154
|
+
token: typing.Text = ...,
|
156
155
|
run_id: builtins.int = ...,
|
157
156
|
context: typing.Optional[flwr.proto.message_pb2.Context] = ...,
|
158
157
|
) -> None: ...
|
159
158
|
def HasField(self, field_name: typing_extensions.Literal["context",b"context"]) -> builtins.bool: ...
|
160
|
-
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id"]) -> None: ...
|
159
|
+
def ClearField(self, field_name: typing_extensions.Literal["context",b"context","run_id",b"run_id","token",b"token"]) -> None: ...
|
161
160
|
global___PushAppOutputsRequest = PushAppOutputsRequest
|
162
161
|
|
163
162
|
class PushAppOutputsResponse(google.protobuf.message.Message):
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: flwr/proto/clientappio.proto
|
4
|
+
# Protobuf Python Version: 4.25.1
|
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 fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
16
|
+
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
17
|
+
from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
|
18
|
+
from flwr.proto import appio_pb2 as flwr_dot_proto_dot_appio__pb2
|
19
|
+
|
20
|
+
|
21
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\x1a\x16\x66lwr/proto/appio.proto\"%\n#GetRunIdsWithPendingMessagesRequest\"7\n$GetRunIdsWithPendingMessagesResponse\x12\x0f\n\x07run_ids\x18\x01 \x03(\x04\"%\n\x13RequestTokenRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"%\n\x14RequestTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t2\xec\x06\n\x0b\x43lientAppIo\x12\x83\x01\n\x1cGetRunIdsWithPendingMessages\x12/.flwr.proto.GetRunIdsWithPendingMessagesRequest\x1a\x30.flwr.proto.GetRunIdsWithPendingMessagesResponse\"\x00\x12S\n\x0cRequestToken\x12\x1f.flwr.proto.RequestTokenRequest\x1a .flwr.proto.RequestTokenResponse\"\x00\x12\\\n\x13PullClientAppInputs\x12 .flwr.proto.PullAppInputsRequest\x1a!.flwr.proto.PullAppInputsResponse\"\x00\x12_\n\x14PushClientAppOutputs\x12!.flwr.proto.PushAppOutputsRequest\x1a\".flwr.proto.PushAppOutputsResponse\"\x00\x12X\n\x0bPushMessage\x12\".flwr.proto.PushAppMessagesRequest\x1a#.flwr.proto.PushAppMessagesResponse\"\x00\x12X\n\x0bPullMessage\x12\".flwr.proto.PullAppMessagesRequest\x1a#.flwr.proto.PullAppMessagesResponse\"\x00\x12M\n\nPushObject\x12\x1d.flwr.proto.PushObjectRequest\x1a\x1e.flwr.proto.PushObjectResponse\"\x00\x12M\n\nPullObject\x12\x1d.flwr.proto.PullObjectRequest\x1a\x1e.flwr.proto.PullObjectResponse\"\x00\x12q\n\x16\x43onfirmMessageReceived\x12).flwr.proto.ConfirmMessageReceivedRequest\x1a*.flwr.proto.ConfirmMessageReceivedResponse\"\x00\x62\x06proto3')
|
22
|
+
|
23
|
+
_globals = globals()
|
24
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
25
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.clientappio_pb2', _globals)
|
26
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
27
|
+
DESCRIPTOR._options = None
|
28
|
+
_globals['_GETRUNIDSWITHPENDINGMESSAGESREQUEST']._serialized_start=138
|
29
|
+
_globals['_GETRUNIDSWITHPENDINGMESSAGESREQUEST']._serialized_end=175
|
30
|
+
_globals['_GETRUNIDSWITHPENDINGMESSAGESRESPONSE']._serialized_start=177
|
31
|
+
_globals['_GETRUNIDSWITHPENDINGMESSAGESRESPONSE']._serialized_end=232
|
32
|
+
_globals['_REQUESTTOKENREQUEST']._serialized_start=234
|
33
|
+
_globals['_REQUESTTOKENREQUEST']._serialized_end=271
|
34
|
+
_globals['_REQUESTTOKENRESPONSE']._serialized_start=273
|
35
|
+
_globals['_REQUESTTOKENRESPONSE']._serialized_end=310
|
36
|
+
_globals['_CLIENTAPPIO']._serialized_start=313
|
37
|
+
_globals['_CLIENTAPPIO']._serialized_end=1189
|
38
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"""
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
3
|
+
isort:skip_file
|
4
|
+
"""
|
5
|
+
import builtins
|
6
|
+
import google.protobuf.descriptor
|
7
|
+
import google.protobuf.internal.containers
|
8
|
+
import google.protobuf.message
|
9
|
+
import typing
|
10
|
+
import typing_extensions
|
11
|
+
|
12
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
13
|
+
|
14
|
+
class GetRunIdsWithPendingMessagesRequest(google.protobuf.message.Message):
|
15
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
16
|
+
def __init__(self,
|
17
|
+
) -> None: ...
|
18
|
+
global___GetRunIdsWithPendingMessagesRequest = GetRunIdsWithPendingMessagesRequest
|
19
|
+
|
20
|
+
class GetRunIdsWithPendingMessagesResponse(google.protobuf.message.Message):
|
21
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
22
|
+
RUN_IDS_FIELD_NUMBER: builtins.int
|
23
|
+
@property
|
24
|
+
def run_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
|
25
|
+
"""List of run IDs"""
|
26
|
+
pass
|
27
|
+
def __init__(self,
|
28
|
+
*,
|
29
|
+
run_ids: typing.Optional[typing.Iterable[builtins.int]] = ...,
|
30
|
+
) -> None: ...
|
31
|
+
def ClearField(self, field_name: typing_extensions.Literal["run_ids",b"run_ids"]) -> None: ...
|
32
|
+
global___GetRunIdsWithPendingMessagesResponse = GetRunIdsWithPendingMessagesResponse
|
33
|
+
|
34
|
+
class RequestTokenRequest(google.protobuf.message.Message):
|
35
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
36
|
+
RUN_ID_FIELD_NUMBER: builtins.int
|
37
|
+
run_id: builtins.int
|
38
|
+
def __init__(self,
|
39
|
+
*,
|
40
|
+
run_id: builtins.int = ...,
|
41
|
+
) -> None: ...
|
42
|
+
def ClearField(self, field_name: typing_extensions.Literal["run_id",b"run_id"]) -> None: ...
|
43
|
+
global___RequestTokenRequest = RequestTokenRequest
|
44
|
+
|
45
|
+
class RequestTokenResponse(google.protobuf.message.Message):
|
46
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
47
|
+
TOKEN_FIELD_NUMBER: builtins.int
|
48
|
+
token: typing.Text
|
49
|
+
def __init__(self,
|
50
|
+
*,
|
51
|
+
token: typing.Text = ...,
|
52
|
+
) -> None: ...
|
53
|
+
def ClearField(self, field_name: typing_extensions.Literal["token",b"token"]) -> None: ...
|
54
|
+
global___RequestTokenResponse = RequestTokenResponse
|