flwr-nightly 1.11.0.dev20240813__tar.gz → 1.11.0.dev20240815__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.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/PKG-INFO +1 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/pyproject.toml +1 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/run/run.py +6 -2
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/app.py +1 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_rere_client/connection.py +1 -0
- flwr_nightly-1.11.0.dev20240815/src/py/flwr/client/process/__init__.py +15 -0
- flwr_nightly-1.11.0.dev20240815/src/py/flwr/client/process/clientappio_servicer.py +145 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/rest_client/connection.py +2 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/config.py +7 -2
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/recordset.py +9 -7
- flwr_nightly-1.11.0.dev20240815/src/py/flwr/common/record/typeddict.py +75 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/recordset_compat.py +6 -6
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/serde.py +24 -2
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/typing.py +1 -0
- flwr_nightly-1.11.0.dev20240815/src/py/flwr/proto/exec_pb2.py +44 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/exec_pb2.pyi +7 -4
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/message_pb2.py +2 -2
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/message_pb2.pyi +4 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/app.py +12 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/driver/grpc_driver.py +1 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/driver/driver_grpc.py +3 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/driver/driver_servicer.py +14 -1
- flwr_nightly-1.11.0.dev20240815/src/py/flwr/server/superlink/ffs/ffs_factory.py +47 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/in_memory_state.py +7 -5
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/sqlite_state.py +17 -7
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/state.py +4 -3
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/run_simulation.py +4 -1
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/exec_servicer.py +1 -1
- flwr_nightly-1.11.0.dev20240813/src/py/flwr/common/record/typeddict.py +0 -113
- flwr_nightly-1.11.0.dev20240813/src/py/flwr/proto/exec_pb2.py +0 -43
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/LICENSE +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/README.md +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/app.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/config.yaml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/flwr_tune/static_config.yaml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/client_app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/message_handler/task_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/node_state.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/node_state_tests.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/supernode/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/supernode/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/address.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/date.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/pyproject.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/configsrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/metricsrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/record/parametersrecord.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/version.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/common_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/common_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/common_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/common_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/driver_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/driver_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/recordset_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/task_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/task_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/py.typed +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/compat/driver_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/driver/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/driver/driver.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/driver/inmemory_driver.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/superlink/state/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/__init__.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/app.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/deployment.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/exec_grpc.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/executor.py +0 -0
- {flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/superexec/simulation.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.11.0.
|
|
7
|
+
version = "1.11.0.dev20240815"
|
|
8
8
|
description = "Flower: A Friendly Federated Learning Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/cli/run/run.py
RENAMED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
"""Flower command line interface `run` command."""
|
|
16
16
|
|
|
17
|
+
import hashlib
|
|
17
18
|
import subprocess
|
|
18
19
|
import sys
|
|
19
20
|
from logging import DEBUG
|
|
@@ -28,7 +29,8 @@ from flwr.cli.config_utils import load_and_validate
|
|
|
28
29
|
from flwr.common.config import flatten_dict, parse_config_args
|
|
29
30
|
from flwr.common.grpc import GRPC_MAX_MESSAGE_LENGTH, create_channel
|
|
30
31
|
from flwr.common.logger import log
|
|
31
|
-
from flwr.common.serde import user_config_to_proto
|
|
32
|
+
from flwr.common.serde import fab_to_proto, user_config_to_proto
|
|
33
|
+
from flwr.common.typing import Fab
|
|
32
34
|
from flwr.proto.exec_pb2 import StartRunRequest # pylint: disable=E0611
|
|
33
35
|
from flwr.proto.exec_pb2_grpc import ExecStub
|
|
34
36
|
|
|
@@ -163,9 +165,11 @@ def _run_with_superexec(
|
|
|
163
165
|
stub = ExecStub(channel)
|
|
164
166
|
|
|
165
167
|
fab_path = Path(build(app))
|
|
168
|
+
content = fab_path.read_bytes()
|
|
169
|
+
fab = Fab(hashlib.sha256(content).hexdigest(), content)
|
|
166
170
|
|
|
167
171
|
req = StartRunRequest(
|
|
168
|
-
|
|
172
|
+
fab=fab_to_proto(fab),
|
|
169
173
|
override_config=user_config_to_proto(
|
|
170
174
|
parse_config_args(config_overrides, separator=",")
|
|
171
175
|
),
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/client/app.py
RENAMED
|
@@ -398,7 +398,7 @@ def _start_client_internal(
|
|
|
398
398
|
runs[run_id] = get_run(run_id)
|
|
399
399
|
# If get_run is None, i.e., in grpc-bidi mode
|
|
400
400
|
else:
|
|
401
|
-
runs[run_id] = Run(run_id, "", "", {})
|
|
401
|
+
runs[run_id] = Run(run_id, "", "", "", {})
|
|
402
402
|
|
|
403
403
|
# Register context for this run
|
|
404
404
|
node_state.register_context(
|
|
@@ -286,6 +286,7 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
|
|
|
286
286
|
run_id,
|
|
287
287
|
get_run_response.run.fab_id,
|
|
288
288
|
get_run_response.run.fab_version,
|
|
289
|
+
get_run_response.run.fab_hash,
|
|
289
290
|
user_config_from_proto(get_run_response.run.override_config),
|
|
290
291
|
)
|
|
291
292
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copyright 2024 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 AppIO service."""
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Copyright 2024 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
|
+
"""ClientAppIo API servicer."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from dataclasses import dataclass
|
|
19
|
+
from logging import DEBUG, ERROR
|
|
20
|
+
from typing import Optional
|
|
21
|
+
|
|
22
|
+
import grpc
|
|
23
|
+
|
|
24
|
+
from flwr.common import Context, Message, typing
|
|
25
|
+
from flwr.common.logger import log
|
|
26
|
+
from flwr.common.serde import (
|
|
27
|
+
clientappstatus_to_proto,
|
|
28
|
+
context_from_proto,
|
|
29
|
+
context_to_proto,
|
|
30
|
+
message_from_proto,
|
|
31
|
+
message_to_proto,
|
|
32
|
+
run_to_proto,
|
|
33
|
+
)
|
|
34
|
+
from flwr.common.typing import Run
|
|
35
|
+
|
|
36
|
+
# pylint: disable=E0611
|
|
37
|
+
from flwr.proto import clientappio_pb2_grpc
|
|
38
|
+
from flwr.proto.clientappio_pb2 import ( # pylint: disable=E0401
|
|
39
|
+
PullClientAppInputsRequest,
|
|
40
|
+
PullClientAppInputsResponse,
|
|
41
|
+
PushClientAppOutputsRequest,
|
|
42
|
+
PushClientAppOutputsResponse,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclass
|
|
47
|
+
class ClientAppIoInputs:
|
|
48
|
+
"""Specify the inputs to the ClientApp."""
|
|
49
|
+
|
|
50
|
+
message: Message
|
|
51
|
+
context: Context
|
|
52
|
+
run: Run
|
|
53
|
+
token: int
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class ClientAppIoOutputs:
|
|
58
|
+
"""Specify the outputs from the ClientApp."""
|
|
59
|
+
|
|
60
|
+
message: Message
|
|
61
|
+
context: Context
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# pylint: disable=C0103,W0613,W0201
|
|
65
|
+
class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
66
|
+
"""ClientAppIo API servicer."""
|
|
67
|
+
|
|
68
|
+
def __init__(self) -> None:
|
|
69
|
+
self.clientapp_input: Optional[ClientAppIoInputs] = None
|
|
70
|
+
self.clientapp_output: Optional[ClientAppIoOutputs] = None
|
|
71
|
+
|
|
72
|
+
def PullClientAppInputs(
|
|
73
|
+
self, request: PullClientAppInputsRequest, context: grpc.ServicerContext
|
|
74
|
+
) -> PullClientAppInputsResponse:
|
|
75
|
+
"""Pull Message, Context, and Run."""
|
|
76
|
+
log(DEBUG, "ClientAppIo.PullClientAppInputs")
|
|
77
|
+
if self.clientapp_input is None:
|
|
78
|
+
raise ValueError(
|
|
79
|
+
"ClientAppIoInputs not set before calling `PullClientAppInputs`."
|
|
80
|
+
)
|
|
81
|
+
if request.token != self.clientapp_input.token:
|
|
82
|
+
context.abort(
|
|
83
|
+
grpc.StatusCode.INVALID_ARGUMENT,
|
|
84
|
+
"Mismatch between ClientApp and SuperNode token",
|
|
85
|
+
)
|
|
86
|
+
return PullClientAppInputsResponse(
|
|
87
|
+
message=message_to_proto(self.clientapp_input.message),
|
|
88
|
+
context=context_to_proto(self.clientapp_input.context),
|
|
89
|
+
run=run_to_proto(self.clientapp_input.run),
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def PushClientAppOutputs(
|
|
93
|
+
self, request: PushClientAppOutputsRequest, context: grpc.ServicerContext
|
|
94
|
+
) -> PushClientAppOutputsResponse:
|
|
95
|
+
"""Push Message and Context."""
|
|
96
|
+
log(DEBUG, "ClientAppIo.PushClientAppOutputs")
|
|
97
|
+
if self.clientapp_output is None:
|
|
98
|
+
raise ValueError(
|
|
99
|
+
"ClientAppIoOutputs not set before calling `PushClientAppOutputs`."
|
|
100
|
+
)
|
|
101
|
+
if self.clientapp_input is None:
|
|
102
|
+
raise ValueError(
|
|
103
|
+
"ClientAppIoInputs not set before calling `PushClientAppOutputs`."
|
|
104
|
+
)
|
|
105
|
+
if request.token != self.clientapp_input.token:
|
|
106
|
+
context.abort(
|
|
107
|
+
grpc.StatusCode.INVALID_ARGUMENT,
|
|
108
|
+
"Mismatch between ClientApp and SuperNode token",
|
|
109
|
+
)
|
|
110
|
+
try:
|
|
111
|
+
# Update Message and Context
|
|
112
|
+
self.clientapp_output.message = message_from_proto(request.message)
|
|
113
|
+
self.clientapp_output.context = context_from_proto(request.context)
|
|
114
|
+
# Set status
|
|
115
|
+
code = typing.ClientAppOutputCode.SUCCESS
|
|
116
|
+
status = typing.ClientAppOutputStatus(code=code, message="Success")
|
|
117
|
+
proto_status = clientappstatus_to_proto(status=status)
|
|
118
|
+
return PushClientAppOutputsResponse(status=proto_status)
|
|
119
|
+
except Exception as e: # pylint: disable=broad-exception-caught
|
|
120
|
+
log(ERROR, "ClientApp failed to push message to SuperNode, %s", e)
|
|
121
|
+
code = typing.ClientAppOutputCode.UNKNOWN_ERROR
|
|
122
|
+
status = typing.ClientAppOutputStatus(code=code, message="Push failed")
|
|
123
|
+
proto_status = clientappstatus_to_proto(status=status)
|
|
124
|
+
return PushClientAppOutputsResponse(status=proto_status)
|
|
125
|
+
|
|
126
|
+
def set_inputs(self, clientapp_input: ClientAppIoInputs) -> None:
|
|
127
|
+
"""Set ClientApp inputs."""
|
|
128
|
+
log(DEBUG, "ClientAppIo.SetInputs")
|
|
129
|
+
if self.clientapp_input is not None or self.clientapp_output is not None:
|
|
130
|
+
raise ValueError(
|
|
131
|
+
"ClientAppIoInputs and ClientAppIoOutputs must not be set before "
|
|
132
|
+
"calling `set_inputs`."
|
|
133
|
+
)
|
|
134
|
+
self.clientapp_input = clientapp_input
|
|
135
|
+
|
|
136
|
+
def get_outputs(self) -> ClientAppIoOutputs:
|
|
137
|
+
"""Get ClientApp outputs."""
|
|
138
|
+
log(DEBUG, "ClientAppIo.GetOutputs")
|
|
139
|
+
if self.clientapp_output is None:
|
|
140
|
+
raise ValueError("ClientAppIoOutputs not set before calling `get_outputs`.")
|
|
141
|
+
# Set outputs to a local variable and clear self.clientapp_output
|
|
142
|
+
output: ClientAppIoOutputs = self.clientapp_output
|
|
143
|
+
self.clientapp_input = None
|
|
144
|
+
self.clientapp_output = None
|
|
145
|
+
return output
|
|
@@ -358,12 +358,13 @@ def http_request_response( # pylint: disable=,R0913, R0914, R0915
|
|
|
358
358
|
# Send the request
|
|
359
359
|
res = _request(req, GetRunResponse, PATH_GET_RUN)
|
|
360
360
|
if res is None:
|
|
361
|
-
return Run(run_id, "", "", {})
|
|
361
|
+
return Run(run_id, "", "", "", {})
|
|
362
362
|
|
|
363
363
|
return Run(
|
|
364
364
|
run_id,
|
|
365
365
|
res.run.fab_id,
|
|
366
366
|
res.run.fab_version,
|
|
367
|
+
res.run.fab_hash,
|
|
367
368
|
user_config_from_proto(res.run.override_config),
|
|
368
369
|
)
|
|
369
370
|
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/config.py
RENAMED
|
@@ -74,10 +74,15 @@ def get_project_config(project_dir: Union[str, Path]) -> Dict[str, Any]:
|
|
|
74
74
|
return config
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
def
|
|
77
|
+
def fuse_dicts(
|
|
78
78
|
main_dict: UserConfig,
|
|
79
79
|
override_dict: UserConfig,
|
|
80
80
|
) -> UserConfig:
|
|
81
|
+
"""Merge a config with the overrides.
|
|
82
|
+
|
|
83
|
+
Remove the nesting by adding the nested keys as prefixes separated by dots, and fuse
|
|
84
|
+
it with the override dict.
|
|
85
|
+
"""
|
|
81
86
|
fused_dict = main_dict.copy()
|
|
82
87
|
|
|
83
88
|
for key, value in override_dict.items():
|
|
@@ -96,7 +101,7 @@ def get_fused_config_from_dir(
|
|
|
96
101
|
)
|
|
97
102
|
flat_default_config = flatten_dict(default_config)
|
|
98
103
|
|
|
99
|
-
return
|
|
104
|
+
return fuse_dicts(flat_default_config, override_config)
|
|
100
105
|
|
|
101
106
|
|
|
102
107
|
def get_fused_config(run: Run, flwr_dir: Optional[Path]) -> UserConfig:
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
"""RecordSet."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
18
20
|
from dataclasses import dataclass
|
|
19
|
-
from typing import
|
|
21
|
+
from typing import cast
|
|
20
22
|
|
|
21
23
|
from .configsrecord import ConfigsRecord
|
|
22
24
|
from .metricsrecord import MetricsRecord
|
|
@@ -34,9 +36,9 @@ class RecordSetData:
|
|
|
34
36
|
|
|
35
37
|
def __init__(
|
|
36
38
|
self,
|
|
37
|
-
parameters_records:
|
|
38
|
-
metrics_records:
|
|
39
|
-
configs_records:
|
|
39
|
+
parameters_records: dict[str, ParametersRecord] | None = None,
|
|
40
|
+
metrics_records: dict[str, MetricsRecord] | None = None,
|
|
41
|
+
configs_records: dict[str, ConfigsRecord] | None = None,
|
|
40
42
|
) -> None:
|
|
41
43
|
self.parameters_records = TypedDict[str, ParametersRecord](
|
|
42
44
|
self._check_fn_str, self._check_fn_params
|
|
@@ -88,9 +90,9 @@ class RecordSet:
|
|
|
88
90
|
|
|
89
91
|
def __init__(
|
|
90
92
|
self,
|
|
91
|
-
parameters_records:
|
|
92
|
-
metrics_records:
|
|
93
|
-
configs_records:
|
|
93
|
+
parameters_records: dict[str, ParametersRecord] | None = None,
|
|
94
|
+
metrics_records: dict[str, MetricsRecord] | None = None,
|
|
95
|
+
configs_records: dict[str, ConfigsRecord] | None = None,
|
|
94
96
|
) -> None:
|
|
95
97
|
data = RecordSetData(
|
|
96
98
|
parameters_records=parameters_records,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Copyright 2024 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
|
+
"""Typed dict base class for *Records."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from typing import Callable, Dict, Generic, Iterator, MutableMapping, TypeVar, cast
|
|
19
|
+
|
|
20
|
+
K = TypeVar("K") # Key type
|
|
21
|
+
V = TypeVar("V") # Value type
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TypedDict(MutableMapping[K, V], Generic[K, V]):
|
|
25
|
+
"""Typed dictionary."""
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self, check_key_fn: Callable[[K], None], check_value_fn: Callable[[V], None]
|
|
29
|
+
):
|
|
30
|
+
self.__dict__["_check_key_fn"] = check_key_fn
|
|
31
|
+
self.__dict__["_check_value_fn"] = check_value_fn
|
|
32
|
+
self.__dict__["_data"] = {}
|
|
33
|
+
|
|
34
|
+
def __setitem__(self, key: K, value: V) -> None:
|
|
35
|
+
"""Set the given key to the given value after type checking."""
|
|
36
|
+
# Check the types of key and value
|
|
37
|
+
cast(Callable[[K], None], self.__dict__["_check_key_fn"])(key)
|
|
38
|
+
cast(Callable[[V], None], self.__dict__["_check_value_fn"])(value)
|
|
39
|
+
|
|
40
|
+
# Set key-value pair
|
|
41
|
+
cast(Dict[K, V], self.__dict__["_data"])[key] = value
|
|
42
|
+
|
|
43
|
+
def __delitem__(self, key: K) -> None:
|
|
44
|
+
"""Remove the item with the specified key."""
|
|
45
|
+
del cast(Dict[K, V], self.__dict__["_data"])[key]
|
|
46
|
+
|
|
47
|
+
def __getitem__(self, item: K) -> V:
|
|
48
|
+
"""Return the value for the specified key."""
|
|
49
|
+
return cast(Dict[K, V], self.__dict__["_data"])[item]
|
|
50
|
+
|
|
51
|
+
def __iter__(self) -> Iterator[K]:
|
|
52
|
+
"""Yield an iterator over the keys of the dictionary."""
|
|
53
|
+
return iter(cast(Dict[K, V], self.__dict__["_data"]))
|
|
54
|
+
|
|
55
|
+
def __repr__(self) -> str:
|
|
56
|
+
"""Return a string representation of the dictionary."""
|
|
57
|
+
return cast(Dict[K, V], self.__dict__["_data"]).__repr__()
|
|
58
|
+
|
|
59
|
+
def __len__(self) -> int:
|
|
60
|
+
"""Return the number of items in the dictionary."""
|
|
61
|
+
return len(cast(Dict[K, V], self.__dict__["_data"]))
|
|
62
|
+
|
|
63
|
+
def __contains__(self, key: object) -> bool:
|
|
64
|
+
"""Check if the dictionary contains the specified key."""
|
|
65
|
+
return key in cast(Dict[K, V], self.__dict__["_data"])
|
|
66
|
+
|
|
67
|
+
def __eq__(self, other: object) -> bool:
|
|
68
|
+
"""Compare this instance to another dictionary or TypedDict."""
|
|
69
|
+
data = cast(Dict[K, V], self.__dict__["_data"])
|
|
70
|
+
if isinstance(other, TypedDict):
|
|
71
|
+
other_data = cast(Dict[K, V], other.__dict__["_data"])
|
|
72
|
+
return data == other_data
|
|
73
|
+
if isinstance(other, dict):
|
|
74
|
+
return data == other
|
|
75
|
+
return NotImplemented
|
|
@@ -145,7 +145,7 @@ def _recordset_to_fit_or_evaluate_ins_components(
|
|
|
145
145
|
# get config dict
|
|
146
146
|
config_record = recordset.configs_records[f"{ins_str}.config"]
|
|
147
147
|
# pylint: disable-next=protected-access
|
|
148
|
-
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record
|
|
148
|
+
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record)
|
|
149
149
|
|
|
150
150
|
return parameters, config_dict
|
|
151
151
|
|
|
@@ -213,7 +213,7 @@ def recordset_to_fitres(recordset: RecordSet, keep_input: bool) -> FitRes:
|
|
|
213
213
|
)
|
|
214
214
|
configs_record = recordset.configs_records[f"{ins_str}.metrics"]
|
|
215
215
|
# pylint: disable-next=protected-access
|
|
216
|
-
metrics = _check_mapping_from_recordscalartype_to_scalar(configs_record
|
|
216
|
+
metrics = _check_mapping_from_recordscalartype_to_scalar(configs_record)
|
|
217
217
|
status = _extract_status_from_recordset(ins_str, recordset)
|
|
218
218
|
|
|
219
219
|
return FitRes(
|
|
@@ -274,7 +274,7 @@ def recordset_to_evaluateres(recordset: RecordSet) -> EvaluateRes:
|
|
|
274
274
|
configs_record = recordset.configs_records[f"{ins_str}.metrics"]
|
|
275
275
|
|
|
276
276
|
# pylint: disable-next=protected-access
|
|
277
|
-
metrics = _check_mapping_from_recordscalartype_to_scalar(configs_record
|
|
277
|
+
metrics = _check_mapping_from_recordscalartype_to_scalar(configs_record)
|
|
278
278
|
status = _extract_status_from_recordset(ins_str, recordset)
|
|
279
279
|
|
|
280
280
|
return EvaluateRes(
|
|
@@ -314,7 +314,7 @@ def recordset_to_getparametersins(recordset: RecordSet) -> GetParametersIns:
|
|
|
314
314
|
"""Derive GetParametersIns from a RecordSet object."""
|
|
315
315
|
config_record = recordset.configs_records["getparametersins.config"]
|
|
316
316
|
# pylint: disable-next=protected-access
|
|
317
|
-
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record
|
|
317
|
+
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record)
|
|
318
318
|
|
|
319
319
|
return GetParametersIns(config=config_dict)
|
|
320
320
|
|
|
@@ -365,7 +365,7 @@ def recordset_to_getpropertiesins(recordset: RecordSet) -> GetPropertiesIns:
|
|
|
365
365
|
"""Derive GetPropertiesIns from a RecordSet object."""
|
|
366
366
|
config_record = recordset.configs_records["getpropertiesins.config"]
|
|
367
367
|
# pylint: disable-next=protected-access
|
|
368
|
-
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record
|
|
368
|
+
config_dict = _check_mapping_from_recordscalartype_to_scalar(config_record)
|
|
369
369
|
|
|
370
370
|
return GetPropertiesIns(config=config_dict)
|
|
371
371
|
|
|
@@ -384,7 +384,7 @@ def recordset_to_getpropertiesres(recordset: RecordSet) -> GetPropertiesRes:
|
|
|
384
384
|
res_str = "getpropertiesres"
|
|
385
385
|
config_record = recordset.configs_records[f"{res_str}.properties"]
|
|
386
386
|
# pylint: disable-next=protected-access
|
|
387
|
-
properties = _check_mapping_from_recordscalartype_to_scalar(config_record
|
|
387
|
+
properties = _check_mapping_from_recordscalartype_to_scalar(config_record)
|
|
388
388
|
|
|
389
389
|
status = _extract_status_from_recordset(res_str, recordset=recordset)
|
|
390
390
|
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/common/serde.py
RENAMED
|
@@ -22,6 +22,7 @@ from google.protobuf.message import Message as GrpcMessage
|
|
|
22
22
|
# pylint: disable=E0611
|
|
23
23
|
from flwr.proto.clientappio_pb2 import ClientAppOutputCode, ClientAppOutputStatus
|
|
24
24
|
from flwr.proto.error_pb2 import Error as ProtoError
|
|
25
|
+
from flwr.proto.fab_pb2 import Fab as ProtoFab
|
|
25
26
|
from flwr.proto.message_pb2 import Context as ProtoContext
|
|
26
27
|
from flwr.proto.message_pb2 import Message as ProtoMessage
|
|
27
28
|
from flwr.proto.message_pb2 import Metadata as ProtoMetadata
|
|
@@ -686,6 +687,19 @@ def message_from_taskres(taskres: TaskRes) -> Message:
|
|
|
686
687
|
return message
|
|
687
688
|
|
|
688
689
|
|
|
690
|
+
# === FAB ===
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
def fab_to_proto(fab: typing.Fab) -> ProtoFab:
|
|
694
|
+
"""Create a proto Fab object from a Python Fab."""
|
|
695
|
+
return ProtoFab(hash_str=fab.hash_str, content=fab.content)
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
def fab_from_proto(fab: ProtoFab) -> typing.Fab:
|
|
699
|
+
"""Create a Python Fab object from a proto Fab."""
|
|
700
|
+
return typing.Fab(fab.hash_str, fab.content)
|
|
701
|
+
|
|
702
|
+
|
|
689
703
|
# === User configs ===
|
|
690
704
|
|
|
691
705
|
|
|
@@ -745,6 +759,7 @@ def metadata_to_proto(metadata: Metadata) -> ProtoMetadata:
|
|
|
745
759
|
group_id=metadata.group_id,
|
|
746
760
|
ttl=metadata.ttl,
|
|
747
761
|
message_type=metadata.message_type,
|
|
762
|
+
created_at=metadata.created_at,
|
|
748
763
|
)
|
|
749
764
|
return proto
|
|
750
765
|
|
|
@@ -771,7 +786,9 @@ def message_to_proto(message: Message) -> ProtoMessage:
|
|
|
771
786
|
"""Serialize `Message` to ProtoBuf."""
|
|
772
787
|
proto = ProtoMessage(
|
|
773
788
|
metadata=metadata_to_proto(message.metadata),
|
|
774
|
-
content=
|
|
789
|
+
content=(
|
|
790
|
+
recordset_to_proto(message.content) if message.has_content() else None
|
|
791
|
+
),
|
|
775
792
|
error=error_to_proto(message.error) if message.has_error() else None,
|
|
776
793
|
)
|
|
777
794
|
return proto
|
|
@@ -779,6 +796,7 @@ def message_to_proto(message: Message) -> ProtoMessage:
|
|
|
779
796
|
|
|
780
797
|
def message_from_proto(message_proto: ProtoMessage) -> Message:
|
|
781
798
|
"""Deserialize `Message` from ProtoBuf."""
|
|
799
|
+
created_at = message_proto.metadata.created_at
|
|
782
800
|
message = Message(
|
|
783
801
|
metadata=metadata_from_proto(message_proto.metadata),
|
|
784
802
|
content=(
|
|
@@ -792,6 +810,9 @@ def message_from_proto(message_proto: ProtoMessage) -> Message:
|
|
|
792
810
|
else None
|
|
793
811
|
),
|
|
794
812
|
)
|
|
813
|
+
# `.created_at` is set upon Message object construction
|
|
814
|
+
# we need to manually set it to the original value
|
|
815
|
+
message.metadata.created_at = created_at
|
|
795
816
|
return message
|
|
796
817
|
|
|
797
818
|
|
|
@@ -829,8 +850,8 @@ def run_to_proto(run: typing.Run) -> ProtoRun:
|
|
|
829
850
|
run_id=run.run_id,
|
|
830
851
|
fab_id=run.fab_id,
|
|
831
852
|
fab_version=run.fab_version,
|
|
853
|
+
fab_hash=run.fab_hash,
|
|
832
854
|
override_config=user_config_to_proto(run.override_config),
|
|
833
|
-
fab_hash="",
|
|
834
855
|
)
|
|
835
856
|
return proto
|
|
836
857
|
|
|
@@ -841,6 +862,7 @@ def run_from_proto(run_proto: ProtoRun) -> typing.Run:
|
|
|
841
862
|
run_id=run_proto.run_id,
|
|
842
863
|
fab_id=run_proto.fab_id,
|
|
843
864
|
fab_version=run_proto.fab_version,
|
|
865
|
+
fab_hash=run_proto.fab_hash,
|
|
844
866
|
override_config=user_config_from_proto(run_proto.override_config),
|
|
845
867
|
)
|
|
846
868
|
return run
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: flwr/proto/exec.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.0
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
16
|
+
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xdf\x02\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12L\n\x11\x66\x65\x64\x65ration_config\x18\x03 \x03(\x0b\x32\x31.flwr.proto.StartRunRequest.FederationConfigEntry\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1aK\n\x15\x46\x65\x64\x65rationConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\"\n\x10StartRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\"#\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\"(\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t2\xa0\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x62\x06proto3')
|
|
20
|
+
|
|
21
|
+
_globals = globals()
|
|
22
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
23
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.exec_pb2', _globals)
|
|
24
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
25
|
+
DESCRIPTOR._options = None
|
|
26
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._options = None
|
|
27
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
|
28
|
+
_globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._options = None
|
|
29
|
+
_globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._serialized_options = b'8\001'
|
|
30
|
+
_globals['_STARTRUNREQUEST']._serialized_start=88
|
|
31
|
+
_globals['_STARTRUNREQUEST']._serialized_end=439
|
|
32
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=289
|
|
33
|
+
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=362
|
|
34
|
+
_globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._serialized_start=364
|
|
35
|
+
_globals['_STARTRUNREQUEST_FEDERATIONCONFIGENTRY']._serialized_end=439
|
|
36
|
+
_globals['_STARTRUNRESPONSE']._serialized_start=441
|
|
37
|
+
_globals['_STARTRUNRESPONSE']._serialized_end=475
|
|
38
|
+
_globals['_STREAMLOGSREQUEST']._serialized_start=477
|
|
39
|
+
_globals['_STREAMLOGSREQUEST']._serialized_end=512
|
|
40
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_start=514
|
|
41
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_end=554
|
|
42
|
+
_globals['_EXEC']._serialized_start=557
|
|
43
|
+
_globals['_EXEC']._serialized_end=717
|
|
44
|
+
# @@protoc_insertion_point(module_scope)
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/exec_pb2.pyi
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
isort:skip_file
|
|
4
4
|
"""
|
|
5
5
|
import builtins
|
|
6
|
+
import flwr.proto.fab_pb2
|
|
6
7
|
import flwr.proto.transport_pb2
|
|
7
8
|
import google.protobuf.descriptor
|
|
8
9
|
import google.protobuf.internal.containers
|
|
@@ -44,21 +45,23 @@ class StartRunRequest(google.protobuf.message.Message):
|
|
|
44
45
|
def HasField(self, field_name: typing_extensions.Literal["value",b"value"]) -> builtins.bool: ...
|
|
45
46
|
def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
FAB_FIELD_NUMBER: builtins.int
|
|
48
49
|
OVERRIDE_CONFIG_FIELD_NUMBER: builtins.int
|
|
49
50
|
FEDERATION_CONFIG_FIELD_NUMBER: builtins.int
|
|
50
|
-
|
|
51
|
+
@property
|
|
52
|
+
def fab(self) -> flwr.proto.fab_pb2.Fab: ...
|
|
51
53
|
@property
|
|
52
54
|
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
53
55
|
@property
|
|
54
56
|
def federation_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
|
55
57
|
def __init__(self,
|
|
56
58
|
*,
|
|
57
|
-
|
|
59
|
+
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
|
58
60
|
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
59
61
|
federation_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
|
60
62
|
) -> None: ...
|
|
61
|
-
def
|
|
63
|
+
def HasField(self, field_name: typing_extensions.Literal["fab",b"fab"]) -> builtins.bool: ...
|
|
64
|
+
def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_config",b"federation_config","override_config",b"override_config"]) -> None: ...
|
|
62
65
|
global___StartRunRequest = StartRunRequest
|
|
63
66
|
|
|
64
67
|
class StartRunResponse(google.protobuf.message.Message):
|
{flwr_nightly-1.11.0.dev20240813 → flwr_nightly-1.11.0.dev20240815}/src/py/flwr/proto/message_pb2.py
RENAMED
|
@@ -17,7 +17,7 @@ from flwr.proto import recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
|
|
|
17
17
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\x12\x12\x38\n\x0bnode_config\x18\x02 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12$\n\x05state\x18\x03 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12\x36\n\nrun_config\x18\x04 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\x12\x12\x38\n\x0bnode_config\x18\x02 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12$\n\x05state\x18\x03 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12\x36\n\nrun_config\x18\x04 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbb\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x12\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x12\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x12\x12\x18\n\x10reply_to_message\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3')
|
|
21
21
|
|
|
22
22
|
_globals = globals()
|
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -37,5 +37,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
37
37
|
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=497
|
|
38
38
|
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=565
|
|
39
39
|
_globals['_METADATA']._serialized_start=568
|
|
40
|
-
_globals['_METADATA']._serialized_end=
|
|
40
|
+
_globals['_METADATA']._serialized_end=755
|
|
41
41
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -99,6 +99,7 @@ class Metadata(google.protobuf.message.Message):
|
|
|
99
99
|
GROUP_ID_FIELD_NUMBER: builtins.int
|
|
100
100
|
TTL_FIELD_NUMBER: builtins.int
|
|
101
101
|
MESSAGE_TYPE_FIELD_NUMBER: builtins.int
|
|
102
|
+
CREATED_AT_FIELD_NUMBER: builtins.int
|
|
102
103
|
run_id: builtins.int
|
|
103
104
|
message_id: typing.Text
|
|
104
105
|
src_node_id: builtins.int
|
|
@@ -107,6 +108,7 @@ class Metadata(google.protobuf.message.Message):
|
|
|
107
108
|
group_id: typing.Text
|
|
108
109
|
ttl: builtins.float
|
|
109
110
|
message_type: typing.Text
|
|
111
|
+
created_at: builtins.float
|
|
110
112
|
def __init__(self,
|
|
111
113
|
*,
|
|
112
114
|
run_id: builtins.int = ...,
|
|
@@ -117,6 +119,7 @@ class Metadata(google.protobuf.message.Message):
|
|
|
117
119
|
group_id: typing.Text = ...,
|
|
118
120
|
ttl: builtins.float = ...,
|
|
119
121
|
message_type: typing.Text = ...,
|
|
122
|
+
created_at: builtins.float = ...,
|
|
120
123
|
) -> None: ...
|
|
121
|
-
def ClearField(self, field_name: typing_extensions.Literal["dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","reply_to_message",b"reply_to_message","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> None: ...
|
|
124
|
+
def ClearField(self, field_name: typing_extensions.Literal["created_at",b"created_at","dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","reply_to_message",b"reply_to_message","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> None: ...
|
|
122
125
|
global___Metadata = Metadata
|