flwr 1.15.2__tar.gz → 1.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flwr-1.15.2 → flwr-1.17.0}/PKG-INFO +5 -5
- {flwr-1.15.2 → flwr-1.17.0}/README.md +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/pyproject.toml +7 -7
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/build.py +2 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/log.py +20 -21
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.baseline.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.flowertune.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.huggingface.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.jax.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.mlx.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.sklearn.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/run/run.py +5 -9
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/app.py +6 -4
- flwr-1.17.0/src/py/flwr/client/client_app.py +459 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/clientapp/app.py +6 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_client/connection.py +24 -21
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/message_handler/message_handler.py +28 -28
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/__init__.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/centraldp_mods.py +7 -7
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/comms_mods.py +16 -22
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/localdp_mod.py +4 -4
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +31 -31
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/rest_client/connection.py +4 -6
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/run_info_store.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/supernode/__init__.py +0 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/supernode/app.py +1 -11
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/__init__.py +12 -4
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/address.py +35 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/args.py +8 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/auth_plugin/auth_plugin.py +2 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/config.py +4 -4
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/constant.py +16 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/context.py +4 -4
- flwr-1.17.0/src/py/flwr/common/event_log_plugin/__init__.py +22 -0
- flwr-1.17.0/src/py/flwr/common/event_log_plugin/event_log_plugin.py +60 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/grpc.py +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/logger.py +2 -2
- flwr-1.17.0/src/py/flwr/common/message.py +644 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/object_ref.py +0 -10
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/record/__init__.py +8 -4
- flwr-1.17.0/src/py/flwr/common/record/arrayrecord.py +626 -0
- flwr-1.15.2/src/py/flwr/common/record/configsrecord.py → flwr-1.17.0/src/py/flwr/common/record/configrecord.py +75 -29
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/record/conversion_utils.py +9 -18
- flwr-1.15.2/src/py/flwr/common/record/metricsrecord.py → flwr-1.17.0/src/py/flwr/common/record/metricrecord.py +78 -32
- flwr-1.17.0/src/py/flwr/common/record/recorddict.py +288 -0
- flwr-1.17.0/src/py/flwr/common/recorddict_compat.py +410 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/quantization.py +5 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +1 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/serde.py +67 -190
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/telemetry.py +0 -10
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/typing.py +44 -8
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/exec_pb2.py +3 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/exec_pb2.pyi +3 -3
- flwr-1.17.0/src/py/flwr/proto/message_pb2.py +41 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/message_pb2.pyi +9 -9
- flwr-1.17.0/src/py/flwr/proto/recorddict_pb2.py +70 -0
- flwr-1.15.2/src/py/flwr/proto/recordset_pb2.pyi → flwr-1.17.0/src/py/flwr/proto/recorddict_pb2.pyi +35 -35
- flwr-1.17.0/src/py/flwr/proto/run_pb2.py +64 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/run_pb2.pyi +3 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/__init__.py +3 -1
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/app.py +74 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/compat/__init__.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/compat/app.py +15 -12
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/compat/app_utils.py +26 -18
- flwr-1.15.2/src/py/flwr/server/compat/driver_client_proxy.py → flwr-1.17.0/src/py/flwr/server/compat/grid_client_proxy.py +41 -41
- flwr-1.17.0/src/py/flwr/server/fleet_event_log_interceptor.py +94 -0
- {flwr-1.15.2/src/py/flwr/server/driver → flwr-1.17.0/src/py/flwr/server/grid}/__init__.py +8 -7
- flwr-1.15.2/src/py/flwr/server/driver/driver.py → flwr-1.17.0/src/py/flwr/server/grid/grid.py +48 -19
- flwr-1.15.2/src/py/flwr/server/driver/grpc_driver.py → flwr-1.17.0/src/py/flwr/server/grid/grpc_grid.py +88 -56
- flwr-1.15.2/src/py/flwr/server/driver/inmemory_driver.py → flwr-1.17.0/src/py/flwr/server/grid/inmemory_grid.py +41 -54
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/run_serverapp.py +6 -17
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/server_app.py +126 -33
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/serverapp/app.py +10 -10
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +8 -12
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +3 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +33 -38
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +171 -132
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/linkstate.py +51 -64
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +253 -285
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/utils.py +171 -133
- {flwr-1.15.2/src/py/flwr/server/superlink/driver → flwr-1.17.0/src/py/flwr/server/superlink/serverappio}/__init__.py +1 -1
- {flwr-1.15.2/src/py/flwr/server/superlink/driver → flwr-1.17.0/src/py/flwr/server/superlink/serverappio}/serverappio_grpc.py +1 -1
- {flwr-1.15.2/src/py/flwr/server/superlink/driver → flwr-1.17.0/src/py/flwr/server/superlink/serverappio}/serverappio_servicer.py +27 -29
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/simulation/simulationio_servicer.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/typing.py +3 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/utils/__init__.py +2 -2
- flwr-1.17.0/src/py/flwr/server/utils/validator.py +93 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/default_workflows.py +52 -58
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +48 -50
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/app.py +2 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/ray_transport/ray_actor.py +4 -2
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +34 -32
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/run_simulation.py +15 -15
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/app.py +0 -14
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/deployment.py +4 -4
- flwr-1.17.0/src/py/flwr/superexec/exec_event_log_interceptor.py +135 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/exec_grpc.py +10 -4
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/exec_servicer.py +6 -6
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/exec_user_auth_interceptor.py +22 -4
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/executor.py +3 -3
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/simulation.py +3 -3
- flwr-1.15.2/src/py/flwr/client/client_app.py +0 -285
- flwr-1.15.2/src/py/flwr/client/message_handler/task_handler.py +0 -37
- flwr-1.15.2/src/py/flwr/common/message.py +0 -408
- flwr-1.15.2/src/py/flwr/common/record/parametersrecord.py +0 -204
- flwr-1.15.2/src/py/flwr/common/record/recordset.py +0 -202
- flwr-1.15.2/src/py/flwr/common/recordset_compat.py +0 -418
- flwr-1.15.2/src/py/flwr/proto/message_pb2.py +0 -41
- flwr-1.15.2/src/py/flwr/proto/recordset_pb2.py +0 -70
- flwr-1.15.2/src/py/flwr/proto/run_pb2.py +0 -64
- flwr-1.15.2/src/py/flwr/proto/task_pb2.py +0 -33
- flwr-1.15.2/src/py/flwr/proto/task_pb2.pyi +0 -100
- flwr-1.15.2/src/py/flwr/proto/task_pb2_grpc.py +0 -4
- flwr-1.15.2/src/py/flwr/proto/task_pb2_grpc.pyi +0 -4
- flwr-1.15.2/src/py/flwr/server/utils/validator.py +0 -108
- {flwr-1.15.2 → flwr-1.17.0}/LICENSE +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/app.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/cli_user_auth_interceptor.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/config_utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/constant.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/example.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/install.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/login/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/login/login.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/ls.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/new.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/LICENSE.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/README.baseline.md.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/README.flowertune.md.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/__init__.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.huggingface.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.jax.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.mlx.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.sklearn.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/dataset.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/dataset.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/models.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/server_app.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/strategy.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/model.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.huggingface.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.jax.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.mlx.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.sklearn.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/strategy.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.huggingface.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.jax.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.mlx.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.numpy.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.sklearn.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/task.tensorflow.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/utils.baseline.py.tpl +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/run/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/stop.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/client.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/clientapp/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/clientapp/clientappio_servicer.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/clientapp/utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_client/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_rere_client/client_interceptor.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/heartbeat.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/mod/utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/nodestate/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/nodestate/in_memory_nodestate.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/nodestate/nodestate.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/nodestate/nodestate_factory.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/numpy_client.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/client/typing.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/auth_plugin/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/date.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/differential_privacy.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/dp.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/exit/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/exit/exit.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/exit/exit_code.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/exit_handlers.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/parameter.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/pyproject.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/record/typeddict.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/retry_invoker.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/common/version.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/error_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/exec_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/exec_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fab_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/log_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/node_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- /flwr-1.15.2/src/py/flwr/proto/recordset_pb2_grpc.py → /flwr-1.17.0/src/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- /flwr-1.15.2/src/py/flwr/proto/recordset_pb2_grpc.pyi → /flwr-1.17.0/src/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/transport_pb2.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/py.typed +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/client_manager.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/client_proxy.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/criterion.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/history.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/server.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/server_config.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/serverapp_components.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/krum.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/strategy/strategy.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/ffs/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/ffs/disk_ffs.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/ffs/ffs.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/ffs/ffs_factory.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/grpc_rere/server_interceptor.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/superlink/utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/constant.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/legacy_app.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/superexec/__init__.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: flwr
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.0
|
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
|
5
5
|
Home-page: https://flower.ai
|
|
6
6
|
License: Apache-2.0
|
|
7
7
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
|
8
8
|
Author: The Flower Authors
|
|
9
9
|
Author-email: hello@flower.ai
|
|
10
|
-
Requires-Python: >=3.9,<4.0
|
|
10
|
+
Requires-Python: >=3.9.2,<4.0.0
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -16,12 +16,12 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
16
16
|
Classifier: Operating System :: POSIX :: Linux
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
22
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
25
25
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
26
26
|
Classifier: Topic :: Scientific/Engineering
|
|
27
27
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
@@ -32,7 +32,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
32
32
|
Classifier: Typing :: Typed
|
|
33
33
|
Provides-Extra: rest
|
|
34
34
|
Provides-Extra: simulation
|
|
35
|
-
Requires-Dist: cryptography (>=
|
|
35
|
+
Requires-Dist: cryptography (>=44.0.1,<45.0.0)
|
|
36
36
|
Requires-Dist: grpcio (>=1.62.3,<2.0.0,!=1.65.0)
|
|
37
37
|
Requires-Dist: iterators (>=0.0.2,<0.0.3)
|
|
38
38
|
Requires-Dist: numpy (>=1.26.0,<3.0.0)
|
|
@@ -63,7 +63,7 @@ Description-Content-Type: text/markdown
|
|
|
63
63
|
<a href="https://flower.ai/">Website</a> |
|
|
64
64
|
<a href="https://flower.ai/blog">Blog</a> |
|
|
65
65
|
<a href="https://flower.ai/docs/">Docs</a> |
|
|
66
|
-
<a href="https://flower.ai/
|
|
66
|
+
<a href="https://flower.ai/events/flower-ai-summit-2025">Summit</a> |
|
|
67
67
|
<a href="https://flower.ai/join-slack">Slack</a>
|
|
68
68
|
<br /><br />
|
|
69
69
|
</p>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<a href="https://flower.ai/">Website</a> |
|
|
10
10
|
<a href="https://flower.ai/blog">Blog</a> |
|
|
11
11
|
<a href="https://flower.ai/docs/">Docs</a> |
|
|
12
|
-
<a href="https://flower.ai/
|
|
12
|
+
<a href="https://flower.ai/events/flower-ai-summit-2025">Summit</a> |
|
|
13
13
|
<a href="https://flower.ai/join-slack">Slack</a>
|
|
14
14
|
<br /><br />
|
|
15
15
|
</p>
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.17.0"
|
|
8
8
|
description = "Flower: A Friendly Federated AI Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
@@ -51,8 +51,6 @@ exclude = ["src/py/**/*_test.py"]
|
|
|
51
51
|
[tool.poetry.scripts]
|
|
52
52
|
# `flwr` CLI
|
|
53
53
|
flwr = "flwr.cli.app:app"
|
|
54
|
-
# SuperExec (can run with either Deployment Engine or Simulation Engine)
|
|
55
|
-
flower-superexec = "flwr.superexec.app:run_superexec" # Deprecated
|
|
56
54
|
# Simulation Engine
|
|
57
55
|
flwr-simulation = "flwr.simulation.app:flwr_simulation"
|
|
58
56
|
flower-simulation = "flwr.simulation.run_simulation:run_simulation_from_cli"
|
|
@@ -60,17 +58,15 @@ flower-simulation = "flwr.simulation.run_simulation:run_simulation_from_cli"
|
|
|
60
58
|
flower-superlink = "flwr.server.app:run_superlink"
|
|
61
59
|
flower-supernode = "flwr.client.supernode.app:run_supernode"
|
|
62
60
|
flwr-serverapp = "flwr.server.serverapp:flwr_serverapp"
|
|
63
|
-
flower-server-app = "flwr.server.run_serverapp:run_server_app" # Deprecated
|
|
64
61
|
flwr-clientapp = "flwr.client.clientapp:flwr_clientapp"
|
|
65
|
-
flower-client-app = "flwr.client.supernode:run_client_app" # Deprecated
|
|
66
62
|
|
|
67
63
|
[tool.poetry.dependencies]
|
|
68
|
-
python = "^3.9"
|
|
64
|
+
python = "^3.9.2"
|
|
69
65
|
# Mandatory dependencies
|
|
70
66
|
numpy = ">=1.26.0,<3.0.0"
|
|
71
67
|
grpcio = "^1.62.3,!=1.65.0"
|
|
72
68
|
protobuf = "^4.21.6"
|
|
73
|
-
cryptography = "^
|
|
69
|
+
cryptography = "^44.0.1"
|
|
74
70
|
pycryptodome = "^3.18.0"
|
|
75
71
|
iterators = "^0.0.2"
|
|
76
72
|
typer = "^0.12.5"
|
|
@@ -150,6 +146,10 @@ extend_exclude = [
|
|
|
150
146
|
"framework/docs/source/tutorial-quickstart-huggingface.rst",
|
|
151
147
|
"framework/docs/source/_templates/autosummary/*",
|
|
152
148
|
"framework/docs/source/ref-api/*",
|
|
149
|
+
"intelligence/docs/source/ts-ref-api/*",
|
|
150
|
+
"intelligence/docs/source/swift-ref-api/*",
|
|
151
|
+
"intelligence/docs/source/_templates/autosummary/*",
|
|
152
|
+
"intelligence/docs/source/conf.py",
|
|
153
153
|
]
|
|
154
154
|
|
|
155
155
|
[tool.isort]
|
|
@@ -38,6 +38,10 @@ from flwr.proto.exec_pb2_grpc import ExecStub
|
|
|
38
38
|
from .utils import init_channel, try_obtain_cli_auth_plugin, unauthenticated_exc_handler
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
class AllLogsRetrieved(BaseException):
|
|
42
|
+
"""Raised when all logs are retrieved."""
|
|
43
|
+
|
|
44
|
+
|
|
41
45
|
def start_stream(
|
|
42
46
|
run_id: int, channel: grpc.Channel, refresh_period: int = CONN_REFRESH_PERIOD
|
|
43
47
|
) -> None:
|
|
@@ -56,10 +60,10 @@ def start_stream(
|
|
|
56
60
|
# pylint: disable=E1101
|
|
57
61
|
if e.code() == grpc.StatusCode.NOT_FOUND:
|
|
58
62
|
logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
|
|
59
|
-
if e.code() == grpc.StatusCode.CANCELLED:
|
|
60
|
-
pass
|
|
61
63
|
else:
|
|
62
64
|
raise e
|
|
65
|
+
except AllLogsRetrieved:
|
|
66
|
+
pass
|
|
63
67
|
finally:
|
|
64
68
|
channel.close()
|
|
65
69
|
|
|
@@ -94,6 +98,7 @@ def stream_logs(
|
|
|
94
98
|
with unauthenticated_exc_handler():
|
|
95
99
|
for res in stub.StreamLogs(req, timeout=duration):
|
|
96
100
|
print(res.log_output, end="")
|
|
101
|
+
raise AllLogsRetrieved()
|
|
97
102
|
except grpc.RpcError as e:
|
|
98
103
|
# pylint: disable=E1101
|
|
99
104
|
if e.code() != grpc.StatusCode.DEADLINE_EXCEEDED:
|
|
@@ -108,27 +113,21 @@ def stream_logs(
|
|
|
108
113
|
def print_logs(run_id: int, channel: grpc.Channel, timeout: int) -> None:
|
|
109
114
|
"""Print logs from the beginning of a run."""
|
|
110
115
|
stub = ExecStub(channel)
|
|
111
|
-
req = StreamLogsRequest(run_id=run_id)
|
|
116
|
+
req = StreamLogsRequest(run_id=run_id, after_timestamp=0.0)
|
|
112
117
|
|
|
113
118
|
try:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
break
|
|
127
|
-
if e.code() == grpc.StatusCode.CANCELLED:
|
|
128
|
-
break
|
|
129
|
-
raise e
|
|
130
|
-
except KeyboardInterrupt:
|
|
131
|
-
logger(DEBUG, "Stream interrupted by user")
|
|
119
|
+
with unauthenticated_exc_handler():
|
|
120
|
+
# Enforce timeout for graceful exit
|
|
121
|
+
for res in stub.StreamLogs(req, timeout=timeout):
|
|
122
|
+
print(res.log_output)
|
|
123
|
+
break
|
|
124
|
+
except grpc.RpcError as e:
|
|
125
|
+
if e.code() == grpc.StatusCode.NOT_FOUND: # pylint: disable=E1101
|
|
126
|
+
logger(ERROR, "Invalid run_id `%s`, exiting", run_id)
|
|
127
|
+
elif e.code() == grpc.StatusCode.DEADLINE_EXCEEDED: # pylint: disable=E1101
|
|
128
|
+
pass
|
|
129
|
+
else:
|
|
130
|
+
raise e
|
|
132
131
|
finally:
|
|
133
132
|
channel.close()
|
|
134
133
|
logger(DEBUG, "Channel closed")
|
{flwr-1.15.2 → flwr-1.17.0}/src/py/flwr/cli/new/templates/app/code/flwr_tune/client_app.py.tpl
RENAMED
|
@@ -35,7 +35,7 @@ warnings.filterwarnings("ignore", category=UserWarning)
|
|
|
35
35
|
# pylint: disable=too-many-arguments
|
|
36
36
|
# pylint: disable=too-many-instance-attributes
|
|
37
37
|
class FlowerClient(NumPyClient):
|
|
38
|
-
"""
|
|
38
|
+
"""Flower client for LLM fine-tuning."""
|
|
39
39
|
|
|
40
40
|
def __init__(
|
|
41
41
|
self,
|
|
@@ -35,15 +35,11 @@ from flwr.cli.constant import FEDERATION_CONFIG_HELP_MESSAGE
|
|
|
35
35
|
from flwr.common.config import (
|
|
36
36
|
flatten_dict,
|
|
37
37
|
parse_config_args,
|
|
38
|
-
|
|
38
|
+
user_config_to_configrecord,
|
|
39
39
|
)
|
|
40
40
|
from flwr.common.constant import CliOutputFormat
|
|
41
41
|
from flwr.common.logger import print_json_error, redirect_output, restore_output
|
|
42
|
-
from flwr.common.serde import
|
|
43
|
-
configs_record_to_proto,
|
|
44
|
-
fab_to_proto,
|
|
45
|
-
user_config_to_proto,
|
|
46
|
-
)
|
|
42
|
+
from flwr.common.serde import config_record_to_proto, fab_to_proto, user_config_to_proto
|
|
47
43
|
from flwr.common.typing import Fab
|
|
48
44
|
from flwr.proto.exec_pb2 import StartRunRequest # pylint: disable=E0611
|
|
49
45
|
from flwr.proto.exec_pb2_grpc import ExecStub
|
|
@@ -171,14 +167,14 @@ def _run_with_exec_api(
|
|
|
171
167
|
|
|
172
168
|
fab = Fab(fab_hash, content)
|
|
173
169
|
|
|
174
|
-
# Construct a `
|
|
170
|
+
# Construct a `ConfigRecord` out of a flattened `UserConfig`
|
|
175
171
|
fed_conf = flatten_dict(federation_config.get("options", {}))
|
|
176
|
-
c_record =
|
|
172
|
+
c_record = user_config_to_configrecord(fed_conf)
|
|
177
173
|
|
|
178
174
|
req = StartRunRequest(
|
|
179
175
|
fab=fab_to_proto(fab),
|
|
180
176
|
override_config=user_config_to_proto(parse_config_args(config_overrides)),
|
|
181
|
-
federation_options=
|
|
177
|
+
federation_options=config_record_to_proto(c_record),
|
|
182
178
|
)
|
|
183
179
|
with unauthenticated_exc_handler():
|
|
184
180
|
res = stub.StartRun(req)
|
|
@@ -495,8 +495,9 @@ def start_client_internal(
|
|
|
495
495
|
context = run_info_store.retrieve_context(run_id=run_id)
|
|
496
496
|
# Create an error reply message that will never be used to prevent
|
|
497
497
|
# the used-before-assignment linting error
|
|
498
|
-
reply_message =
|
|
499
|
-
|
|
498
|
+
reply_message = Message(
|
|
499
|
+
Error(code=ErrorCode.UNKNOWN, reason="Unknown"),
|
|
500
|
+
reply_to=message,
|
|
500
501
|
)
|
|
501
502
|
|
|
502
503
|
# Handle app loading and task message
|
|
@@ -593,8 +594,9 @@ def start_client_internal(
|
|
|
593
594
|
log(ERROR, "%s raised an exception", exc_entity, exc_info=ex)
|
|
594
595
|
|
|
595
596
|
# Create error message
|
|
596
|
-
reply_message =
|
|
597
|
-
|
|
597
|
+
reply_message = Message(
|
|
598
|
+
Error(code=e_code, reason=reason),
|
|
599
|
+
reply_to=message,
|
|
598
600
|
)
|
|
599
601
|
else:
|
|
600
602
|
# No exception, update node state
|