flwr-nightly 1.9.0.dev20240524__tar.gz → 1.9.0.dev20240528__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.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/PKG-INFO +2 -1
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/README.md +1 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/pyproject.toml +2 -2
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/app.py +70 -150
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/LICENSE +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.hf.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/task.hf.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.hf.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/node_state.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/node_state_tests.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/state.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/superlink/state/utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/simulation/run_simulation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.9.0.
|
|
3
|
+
Version: 1.9.0.dev20240528
|
|
4
4
|
Summary: Flower: A Friendly Federated Learning Framework
|
|
5
5
|
Home-page: https://flower.ai
|
|
6
6
|
License: Apache-2.0
|
|
@@ -203,6 +203,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
203
203
|
- [Flower through Docker Compose and with Grafana dashboard](https://github.com/adap/flower/tree/main/examples/flower-via-docker-compose)
|
|
204
204
|
- [Flower with KaplanMeierFitter from the lifelines library](https://github.com/adap/flower/tree/main/examples/federated-kaplan-meier-fitter)
|
|
205
205
|
- [Sample Level Privacy with Opacus](https://github.com/adap/flower/tree/main/examples/opacus)
|
|
206
|
+
- [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
|
|
206
207
|
|
|
207
208
|
## Community
|
|
208
209
|
|
|
@@ -152,6 +152,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
152
152
|
- [Flower through Docker Compose and with Grafana dashboard](https://github.com/adap/flower/tree/main/examples/flower-via-docker-compose)
|
|
153
153
|
- [Flower with KaplanMeierFitter from the lifelines library](https://github.com/adap/flower/tree/main/examples/federated-kaplan-meier-fitter)
|
|
154
154
|
- [Sample Level Privacy with Opacus](https://github.com/adap/flower/tree/main/examples/opacus)
|
|
155
|
+
- [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
|
|
155
156
|
|
|
156
157
|
## Community
|
|
157
158
|
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.9.0.
|
|
7
|
+
version = "1.9.0.dev20240528"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
@@ -81,7 +81,7 @@ starlette = { version = "^0.31.0", optional = true }
|
|
|
81
81
|
uvicorn = { version = "^0.23.0", extras = ["standard"], optional = true }
|
|
82
82
|
|
|
83
83
|
[tool.poetry.extras]
|
|
84
|
-
simulation = ["ray"
|
|
84
|
+
simulation = ["ray"]
|
|
85
85
|
rest = ["requests", "starlette", "uvicorn"]
|
|
86
86
|
|
|
87
87
|
[tool.poetry.group.dev.dependencies]
|
|
@@ -15,15 +15,14 @@
|
|
|
15
15
|
"""Flower server app."""
|
|
16
16
|
|
|
17
17
|
import argparse
|
|
18
|
-
import asyncio
|
|
19
18
|
import csv
|
|
20
19
|
import importlib.util
|
|
21
20
|
import sys
|
|
22
21
|
import threading
|
|
23
|
-
from logging import
|
|
22
|
+
from logging import INFO, WARN
|
|
24
23
|
from os.path import isfile
|
|
25
24
|
from pathlib import Path
|
|
26
|
-
from typing import
|
|
25
|
+
from typing import Optional, Sequence, Set, Tuple
|
|
27
26
|
|
|
28
27
|
import grpc
|
|
29
28
|
from cryptography.exceptions import UnsupportedAlgorithm
|
|
@@ -39,7 +38,6 @@ from flwr.common.constant import (
|
|
|
39
38
|
MISSING_EXTRA_REST,
|
|
40
39
|
TRANSPORT_TYPE_GRPC_RERE,
|
|
41
40
|
TRANSPORT_TYPE_REST,
|
|
42
|
-
TRANSPORT_TYPE_VCE,
|
|
43
41
|
)
|
|
44
42
|
from flwr.common.exit_handlers import register_exit_handlers
|
|
45
43
|
from flwr.common.logger import log, warn_deprecated_feature
|
|
@@ -63,7 +61,6 @@ from .superlink.fleet.grpc_bidi.grpc_server import (
|
|
|
63
61
|
)
|
|
64
62
|
from .superlink.fleet.grpc_rere.fleet_servicer import FleetServicer
|
|
65
63
|
from .superlink.fleet.grpc_rere.server_interceptor import AuthenticateServerInterceptor
|
|
66
|
-
from .superlink.fleet.vce import start_vce
|
|
67
64
|
from .superlink.state import StateFactory
|
|
68
65
|
|
|
69
66
|
ADDRESS_DRIVER_API = "0.0.0.0:9091"
|
|
@@ -349,6 +346,9 @@ def run_superlink() -> None:
|
|
|
349
346
|
sys.exit(MISSING_EXTRA_REST)
|
|
350
347
|
address_arg = args.rest_fleet_api_address
|
|
351
348
|
parsed_address = parse_address(address_arg)
|
|
349
|
+
_, ssl_certfile, ssl_keyfile = (
|
|
350
|
+
certificates if certificates is not None else (None, None, None)
|
|
351
|
+
)
|
|
352
352
|
if not parsed_address:
|
|
353
353
|
sys.exit(f"Fleet IP address ({address_arg}) cannot be parsed.")
|
|
354
354
|
host, port, _ = parsed_address
|
|
@@ -357,8 +357,8 @@ def run_superlink() -> None:
|
|
|
357
357
|
args=(
|
|
358
358
|
host,
|
|
359
359
|
port,
|
|
360
|
-
|
|
361
|
-
|
|
360
|
+
ssl_keyfile,
|
|
361
|
+
ssl_certfile,
|
|
362
362
|
state_factory,
|
|
363
363
|
args.rest_fleet_api_workers,
|
|
364
364
|
),
|
|
@@ -401,17 +401,6 @@ def run_superlink() -> None:
|
|
|
401
401
|
interceptors=interceptors,
|
|
402
402
|
)
|
|
403
403
|
grpc_servers.append(fleet_server)
|
|
404
|
-
elif args.fleet_api_type == TRANSPORT_TYPE_VCE:
|
|
405
|
-
f_stop = asyncio.Event() # Does nothing
|
|
406
|
-
_run_fleet_api_vce(
|
|
407
|
-
num_supernodes=args.num_supernodes,
|
|
408
|
-
client_app_attr=args.client_app,
|
|
409
|
-
backend_name=args.backend,
|
|
410
|
-
backend_config_json_stream=args.backend_config,
|
|
411
|
-
app_dir=args.app_dir,
|
|
412
|
-
state_factory=state_factory,
|
|
413
|
-
f_stop=f_stop,
|
|
414
|
-
)
|
|
415
404
|
else:
|
|
416
405
|
raise ValueError(f"Unknown fleet_api_type: {args.fleet_api_type}")
|
|
417
406
|
|
|
@@ -456,8 +445,8 @@ def _try_setup_client_authentication(
|
|
|
456
445
|
if certificates is None:
|
|
457
446
|
sys.exit(
|
|
458
447
|
"Authentication requires secure connections. "
|
|
459
|
-
"Please provide certificate paths
|
|
460
|
-
"try again."
|
|
448
|
+
"Please provide certificate paths to `--ssl-certfile`, "
|
|
449
|
+
"`--ssl-keyfile`, and `—-ssl-ca-certfile` and try again."
|
|
461
450
|
)
|
|
462
451
|
|
|
463
452
|
client_keys_file_path = Path(args.auth_list_public_keys)
|
|
@@ -526,21 +515,52 @@ def _try_obtain_certificates(
|
|
|
526
515
|
# Obtain certificates
|
|
527
516
|
if args.insecure:
|
|
528
517
|
log(WARN, "Option `--insecure` was set. Starting insecure HTTP server.")
|
|
529
|
-
|
|
518
|
+
return None
|
|
530
519
|
# Check if certificates are provided
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
520
|
+
if args.fleet_api_type == TRANSPORT_TYPE_GRPC_RERE:
|
|
521
|
+
if args.ssl_certfile and args.ssl_keyfile and args.ssl_ca_certfile:
|
|
522
|
+
if not isfile(args.ssl_ca_certfile):
|
|
523
|
+
sys.exit("Path argument `--ssl-ca-certfile` does not point to a file.")
|
|
524
|
+
if not isfile(args.ssl_certfile):
|
|
525
|
+
sys.exit("Path argument `--ssl-certfile` does not point to a file.")
|
|
526
|
+
if not isfile(args.ssl_keyfile):
|
|
527
|
+
sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
|
|
528
|
+
certificates = (
|
|
529
|
+
Path(args.ssl_ca_certfile).read_bytes(), # CA certificate
|
|
530
|
+
Path(args.ssl_certfile).read_bytes(), # server certificate
|
|
531
|
+
Path(args.ssl_keyfile).read_bytes(), # server private key
|
|
532
|
+
)
|
|
533
|
+
return certificates
|
|
534
|
+
if args.ssl_certfile or args.ssl_keyfile or args.ssl_ca_certfile:
|
|
535
|
+
sys.exit(
|
|
536
|
+
"You need to provide valid file paths to `--ssl-certfile`, "
|
|
537
|
+
"`--ssl-keyfile`, and `—-ssl-ca-certfile` to create a secure "
|
|
538
|
+
"connection in Fleet API server (gRPC-rere)."
|
|
539
|
+
)
|
|
540
|
+
if args.fleet_api_type == TRANSPORT_TYPE_REST:
|
|
541
|
+
if args.ssl_certfile and args.ssl_keyfile:
|
|
542
|
+
if not isfile(args.ssl_certfile):
|
|
543
|
+
sys.exit("Path argument `--ssl-certfile` does not point to a file.")
|
|
544
|
+
if not isfile(args.ssl_keyfile):
|
|
545
|
+
sys.exit("Path argument `--ssl-keyfile` does not point to a file.")
|
|
546
|
+
certificates = (
|
|
547
|
+
b"",
|
|
548
|
+
Path(args.ssl_certfile).read_bytes(), # server certificate
|
|
549
|
+
Path(args.ssl_keyfile).read_bytes(), # server private key
|
|
550
|
+
)
|
|
551
|
+
return certificates
|
|
552
|
+
if args.ssl_certfile or args.ssl_keyfile:
|
|
553
|
+
sys.exit(
|
|
554
|
+
"You need to provide valid file paths to `--ssl-certfile` "
|
|
555
|
+
"and `--ssl-keyfile` to create a secure connection "
|
|
556
|
+
"in Fleet API server (REST, experimental)."
|
|
557
|
+
)
|
|
558
|
+
sys.exit(
|
|
559
|
+
"Certificates are required unless running in insecure mode. "
|
|
560
|
+
"Please provide certificate paths to `--ssl-certfile`, "
|
|
561
|
+
"`--ssl-keyfile`, and `—-ssl-ca-certfile` or run the server "
|
|
562
|
+
"in insecure mode using '--insecure' if you understand the risks."
|
|
563
|
+
)
|
|
544
564
|
|
|
545
565
|
|
|
546
566
|
def _run_fleet_api_grpc_rere(
|
|
@@ -569,29 +589,6 @@ def _run_fleet_api_grpc_rere(
|
|
|
569
589
|
return fleet_grpc_server
|
|
570
590
|
|
|
571
591
|
|
|
572
|
-
# pylint: disable=too-many-arguments
|
|
573
|
-
def _run_fleet_api_vce(
|
|
574
|
-
num_supernodes: int,
|
|
575
|
-
client_app_attr: str,
|
|
576
|
-
backend_name: str,
|
|
577
|
-
backend_config_json_stream: str,
|
|
578
|
-
app_dir: str,
|
|
579
|
-
state_factory: StateFactory,
|
|
580
|
-
f_stop: asyncio.Event,
|
|
581
|
-
) -> None:
|
|
582
|
-
log(INFO, "Flower VCE: Starting Fleet API (VirtualClientEngine)")
|
|
583
|
-
|
|
584
|
-
start_vce(
|
|
585
|
-
num_supernodes=num_supernodes,
|
|
586
|
-
client_app_attr=client_app_attr,
|
|
587
|
-
backend_name=backend_name,
|
|
588
|
-
backend_config_json_stream=backend_config_json_stream,
|
|
589
|
-
state_factory=state_factory,
|
|
590
|
-
app_dir=app_dir,
|
|
591
|
-
f_stop=f_stop,
|
|
592
|
-
)
|
|
593
|
-
|
|
594
|
-
|
|
595
592
|
# pylint: disable=import-outside-toplevel,too-many-arguments
|
|
596
593
|
def _run_fleet_api_rest(
|
|
597
594
|
host: str,
|
|
@@ -619,14 +616,6 @@ def _run_fleet_api_rest(
|
|
|
619
616
|
# See: https://www.starlette.io/applications/#accessing-the-app-instance
|
|
620
617
|
fast_api_app.state.STATE_FACTORY = state_factory
|
|
621
618
|
|
|
622
|
-
validation_exceptions = _validate_ssl_files(
|
|
623
|
-
ssl_certfile=ssl_certfile, ssl_keyfile=ssl_keyfile
|
|
624
|
-
)
|
|
625
|
-
if any(validation_exceptions):
|
|
626
|
-
# Starting with 3.11 we can use ExceptionGroup but for now
|
|
627
|
-
# this seems to be the reasonable approach.
|
|
628
|
-
raise ValueError(validation_exceptions)
|
|
629
|
-
|
|
630
619
|
uvicorn.run(
|
|
631
620
|
app="flwr.server.superlink.fleet.rest_rere.rest_api:app",
|
|
632
621
|
port=port,
|
|
@@ -639,32 +628,6 @@ def _run_fleet_api_rest(
|
|
|
639
628
|
)
|
|
640
629
|
|
|
641
630
|
|
|
642
|
-
def _validate_ssl_files(
|
|
643
|
-
ssl_keyfile: Optional[str], ssl_certfile: Optional[str]
|
|
644
|
-
) -> List[ValueError]:
|
|
645
|
-
validation_exceptions = []
|
|
646
|
-
|
|
647
|
-
if ssl_keyfile is not None and not isfile(ssl_keyfile):
|
|
648
|
-
msg = "Path argument `--ssl-keyfile` does not point to a file."
|
|
649
|
-
log(ERROR, msg)
|
|
650
|
-
validation_exceptions.append(ValueError(msg))
|
|
651
|
-
|
|
652
|
-
if ssl_certfile is not None and not isfile(ssl_certfile):
|
|
653
|
-
msg = "Path argument `--ssl-certfile` does not point to a file."
|
|
654
|
-
log(ERROR, msg)
|
|
655
|
-
validation_exceptions.append(ValueError(msg))
|
|
656
|
-
|
|
657
|
-
if not bool(ssl_keyfile) == bool(ssl_certfile):
|
|
658
|
-
msg = (
|
|
659
|
-
"When setting one of `--ssl-keyfile` and "
|
|
660
|
-
"`--ssl-certfile`, both have to be used."
|
|
661
|
-
)
|
|
662
|
-
log(ERROR, msg)
|
|
663
|
-
validation_exceptions.append(ValueError(msg))
|
|
664
|
-
|
|
665
|
-
return validation_exceptions
|
|
666
|
-
|
|
667
|
-
|
|
668
631
|
def _parse_args_run_driver_api() -> argparse.ArgumentParser:
|
|
669
632
|
"""Parse command line arguments for Driver API."""
|
|
670
633
|
parser = argparse.ArgumentParser(
|
|
@@ -721,13 +684,23 @@ def _add_args_common(parser: argparse.ArgumentParser) -> None:
|
|
|
721
684
|
"Use this flag only if you understand the risks.",
|
|
722
685
|
)
|
|
723
686
|
parser.add_argument(
|
|
724
|
-
"--
|
|
725
|
-
|
|
726
|
-
|
|
687
|
+
"--ssl-certfile",
|
|
688
|
+
help="Fleet API server SSL certificate file (as a path str) "
|
|
689
|
+
"to create a secure connection.",
|
|
690
|
+
type=str,
|
|
691
|
+
default=None,
|
|
692
|
+
)
|
|
693
|
+
parser.add_argument(
|
|
694
|
+
"--ssl-keyfile",
|
|
695
|
+
help="Fleet API server SSL private key file (as a path str) "
|
|
696
|
+
"to create a secure connection.",
|
|
697
|
+
type=str,
|
|
698
|
+
)
|
|
699
|
+
parser.add_argument(
|
|
700
|
+
"--ssl-ca-certfile",
|
|
701
|
+
help="Fleet API server SSL CA certificate file (as a path str) "
|
|
702
|
+
"to create a secure connection.",
|
|
727
703
|
type=str,
|
|
728
|
-
help="Paths to the CA certificate, server certificate, and server private "
|
|
729
|
-
"key, in that order. Note: The server can only be started without "
|
|
730
|
-
"certificates by enabling the `--insecure` flag.",
|
|
731
704
|
)
|
|
732
705
|
parser.add_argument(
|
|
733
706
|
"--database",
|
|
@@ -783,14 +756,6 @@ def _add_args_fleet_api(parser: argparse.ArgumentParser) -> None:
|
|
|
783
756
|
help="Start a Fleet API server (REST, experimental)",
|
|
784
757
|
)
|
|
785
758
|
|
|
786
|
-
ex_group.add_argument(
|
|
787
|
-
"--vce",
|
|
788
|
-
action="store_const",
|
|
789
|
-
dest="fleet_api_type",
|
|
790
|
-
const=TRANSPORT_TYPE_VCE,
|
|
791
|
-
help="Start a Fleet API server (VirtualClientEngine)",
|
|
792
|
-
)
|
|
793
|
-
|
|
794
759
|
# Fleet API gRPC-rere options
|
|
795
760
|
grpc_rere_group = parser.add_argument_group(
|
|
796
761
|
"Fleet API (gRPC-rere) server options", ""
|
|
@@ -808,54 +773,9 @@ def _add_args_fleet_api(parser: argparse.ArgumentParser) -> None:
|
|
|
808
773
|
help="Fleet API (REST) server address (IPv4, IPv6, or a domain name)",
|
|
809
774
|
default=ADDRESS_FLEET_API_REST,
|
|
810
775
|
)
|
|
811
|
-
rest_group.add_argument(
|
|
812
|
-
"--ssl-certfile",
|
|
813
|
-
help="Fleet API (REST) server SSL certificate file (as a path str), "
|
|
814
|
-
"needed for using 'https'.",
|
|
815
|
-
default=None,
|
|
816
|
-
)
|
|
817
|
-
rest_group.add_argument(
|
|
818
|
-
"--ssl-keyfile",
|
|
819
|
-
help="Fleet API (REST) server SSL private key file (as a path str), "
|
|
820
|
-
"needed for using 'https'.",
|
|
821
|
-
default=None,
|
|
822
|
-
)
|
|
823
776
|
rest_group.add_argument(
|
|
824
777
|
"--rest-fleet-api-workers",
|
|
825
778
|
help="Set the number of concurrent workers for the Fleet API REST server.",
|
|
826
779
|
type=int,
|
|
827
780
|
default=1,
|
|
828
781
|
)
|
|
829
|
-
|
|
830
|
-
# Fleet API VCE options
|
|
831
|
-
vce_group = parser.add_argument_group("Fleet API (VCE) server options", "")
|
|
832
|
-
vce_group.add_argument(
|
|
833
|
-
"--client-app",
|
|
834
|
-
help="For example: `client:app` or `project.package.module:wrapper.app`.",
|
|
835
|
-
)
|
|
836
|
-
vce_group.add_argument(
|
|
837
|
-
"--num-supernodes",
|
|
838
|
-
type=int,
|
|
839
|
-
help="Number of simulated SuperNodes.",
|
|
840
|
-
)
|
|
841
|
-
vce_group.add_argument(
|
|
842
|
-
"--backend",
|
|
843
|
-
default="ray",
|
|
844
|
-
type=str,
|
|
845
|
-
help="Simulation backend that executes the ClientApp.",
|
|
846
|
-
)
|
|
847
|
-
vce_group.add_argument(
|
|
848
|
-
"--backend-config",
|
|
849
|
-
type=str,
|
|
850
|
-
default='{"client_resources": {"num_cpus":1, "num_gpus":0.0}, "tensorflow": 0}',
|
|
851
|
-
help='A JSON formatted stream, e.g \'{"<keyA>":<value>, "<keyB>":<value>}\' to '
|
|
852
|
-
"configure a backend. Values supported in <value> are those included by "
|
|
853
|
-
"`flwr.common.typing.ConfigsRecordValues`. ",
|
|
854
|
-
)
|
|
855
|
-
parser.add_argument(
|
|
856
|
-
"--app-dir",
|
|
857
|
-
default="",
|
|
858
|
-
help="Add specified directory to the PYTHONPATH and load"
|
|
859
|
-
"ClientApp from there."
|
|
860
|
-
" Default: current working directory.",
|
|
861
|
-
)
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/config_utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/example.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/new/new.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/run/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/cli/run/run.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/client.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/client_app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/heartbeat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/mod/utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/node_state.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/numpy_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/client/typing.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/address.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/constant.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/context.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/date.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/grpc.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/logger.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/message.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/object_ref.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/parameter.py
RENAMED
|
File without changes
|
{flwr_nightly-1.9.0.dev20240524 → flwr_nightly-1.9.0.dev20240528}/src/py/flwr/common/pyproject.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|