flwr-nightly 1.26.0.dev20260108__tar.gz → 1.26.0.dev20260112__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_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/PKG-INFO +1 -1
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/user_config.py +1 -1
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/auth_plugin/oidc_cli_plugin.py +8 -1
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/utils.py +120 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/constant.py +15 -0
- flwr_nightly-1.26.0.dev20260112/py/flwr/supercore/typing.py +29 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/utils.py +14 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/servicer/clientappio/clientappio_servicer.py +6 -4
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/pyproject.toml +1 -1
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/README.md +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/error.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/exception.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/message_type.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/metadata.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/publish.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/review.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/auth_plugin/noop_auth_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/build.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/cli_account_auth_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/config_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/constant.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/example.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/federation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/federation/ls.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/federation/show.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/install.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/log.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/login/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/login/login.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/ls.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/new/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/new/new.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/pull.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/run/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/run/run.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/run_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/stop.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/supernode/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/supernode/ls.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/supernode/register.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/supernode/unregister.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/client.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/dpfedavg_numpy_client.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_adapter_client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_adapter_client/connection.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_rere_client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_rere_client/connection.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_rere_client/grpc_adapter.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/grpc_rere_client/node_auth_client_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/message_handler/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/comms_mods.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/numpy_client.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/rest_client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/rest_client/connection.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/run_info_store.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/typing.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/client_app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/mod/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/mod/centraldp_mods.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/mod/localdp_mod.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/typing.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/args.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/config.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/constant.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/context.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/differential_privacy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/differential_privacy_constants.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/dp.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/event_log_plugin/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/event_log_plugin/event_log_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/exit.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/exit_code.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/exit_handler.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/signal_handler.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/inflatable.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/inflatable_protobuf_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/inflatable_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/logger.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/message.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/object_ref.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/parameter.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/array.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/arraychunk.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/arrayrecord.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/configrecord.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/conversion_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/metricrecord.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/recorddict.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/typeddict.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/recorddict_compat.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/retry_invoker.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/quantization.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/serde.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/serde_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/telemetry.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/typing.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/client/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/client/grpc_client/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/client/grpc_client/connection.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/common/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/common/constant.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/server/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/server/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/simulation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/appio_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/appio_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/appio_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/appio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/clientappio_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/clientappio_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/clientappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/clientappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/control_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/control_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/control_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/control_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/error_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/error_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/error_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/error_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fab_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fab_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fab_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fab_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/federation_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/federation_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/federation_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/federation_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fleet_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fleet_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fleet_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/grpcadapter_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/grpcadapter_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/grpcadapter_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/grpcadapter_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/heartbeat_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/heartbeat_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/heartbeat_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/heartbeat_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/log_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/log_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/log_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/log_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/message_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/message_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/message_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/message_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/node_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/node_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/node_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/node_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/recorddict_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/recorddict_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/recorddict_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/recorddict_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/run_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/run_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/run_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/run_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/serverappio_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/serverappio_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/serverappio_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/serverappio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/simulationio_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/simulationio_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/simulationio_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/simulationio_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/transport_pb2.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/transport_pb2.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/transport_pb2_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/py.typed +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/client_manager.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/client_proxy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/compat/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/compat/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/compat/app_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/compat/grid_client_proxy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/compat/legacy_context.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/criterion.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/fleet_event_log_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/grid/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/grid/grid.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/grid/grpc_grid.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/grid/inmemory_grid.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/history.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/run_serverapp.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/server.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/server_app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/server_config.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/serverapp/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/serverapp/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/serverapp_components.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/aggregate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/bulyan.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedadam.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedavg_android.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedopt.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedprox.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/krum.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/strategy/strategy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_adapter/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_adapter/grpc_adapter_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/in_memory_linkstate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/linkstate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/linkstate_factory.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/sqlite_linkstate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/linkstate/utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/serverappio/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/serverappio/serverappio_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/serverappio/serverappio_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/simulation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/simulation/simulationio_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/simulation/simulationio_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/superlink/utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/typing.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/utils/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/utils/tensorboard.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/utils/validator.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/constant.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/default_workflows.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/exception.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/bulyan.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/dp_adaptive_clipping.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/dp_fixed_clipping.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedadagrad.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedadam.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedavgm.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedmedian.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedopt.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedprox.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedtrimmedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedxgb_bagging.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedxgb_cyclic.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/fedyogi.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/krum.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/multikrum.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/qfedavg.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/result.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/strategy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/serverapp/strategy/strategy_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/legacy_app.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/ray_transport/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/ray_transport/utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/run_simulation.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/simulation/simulationio_connection.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/address.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/app_utils.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/cli/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/cli/flower_superexec.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/corestate/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/corestate/corestate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/corestate/in_memory_corestate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/corestate/sqlite_corestate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/date.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/ffs/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/ffs/disk_ffs.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/ffs/ffs.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/ffs/ffs_factory.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/grpc_health/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/grpc_health/health_server.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/grpc_health/simple_health_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/heartbeat.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/license_plugin/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/license_plugin/license_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/object_store/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/object_store/in_memory_object_store.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/object_store/object_store.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/object_store/object_store_factory.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/object_store/sqlite_object_store.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/primitives/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/primitives/asymmetric.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/primitives/asymmetric_ed25519.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/sqlite_mixin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/base_exec_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/clientapp_exec_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/exec_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/serverapp_exec_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/plugin/simulation_exec_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/superexec/run_superexec.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/version.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/artifact_provider/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/artifact_provider/artifact_provider.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/auth_plugin/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/auth_plugin/auth_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/auth_plugin/noop_auth_plugin.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/federation/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/federation/federation_manager.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/federation/noop_federation_manager.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/control_account_auth_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/control_event_log_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/control_grpc.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/control_license_interceptor.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/superlink/servicer/control/control_servicer.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/cli/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/cli/flower_supernode.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/cli/flwr_clientapp.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/nodestate/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/nodestate/in_memory_nodestate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/nodestate/nodestate.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/nodestate/nodestate_factory.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/runtime/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/runtime/run_clientapp.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/servicer/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/servicer/clientappio/__init__.py +0 -0
- {flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supernode/start_client_internal.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: flwr-nightly
|
|
3
|
-
Version: 1.26.0.
|
|
3
|
+
Version: 1.26.0.dev20260112
|
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import json
|
|
19
19
|
import time
|
|
20
|
+
import webbrowser
|
|
20
21
|
from collections.abc import Sequence
|
|
21
22
|
from pathlib import Path
|
|
22
23
|
from typing import Any
|
|
@@ -75,11 +76,17 @@ class OidcCliPlugin(CliAuthPlugin):
|
|
|
75
76
|
LoginError
|
|
76
77
|
If authentication times out.
|
|
77
78
|
"""
|
|
79
|
+
# Prompt user to login via browser
|
|
80
|
+
webbrowser.open(login_details.verification_uri_complete)
|
|
78
81
|
typer.secho(
|
|
79
|
-
"
|
|
82
|
+
"A browser window has been opened for you to "
|
|
83
|
+
"log into your Flower account.\n"
|
|
84
|
+
"If it did not open automatically, use this URL:\n"
|
|
80
85
|
f"{login_details.verification_uri_complete}",
|
|
81
86
|
fg=typer.colors.BLUE,
|
|
82
87
|
)
|
|
88
|
+
|
|
89
|
+
# Wait for user to complete login
|
|
83
90
|
start_time = time.time()
|
|
84
91
|
time.sleep(login_details.interval)
|
|
85
92
|
|
|
@@ -25,6 +25,7 @@ from typing import Any, cast
|
|
|
25
25
|
|
|
26
26
|
import grpc
|
|
27
27
|
import pathspec
|
|
28
|
+
import tomli
|
|
28
29
|
import typer
|
|
29
30
|
|
|
30
31
|
from flwr.common.constant import (
|
|
@@ -47,6 +48,9 @@ from flwr.common.grpc import (
|
|
|
47
48
|
create_channel,
|
|
48
49
|
on_channel_state_change,
|
|
49
50
|
)
|
|
51
|
+
from flwr.supercore.constant import FLOWER_CONFIG_FILE, SuperLinkConnectionTomlKey
|
|
52
|
+
from flwr.supercore.typing import SuperLinkConnection
|
|
53
|
+
from flwr.supercore.utils import get_flwr_home
|
|
50
54
|
|
|
51
55
|
from .auth_plugin import CliAuthPlugin, get_cli_plugin_class
|
|
52
56
|
from .cli_account_auth_interceptor import CliAccountAuthInterceptor
|
|
@@ -620,3 +624,119 @@ def validate_credentials_content(creds_path: Path) -> str:
|
|
|
620
624
|
raise typer.Exit(code=1)
|
|
621
625
|
|
|
622
626
|
return creds[ACCESS_TOKEN_KEY]
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
def parse_superlink_connection(
|
|
630
|
+
conn_dict: dict[str, Any], name: str
|
|
631
|
+
) -> SuperLinkConnection:
|
|
632
|
+
"""Parse SuperLink connection configuration from a TOML dictionary.
|
|
633
|
+
|
|
634
|
+
Parameters
|
|
635
|
+
----------
|
|
636
|
+
conn_dict : dict[str, Any]
|
|
637
|
+
The TOML configuration dictionary for the connection.
|
|
638
|
+
name : str
|
|
639
|
+
The name of the connection.
|
|
640
|
+
|
|
641
|
+
Returns
|
|
642
|
+
-------
|
|
643
|
+
SuperLinkConnection
|
|
644
|
+
The parsed SuperLink connection configuration.
|
|
645
|
+
"""
|
|
646
|
+
# Check required fields
|
|
647
|
+
address = conn_dict.get(SuperLinkConnectionTomlKey.ADDRESS)
|
|
648
|
+
root_certificates = conn_dict.get(SuperLinkConnectionTomlKey.ROOT_CERTIFICATES)
|
|
649
|
+
insecure = conn_dict.get(SuperLinkConnectionTomlKey.INSECURE)
|
|
650
|
+
enable_account_auth = conn_dict.get(SuperLinkConnectionTomlKey.ENABLE_ACCOUNT_AUTH)
|
|
651
|
+
if not (
|
|
652
|
+
isinstance(address, str)
|
|
653
|
+
# root-certificates is optional in TOML (can be missing)
|
|
654
|
+
and isinstance(root_certificates, (str, type(None)))
|
|
655
|
+
and isinstance(insecure, bool)
|
|
656
|
+
and isinstance(enable_account_auth, bool)
|
|
657
|
+
):
|
|
658
|
+
raise ValueError("Invalid SuperLink connection format.")
|
|
659
|
+
|
|
660
|
+
# Build and return SuperLinkConnection
|
|
661
|
+
return SuperLinkConnection(
|
|
662
|
+
name=name,
|
|
663
|
+
address=address,
|
|
664
|
+
root_certificates=root_certificates,
|
|
665
|
+
insecure=insecure,
|
|
666
|
+
enable_account_auth=enable_account_auth,
|
|
667
|
+
)
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
def read_superlink_connection(
|
|
671
|
+
connection_name: str | None = None,
|
|
672
|
+
) -> SuperLinkConnection | None:
|
|
673
|
+
"""Read a SuperLink connection from the Flower configuration file.
|
|
674
|
+
|
|
675
|
+
Parameters
|
|
676
|
+
----------
|
|
677
|
+
connection_name : str | None
|
|
678
|
+
The name of the SuperLink connection to load. If None, the default connection
|
|
679
|
+
will be loaded.
|
|
680
|
+
|
|
681
|
+
Returns
|
|
682
|
+
-------
|
|
683
|
+
SuperLinkConnection | None
|
|
684
|
+
The SuperLink connection, or None if the config file is missing or the
|
|
685
|
+
requested connection (or default) cannot be found.
|
|
686
|
+
|
|
687
|
+
Raises
|
|
688
|
+
------
|
|
689
|
+
typer.Exit
|
|
690
|
+
Raised if the configuration file is corrupted, or if the requested
|
|
691
|
+
connection (or default) cannot be found.
|
|
692
|
+
"""
|
|
693
|
+
config_path = get_flwr_home() / FLOWER_CONFIG_FILE
|
|
694
|
+
if not config_path.exists():
|
|
695
|
+
return None
|
|
696
|
+
|
|
697
|
+
try:
|
|
698
|
+
with config_path.open("rb") as file:
|
|
699
|
+
toml_dict = tomli.load(file)
|
|
700
|
+
|
|
701
|
+
superlink_config = toml_dict.get(SuperLinkConnectionTomlKey.SUPERLINK, {})
|
|
702
|
+
|
|
703
|
+
# Load the default SuperLink connection when not provided
|
|
704
|
+
if connection_name is None:
|
|
705
|
+
connection_name = superlink_config.get(SuperLinkConnectionTomlKey.DEFAULT)
|
|
706
|
+
|
|
707
|
+
# Exit when no connection name is available
|
|
708
|
+
if connection_name is None:
|
|
709
|
+
typer.secho(
|
|
710
|
+
"❌ No SuperLink connection set. A SuperLink connection needs to be "
|
|
711
|
+
"provided or one must be set as default in the Flower "
|
|
712
|
+
f"configuration file ({config_path}). Specify a default SuperLink "
|
|
713
|
+
"connection by adding: \n\n[superlink]\ndefault = 'connection_name'\n\n"
|
|
714
|
+
f"to the Flower configuration file ({config_path}).",
|
|
715
|
+
fg=typer.colors.RED,
|
|
716
|
+
err=True,
|
|
717
|
+
)
|
|
718
|
+
raise typer.Exit(code=1)
|
|
719
|
+
|
|
720
|
+
# Try to find the connection in the superlink dict
|
|
721
|
+
connection_config = superlink_config.get(connection_name)
|
|
722
|
+
|
|
723
|
+
if not connection_config:
|
|
724
|
+
error_msg = (
|
|
725
|
+
f"❌ {'Default ' if connection_name else ''} SuperLink connection "
|
|
726
|
+
)
|
|
727
|
+
error_msg += (
|
|
728
|
+
f"'{connection_name}' not found in Flower Config ({config_path})"
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
typer.secho(error_msg, fg=typer.colors.RED, err=True)
|
|
732
|
+
raise typer.Exit(code=1)
|
|
733
|
+
|
|
734
|
+
return parse_superlink_connection(connection_config, name=connection_name)
|
|
735
|
+
|
|
736
|
+
except (tomli.TOMLDecodeError, KeyError, ValueError) as err:
|
|
737
|
+
typer.secho(
|
|
738
|
+
f"❌ SuperLink connection is corrupted: {err}",
|
|
739
|
+
fg=typer.colors.RED,
|
|
740
|
+
err=True,
|
|
741
|
+
)
|
|
742
|
+
raise typer.Exit(code=1) from err
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/constant.py
RENAMED
|
@@ -75,3 +75,18 @@ class NodeStatus:
|
|
|
75
75
|
def __new__(cls) -> NodeStatus:
|
|
76
76
|
"""Prevent instantiation."""
|
|
77
77
|
raise TypeError(f"{cls.__name__} cannot be instantiated.")
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
# CLI connection configuration file name
|
|
81
|
+
FLOWER_CONFIG_FILE = "config.toml"
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class SuperLinkConnectionTomlKey:
|
|
85
|
+
"""TOML keys for SuperLink connection configuration."""
|
|
86
|
+
|
|
87
|
+
SUPERLINK = "superlink"
|
|
88
|
+
DEFAULT = "default"
|
|
89
|
+
ADDRESS = "address"
|
|
90
|
+
ROOT_CERTIFICATES = "root-certificates"
|
|
91
|
+
INSECURE = "insecure"
|
|
92
|
+
ENABLE_ACCOUNT_AUTH = "enable-account-auth"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Copyright 2025 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 type definitions for infrastructure."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from dataclasses import dataclass
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class SuperLinkConnection:
|
|
23
|
+
"""SuperLink connection configuration for CLI commands."""
|
|
24
|
+
|
|
25
|
+
name: str
|
|
26
|
+
address: str
|
|
27
|
+
root_certificates: str | None
|
|
28
|
+
insecure: bool
|
|
29
|
+
enable_account_auth: bool
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/supercore/utils.py
RENAMED
|
@@ -16,10 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
import json
|
|
19
|
+
import os
|
|
19
20
|
import re
|
|
21
|
+
from pathlib import Path
|
|
20
22
|
|
|
21
23
|
import requests
|
|
22
24
|
|
|
25
|
+
from flwr.common.constant import FLWR_DIR, FLWR_HOME
|
|
23
26
|
from flwr.supercore.version import package_version as flwr_version
|
|
24
27
|
|
|
25
28
|
from .constant import APP_ID_PATTERN, APP_VERSION_PATTERN
|
|
@@ -62,6 +65,17 @@ def int64_to_uint64(signed: int) -> int:
|
|
|
62
65
|
return signed
|
|
63
66
|
|
|
64
67
|
|
|
68
|
+
def get_flwr_home() -> Path:
|
|
69
|
+
"""Get the Flower home directory path.
|
|
70
|
+
|
|
71
|
+
Returns FLWR_HOME environment variable if set, otherwise returns a default
|
|
72
|
+
subdirectory in the user's home directory.
|
|
73
|
+
"""
|
|
74
|
+
if flwr_home := os.getenv(FLWR_HOME):
|
|
75
|
+
return Path(flwr_home)
|
|
76
|
+
return Path.home() / FLWR_DIR
|
|
77
|
+
|
|
78
|
+
|
|
65
79
|
def parse_app_spec(app_spec: str) -> tuple[str, str | None]:
|
|
66
80
|
"""Parse app specification string into app ID and version.
|
|
67
81
|
|
|
@@ -251,16 +251,18 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
|
|
|
251
251
|
)
|
|
252
252
|
raise RuntimeError("This line should never be reached.")
|
|
253
253
|
|
|
254
|
+
# Record message processing end time
|
|
255
|
+
state.record_message_processing_end(
|
|
256
|
+
message_id=request.messages_list[0].metadata.reply_to_message_id
|
|
257
|
+
)
|
|
258
|
+
|
|
254
259
|
# Store Message object to descendants mapping and preregister objects
|
|
255
260
|
objects_to_push: set[str] = set()
|
|
256
261
|
for object_tree in request.message_object_trees:
|
|
257
262
|
objects_to_push |= set(store.preregister(run_id, object_tree))
|
|
263
|
+
|
|
258
264
|
# Save the message to the state
|
|
259
265
|
state.store_message(message_from_proto(request.messages_list[0]))
|
|
260
|
-
# Record message processing end time
|
|
261
|
-
state.record_message_processing_end(
|
|
262
|
-
message_id=request.messages_list[0].metadata.reply_to_message_id
|
|
263
|
-
)
|
|
264
266
|
return PushAppMessagesResponse(objects_to_push=objects_to_push)
|
|
265
267
|
|
|
266
268
|
def SendAppHeartbeat(
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[tool.poetry]
|
|
6
6
|
name = "flwr-nightly"
|
|
7
|
-
version = "1.26.0.
|
|
7
|
+
version = "1.26.0.dev20260112"
|
|
8
8
|
description = "Flower: A Friendly Federated AI Framework"
|
|
9
9
|
license = "Apache-2.0"
|
|
10
10
|
authors = ["The Flower Authors <hello@flower.ai>"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/exception.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/app/message_type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/publish.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/app_cmd/review.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/federation/ls.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/federation/show.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/login/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/login/login.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/new/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/run/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/run_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/cli/supernode/ls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/comms_mods.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/mod/utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/numpy_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/run_info_store.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/client/typing.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/client_app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/typing.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/clientapp/utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/config.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/constant.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/__init__.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/exit.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/exit/exit_code.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/inflatable.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/logger.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/message.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/object_ref.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/parameter.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/record/array.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/retry_invoker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/serde_utils.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/telemetry.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/common/typing.py
RENAMED
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{flwr_nightly-1.26.0.dev20260108 → flwr_nightly-1.26.0.dev20260112}/py/flwr/compat/client/app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|