flwr-nightly 1.10.0.dev20240618__tar.gz → 1.10.0.dev20240620__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.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/PKG-INFO +2 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/README.md +1 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/pyproject.toml +2 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/app.py +3 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/build.py +3 -7
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/new.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/run/run.py +8 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/app.py +4 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/client_app.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/dpfedavg_numpy_client.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_rere_client/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_rere_client/connection.py +1 -1
- {flwr_nightly-1.10.0.dev20240618/src/py/flwr/server/superlink/fleet → flwr_nightly-1.10.0.dev20240620/src/py/flwr/client/message_handler}/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/message_handler/message_handler.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/__init__.py +4 -4
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/secure_aggregation/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/utils.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/rest_client/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/rest_client/connection.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/supernode/app.py +29 -6
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/address.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/config.py +8 -6
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/constant.py +5 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/date.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/dp.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/grpc.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/object_ref.py +39 -5
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/quantization.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +1 -1
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/common/version.py +42 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/app.py +47 -7
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/compat/app.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/compat/app_utils.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/compat/driver_client_proxy.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/driver/driver.py +6 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/driver/grpc_driver.py +85 -63
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/driver/inmemory_driver.py +28 -26
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/run_serverapp.py +15 -8
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/bulyan.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/dpfedavg_fixed.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedadagrad.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedadam.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedavg_android.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedavgm.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedmedian.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedopt.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedprox.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedxgb_bagging.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedxgb_cyclic.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedyogi.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/krum.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/qfedavg.py +1 -1
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/driver/__init__.py +15 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/driver/driver_grpc.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/driver/driver_servicer.py +15 -3
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/__init__.py +15 -0
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +15 -0
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +131 -0
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +15 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +5 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +1 -1
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +15 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +1 -1
- flwr_nightly-1.10.0.dev20240620/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +15 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/in_memory_state.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/sqlite_state.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/state.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/state_factory.py +11 -2
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/utils/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/utils/tensorboard.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/__init__.py +5 -2
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/app.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/ray_transport/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/run_simulation.py +15 -8
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/superexec/app.py +1 -1
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/client/message_handler/__init__.py +0 -15
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/common/version.py +0 -28
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/server/superlink/driver/__init__.py +0 -15
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -15
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -15
- flwr_nightly-1.10.0.dev20240618/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -15
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.hf.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/task.hf.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.hf.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/node_state.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/node_state_tests.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/__init__.py +12 -12
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/__init__.py +1 -1
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/__init__.py +2 -2
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/__init__.py +2 -2
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/superlink/state/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/superexec/exec_servicer.py +0 -0
- {flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/superexec/executor.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.10.0.
|
|
3
|
+
Version: 1.10.0.dev20240620
|
|
4
4
|
Summary: Flower: A Friendly Federated Learning Framework
|
|
5
5
|
Home-page: https://flower.ai
|
|
6
6
|
License: Apache-2.0
|
|
@@ -204,6 +204,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
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
206
|
- [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
|
|
207
|
+
- [Flower with a Tabular Dataset] (https://github.com/adap/flower/tree/main/examples/fl-tabular)
|
|
207
208
|
|
|
208
209
|
## Community
|
|
209
210
|
|
|
@@ -153,6 +153,7 @@ Other [examples](https://github.com/adap/flower/tree/main/examples):
|
|
|
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
155
|
- [Sample Level Privacy with TensorFlow-Privacy](https://github.com/adap/flower/tree/main/examples/tensorflow-privacy)
|
|
156
|
+
- [Flower with a Tabular Dataset] (https://github.com/adap/flower/tree/main/examples/fl-tabular)
|
|
156
157
|
|
|
157
158
|
## Community
|
|
158
159
|
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.10.0.
|
|
7
|
+
version = "1.10.0.dev20240620"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
@@ -105,6 +105,7 @@ rope = "==1.11.0"
|
|
|
105
105
|
semver = "==3.0.2"
|
|
106
106
|
sphinx = "==6.2.1"
|
|
107
107
|
sphinx-intl = "==2.2.0"
|
|
108
|
+
sphinx-click = "==5.1.0"
|
|
108
109
|
myst-parser = "==1.0.0"
|
|
109
110
|
sphinx-design = "==0.5.0"
|
|
110
111
|
sphinx-copybutton = "==0.5.2"
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"""Flower command line interface."""
|
|
16
16
|
|
|
17
17
|
import typer
|
|
18
|
+
from typer.main import get_command
|
|
18
19
|
|
|
19
20
|
from .build import build
|
|
20
21
|
from .example import example
|
|
@@ -37,5 +38,7 @@ app.command()(run)
|
|
|
37
38
|
app.command()(build)
|
|
38
39
|
app.command()(install)
|
|
39
40
|
|
|
41
|
+
typer_click_object = get_command(app)
|
|
42
|
+
|
|
40
43
|
if __name__ == "__main__":
|
|
41
44
|
app()
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/build.py
RENAMED
|
@@ -36,13 +36,9 @@ def build(
|
|
|
36
36
|
) -> str:
|
|
37
37
|
"""Build a Flower project into a Flower App Bundle (FAB).
|
|
38
38
|
|
|
39
|
-
You can run
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
You can also build a specific directory:
|
|
44
|
-
|
|
45
|
-
`flwr build --directory ./projects/flower-hello-world`
|
|
39
|
+
You can run ``flwr build`` without any arguments to bundle the current directory,
|
|
40
|
+
or you can use ``--directory`` to build a specific directory:
|
|
41
|
+
``flwr build --directory ./projects/flower-hello-world``.
|
|
46
42
|
"""
|
|
47
43
|
if directory is None:
|
|
48
44
|
directory = Path.cwd()
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/cli/run/run.py
RENAMED
|
@@ -41,7 +41,10 @@ class Engine(str, Enum):
|
|
|
41
41
|
def run(
|
|
42
42
|
engine: Annotated[
|
|
43
43
|
Optional[Engine],
|
|
44
|
-
typer.Option(
|
|
44
|
+
typer.Option(
|
|
45
|
+
case_sensitive=False,
|
|
46
|
+
help="The engine to run FL with (currently only simulation is supported).",
|
|
47
|
+
),
|
|
45
48
|
] = None,
|
|
46
49
|
use_superexec: Annotated[
|
|
47
50
|
bool,
|
|
@@ -87,12 +90,16 @@ def run(
|
|
|
87
90
|
|
|
88
91
|
if engine == Engine.SIMULATION:
|
|
89
92
|
num_supernodes = config["flower"]["engine"]["simulation"]["supernode"]["num"]
|
|
93
|
+
backend_config = config["flower"]["engine"]["simulation"].get(
|
|
94
|
+
"backend_config", None
|
|
95
|
+
)
|
|
90
96
|
|
|
91
97
|
typer.secho("Starting run... ", fg=typer.colors.BLUE)
|
|
92
98
|
_run_simulation(
|
|
93
99
|
server_app_attr=server_app_ref,
|
|
94
100
|
client_app_attr=client_app_ref,
|
|
95
101
|
num_supernodes=num_supernodes,
|
|
102
|
+
backend_config=backend_config,
|
|
96
103
|
)
|
|
97
104
|
else:
|
|
98
105
|
typer.secho(
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/client/app.py
RENAMED
|
@@ -31,6 +31,7 @@ from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, Message, event
|
|
|
31
31
|
from flwr.common.address import parse_address
|
|
32
32
|
from flwr.common.constant import (
|
|
33
33
|
MISSING_EXTRA_REST,
|
|
34
|
+
TRANSPORT_TYPE_GRPC_ADAPTER,
|
|
34
35
|
TRANSPORT_TYPE_GRPC_BIDI,
|
|
35
36
|
TRANSPORT_TYPE_GRPC_RERE,
|
|
36
37
|
TRANSPORT_TYPE_REST,
|
|
@@ -41,6 +42,7 @@ from flwr.common.logger import log, warn_deprecated_feature
|
|
|
41
42
|
from flwr.common.message import Error
|
|
42
43
|
from flwr.common.retry_invoker import RetryInvoker, RetryState, exponential
|
|
43
44
|
|
|
45
|
+
from .grpc_adapter_client.connection import grpc_adapter
|
|
44
46
|
from .grpc_client.connection import grpc_connection
|
|
45
47
|
from .grpc_rere_client.connection import grpc_request_response
|
|
46
48
|
from .message_handler.message_handler import handle_control_message
|
|
@@ -600,6 +602,8 @@ def _init_connection(transport: Optional[str], server_address: str) -> Tuple[
|
|
|
600
602
|
connection, error_type = http_request_response, RequestsConnectionError
|
|
601
603
|
elif transport == TRANSPORT_TYPE_GRPC_RERE:
|
|
602
604
|
connection, error_type = grpc_request_response, RpcError
|
|
605
|
+
elif transport == TRANSPORT_TYPE_GRPC_ADAPTER:
|
|
606
|
+
connection, error_type = grpc_adapter, RpcError
|
|
603
607
|
elif transport == TRANSPORT_TYPE_GRPC_BIDI:
|
|
604
608
|
connection, error_type = grpc_connection, RpcError
|
|
605
609
|
else:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright
|
|
1
|
+
# Copyright 2024 Flower Labs GmbH. All Rights Reserved.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -22,12 +22,12 @@ from .secure_aggregation import secagg_mod, secaggplus_mod
|
|
|
22
22
|
from .utils import make_ffn
|
|
23
23
|
|
|
24
24
|
__all__ = [
|
|
25
|
+
"LocalDpMod",
|
|
25
26
|
"adaptiveclipping_mod",
|
|
26
27
|
"fixedclipping_mod",
|
|
27
|
-
"LocalDpMod",
|
|
28
28
|
"make_ffn",
|
|
29
|
-
"secagg_mod",
|
|
30
|
-
"secaggplus_mod",
|
|
31
29
|
"message_size_mod",
|
|
32
30
|
"parameters_size_mod",
|
|
31
|
+
"secagg_mod",
|
|
32
|
+
"secaggplus_mod",
|
|
33
33
|
]
|
|
@@ -30,6 +30,11 @@ from cryptography.hazmat.primitives.serialization import (
|
|
|
30
30
|
from flwr.client.client_app import ClientApp, LoadClientAppError
|
|
31
31
|
from flwr.common import EventType, event
|
|
32
32
|
from flwr.common.config import get_flwr_dir, get_project_config, get_project_dir
|
|
33
|
+
from flwr.common.constant import (
|
|
34
|
+
TRANSPORT_TYPE_GRPC_ADAPTER,
|
|
35
|
+
TRANSPORT_TYPE_GRPC_RERE,
|
|
36
|
+
TRANSPORT_TYPE_REST,
|
|
37
|
+
)
|
|
33
38
|
from flwr.common.exit_handlers import register_exit_handlers
|
|
34
39
|
from flwr.common.logger import log, warn_deprecated_feature
|
|
35
40
|
from flwr.common.object_ref import load_app, validate
|
|
@@ -56,7 +61,7 @@ def run_supernode() -> None:
|
|
|
56
61
|
_start_client_internal(
|
|
57
62
|
server_address=args.superlink,
|
|
58
63
|
load_client_app_fn=load_fn,
|
|
59
|
-
transport=
|
|
64
|
+
transport=args.transport,
|
|
60
65
|
root_certificates=root_certificates,
|
|
61
66
|
insecure=args.insecure,
|
|
62
67
|
authentication_keys=authentication_keys,
|
|
@@ -87,7 +92,7 @@ def run_client_app() -> None:
|
|
|
87
92
|
_start_client_internal(
|
|
88
93
|
server_address=args.superlink,
|
|
89
94
|
load_client_app_fn=load_fn,
|
|
90
|
-
transport=
|
|
95
|
+
transport=args.transport,
|
|
91
96
|
root_certificates=root_certificates,
|
|
92
97
|
insecure=args.insecure,
|
|
93
98
|
authentication_keys=authentication_keys,
|
|
@@ -230,7 +235,7 @@ def _get_load_client_app_fn(
|
|
|
230
235
|
"Loading ClientApp `%s`",
|
|
231
236
|
client_app_ref,
|
|
232
237
|
)
|
|
233
|
-
client_app = load_app(client_app_ref, LoadClientAppError)
|
|
238
|
+
client_app = load_app(client_app_ref, LoadClientAppError, sys_path)
|
|
234
239
|
|
|
235
240
|
if not isinstance(client_app, ClientApp):
|
|
236
241
|
raise LoadClientAppError(
|
|
@@ -262,7 +267,7 @@ def _parse_args_run_supernode() -> argparse.ArgumentParser:
|
|
|
262
267
|
"--flwr-dir",
|
|
263
268
|
default=None,
|
|
264
269
|
help="""The path containing installed Flower Apps.
|
|
265
|
-
By default, this value
|
|
270
|
+
By default, this value is equal to:
|
|
266
271
|
|
|
267
272
|
- `$FLWR_HOME/` if `$FLWR_HOME` is defined
|
|
268
273
|
- `$XDG_DATA_HOME/.flwr/` if `$XDG_DATA_HOME` is defined
|
|
@@ -295,9 +300,27 @@ def _parse_args_common(parser: argparse.ArgumentParser) -> None:
|
|
|
295
300
|
help="Run the client without HTTPS. By default, the client runs with "
|
|
296
301
|
"HTTPS enabled. Use this flag only if you understand the risks.",
|
|
297
302
|
)
|
|
298
|
-
parser.
|
|
303
|
+
ex_group = parser.add_mutually_exclusive_group()
|
|
304
|
+
ex_group.add_argument(
|
|
305
|
+
"--grpc-rere",
|
|
306
|
+
action="store_const",
|
|
307
|
+
dest="transport",
|
|
308
|
+
const=TRANSPORT_TYPE_GRPC_RERE,
|
|
309
|
+
default=TRANSPORT_TYPE_GRPC_RERE,
|
|
310
|
+
help="Use grpc-rere as a transport layer for the client.",
|
|
311
|
+
)
|
|
312
|
+
ex_group.add_argument(
|
|
313
|
+
"--grpc-adapter",
|
|
314
|
+
action="store_const",
|
|
315
|
+
dest="transport",
|
|
316
|
+
const=TRANSPORT_TYPE_GRPC_ADAPTER,
|
|
317
|
+
help="Use grpc-adapter as a transport layer for the client.",
|
|
318
|
+
)
|
|
319
|
+
ex_group.add_argument(
|
|
299
320
|
"--rest",
|
|
300
|
-
action="
|
|
321
|
+
action="store_const",
|
|
322
|
+
dest="transport",
|
|
323
|
+
const=TRANSPORT_TYPE_REST,
|
|
301
324
|
help="Use REST as a transport layer for the client.",
|
|
302
325
|
)
|
|
303
326
|
parser.add_argument(
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/config.py
RENAMED
|
@@ -24,14 +24,16 @@ from flwr.cli.config_utils import validate_fields
|
|
|
24
24
|
from flwr.common.constant import APP_DIR, FAB_CONFIG_FILE, FLWR_HOME
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def get_flwr_dir() -> Path:
|
|
27
|
+
def get_flwr_dir(provided_path: Optional[str] = None) -> Path:
|
|
28
28
|
"""Return the Flower home directory based on env variables."""
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
if provided_path is None or not Path(provided_path).is_dir():
|
|
30
|
+
return Path(
|
|
31
|
+
os.getenv(
|
|
32
|
+
FLWR_HOME,
|
|
33
|
+
f"{os.getenv('XDG_DATA_HOME', os.getenv('HOME'))}/.flwr",
|
|
34
|
+
)
|
|
33
35
|
)
|
|
34
|
-
)
|
|
36
|
+
return Path(provided_path).absolute()
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
def get_project_dir(
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/constant.py
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright
|
|
1
|
+
# Copyright 2023 Flower Labs GmbH. All Rights Reserved.
|
|
2
2
|
#
|
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
# you may not use this file except in compliance with the License.
|
|
@@ -27,6 +27,7 @@ To use the REST API, install `flwr` with the `rest` extra:
|
|
|
27
27
|
|
|
28
28
|
TRANSPORT_TYPE_GRPC_BIDI = "grpc-bidi"
|
|
29
29
|
TRANSPORT_TYPE_GRPC_RERE = "grpc-rere"
|
|
30
|
+
TRANSPORT_TYPE_GRPC_ADAPTER = "grpc-adapter"
|
|
30
31
|
TRANSPORT_TYPE_REST = "rest"
|
|
31
32
|
TRANSPORT_TYPE_VCE = "vce"
|
|
32
33
|
TRANSPORT_TYPES = [
|
|
@@ -45,6 +46,9 @@ PING_BASE_MULTIPLIER = 0.8
|
|
|
45
46
|
PING_RANDOM_RANGE = (-0.1, 0.1)
|
|
46
47
|
PING_MAX_INTERVAL = 1e300
|
|
47
48
|
|
|
49
|
+
GRPC_ADAPTER_METADATA_FLOWER_VERSION_KEY = "flower-version"
|
|
50
|
+
GRPC_ADAPTER_METADATA_SHOULD_EXIT_KEY = "should-exit"
|
|
51
|
+
|
|
48
52
|
# Constants for FAB
|
|
49
53
|
APP_DIR = "apps"
|
|
50
54
|
FAB_CONFIG_FILE = "pyproject.toml"
|
{flwr_nightly-1.10.0.dev20240618 → flwr_nightly-1.10.0.dev20240620}/src/py/flwr/common/object_ref.py
RENAMED
|
@@ -17,8 +17,13 @@
|
|
|
17
17
|
|
|
18
18
|
import ast
|
|
19
19
|
import importlib
|
|
20
|
+
import sys
|
|
20
21
|
from importlib.util import find_spec
|
|
21
|
-
from
|
|
22
|
+
from logging import WARN
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
from typing import Any, Optional, Tuple, Type, Union
|
|
25
|
+
|
|
26
|
+
from .logger import log
|
|
22
27
|
|
|
23
28
|
OBJECT_REF_HELP_STR = """
|
|
24
29
|
\n\nThe object reference string should have the form <module>:<attribute>. Valid
|
|
@@ -77,9 +82,10 @@ def validate(
|
|
|
77
82
|
)
|
|
78
83
|
|
|
79
84
|
|
|
80
|
-
def load_app(
|
|
85
|
+
def load_app( # pylint: disable= too-many-branches
|
|
81
86
|
module_attribute_str: str,
|
|
82
87
|
error_type: Type[Exception],
|
|
88
|
+
project_dir: Optional[Union[str, Path]] = None,
|
|
83
89
|
) -> Any:
|
|
84
90
|
"""Return the object specified in a module attribute string.
|
|
85
91
|
|
|
@@ -95,11 +101,39 @@ def load_app(
|
|
|
95
101
|
module_str, _, attributes_str = module_attribute_str.partition(":")
|
|
96
102
|
|
|
97
103
|
try:
|
|
98
|
-
|
|
99
|
-
|
|
104
|
+
if module_str not in sys.modules:
|
|
105
|
+
module = importlib.import_module(module_str)
|
|
106
|
+
# Hack: `tabnet` does not work with `importlib.reload`
|
|
107
|
+
elif "tabnet" in sys.modules:
|
|
108
|
+
log(
|
|
109
|
+
WARN,
|
|
110
|
+
"Cannot reload module `%s` from disk due to compatibility issues "
|
|
111
|
+
"with the `tabnet` library. The module will be loaded from the "
|
|
112
|
+
"cache instead. If you experience issues, consider restarting "
|
|
113
|
+
"the application.",
|
|
114
|
+
module_str,
|
|
115
|
+
)
|
|
116
|
+
module = sys.modules[module_str]
|
|
117
|
+
else:
|
|
118
|
+
module = sys.modules[module_str]
|
|
119
|
+
if project_dir is None:
|
|
120
|
+
path: Optional[str] = getattr(module, "__file__", None)
|
|
121
|
+
if path is not None:
|
|
122
|
+
project_dir = str(Path(path).parent)
|
|
123
|
+
else:
|
|
124
|
+
project_dir = str(Path(project_dir).absolute())
|
|
125
|
+
|
|
126
|
+
# Reload cached modules in the project directory
|
|
127
|
+
if project_dir is not None:
|
|
128
|
+
for m in list(sys.modules.values()):
|
|
129
|
+
path = getattr(m, "__file__", None)
|
|
130
|
+
if path is not None and path.startswith(project_dir):
|
|
131
|
+
importlib.reload(m)
|
|
132
|
+
|
|
133
|
+
except ModuleNotFoundError as err:
|
|
100
134
|
raise error_type(
|
|
101
135
|
f"Unable to load module {module_str}{OBJECT_REF_HELP_STR}",
|
|
102
|
-
) from
|
|
136
|
+
) from err
|
|
103
137
|
|
|
104
138
|
# Recursively load attribute
|
|
105
139
|
attribute = module
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright 2023 Flower Labs GmbH. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ==============================================================================
|
|
15
|
+
"""Flower package version helper."""
|
|
16
|
+
|
|
17
|
+
import importlib.metadata as importlib_metadata
|
|
18
|
+
from typing import Tuple
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _check_package(name: str) -> Tuple[str, str]:
|
|
22
|
+
version: str = importlib_metadata.version(name)
|
|
23
|
+
return name, version
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _version() -> Tuple[str, str]:
|
|
27
|
+
"""Read and return Flower package name and version.
|
|
28
|
+
|
|
29
|
+
Returns
|
|
30
|
+
-------
|
|
31
|
+
package_name, package_version : Tuple[str, str]
|
|
32
|
+
"""
|
|
33
|
+
for name in ["flwr", "flwr-nightly"]:
|
|
34
|
+
try:
|
|
35
|
+
return _check_package(name)
|
|
36
|
+
except importlib_metadata.PackageNotFoundError:
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
return ("unknown", "unknown")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
package_name, package_version = _version()
|