flwr-nightly 1.10.0.dev20240712__tar.gz → 1.10.0.dev20240714__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.dev20240712 → flwr_nightly-1.10.0.dev20240714}/PKG-INFO +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/pyproject.toml +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.hf.py.tpl +6 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +2 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +5 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +2 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +5 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +4 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +5 -2
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl +19 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +16 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +16 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +16 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +27 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +20 -0
- flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +27 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/task.hf.py.tpl +2 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +2 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/run/run.py +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/app.py +4 -7
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/client_app.py +28 -8
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/message_handler/message_handler.py +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/node_state.py +3 -3
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/node_state_tests.py +1 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/typing.py +2 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/constant.py +3 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/context.py +1 -8
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +2 -1
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +14 -3
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/app.py +4 -3
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +20 -9
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/app.py +11 -5
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/deployment.py +85 -21
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/exec_grpc.py +5 -2
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/executor.py +18 -1
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.hf.py.tpl +0 -17
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -12
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -15
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -12
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -28
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -17
- flwr_nightly-1.10.0.dev20240712/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -27
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/README.md +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/config.yaml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/flwr_tune/static_config.yaml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.hf.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/recordset.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/recordset_compat.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/common_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/common_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/exec_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/exec_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/driver/grpc_driver.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/state.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/superlink/state/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/superexec/exec_servicer.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.10.0.
|
|
7
|
+
version = "1.10.0.dev20240714"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""$project_name: A Flower / HuggingFace Transformers app."""
|
|
2
2
|
|
|
3
3
|
from flwr.client import ClientApp, NumPyClient
|
|
4
|
+
from flwr.common import Context
|
|
4
5
|
from transformers import AutoModelForSequenceClassification
|
|
5
6
|
|
|
6
7
|
from $import_name.task import (
|
|
@@ -38,12 +39,15 @@ class FlowerClient(NumPyClient):
|
|
|
38
39
|
return float(loss), len(self.testloader), {"accuracy": accuracy}
|
|
39
40
|
|
|
40
41
|
|
|
41
|
-
def client_fn(
|
|
42
|
+
def client_fn(context: Context):
|
|
42
43
|
# Load model and data
|
|
43
44
|
net = AutoModelForSequenceClassification.from_pretrained(
|
|
44
45
|
CHECKPOINT, num_labels=2
|
|
45
46
|
).to(DEVICE)
|
|
46
|
-
|
|
47
|
+
|
|
48
|
+
partition_id = int(context.node_config['partition-id'])
|
|
49
|
+
num_partitions = int(context.node_config['num-partitions])
|
|
50
|
+
trainloader, valloader = load_data(partition_id, num_partitions)
|
|
47
51
|
|
|
48
52
|
# Return Client instance
|
|
49
53
|
return FlowerClient(net, trainloader, valloader).to_client()
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import jax
|
|
4
4
|
from flwr.client import NumPyClient, ClientApp
|
|
5
|
+
from flwr.common import Context
|
|
5
6
|
|
|
6
7
|
from $import_name.task import (
|
|
7
8
|
evaluation,
|
|
@@ -44,7 +45,7 @@ class FlowerClient(NumPyClient):
|
|
|
44
45
|
)
|
|
45
46
|
return float(loss), num_examples, {"loss": float(loss)}
|
|
46
47
|
|
|
47
|
-
def client_fn(
|
|
48
|
+
def client_fn(context: Context):
|
|
48
49
|
# Return Client instance
|
|
49
50
|
return FlowerClient().to_client()
|
|
50
51
|
|
|
@@ -4,6 +4,7 @@ import mlx.core as mx
|
|
|
4
4
|
import mlx.nn as nn
|
|
5
5
|
import mlx.optimizers as optim
|
|
6
6
|
from flwr.client import NumPyClient, ClientApp
|
|
7
|
+
from flwr.common import Context
|
|
7
8
|
|
|
8
9
|
from $import_name.task import (
|
|
9
10
|
batch_iterate,
|
|
@@ -57,8 +58,10 @@ class FlowerClient(NumPyClient):
|
|
|
57
58
|
return loss.item(), len(self.test_images), {"accuracy": accuracy.item()}
|
|
58
59
|
|
|
59
60
|
|
|
60
|
-
def client_fn(
|
|
61
|
-
|
|
61
|
+
def client_fn(context: Context):
|
|
62
|
+
partition_id = int(context.node_config["partition-id"])
|
|
63
|
+
num_partitions = int(context.node_config["num-partitions"])
|
|
64
|
+
data = load_data(partition_id, num_partitions)
|
|
62
65
|
|
|
63
66
|
# Return Client instance
|
|
64
67
|
return FlowerClient(data).to_client()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""$project_name: A Flower / NumPy app."""
|
|
2
2
|
|
|
3
3
|
from flwr.client import NumPyClient, ClientApp
|
|
4
|
+
from flwr.common import Context
|
|
4
5
|
import numpy as np
|
|
5
6
|
|
|
6
7
|
|
|
@@ -15,7 +16,7 @@ class FlowerClient(NumPyClient):
|
|
|
15
16
|
return float(0.0), 1, {"accuracy": float(1.0)}
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
def client_fn(
|
|
19
|
+
def client_fn(context: Context):
|
|
19
20
|
return FlowerClient().to_client()
|
|
20
21
|
|
|
21
22
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""$project_name: A Flower / PyTorch app."""
|
|
2
2
|
|
|
3
3
|
from flwr.client import NumPyClient, ClientApp
|
|
4
|
+
from flwr.common import Context
|
|
4
5
|
|
|
5
6
|
from $import_name.task import (
|
|
6
7
|
Net,
|
|
@@ -31,10 +32,12 @@ class FlowerClient(NumPyClient):
|
|
|
31
32
|
return loss, len(self.valloader.dataset), {"accuracy": accuracy}
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
def client_fn(
|
|
35
|
+
def client_fn(context: Context):
|
|
35
36
|
# Load model and data
|
|
36
37
|
net = Net().to(DEVICE)
|
|
37
|
-
|
|
38
|
+
partition_id = int(context.node_config["partition-id"])
|
|
39
|
+
num_partitions = int(context.node_config["num-partitions"])
|
|
40
|
+
trainloader, valloader = load_data(partition_id, num_partitions)
|
|
38
41
|
|
|
39
42
|
# Return Client instance
|
|
40
43
|
return FlowerClient(net, trainloader, valloader).to_client()
|
|
@@ -4,6 +4,7 @@ import warnings
|
|
|
4
4
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from flwr.client import NumPyClient, ClientApp
|
|
7
|
+
from flwr.common import Context
|
|
7
8
|
from flwr_datasets import FederatedDataset
|
|
8
9
|
from sklearn.linear_model import LogisticRegression
|
|
9
10
|
from sklearn.metrics import log_loss
|
|
@@ -68,8 +69,9 @@ class FlowerClient(NumPyClient):
|
|
|
68
69
|
|
|
69
70
|
fds = FederatedDataset(dataset="mnist", partitioners={"train": 2})
|
|
70
71
|
|
|
71
|
-
def client_fn(
|
|
72
|
-
|
|
72
|
+
def client_fn(context: Context):
|
|
73
|
+
partition_id = int(context.node_config["partition-id"])
|
|
74
|
+
dataset = fds.load_partition(partition_id, "train").with_format("numpy")
|
|
73
75
|
|
|
74
76
|
X, y = dataset["image"].reshape((len(dataset), -1)), dataset["label"]
|
|
75
77
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""$project_name: A Flower / TensorFlow app."""
|
|
2
2
|
|
|
3
3
|
from flwr.client import NumPyClient, ClientApp
|
|
4
|
+
from flwr.common import Context
|
|
4
5
|
|
|
5
6
|
from $import_name.task import load_data, load_model
|
|
6
7
|
|
|
@@ -28,10 +29,12 @@ class FlowerClient(NumPyClient):
|
|
|
28
29
|
return loss, len(self.x_test), {"accuracy": accuracy}
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
def client_fn(
|
|
32
|
+
def client_fn(context: Context):
|
|
32
33
|
# Load model and data
|
|
33
34
|
net = load_model()
|
|
34
|
-
|
|
35
|
+
|
|
36
|
+
partition_id = int(context.node_config["partition-id"])
|
|
37
|
+
x_train, y_train, x_test, y_test = load_data(partition_id, 2)
|
|
35
38
|
|
|
36
39
|
# Return Client instance
|
|
37
40
|
return FlowerClient(net, x_train, y_train, x_test, y_test).to_client()
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""$project_name: A Flower / HuggingFace Transformers app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context
|
|
4
|
+
from flwr.server.strategy import FedAvg
|
|
5
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def server_fn(context: Context):
|
|
9
|
+
# Define strategy
|
|
10
|
+
strategy = FedAvg(
|
|
11
|
+
fraction_fit=1.0,
|
|
12
|
+
fraction_evaluate=1.0,
|
|
13
|
+
)
|
|
14
|
+
config = ServerConfig(num_rounds=3)
|
|
15
|
+
|
|
16
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
17
|
+
|
|
18
|
+
# Create ServerApp
|
|
19
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""$project_name: A Flower / JAX app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context
|
|
4
|
+
from flwr.server.strategy import FedAvg
|
|
5
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def server_fn(context: Context):
|
|
9
|
+
# Define strategy
|
|
10
|
+
strategy = FedAvg()
|
|
11
|
+
config = ServerConfig(num_rounds=3)
|
|
12
|
+
|
|
13
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
14
|
+
|
|
15
|
+
# Create ServerApp
|
|
16
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""$project_name: A Flower / MLX app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context
|
|
4
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
5
|
+
from flwr.server.strategy import FedAvg
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def server_fn(context: Context):
|
|
9
|
+
# Define strategy
|
|
10
|
+
strategy = FedAvg()
|
|
11
|
+
config = ServerConfig(num_rounds=3)
|
|
12
|
+
|
|
13
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
14
|
+
|
|
15
|
+
# Create ServerApp
|
|
16
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""$project_name: A Flower / NumPy app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context
|
|
4
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
5
|
+
from flwr.server.strategy import FedAvg
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def server_fn(context: Context):
|
|
9
|
+
# Define strategy
|
|
10
|
+
strategy = FedAvg()
|
|
11
|
+
config = ServerConfig(num_rounds=3)
|
|
12
|
+
|
|
13
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
14
|
+
|
|
15
|
+
# Create ServerApp
|
|
16
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""$project_name: A Flower / PyTorch app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context, ndarrays_to_parameters
|
|
4
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
5
|
+
from flwr.server.strategy import FedAvg
|
|
6
|
+
|
|
7
|
+
from $import_name.task import Net, get_weights
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Initialize model parameters
|
|
11
|
+
ndarrays = get_weights(Net())
|
|
12
|
+
parameters = ndarrays_to_parameters(ndarrays)
|
|
13
|
+
|
|
14
|
+
def server_fn(context: Context):
|
|
15
|
+
# Define strategy
|
|
16
|
+
strategy = FedAvg(
|
|
17
|
+
fraction_fit=1.0,
|
|
18
|
+
fraction_evaluate=1.0,
|
|
19
|
+
min_available_clients=2,
|
|
20
|
+
initial_parameters=parameters,
|
|
21
|
+
)
|
|
22
|
+
config = ServerConfig(num_rounds=3)
|
|
23
|
+
|
|
24
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
25
|
+
|
|
26
|
+
# Create ServerApp
|
|
27
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""$project_name: A Flower / Scikit-Learn app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context
|
|
4
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
5
|
+
from flwr.server.strategy import FedAvg
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def server_fn(context: Context):
|
|
9
|
+
# Define strategy
|
|
10
|
+
strategy = FedAvg(
|
|
11
|
+
fraction_fit=1.0,
|
|
12
|
+
fraction_evaluate=1.0,
|
|
13
|
+
min_available_clients=2,
|
|
14
|
+
)
|
|
15
|
+
config = ServerConfig(num_rounds=3)
|
|
16
|
+
|
|
17
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
18
|
+
|
|
19
|
+
# Create ServerApp
|
|
20
|
+
app = ServerApp(server_fn=server_fn)
|
flwr_nightly-1.10.0.dev20240714/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""$project_name: A Flower / TensorFlow app."""
|
|
2
|
+
|
|
3
|
+
from flwr.common import Context, ndarrays_to_parameters
|
|
4
|
+
from flwr.server import ServerApp, ServerAppComponents, ServerConfig
|
|
5
|
+
from flwr.server.strategy import FedAvg
|
|
6
|
+
|
|
7
|
+
from $import_name.task import load_model
|
|
8
|
+
|
|
9
|
+
# Define config
|
|
10
|
+
config = ServerConfig(num_rounds=3)
|
|
11
|
+
|
|
12
|
+
parameters = ndarrays_to_parameters(load_model().get_weights())
|
|
13
|
+
|
|
14
|
+
def server_fn(context: Context):
|
|
15
|
+
# Define strategy
|
|
16
|
+
strategy = strategy = FedAvg(
|
|
17
|
+
fraction_fit=1.0,
|
|
18
|
+
fraction_evaluate=1.0,
|
|
19
|
+
min_available_clients=2,
|
|
20
|
+
initial_parameters=parameters,
|
|
21
|
+
)
|
|
22
|
+
config = ServerConfig(num_rounds=3)
|
|
23
|
+
|
|
24
|
+
return ServerAppComponents(strategy=strategy, config=config)
|
|
25
|
+
|
|
26
|
+
# Create ServerApp
|
|
27
|
+
app = ServerApp(server_fn=server_fn)
|
|
@@ -16,9 +16,9 @@ DEVICE = torch.device("cpu")
|
|
|
16
16
|
CHECKPOINT = "distilbert-base-uncased" # transformer model checkpoint
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def load_data(partition_id,
|
|
19
|
+
def load_data(partition_id: int, num_partitions: int):
|
|
20
20
|
"""Load IMDB data (training and eval)"""
|
|
21
|
-
fds = FederatedDataset(dataset="imdb", partitioners={"train":
|
|
21
|
+
fds = FederatedDataset(dataset="imdb", partitioners={"train": num_partitions})
|
|
22
22
|
partition = fds.load_partition(partition_id)
|
|
23
23
|
# Divide data: 80% train, 20% test
|
|
24
24
|
partition_train_test = partition.train_test_split(test_size=0.2, seed=42)
|
|
@@ -43,8 +43,8 @@ def batch_iterate(batch_size, X, y):
|
|
|
43
43
|
yield X[ids], y[ids]
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
def load_data(partition_id,
|
|
47
|
-
fds = FederatedDataset(dataset="mnist", partitioners={"train":
|
|
46
|
+
def load_data(partition_id: int, num_partitions: int):
|
|
47
|
+
fds = FederatedDataset(dataset="mnist", partitioners={"train": num_partitions})
|
|
48
48
|
partition = fds.load_partition(partition_id)
|
|
49
49
|
partition_splits = partition.train_test_split(test_size=0.2, seed=42)
|
|
50
50
|
|
|
@@ -34,7 +34,7 @@ class Net(nn.Module):
|
|
|
34
34
|
return self.fc3(x)
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
def load_data(partition_id, num_partitions):
|
|
37
|
+
def load_data(partition_id: int, num_partitions: int):
|
|
38
38
|
"""Load partition CIFAR10 data."""
|
|
39
39
|
fds = FederatedDataset(dataset="cifar10", partitioners={"train": num_partitions})
|
|
40
40
|
partition = fds.load_partition(partition_id)
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/app.py
RENAMED
|
@@ -28,7 +28,7 @@ from grpc import RpcError
|
|
|
28
28
|
from flwr.client.client import Client
|
|
29
29
|
from flwr.client.client_app import ClientApp, LoadClientAppError
|
|
30
30
|
from flwr.client.typing import ClientFnExt
|
|
31
|
-
from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, Message, event
|
|
31
|
+
from flwr.common import GRPC_MAX_MESSAGE_LENGTH, Context, EventType, Message, event
|
|
32
32
|
from flwr.common.address import parse_address
|
|
33
33
|
from flwr.common.constant import (
|
|
34
34
|
MISSING_EXTRA_REST,
|
|
@@ -138,8 +138,8 @@ def start_client(
|
|
|
138
138
|
|
|
139
139
|
Starting an SSL-enabled gRPC client using system certificates:
|
|
140
140
|
|
|
141
|
-
>>> def client_fn(
|
|
142
|
-
>>> return FlowerClient()
|
|
141
|
+
>>> def client_fn(context: Context):
|
|
142
|
+
>>> return FlowerClient().to_client()
|
|
143
143
|
>>>
|
|
144
144
|
>>> start_client(
|
|
145
145
|
>>> server_address=localhost:8080,
|
|
@@ -253,8 +253,7 @@ def _start_client_internal(
|
|
|
253
253
|
if client_fn is None:
|
|
254
254
|
# Wrap `Client` instance in `client_fn`
|
|
255
255
|
def single_client_factory(
|
|
256
|
-
|
|
257
|
-
partition_id: Optional[int], # pylint: disable=unused-argument
|
|
256
|
+
context: Context, # pylint: disable=unused-argument
|
|
258
257
|
) -> Client:
|
|
259
258
|
if client is None: # Added this to keep mypy happy
|
|
260
259
|
raise ValueError(
|
|
@@ -349,7 +348,6 @@ def _start_client_internal(
|
|
|
349
348
|
node_state = NodeState(
|
|
350
349
|
node_id=-1,
|
|
351
350
|
node_config={},
|
|
352
|
-
partition_id=None,
|
|
353
351
|
)
|
|
354
352
|
else:
|
|
355
353
|
# Call create_node fn to register node
|
|
@@ -361,7 +359,6 @@ def _start_client_internal(
|
|
|
361
359
|
node_state = NodeState(
|
|
362
360
|
node_id=node_id,
|
|
363
361
|
node_config=node_config,
|
|
364
|
-
partition_id=None,
|
|
365
362
|
)
|
|
366
363
|
|
|
367
364
|
app_state_tracker.register_signal_handler()
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/client_app.py
RENAMED
|
@@ -30,21 +30,41 @@ from flwr.common.logger import warn_deprecated_feature, warn_preview_feature
|
|
|
30
30
|
from .typing import ClientAppCallable
|
|
31
31
|
|
|
32
32
|
|
|
33
|
+
def _alert_erroneous_client_fn() -> None:
|
|
34
|
+
raise ValueError(
|
|
35
|
+
"A `ClientApp` cannot make use of a `client_fn` that does "
|
|
36
|
+
"not have a signature in the form: `def client_fn(context: "
|
|
37
|
+
"Context)`. You can import the `Context` like this: "
|
|
38
|
+
"`from flwr.common import Context`"
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
33
42
|
def _inspect_maybe_adapt_client_fn_signature(client_fn: ClientFnExt) -> ClientFnExt:
|
|
34
43
|
client_fn_args = inspect.signature(client_fn).parameters
|
|
44
|
+
first_arg = list(client_fn_args.keys())[0]
|
|
45
|
+
|
|
46
|
+
if len(client_fn_args) != 1:
|
|
47
|
+
_alert_erroneous_client_fn()
|
|
48
|
+
|
|
49
|
+
first_arg_type = client_fn_args[first_arg].annotation
|
|
35
50
|
|
|
36
|
-
if
|
|
51
|
+
if first_arg_type is str or first_arg == "cid":
|
|
52
|
+
# Warn previous signature for `client_fn` seems to be used
|
|
37
53
|
warn_deprecated_feature(
|
|
38
|
-
"`client_fn` now expects a signature `def client_fn(
|
|
39
|
-
"
|
|
40
|
-
f"{dict(client_fn_args.items())}"
|
|
54
|
+
"`client_fn` now expects a signature `def client_fn(context: Context)`."
|
|
55
|
+
"The provided `client_fn` has signature: "
|
|
56
|
+
f"{dict(client_fn_args.items())}. You can import the `Context` like this:"
|
|
57
|
+
" `from flwr.common import Context`"
|
|
41
58
|
)
|
|
42
59
|
|
|
43
60
|
# Wrap depcreated client_fn inside a function with the expected signature
|
|
44
61
|
def adaptor_fn(
|
|
45
|
-
|
|
46
|
-
) -> Client:
|
|
47
|
-
|
|
62
|
+
context: Context,
|
|
63
|
+
) -> Client: # pylint: disable=unused-argument
|
|
64
|
+
# if patition-id is defined, pass it. Else pass node_id that should
|
|
65
|
+
# always be defined during Context init.
|
|
66
|
+
cid = context.node_config.get("partition-id", context.node_id)
|
|
67
|
+
return client_fn(str(cid)) # type: ignore
|
|
48
68
|
|
|
49
69
|
return adaptor_fn
|
|
50
70
|
|
|
@@ -71,7 +91,7 @@ class ClientApp:
|
|
|
71
91
|
>>> class FlowerClient(NumPyClient):
|
|
72
92
|
>>> # ...
|
|
73
93
|
>>>
|
|
74
|
-
>>> def client_fn(
|
|
94
|
+
>>> def client_fn(context: Context):
|
|
75
95
|
>>> return FlowerClient().to_client()
|
|
76
96
|
>>>
|
|
77
97
|
>>> app = ClientApp(client_fn)
|
|
@@ -92,7 +92,7 @@ def handle_legacy_message_from_msgtype(
|
|
|
92
92
|
client_fn: ClientFnExt, message: Message, context: Context
|
|
93
93
|
) -> Message:
|
|
94
94
|
"""Handle legacy message in the inner most mod."""
|
|
95
|
-
client = client_fn(
|
|
95
|
+
client = client_fn(context)
|
|
96
96
|
|
|
97
97
|
# Check if NumPyClient is returend
|
|
98
98
|
if isinstance(client, NumPyClient):
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/node_state.py
RENAMED
|
@@ -36,12 +36,13 @@ class NodeState:
|
|
|
36
36
|
"""State of a node where client nodes execute runs."""
|
|
37
37
|
|
|
38
38
|
def __init__(
|
|
39
|
-
self,
|
|
39
|
+
self,
|
|
40
|
+
node_id: int,
|
|
41
|
+
node_config: Dict[str, str],
|
|
40
42
|
) -> None:
|
|
41
43
|
self.node_id = node_id
|
|
42
44
|
self.node_config = node_config
|
|
43
45
|
self.run_infos: Dict[int, RunInfo] = {}
|
|
44
|
-
self._partition_id = partition_id
|
|
45
46
|
|
|
46
47
|
def register_context(
|
|
47
48
|
self,
|
|
@@ -59,7 +60,6 @@ class NodeState:
|
|
|
59
60
|
node_config=self.node_config,
|
|
60
61
|
state=RecordSet(),
|
|
61
62
|
run_config=initial_run_config.copy(),
|
|
62
|
-
partition_id=self._partition_id,
|
|
63
63
|
),
|
|
64
64
|
)
|
|
65
65
|
|
|
@@ -41,7 +41,7 @@ def test_multirun_in_node_state() -> None:
|
|
|
41
41
|
expected_values = {0: "1", 1: "1" * 3, 2: "1" * 2, 3: "1", 5: "1"}
|
|
42
42
|
|
|
43
43
|
# NodeState
|
|
44
|
-
node_state = NodeState(node_id=0, node_config={}
|
|
44
|
+
node_state = NodeState(node_id=0, node_config={})
|
|
45
45
|
|
|
46
46
|
for task in tasks:
|
|
47
47
|
run_id = task.run_id
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/client/typing.py
RENAMED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"""Custom types for Flower clients."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
from typing import Callable
|
|
18
|
+
from typing import Callable
|
|
19
19
|
|
|
20
20
|
from flwr.common import Context, Message
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ from .client import Client as Client
|
|
|
23
23
|
|
|
24
24
|
# Compatibility
|
|
25
25
|
ClientFn = Callable[[str], Client]
|
|
26
|
-
ClientFnExt = Callable[[
|
|
26
|
+
ClientFnExt = Callable[[Context], Client]
|
|
27
27
|
|
|
28
28
|
ClientAppCallable = Callable[[Message, Context], Message]
|
|
29
29
|
Mod = Callable[[Message, Context, ClientAppCallable], Message]
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/constant.py
RENAMED
|
@@ -57,6 +57,9 @@ APP_DIR = "apps"
|
|
|
57
57
|
FAB_CONFIG_FILE = "pyproject.toml"
|
|
58
58
|
FLWR_HOME = "FLWR_HOME"
|
|
59
59
|
|
|
60
|
+
# Constants entries in Node config for Simulation
|
|
61
|
+
PARTITION_ID_KEY = "partition-id"
|
|
62
|
+
NUM_PARTITIONS_KEY = "num-partitions"
|
|
60
63
|
|
|
61
64
|
GRPC_ADAPTER_METADATA_FLOWER_VERSION_KEY = "flower-version"
|
|
62
65
|
GRPC_ADAPTER_METADATA_SHOULD_EXIT_KEY = "should-exit"
|
{flwr_nightly-1.10.0.dev20240712 → flwr_nightly-1.10.0.dev20240714}/src/py/flwr/common/context.py
RENAMED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
from dataclasses import dataclass
|
|
19
|
-
from typing import Dict
|
|
19
|
+
from typing import Dict
|
|
20
20
|
|
|
21
21
|
from .record import RecordSet
|
|
22
22
|
|
|
@@ -43,17 +43,12 @@ class Context:
|
|
|
43
43
|
A config (key/value mapping) held by the entity in a given run and that will
|
|
44
44
|
stay local. It can be used at any point during the lifecycle of this entity
|
|
45
45
|
(e.g. across multiple rounds)
|
|
46
|
-
partition_id : Optional[int] (default: None)
|
|
47
|
-
An index that specifies the data partition that the ClientApp using this Context
|
|
48
|
-
object should make use of. Setting this attribute is better suited for
|
|
49
|
-
simulation or proto typing setups.
|
|
50
46
|
"""
|
|
51
47
|
|
|
52
48
|
node_id: int
|
|
53
49
|
node_config: Dict[str, str]
|
|
54
50
|
state: RecordSet
|
|
55
51
|
run_config: Dict[str, str]
|
|
56
|
-
partition_id: Optional[int]
|
|
57
52
|
|
|
58
53
|
def __init__( # pylint: disable=too-many-arguments
|
|
59
54
|
self,
|
|
@@ -61,10 +56,8 @@ class Context:
|
|
|
61
56
|
node_config: Dict[str, str],
|
|
62
57
|
state: RecordSet,
|
|
63
58
|
run_config: Dict[str, str],
|
|
64
|
-
partition_id: Optional[int] = None,
|
|
65
59
|
) -> None:
|
|
66
60
|
self.node_id = node_id
|
|
67
61
|
self.node_config = node_config
|
|
68
62
|
self.state = state
|
|
69
63
|
self.run_config = run_config
|
|
70
|
-
self.partition_id = partition_id
|
|
@@ -21,6 +21,7 @@ from typing import Callable, Dict, List, Tuple, Union
|
|
|
21
21
|
import ray
|
|
22
22
|
|
|
23
23
|
from flwr.client.client_app import ClientApp
|
|
24
|
+
from flwr.common.constant import PARTITION_ID_KEY
|
|
24
25
|
from flwr.common.context import Context
|
|
25
26
|
from flwr.common.logger import log
|
|
26
27
|
from flwr.common.message import Message
|
|
@@ -168,7 +169,7 @@ class RayBackend(Backend):
|
|
|
168
169
|
|
|
169
170
|
Return output message and updated context.
|
|
170
171
|
"""
|
|
171
|
-
partition_id = context.
|
|
172
|
+
partition_id = context.node_config[PARTITION_ID_KEY]
|
|
172
173
|
|
|
173
174
|
try:
|
|
174
175
|
# Submit a task to the pool
|
|
@@ -29,7 +29,12 @@ from typing import Callable, Dict, Optional
|
|
|
29
29
|
|
|
30
30
|
from flwr.client.client_app import ClientApp, ClientAppException, LoadClientAppError
|
|
31
31
|
from flwr.client.node_state import NodeState
|
|
32
|
-
from flwr.common.constant import
|
|
32
|
+
from flwr.common.constant import (
|
|
33
|
+
NUM_PARTITIONS_KEY,
|
|
34
|
+
PARTITION_ID_KEY,
|
|
35
|
+
PING_MAX_INTERVAL,
|
|
36
|
+
ErrorCode,
|
|
37
|
+
)
|
|
33
38
|
from flwr.common.logger import log
|
|
34
39
|
from flwr.common.message import Error
|
|
35
40
|
from flwr.common.object_ref import load_app
|
|
@@ -73,7 +78,7 @@ def worker(
|
|
|
73
78
|
task_ins: TaskIns = taskins_queue.get(timeout=1.0)
|
|
74
79
|
node_id = task_ins.task.consumer.node_id
|
|
75
80
|
|
|
76
|
-
# Register and retrieve
|
|
81
|
+
# Register and retrieve context
|
|
77
82
|
node_states[node_id].register_context(run_id=task_ins.run_id)
|
|
78
83
|
context = node_states[node_id].retrieve_context(run_id=task_ins.run_id)
|
|
79
84
|
|
|
@@ -283,9 +288,15 @@ def start_vce(
|
|
|
283
288
|
|
|
284
289
|
# Construct mapping of NodeStates
|
|
285
290
|
node_states: Dict[int, NodeState] = {}
|
|
291
|
+
# Number of unique partitions
|
|
292
|
+
num_partitions = len(set(nodes_mapping.values()))
|
|
286
293
|
for node_id, partition_id in nodes_mapping.items():
|
|
287
294
|
node_states[node_id] = NodeState(
|
|
288
|
-
node_id=node_id,
|
|
295
|
+
node_id=node_id,
|
|
296
|
+
node_config={
|
|
297
|
+
PARTITION_ID_KEY: str(partition_id),
|
|
298
|
+
NUM_PARTITIONS_KEY: str(num_partitions),
|
|
299
|
+
},
|
|
289
300
|
)
|
|
290
301
|
|
|
291
302
|
# Load backend config
|