flwr-nightly 1.26.0.dev20260129__py3-none-any.whl → 1.26.0.dev20260201__py3-none-any.whl

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.
@@ -56,20 +56,28 @@ class LinkStateFactory:
56
56
 
57
57
  def state(self) -> LinkState:
58
58
  """Return a State instance and create it, if necessary."""
59
+ # Return cached state if it exists
60
+ if self.state_instance is not None:
61
+ if self.database == FLWR_IN_MEMORY_DB_NAME:
62
+ log(DEBUG, "Using InMemoryState")
63
+ else:
64
+ log(DEBUG, "Using SqlLinkState")
65
+ return self.state_instance
66
+
59
67
  # Get the ObjectStore instance
60
68
  object_store = self.objectstore_factory.store()
61
69
 
62
70
  # InMemoryState
63
71
  if self.database == FLWR_IN_MEMORY_DB_NAME:
64
- if self.state_instance is None:
65
- self.state_instance = InMemoryLinkState(
66
- self.federation_manager, object_store
67
- )
72
+ self.state_instance = InMemoryLinkState(
73
+ self.federation_manager, object_store
74
+ )
68
75
  log(DEBUG, "Using InMemoryState")
69
76
  return self.state_instance
70
77
 
71
78
  # SqlLinkState
72
79
  state = SqlLinkState(self.database, self.federation_manager, object_store)
73
80
  state.initialize()
81
+ self.state_instance = state
74
82
  log(DEBUG, "Using SqlLinkState")
75
83
  return state
@@ -33,7 +33,7 @@ class DiskFfs(Ffs): # pylint: disable=R0904
33
33
  base_dir : str
34
34
  The base directory to store the objects.
35
35
  """
36
- self.base_dir = Path(base_dir)
36
+ self.base_dir = Path(base_dir).expanduser()
37
37
 
38
38
  def put(self, content: bytes, meta: dict[str, str]) -> str:
39
39
  """Store bytes and metadata and return key (hash of content).
@@ -49,15 +49,23 @@ class ObjectStoreFactory:
49
49
  ObjectStore
50
50
  An ObjectStore instance for storing objects by object_id.
51
51
  """
52
+ # Return cached store if it exists
53
+ if self.store_instance is not None:
54
+ if self.database == FLWR_IN_MEMORY_DB_NAME:
55
+ log(DEBUG, "Using InMemoryObjectStore")
56
+ else:
57
+ log(DEBUG, "Using SqlObjectStore")
58
+ return self.store_instance
59
+
52
60
  # InMemoryObjectStore
53
61
  if self.database == FLWR_IN_MEMORY_DB_NAME:
54
- if self.store_instance is None:
55
- self.store_instance = InMemoryObjectStore()
62
+ self.store_instance = InMemoryObjectStore()
56
63
  log(DEBUG, "Using InMemoryObjectStore")
57
64
  return self.store_instance
58
65
 
59
66
  # SqlObjectStore
60
67
  store = SqlObjectStore(self.database)
61
68
  store.initialize()
69
+ self.store_instance = store
62
70
  log(DEBUG, "Using SqlObjectStore")
63
71
  return store
@@ -30,6 +30,7 @@ from sqlalchemy.orm import Session, sessionmaker
30
30
 
31
31
  from flwr.common.logger import log
32
32
  from flwr.supercore.constant import FLWR_IN_MEMORY_SQLITE_DB_URL, SQLITE_PRAGMAS
33
+ from flwr.supercore.state.alembic.utils import run_migrations
33
34
 
34
35
  _current_session: ContextVar[Session | None] = ContextVar(
35
36
  "current_sqlalchemy_session",
@@ -193,9 +194,14 @@ class SqlMixin(ABC):
193
194
  # Create session factory
194
195
  self._session_factory = sessionmaker(bind=self._engine)
195
196
 
196
- # Create tables defined in metadata (idempotent - only creates missing tables)
197
- if (metadata := self.get_metadata()) is not None:
197
+ # Create database
198
+ metadata: MetaData | None = self.get_metadata()
199
+ if metadata and self.database_url == FLWR_IN_MEMORY_SQLITE_DB_URL:
200
+ # In-memory databases: create tables directly from SQLAlchemy metadata
198
201
  metadata.create_all(self._engine)
202
+ else:
203
+ # File-based databases: use Alembic migrations for schema versioning
204
+ run_migrations(self._engine)
199
205
 
200
206
  # Get all table names using inspector
201
207
  inspector = inspect(self._engine)
@@ -233,7 +233,7 @@ def _try_setup_client_authentication(
233
233
 
234
234
  try:
235
235
  ssh_private_key = load_ssh_private_key(
236
- Path(args.auth_supernode_private_key).read_bytes(),
236
+ Path(args.auth_supernode_private_key).expanduser().read_bytes(),
237
237
  None,
238
238
  )
239
239
  if not isinstance(ssh_private_key, ec.EllipticCurvePrivateKey):
@@ -260,6 +260,7 @@ def _try_obtain_trusted_entities(
260
260
  """Validate and return the trust entities."""
261
261
  if not trusted_entities_path:
262
262
  return None
263
+ trusted_entities_path = trusted_entities_path.expanduser()
263
264
  if not trusted_entities_path.is_file():
264
265
  flwr_exit(
265
266
  ExitCode.SUPERNODE_INVALID_TRUSTED_ENTITIES,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.26.0.dev20260129
3
+ Version: 1.26.0.dev20260201
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
@@ -32,7 +32,7 @@ Provides-Extra: rest
32
32
  Provides-Extra: simulation
33
33
  Requires-Dist: SQLAlchemy (>=2.0.45,<3.0.0)
34
34
  Requires-Dist: alembic (>=1.18.1,<2.0.0)
35
- Requires-Dist: click (<8.2.0)
35
+ Requires-Dist: click (>=8.0.0,<9.0.0)
36
36
  Requires-Dist: cryptography (>=44.0.1,<45.0.0)
37
37
  Requires-Dist: grpcio (>=1.70.0,<2.0.0)
38
38
  Requires-Dist: grpcio-health-checking (>=1.70.0,<2.0.0)
@@ -14,18 +14,18 @@ flwr/cli/auth_plugin/__init__.py,sha256=qpebWV9uLpx72_J8yTVgT1DlH2Y9MK_RraDoTYEq
14
14
  flwr/cli/auth_plugin/auth_plugin.py,sha256=CKGsk0RvSmKPDfz5RsQIE_w1bWROBSOoVydbub4Z-I8,2813
15
15
  flwr/cli/auth_plugin/noop_auth_plugin.py,sha256=GKrZ97w7NoZGn2r6gzqtMvyeHXeIkNKCLTfT_NHaiwg,3209
16
16
  flwr/cli/auth_plugin/oidc_cli_plugin.py,sha256=1gN00FifSrhUA5s5uaE_GpQ3N7U8fQec4PXlSJr50RU,5975
17
- flwr/cli/build.py,sha256=u3oheZ3cVthWSy0X39d-iwFSh0zebCUNsEtK5hRSCy8,9994
17
+ flwr/cli/build.py,sha256=Zfy6SfuhnkfVt0nccfrX-lWxNgtzhhG-OTSXG0VFfLQ,10007
18
18
  flwr/cli/cli_account_auth_interceptor.py,sha256=mXgxThpZjU_2Xlae9xT8ewOw60GeE64comDd57asLIY,3680
19
19
  flwr/cli/config/__init__.py,sha256=46z6whA3hvKkl9APRs-UG7Ym3K9VOqKx_pYcgelRjtE,788
20
20
  flwr/cli/config/ls.py,sha256=14JvV7llvhKozz19eIrrrWxR6WeXyko8apPFiq4P08E,2661
21
- flwr/cli/config_migration.py,sha256=Qhi_ZCQhTSgA3NNGwc9yltkT9u2Jwbzvsw6bnhpdUWE,10621
21
+ flwr/cli/config_migration.py,sha256=Lc_y6zebVBgRr6JdiPJcyroUjuOG0k7UQEbqISUPC2E,10647
22
22
  flwr/cli/config_utils.py,sha256=LNmbPODWefsEtt4ov63BFtuTcK1Pb8Z-AHt1_haWWdA,7841
23
23
  flwr/cli/constant.py,sha256=MYLI7m9ntwWNkFgEEtKVo1JWX3umf_0EdqY8nJy-83Y,3525
24
24
  flwr/cli/example.py,sha256=SNTorkKPrx1rOryGREUyZu8TcOc1-vFv1zEddaysdY0,2216
25
25
  flwr/cli/federation/__init__.py,sha256=okxswL4fAjApI9gV_alU1lRkTUcQRbwlzvtUTLz61fE,793
26
26
  flwr/cli/federation/ls.py,sha256=VwoM0BrlcvQvE4oGqFol4sAI9JqtR32SYN5gzDfmVPY,10144
27
27
  flwr/cli/flower_config.py,sha256=YQfuFGW52jf6EoAxWrXQYw6lmuH0j2qsZ0twHRLxx4k,15278
28
- flwr/cli/install.py,sha256=GRjDf9TNd-te9EQadiqxhkAWVI7rXE6p6xUmB8MccUw,9111
28
+ flwr/cli/install.py,sha256=AKjJxDr_kBJirpqMg_EemlP23CfH5UF3h5IjtJQ_xPs,9124
29
29
  flwr/cli/log.py,sha256=BPA0dvGlXx5PrtURPua5fJyF7iVrb28K4fEY2Uth0EE,7317
30
30
  flwr/cli/login/__init__.py,sha256=B1SXKU3HCQhWfFDMJhlC7FOl8UsvH4mxysxeBnrfyUE,800
31
31
  flwr/cli/login/login.py,sha256=o-jm5QRMIpivE8kpY7cPTGbr7nQhsyFYaftMtBaaT0s,3649
@@ -34,22 +34,22 @@ flwr/cli/new/__init__.py,sha256=QA1E2QtzPvFCjLTUHnFnJbufuFiGyT_0Y53Wpbvg1F0,790
34
34
  flwr/cli/new/new.py,sha256=15phs5dhEpo7ORs7uulGzHWtW9W5ZGn0EKFE_T5WXb8,7829
35
35
  flwr/cli/pull.py,sha256=XzBvLrdYGrSCuky5OoCEU4V9UR9QlyZMT7Tj-W6wSw0,2946
36
36
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
37
- flwr/cli/run/run.py,sha256=aoWZT0pQPbYnLobkDykddjJ5RgAL-RXpt9-Spi9I_wI,8765
37
+ flwr/cli/run/run.py,sha256=4TnkVR6k921F3p198Avdh7qVs0IUt_NcUsInlhV6NUI,9355
38
38
  flwr/cli/run_utils.py,sha256=ZnlBOqFfRxVEPZKR_9zYrynNcohiCFY8QN6OFyOCrQs,5082
39
39
  flwr/cli/stop.py,sha256=c5e2gTumMT6pKr7ESIXZ-IbLY6fEOfWbkesvQeAfaSQ,3934
40
40
  flwr/cli/supernode/__init__.py,sha256=DBkjoPo2hS2Y-ghJxwLbrAbCQFBgD82_Itl2_892UBo,917
41
41
  flwr/cli/supernode/ls.py,sha256=mmpwIpwp5YZSdq3gDlv0h8QpKoMBgZWrMrvJm_ltiRw,7594
42
- flwr/cli/supernode/register.py,sha256=_nHLCngBJyB3qGWUfMcEYGMVOdSn1nh-5X8cYFZfEG0,4755
42
+ flwr/cli/supernode/register.py,sha256=HzgJ1Q8Mlx7oJE-2kRLbIX2OrQP7wM0IeywirLqyz9Y,4724
43
43
  flwr/cli/supernode/unregister.py,sha256=ha8-oTXA4NW8xHLyQPHn-e0f7-9bF2QyjXxUD299O6s,2938
44
44
  flwr/cli/typing.py,sha256=xGAIv9mAVzs6UXapzu4i8bQ-MckzHMSihtLcnu5SWGU,7562
45
- flwr/cli/utils.py,sha256=PEzRVZPaLBxF-9yTAkl3mi--z_W2eC9JOHoMoQHBuYw,17251
45
+ flwr/cli/utils.py,sha256=JiKK7PqNHDUERdhaDPEHNcp2rELthS3GWGBPqwwM02c,17337
46
46
  flwr/client/__init__.py,sha256=xwkPJfdeWxIIfmiPE5vnmnY_JbTlErP0Qs9eBP6qRFg,1252
47
47
  flwr/client/client.py,sha256=3HAchxvknKG9jYbB7swNyDj-e5vUWDuMKoLvbT7jCVM,7895
48
48
  flwr/client/dpfedavg_numpy_client.py,sha256=ELDHyEJcTB-FlLhHC-JXy8HuB3ZFHfT0HL3g1VSWY5w,7451
49
49
  flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
50
50
  flwr/client/grpc_adapter_client/connection.py,sha256=rr3NA7d-BYsWNTu1VRE9966FxToLLECLBAVNhf5uFoo,4242
51
51
  flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
52
- flwr/client/grpc_rere_client/connection.py,sha256=JTcNI-J3Mwln4qKerImsqzgV1iavhlraTq_1vgmwglg,13819
52
+ flwr/client/grpc_rere_client/connection.py,sha256=0IU1X5W1H8D1Lit6_-sJIPLRyfpOv10AGOsQboZTg7E,13832
53
53
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=HR6P604_RZa6CRd0tf2Nmcw5e5puRIAryWQrq64yxyw,7568
54
54
  flwr/client/grpc_rere_client/node_auth_client_interceptor.py,sha256=rIUo64KOSYMC-GlfTvIYgeouAX8i6eOd5Rq2Yi9UFMY,2437
55
55
  flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
@@ -75,8 +75,8 @@ flwr/clientapp/mod/localdp_mod.py,sha256=CHh0SJOSWSD6In9p9yOFbE7S4eH1m-aQcStT8ZI
75
75
  flwr/clientapp/typing.py,sha256=Ld2rsD40SvIRD1Z_IdAGaYSbRtkgXZ5CPFIkJJ3Ao-A,862
76
76
  flwr/clientapp/utils.py,sha256=UEb3DFpAsAaG1ARU34D3L8njn4k1iPg-qpHl_Hyo8zA,4340
77
77
  flwr/common/__init__.py,sha256=7Rf7Ti78N7vUydpIZ2b-1im6ciWz0G5_w91N9YEPsLM,4195
78
- flwr/common/args.py,sha256=smdDpQbWOOmOt5uVpeY2oF-VjaNUR9U3iCqvlQJyr-Q,5818
79
- flwr/common/config.py,sha256=YmIO0OU-jC1trcUPh3Fo6emf_2shDcy5Rc2cAOtTujM,13695
78
+ flwr/common/args.py,sha256=4m368Vm-9UEHbJI5S3pgjF6Kf9jZ6pNsQOLrH1av3tI,5870
79
+ flwr/common/config.py,sha256=A0pqN12KDGhhkwvwrPgdlfa3Msm6llyFILx0W9fTUDc,13721
80
80
  flwr/common/constant.py,sha256=W_6nBuZOagCsx4w8ZcrrEmyDRAekTGyMhmJycgq7tIQ,10146
81
81
  flwr/common/context.py,sha256=pnFVcn-X0XKK1giw82I54meNodJJEoUwZ-NpkzT37zo,2421
82
82
  flwr/common/differential_privacy.py,sha256=HiW2qQa5mCQfE0oePapFp3q0uZzjoHKthp5UrkRFtY8,6143
@@ -85,7 +85,7 @@ flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
85
85
  flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
86
86
  flwr/common/event_log_plugin/event_log_plugin.py,sha256=uJYR363nVzjfJePay3UHwaifwgBx2rAbKHHAuQC10VU,2014
87
87
  flwr/common/exit/__init__.py,sha256=8W7xaO1iw0vacgmQW7FTFbSh7csNv6XfsgIlnIbNF6U,978
88
- flwr/common/exit/exit.py,sha256=EBHZos4EhZLxW1lmZXDVlFUOf0_eTQ1FxzQiZ466hZ0,4018
88
+ flwr/common/exit/exit.py,sha256=cyvHiznpsbESOdhWbBhWGUiVa83dr_1nZ2ia_m6B4fk,4018
89
89
  flwr/common/exit/exit_code.py,sha256=xpvi_3UOhf6AT8pR0ZGXyBxWfnuFFE50O1cKqOGVxxE,7000
90
90
  flwr/common/exit/exit_handler.py,sha256=zUAXHtp4rYK_sbkgsqS5zrVAzJUiSBrB-a4Ay3vSPE8,2302
91
91
  flwr/common/exit/signal_handler.py,sha256=o_e33v9kP0jz13q-8BZDrKF7vNCzOApvDPZ3-nTXfIc,3697
@@ -93,7 +93,7 @@ flwr/common/grpc.py,sha256=8XoMTA5rJMze8fG6vOs1g4_rkxMhfpvMEYJPnqYPi2g,9799
93
93
  flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
94
94
  flwr/common/inflatable_protobuf_utils.py,sha256=GTX9yoEAXhKPwcKc4ltmJHUvARFsC4qvkoNCMHqpVtc,5065
95
95
  flwr/common/inflatable_utils.py,sha256=nooSMLLiOcHGqFx9n1Il_dAp76JIKyc36ibnkijwELE,19540
96
- flwr/common/logger.py,sha256=nAfGWqT6b39tzEPe74L7qCgyPmxeJNYwVvTyHi5Tb-4,12981
96
+ flwr/common/logger.py,sha256=kyeiusWV5T-FsG8wc21n_CBokuwg1S_YCerVp0a1MrE,12994
97
97
  flwr/common/message.py,sha256=uKQ4-gMt62zVuPfke4JmcB9q-yN9kMGTsSUUF9fnH-4,19915
98
98
  flwr/common/object_ref.py,sha256=aw6BLQlZRVqcfuyX2bScc71ZTRZtrBIAHyxYfplTkNE,9081
99
99
  flwr/common/parameter.py,sha256=UVw6sOgehEFhFs4uUCMl2kfVq1PD6ncmWgPLMsZPKPE,2095
@@ -135,10 +135,10 @@ flwr/proto/appio_pb2.py,sha256=GhleCmuqLiDqvumA0qgVl37NTwuan_K_XpUKStXZxwU,4274
135
135
  flwr/proto/appio_pb2.pyi,sha256=pbrd1mRg0q7mbGqkJYYX1-GwzhiSnuZpjrAJU5im0Og,9512
136
136
  flwr/proto/appio_pb2_grpc.py,sha256=f8jZU97X0SNIz4PQ9qj43yAhgVzmaGInItUCOAGZ7tU,897
137
137
  flwr/proto/appio_pb2_grpc.pyi,sha256=M-7_sdP1mjiKKC4o13hXUx5sEnX3BXSIXgovr9tNVCg,1071
138
- flwr/proto/clientappio_pb2.py,sha256=7-BA0kgQtCGskopHdqc5QbPx7gMBp0g_bT-CykD-klc,2920
138
+ flwr/proto/clientappio_pb2.py,sha256=VRBIUTnrkoFR4LuwFPBUtajvQhCYuxWKHTv6Qhf_DYw,2920
139
139
  flwr/proto/clientappio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
140
- flwr/proto/clientappio_pb2_grpc.py,sha256=lPU9DN2yCVoiKpzGIjQMonNQacKL1skmQRtOqiBUjR8,22011
141
- flwr/proto/clientappio_pb2_grpc.pyi,sha256=3vOOTv4v66HtiZ1t5xUpBqjsBdFzZ7lLGMR4e5eHlUg,9403
140
+ flwr/proto/clientappio_pb2_grpc.py,sha256=Xf6VhpV-wXnrpZE-flaVHlGUDP1Q1-c6xmlZYwOmK5Y,22912
141
+ flwr/proto/clientappio_pb2_grpc.pyi,sha256=OTD5b8s-FyUgVpKJHrVgLPo6CGzUTTZJPGxEGbj-8oo,12086
142
142
  flwr/proto/control_pb2.py,sha256=RSrFkLnCxmrW9HXv8Qj2H7_34568HU9uKe9D23uPnBE,9231
143
143
  flwr/proto/control_pb2.pyi,sha256=tTdf9mOD_rrN96l9uh8rBPc1-sTGHOdiAhtIY9mGtZc,16528
144
144
  flwr/proto/control_pb2_grpc.py,sha256=XDGrK2tIT_AcopBnygjddXZRdBTtxP29q-9mK63PsP4,23321
@@ -187,21 +187,21 @@ flwr/proto/run_pb2.py,sha256=8tQDMyiBjw_-S6jiJpFd_-dDrMq9ZhyPyWwnmFu3qek,5101
187
187
  flwr/proto/run_pb2.pyi,sha256=t42qPzJTY1GVUUrkdIjdoPfAKlsXlUw9A8vBpwgbHsI,10852
188
188
  flwr/proto/run_pb2_grpc.py,sha256=l5u1Ww6JxVLVN784Z2OQbkQ-tAf5yYGh6QbNDc4F5II,895
189
189
  flwr/proto/run_pb2_grpc.pyi,sha256=fMwjLr-QCljWBa8uk0fvMCytnrF1-IzFLCbezqEmvdU,1071
190
- flwr/proto/serverappio_pb2.py,sha256=fqZA5baD7lerWBn1Pb9PWhXlDvsb8pLOJ99DV4cYh-4,4045
190
+ flwr/proto/serverappio_pb2.py,sha256=R-NbCzzkVKPKqnJQrlslBEGIw4PvvC3nwQkxkmsxrqA,4045
191
191
  flwr/proto/serverappio_pb2.pyi,sha256=KpVM8B_O0M3RFJ-DtnNlQapJs4V-7pHcdEb2G3ECbhE,1998
192
- flwr/proto/serverappio_pb2_grpc.py,sha256=fKBfYvUzGj1GUWg2XAmecMI8uRkPeXwXBI4u5KMCXXE,30987
193
- flwr/proto/serverappio_pb2_grpc.pyi,sha256=2YmbFoWfgvdH6nKxHcPVwpfy3yBsJIvlXOd1V9nE2vc,12927
194
- flwr/proto/simulationio_pb2.py,sha256=wlgTZYceR_LMOmbWpXQSU5yF3IksrxfrTz1WoiHNo9w,2787
192
+ flwr/proto/serverappio_pb2_grpc.py,sha256=UWium7vo4x6odOSJ-ymnsnEqGSrvVUvJO4xT37_EJ4k,32123
193
+ flwr/proto/serverappio_pb2_grpc.pyi,sha256=Vr0BEZGmJOU_Xs0fJ0eijWmr8LqpnD-exrDC8kRJmRM,16310
194
+ flwr/proto/simulationio_pb2.py,sha256=WZ7fqvwPdayfgH8UZPdkhQwMtEWcTm0t_h9a9srrSBQ,2787
195
195
  flwr/proto/simulationio_pb2.pyi,sha256=OsUGEduv1iJCew8C4cMz87Y5uQAhHDmxNyVfwA4kXd8,824
196
- flwr/proto/simulationio_pb2_grpc.py,sha256=whIX3jigGIUm_RnbFsEfphLD0kI82dpT1jIimGm-Foc,20091
197
- flwr/proto/simulationio_pb2_grpc.pyi,sha256=20ZjvlsLohqxIrtsMhml5jMlmDJjle_-PGuvLE1v568,8639
196
+ flwr/proto/simulationio_pb2_grpc.py,sha256=j37CCQNKDaTKXaFxm56MCR6UAIVF2zCH2hLO1sXbqWY,20994
197
+ flwr/proto/simulationio_pb2_grpc.pyi,sha256=lN9HoAvnHX_IJmtMKswge5qyhdHc1wdi-k_IHbqEu9Q,11328
198
198
  flwr/proto/transport_pb2.py,sha256=xqDF2oI0PzAndH17O80SQkyOT_QF9m7CQ0166He7UDQ,10122
199
199
  flwr/proto/transport_pb2.pyi,sha256=A-AzbyDAyp4hzJCuC6MOA1NewkFmtuhPwFCjPKqQP0Q,22450
200
200
  flwr/proto/transport_pb2_grpc.py,sha256=jYsbV3KYdp4TaNfWxv3ljFEvB-Yjsa8MIPtTH-vVPPk,3600
201
201
  flwr/proto/transport_pb2_grpc.pyi,sha256=qd2cOXq6HBZtwRfPpKuni27NGMJCAxyP5R95Vk8WWDU,2073
202
202
  flwr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
203
  flwr/server/__init__.py,sha256=LQQHiuL2jy7TpNaKastRdGsexlxSt5ZWAQNVqitDnrY,1598
204
- flwr/server/app.py,sha256=90rGFbhQw0vDrVDamqBVIm0RtUDfUUdUcXc9WpU7BKI,31678
204
+ flwr/server/app.py,sha256=Q4p3_-ft63L8psN9pOFTL7FvnyMhcky6GNI_cjdQqSw,31691
205
205
  flwr/server/client_manager.py,sha256=3WOqNWh5dlqPRG-DMGwXiyvGNEYS_jKqXKkFIkMqWLQ,6187
206
206
  flwr/server/client_proxy.py,sha256=QS_RGgjSZ8V4StAHH8zc7W9_os2FyO4wNqkbylQMBTY,2341
207
207
  flwr/server/compat/__init__.py,sha256=0IsttWvY15qO98_1GyzVC-vR1e_ZPXOdu2qUlOkYMPE,886
@@ -221,7 +221,7 @@ flwr/server/server.py,sha256=Oqv3WZ92KN9XTS6vqcYFTEvJM0sHZfkUmNM8xgbhZBE,17698
221
221
  flwr/server/server_app.py,sha256=udSNhp5Syg0XJj-AnfqPGkBkg9zuPaSgm1LCL_4PYkc,9469
222
222
  flwr/server/server_config.py,sha256=anmj2Rf18kM1chyl-9myRLDS77YVKTS6MpsDh2nIFOY,1318
223
223
  flwr/server/serverapp/__init__.py,sha256=xcC0T_MQSMS9cicUzUUpMNCOsF2d8Oh_8jvnoBLuZvo,800
224
- flwr/server/serverapp/app.py,sha256=pVbVwskQHULC5lvL-uDbKK67LVbYoJpT-H_e-w89qFU,9975
224
+ flwr/server/serverapp/app.py,sha256=-88vN2d-7FtqV9L--nvcVpYHNLgfG-Jd0tYQEAmA6lw,10163
225
225
  flwr/server/serverapp_components.py,sha256=b8GbqXkiEsiOw61gGITVj6eFpl66upEf7eMjDu1Oo-M,2078
226
226
  flwr/server/strategy/__init__.py,sha256=HhsSWMWaC7oCb2g7Kqn1MBKdrfvgi8VxACy9ZL706Q0,2836
227
227
  flwr/server/strategy/aggregate.py,sha256=ebIKolvRzSGwVKbxSZtofGSQAIT8LRddMW2c33mXQ2w,14070
@@ -271,7 +271,7 @@ flwr/server/superlink/fleet/vce/vce_api.py,sha256=A62Vx3r71bNI-v10IUen_27fDJoYXs
271
271
  flwr/server/superlink/linkstate/__init__.py,sha256=KSUCjOfJlW1g6GAjlqK3mTviqLvJLuQEzSJwO27Qokg,1052
272
272
  flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=1-aaSwad77SeYND3HEF2041KNG5ZA-8i1RcheYZMNq8,31689
273
273
  flwr/server/superlink/linkstate/linkstate.py,sha256=Zz2vBI0QFFnptCUIeNjqQCbpCvMMzfsZluprEMkkHio,16809
274
- flwr/server/superlink/linkstate/linkstate_factory.py,sha256=BTzPIqrWa797YKdOEHt0iu4ujxRcK4FNvUgjsOYQfMs,2859
274
+ flwr/server/superlink/linkstate/linkstate_factory.py,sha256=CgAoYgisVOrHQizN6u6_L-iKZdv5mgBszag6LgAfe3w,3139
275
275
  flwr/server/superlink/linkstate/sql_linkstate.py,sha256=ziZvpEQBVV9GSxjHiS0fAyaY1G7x4y6XKlNLH-c_4TQ,48727
276
276
  flwr/server/superlink/linkstate/utils.py,sha256=IA1mKKhGVBPoD61VXKFa8dZ_prnfuyWIuKAeeHPLmuE,16000
277
277
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
@@ -338,7 +338,7 @@ flwr/supercore/credential_store/credential_store.py,sha256=m_YHW0_A8CBfuRVq-GJgG
338
338
  flwr/supercore/credential_store/file_credential_store.py,sha256=PeWuigqtMGMYnj_tKnWtlmJtu7OLuVaOB4D9GS47lHc,2771
339
339
  flwr/supercore/date.py,sha256=NsadFTzy6LMRB9zNeEV1szvzwQT45wC639P9kBTRZK4,1213
340
340
  flwr/supercore/ffs/__init__.py,sha256=U3KXwG_SplEvchat27K0LYPoPHzh-cwwT_NHsGlYMt8,908
341
- flwr/supercore/ffs/disk_ffs.py,sha256=IWFjikDs8BOfHIgFgOGI6p4Xl7U3n8lGbocmIibepcg,3241
341
+ flwr/supercore/ffs/disk_ffs.py,sha256=WTgK7A15EkHcBZTEQEKl1YdfJj8vRfCwJk7cnnHE4oo,3254
342
342
  flwr/supercore/ffs/ffs.py,sha256=Q71OLKYIuuhe_XDTqku03qozUfDBQ5Lxg-MbpGDPHlk,2364
343
343
  flwr/supercore/ffs/ffs_factory.py,sha256=tPwVDWMddgo45X8tk1lBCTkmJenWBbRagjWfx7UsYuE,1459
344
344
  flwr/supercore/grpc_health/__init__.py,sha256=rCPZ7ucPY9NXBWuhb9iKs2D-yZ0rQ5YkJ7LlOeahN9A,948
@@ -350,12 +350,12 @@ flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe
350
350
  flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
351
351
  flwr/supercore/object_store/in_memory_object_store.py,sha256=-DU6n1Ef3EmllHY9SzeXw57ftoU0mR_6or4NIDSZlcs,9322
352
352
  flwr/supercore/object_store/object_store.py,sha256=XLo-xe258TmCel9dNLCJepFjXaQtEi0wBqzU9YsyJVg,5221
353
- flwr/supercore/object_store/object_store_factory.py,sha256=gFATFiSdKIcwL_sjk2OMbpi3Fb5_C6K3sdTRxNbi-SY,2308
353
+ flwr/supercore/object_store/object_store_factory.py,sha256=RByhm8Ow6TxmklP1MTluaze3v5kw0O1CILrA7Y0nWMg,2604
354
354
  flwr/supercore/object_store/sql_object_store.py,sha256=ZBmyc3a_GXZFNaefDCxhrri-_BgcQPOj7OtUfrPcjKo,10130
355
355
  flwr/supercore/primitives/__init__.py,sha256=Tx8GOjnmMo8Y74RsDGrMpfr-E0Nl8dcUDF784_ge6F8,745
356
356
  flwr/supercore/primitives/asymmetric.py,sha256=1643niHYj3uEbfPd06VuMHwN3tKVwg0uVyR3RhTdWIU,3778
357
357
  flwr/supercore/primitives/asymmetric_ed25519.py,sha256=eIhOTMibQW0FJX4MXdplHdL3HcfCiKuFu2mQ8GQTUz8,5025
358
- flwr/supercore/sql_mixin.py,sha256=dAK_NCnXa0Ili0N5vYgQ9dlVOE-KeiQCRc2Z0RcS0sU,11765
358
+ flwr/supercore/sql_mixin.py,sha256=lI-7kCudH2f8XEpxoeJsqYr0iA1grGeogwnu_4JHHqE,12058
359
359
  flwr/supercore/state/__init__.py,sha256=FkKhsNVM4LjlRlOgXTz6twINmw5ohIUKS_OER0BNo_w,724
360
360
  flwr/supercore/state/alembic/__init__.py,sha256=pC-y-xsfgi9YwCrqnt814yOJ9ytlDRUFGqOY6Qzt-_U,746
361
361
  flwr/supercore/state/alembic/env.py,sha256=8zrPVosMxLqZ8CAhS7PHOlMU2Vr-LEt7gSCN4UYSAJg,3913
@@ -396,7 +396,7 @@ flwr/superlink/servicer/control/control_license_interceptor.py,sha256=8d28soJ0mL
396
396
  flwr/superlink/servicer/control/control_servicer.py,sha256=s9LgpbXUGU7DYwOvFUzNjgyKEWHyjPJQeUfp-XXUBWM,25523
397
397
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
398
398
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
399
- flwr/supernode/cli/flower_supernode.py,sha256=1HdhlGaVo51_7w3AL1hE5zfIVJMow0Ngi_F3Js01djs,10815
399
+ flwr/supernode/cli/flower_supernode.py,sha256=LhciYbUwUfvkR4hiHxizERhQzpqZOAG9d6qVm6-V4jY,10891
400
400
  flwr/supernode/cli/flwr_clientapp.py,sha256=W3tAyqSfeHbPhqBC4Pfo9bsyFdkBKPqdKlhGmeUKwKg,3173
401
401
  flwr/supernode/nodestate/__init__.py,sha256=CyLLObbmmVgfRO88UCM0VMait1dL57mUauUDfuSHsbU,976
402
402
  flwr/supernode/nodestate/in_memory_nodestate.py,sha256=DBhpDsPmitkOr86pW78_0aiG_jWgjjCXerFONXsyOSE,10578
@@ -408,7 +408,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
408
408
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
409
409
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=rRL4CQ0L78jF_p0ct4-JMGREt6wWRy__wy4czF4f54Y,11639
410
410
  flwr/supernode/start_client_internal.py,sha256=3MkeDiWZr-SsvACuuAxJi8nYw6GYNKOO6q8b36E3R9k,26250
411
- flwr_nightly-1.26.0.dev20260129.dist-info/METADATA,sha256=NbKTb0Td1o6FqIV5yayWIBxPmZTa77sbO_eGmst0wEM,14439
412
- flwr_nightly-1.26.0.dev20260129.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
413
- flwr_nightly-1.26.0.dev20260129.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
414
- flwr_nightly-1.26.0.dev20260129.dist-info/RECORD,,
411
+ flwr_nightly-1.26.0.dev20260201.dist-info/METADATA,sha256=FBBYBlISXR4y-A2v4xpIkeyUzYIrk1VXdbv__inBD8I,14447
412
+ flwr_nightly-1.26.0.dev20260201.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
413
+ flwr_nightly-1.26.0.dev20260201.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
414
+ flwr_nightly-1.26.0.dev20260201.dist-info/RECORD,,