flwr-nightly 1.19.0.dev20250611__py3-none-any.whl → 1.19.0.dev20250612__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.
Files changed (38) hide show
  1. flwr/client/grpc_rere_client/connection.py +47 -29
  2. flwr/client/grpc_rere_client/grpc_adapter.py +8 -0
  3. flwr/client/rest_client/connection.py +70 -51
  4. flwr/common/inflatable.py +24 -0
  5. flwr/common/serde.py +2 -0
  6. flwr/common/typing.py +2 -0
  7. flwr/proto/fleet_pb2.py +12 -16
  8. flwr/proto/fleet_pb2.pyi +4 -19
  9. flwr/proto/fleet_pb2_grpc.py +34 -0
  10. flwr/proto/fleet_pb2_grpc.pyi +13 -0
  11. flwr/proto/message_pb2.py +15 -9
  12. flwr/proto/message_pb2.pyi +41 -0
  13. flwr/proto/run_pb2.py +24 -24
  14. flwr/proto/run_pb2.pyi +4 -1
  15. flwr/proto/serverappio_pb2.py +22 -26
  16. flwr/proto/serverappio_pb2.pyi +4 -19
  17. flwr/proto/serverappio_pb2_grpc.py +34 -0
  18. flwr/proto/serverappio_pb2_grpc.pyi +13 -0
  19. flwr/server/grid/grpc_grid.py +20 -9
  20. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +25 -0
  21. flwr/server/superlink/fleet/message_handler/message_handler.py +33 -2
  22. flwr/server/superlink/fleet/rest_rere/rest_api.py +26 -2
  23. flwr/server/superlink/linkstate/in_memory_linkstate.py +17 -2
  24. flwr/server/superlink/linkstate/linkstate.py +6 -2
  25. flwr/server/superlink/linkstate/sqlite_linkstate.py +19 -7
  26. flwr/server/superlink/serverappio/serverappio_servicer.py +65 -29
  27. flwr/server/superlink/simulation/simulationio_servicer.py +2 -1
  28. flwr/server/superlink/utils.py +23 -10
  29. flwr/supercore/object_store/in_memory_object_store.py +160 -33
  30. flwr/supercore/object_store/object_store.py +54 -7
  31. flwr/superexec/deployment.py +6 -2
  32. flwr/superexec/exec_servicer.py +4 -1
  33. flwr/superexec/executor.py +4 -0
  34. flwr/superexec/simulation.py +7 -1
  35. {flwr_nightly-1.19.0.dev20250611.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/METADATA +1 -1
  36. {flwr_nightly-1.19.0.dev20250611.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/RECORD +38 -38
  37. {flwr_nightly-1.19.0.dev20250611.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/WHEEL +0 -0
  38. {flwr_nightly-1.19.0.dev20250611.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/entry_points.txt +0 -0
@@ -18,6 +18,8 @@
18
18
  import abc
19
19
  from typing import Optional
20
20
 
21
+ from flwr.proto.message_pb2 import ObjectTree # pylint: disable=E0611
22
+
21
23
 
22
24
  class NoObjectInStoreError(Exception):
23
25
  """Error when trying to access an element in the ObjectStore that does not exist."""
@@ -39,20 +41,23 @@ class ObjectStore(abc.ABC):
39
41
  """
40
42
 
41
43
  @abc.abstractmethod
42
- def preregister(self, object_ids: list[str]) -> list[str]:
44
+ def preregister(self, run_id: int, object_tree: ObjectTree) -> list[str]:
43
45
  """Identify and preregister missing objects in the `ObjectStore`.
44
46
 
45
47
  Parameters
46
48
  ----------
47
- object_ids : list[str]
48
- A list of object IDs to check against the store. Any object ID not already
49
- present will be preregistered.
49
+ run_id : int
50
+ The ID of the run for which to preregister objects.
51
+ object_tree : ObjectTree
52
+ The object tree containing the IDs of objects to preregister.
53
+ This tree should contain all objects that are expected to be
54
+ stored in the `ObjectStore`.
50
55
 
51
56
  Returns
52
57
  -------
53
58
  list[str]
54
- A list of object IDs that were not present in the `ObjectStore` and have now
55
- been preregistered.
59
+ A list of object IDs that were either not previously preregistered
60
+ in the `ObjectStore`, or were preregistered but are not yet available.
56
61
  """
57
62
 
58
63
  @abc.abstractmethod
@@ -84,12 +89,34 @@ class ObjectStore(abc.ABC):
84
89
 
85
90
  @abc.abstractmethod
86
91
  def delete(self, object_id: str) -> None:
87
- """Delete an object from the store.
92
+ """Delete an object and its unreferenced descendants from the store.
93
+
94
+ This method attempts to recursively delete the specified object and its
95
+ descendants, if they are not referenced by any other object.
88
96
 
89
97
  Parameters
90
98
  ----------
91
99
  object_id : str
92
100
  The object_id under which the object is stored.
101
+
102
+ Notes
103
+ -----
104
+ The object of the given object_id will NOT be deleted if it is still referenced
105
+ by any other object in the store.
106
+ """
107
+
108
+ @abc.abstractmethod
109
+ def delete_objects_in_run(self, run_id: int) -> None:
110
+ """Delete all objects that were registered in a specific run.
111
+
112
+ Parameters
113
+ ----------
114
+ run_id : int
115
+ The ID of the run for which to delete objects.
116
+
117
+ Notes
118
+ -----
119
+ Objects that are still registered in other runs will NOT be deleted.
93
120
  """
94
121
 
95
122
  @abc.abstractmethod
@@ -129,6 +156,16 @@ class ObjectStore(abc.ABC):
129
156
  A list of object IDs of all descendant objects of the ``Message``.
130
157
  """
131
158
 
159
+ @abc.abstractmethod
160
+ def delete_message_descendant_ids(self, msg_object_id: str) -> None:
161
+ """Delete the mapping from a ``Message`` object ID to its descendants.
162
+
163
+ Parameters
164
+ ----------
165
+ msg_object_id : str
166
+ The object ID of the ``Message``.
167
+ """
168
+
132
169
  @abc.abstractmethod
133
170
  def __contains__(self, object_id: str) -> bool:
134
171
  """Check if an object_id is in the store.
@@ -143,3 +180,13 @@ class ObjectStore(abc.ABC):
143
180
  bool
144
181
  True if the object_id is in the store, False otherwise.
145
182
  """
183
+
184
+ @abc.abstractmethod
185
+ def __len__(self) -> int:
186
+ """Return the number of objects in the store.
187
+
188
+ Returns
189
+ -------
190
+ int
191
+ The number of objects currently stored.
192
+ """
@@ -132,6 +132,7 @@ class DeploymentEngine(Executor):
132
132
  self,
133
133
  fab: Fab,
134
134
  override_config: UserConfig,
135
+ flwr_aid: Optional[str],
135
136
  ) -> int:
136
137
  fab_hash = self.ffs.put(fab.content, {})
137
138
  if fab_hash != fab.hash_str:
@@ -141,7 +142,7 @@ class DeploymentEngine(Executor):
141
142
  fab_id, fab_version = get_fab_metadata(fab.content)
142
143
 
143
144
  run_id = self.linkstate.create_run(
144
- fab_id, fab_version, fab_hash, override_config, ConfigRecord()
145
+ fab_id, fab_version, fab_hash, override_config, ConfigRecord(), flwr_aid
145
146
  )
146
147
  return run_id
147
148
 
@@ -161,6 +162,7 @@ class DeploymentEngine(Executor):
161
162
  fab_file: bytes,
162
163
  override_config: UserConfig,
163
164
  federation_options: ConfigRecord,
165
+ flwr_aid: Optional[str],
164
166
  ) -> Optional[int]:
165
167
  """Start run using the Flower Deployment Engine."""
166
168
  run_id = None
@@ -168,7 +170,9 @@ class DeploymentEngine(Executor):
168
170
 
169
171
  # Call SuperLink to create run
170
172
  run_id = self._create_run(
171
- Fab(hashlib.sha256(fab_file).hexdigest(), fab_file), override_config
173
+ Fab(hashlib.sha256(fab_file).hexdigest(), fab_file),
174
+ override_config,
175
+ flwr_aid,
172
176
  )
173
177
 
174
178
  # Register context for the Run
@@ -50,6 +50,7 @@ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
50
50
  from flwr.server.superlink.ffs.ffs_factory import FfsFactory
51
51
  from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
52
52
 
53
+ from .exec_user_auth_interceptor import shared_account_info
53
54
  from .executor import Executor
54
55
 
55
56
 
@@ -75,10 +76,12 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
75
76
  """Create run ID."""
76
77
  log(INFO, "ExecServicer.StartRun")
77
78
 
79
+ flwr_aid = shared_account_info.get().flwr_aid if self.auth_plugin else None
78
80
  run_id = self.executor.start_run(
79
81
  request.fab.content,
80
82
  user_config_from_proto(request.override_config),
81
83
  config_record_from_proto(request.federation_options),
84
+ flwr_aid,
82
85
  )
83
86
 
84
87
  if run_id is None:
@@ -132,7 +135,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
132
135
 
133
136
  # Handle `flwr ls --runs`
134
137
  if not request.HasField("run_id"):
135
- return _create_list_runs_response(state.get_run_ids(), state)
138
+ return _create_list_runs_response(state.get_run_ids(None), state)
136
139
  # Handle `flwr ls --run-id <run_id>`
137
140
  return _create_list_runs_response({request.run_id}, state)
138
141
 
@@ -74,6 +74,7 @@ class Executor(ABC):
74
74
  fab_file: bytes,
75
75
  override_config: UserConfig,
76
76
  federation_options: ConfigRecord,
77
+ flwr_aid: Optional[str],
77
78
  ) -> Optional[int]:
78
79
  """Start a run using the given Flower FAB ID and version.
79
80
 
@@ -88,6 +89,9 @@ class Executor(ABC):
88
89
  The config overrides dict sent by the user (using `flwr run`).
89
90
  federation_options: ConfigRecord
90
91
  The federation options sent by the user (using `flwr run`).
92
+ flwr_aid : Optional[str]
93
+ The Flower Account ID of the user starting the run, if authentication is
94
+ enabled.
91
95
 
92
96
  Returns
93
97
  -------
@@ -77,6 +77,7 @@ class SimulationEngine(Executor):
77
77
  fab_file: bytes,
78
78
  override_config: UserConfig,
79
79
  federation_options: ConfigRecord,
80
+ flwr_aid: Optional[str],
80
81
  ) -> Optional[int]:
81
82
  """Start run using the Flower Simulation Engine."""
82
83
  try:
@@ -96,7 +97,12 @@ class SimulationEngine(Executor):
96
97
  fab_id, fab_version = get_fab_metadata(fab.content)
97
98
 
98
99
  run_id = self.linkstate.create_run(
99
- fab_id, fab_version, fab_hash, override_config, federation_options
100
+ fab_id,
101
+ fab_version,
102
+ fab_hash,
103
+ override_config,
104
+ federation_options,
105
+ flwr_aid,
100
106
  )
101
107
 
102
108
  # Create an empty context for the Run
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.19.0.dev20250611
3
+ Version: 1.19.0.dev20250612
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
@@ -84,8 +84,8 @@ flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ
84
84
  flwr/client/grpc_adapter_client/connection.py,sha256=aj5tTYyE8z2hQLXPPydsJiz8gBDIWLUhfWvqYkAL1L4,3966
85
85
  flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
86
86
  flwr/client/grpc_rere_client/client_interceptor.py,sha256=zFaVHw6AxeNO-7eCKKb-RxrPa7zbM5Z-2-1Efc4adQY,2451
87
- flwr/client/grpc_rere_client/connection.py,sha256=eJJpfD0jE0X63W5ASUEcC5Gvn2xPeM5TBryMbNJD4Wc,14040
88
- flwr/client/grpc_rere_client/grpc_adapter.py,sha256=JvMZ7vCFTaTEo6AzKYh3zDmeQAU7VSjdysbC6t3ufWg,6351
87
+ flwr/client/grpc_rere_client/connection.py,sha256=dyRBkTVUNhlMmLaoJUz9U4lWnAb7QjYRmGfOzaE0CbA,14402
88
+ flwr/client/grpc_rere_client/grpc_adapter.py,sha256=dLGB5GriszAmtgvuFGuz_F7rIwpzLfDxhJ7T3Un-Ce0,6694
89
89
  flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
90
90
  flwr/client/message_handler/message_handler.py,sha256=X9SXX6et97Lw9_DGD93HKsEBGNjXClcFgc_5aLK0oiU,6541
91
91
  flwr/client/mod/__init__.py,sha256=AtV4Y5UGuYqJdTg7bJ--KtfOZUYLGDPMy616LvtP5W4,1151
@@ -98,7 +98,7 @@ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=aKqjZCrikF73y3E-7h40
98
98
  flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
99
99
  flwr/client/numpy_client.py,sha256=Qq6ghsIAop2slKqAfgiI5NiHJ4LIxGmrik3Ror4_XVc,9581
100
100
  flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
101
- flwr/client/rest_client/connection.py,sha256=vTunkzFe9eouw8bSEww3zigl-QmTu9-hyeKCNKPS6PY,16388
101
+ flwr/client/rest_client/connection.py,sha256=yxWuuh9A7CVzHDoAcBOQOUmCoT0kXSTGZ8zyD8YZGuo,17033
102
102
  flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
103
103
  flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
104
104
  flwr/clientapp/__init__.py,sha256=zGW4z49Ojzoi1hDiRC7kyhLjijUilc6fqHhtM_ATRVA,719
@@ -122,7 +122,7 @@ flwr/common/exit/exit_code.py,sha256=PNEnCrZfOILjfDAFu5m-2YWEJBrk97xglq4zCUlqV7E
122
122
  flwr/common/exit_handlers.py,sha256=IaqJ60fXZuu7McaRYnoYKtlbH9t4Yl9goNExKqtmQbs,4304
123
123
  flwr/common/grpc.py,sha256=manTaHaPiyYngUq1ErZvvV2B2GxlXUUUGRy3jc3TBIQ,9798
124
124
  flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
125
- flwr/common/inflatable.py,sha256=RmGq0FF_zH0OyTSVANhQw9xUmS_4f_c5CZTZkPeMnH4,8726
125
+ flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
126
126
  flwr/common/inflatable_grpc_utils.py,sha256=ZpwtgF1tGD6NwQkCidbhbeBPDBZ1Nx9eGMHQ04eNEE8,3554
127
127
  flwr/common/inflatable_rest_utils.py,sha256=KiZd06XRiXcl_WewOrag0JTvUQt5kZ74UIsQ3FCAXGc,3580
128
128
  flwr/common/inflatable_utils.py,sha256=-GTdgR1zLS9WtXrbOGJMpaoyVEL8KmoQ2yF4HeLxTI0,12406
@@ -149,10 +149,10 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3
149
149
  flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
150
150
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
151
151
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
152
- flwr/common/serde.py,sha256=hHqXbAF-MtSRWsROz4v-P_C4dMDSIt1XJ3Hecxp8os0,23020
152
+ flwr/common/serde.py,sha256=ZJ89Eq-t3-MK_Np1G27Db-eXUhKigp3gSkgQt5E6vaA,23088
153
153
  flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
154
154
  flwr/common/telemetry.py,sha256=jF47v0SbnBd43XamHtl3wKxs3knFUY2p77cm_2lzZ8M,8762
155
- flwr/common/typing.py,sha256=Mi95fKobBHfAoqMh-xQB1QgXTxuWtpJ-z1lR7Bxp63o,6893
155
+ flwr/common/typing.py,sha256=B8z50fv8K0H4F5m8XRPBoWy-qqbNMyQXBAaaSuzfbnY,6936
156
156
  flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
157
157
  flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
158
158
  flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
@@ -180,10 +180,10 @@ flwr/proto/fab_pb2.py,sha256=2Nu0WaWxDZ8TbutMtctjdcGM7OtXiyP4kmCgg5o7Jjw,1627
180
180
  flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
181
181
  flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
182
182
  flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
183
- flwr/proto/fleet_pb2.py,sha256=6QgmU4saPKVCEEB5miAa_0-qCTyl8AhdQBKLN6pyC-U,6520
184
- flwr/proto/fleet_pb2.pyi,sha256=72jgu8aUxxmDG3QzAIvaIf0pNZnlW3H0QHyC6bUzKrU,9986
185
- flwr/proto/fleet_pb2_grpc.py,sha256=pYQwwZ8KUZFmbYaJKJ8YJ06QCilhLqI_9vc0bBFXrNI,15779
186
- flwr/proto/fleet_pb2_grpc.pyi,sha256=F--4QaDeoCHFuyOB506wHoMlQ4fPHvf8MoiVei_9jr8,4214
183
+ flwr/proto/fleet_pb2.py,sha256=bXqfcyKYFaXYt3V1XMe600xdXb66swYPa6hByEA05e0,6131
184
+ flwr/proto/fleet_pb2.pyi,sha256=1zAv5BD0-iXNVvd6EXQIxRei_axG7k_RdXeiCwneT-U,9241
185
+ flwr/proto/fleet_pb2_grpc.py,sha256=NmzrDYxyM3MQNh3vwYczQNuFimZz3prU6ke3E-fKk_g,17539
186
+ flwr/proto/fleet_pb2_grpc.pyi,sha256=PDERhzOrBCMAytTLS65Qck8A45bTIYni7Lotq6_I0sM,4721
187
187
  flwr/proto/grpcadapter_pb2.py,sha256=PJ8DtfeV29g_y4Z3aNZlSZocLqSxeLmTsYCdOZDYCiE,1843
188
188
  flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
189
189
  flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
@@ -196,8 +196,8 @@ flwr/proto/log_pb2.py,sha256=iKaS3MVn1BS4xHu8uGPFCOi1KWtvVx-H9V4jCUIJghs,1393
196
196
  flwr/proto/log_pb2.pyi,sha256=ipuhgo40sAHTcRzCsGI1HwIstr5q0THPNk_cf62YyME,1448
197
197
  flwr/proto/log_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
198
198
  flwr/proto/log_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
199
- flwr/proto/message_pb2.py,sha256=VoFv02FalR-xegoyqVMC1M_rD02sdWdoAAfFkw00k84,4481
200
- flwr/proto/message_pb2.pyi,sha256=FmBgs2PsotAdv-OOCEHp4Dc3e6dSo6-CAB3-pgmva4g,9392
199
+ flwr/proto/message_pb2.py,sha256=giymevXYEUdpIO-3A0XKsmRabXW1xSz0sIo5oOlbQ8Y,5198
200
+ flwr/proto/message_pb2.pyi,sha256=EzXZHy2mtabofrd_ZgKSI6M4QH-soIaRZIZBPwBGPv0,11260
201
201
  flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
202
202
  flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
203
203
  flwr/proto/node_pb2.py,sha256=BzZfAWIX7lV62bZr9f7x16lUZcpg-EImxnwxQXgCbYg,1045
@@ -208,14 +208,14 @@ flwr/proto/recorddict_pb2.py,sha256=eVkcnxMTFa3rvknRNiFuJ8z8xxPqgw7bV04aFiTe1j4,
208
208
  flwr/proto/recorddict_pb2.pyi,sha256=xHRSK_GWlIynXDQxWNNmmidsj4OjZzVYqosRB6EonmE,14544
209
209
  flwr/proto/recorddict_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
210
210
  flwr/proto/recorddict_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
211
- flwr/proto/run_pb2.py,sha256=SWpc2yDTprm7DaabMQne43q_7_NWQN3I66y-d_PpcGg,4727
212
- flwr/proto/run_pb2.pyi,sha256=g87sUXdUA3cPmlYG03EoUisVIxOtWft3OR6nznzXeDo,9416
211
+ flwr/proto/run_pb2.py,sha256=76pAp3ugvpsUyx34ehvMTe-o-J2pTTvb1OskDmsAcag,4768
212
+ flwr/proto/run_pb2.pyi,sha256=7hWfS3DzrrrKn5ZXRYL1x1rz9u1ZZd68Sz5kinRBDCk,9542
213
213
  flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
214
214
  flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
215
- flwr/proto/serverappio_pb2.py,sha256=J75Kc6TI0HN2EWIX687ULCjr7Fe1tpLNHltWpfhABdw,7022
216
- flwr/proto/serverappio_pb2.pyi,sha256=xo_Tl-r-Hdtfrrp9RRfpqzethtCPfvs8vMJ7ILXb7Kg,9659
217
- flwr/proto/serverappio_pb2_grpc.py,sha256=An5cPfO_1-MjvP8FaVymRfAFpes_pASDLUoxonZ1vrs,22602
218
- flwr/proto/serverappio_pb2_grpc.pyi,sha256=GI6b8aH2H7yPnqeE7q9lF6RUMtohuucYYxTjtHXzLsA,6204
215
+ flwr/proto/serverappio_pb2.py,sha256=ugZZ0zZulDKuL7BZbAMptyMAozmJv888tee0ZrteOB0,6608
216
+ flwr/proto/serverappio_pb2.pyi,sha256=YxIhMPaF9fhBCR6P0AX3t5yM03B15HuwudDPHktMwTk,8914
217
+ flwr/proto/serverappio_pb2_grpc.py,sha256=kUPYPzA8ozjkTp-KVTeTWB_viTj-OJiX-lErH7b5kVc,24374
218
+ flwr/proto/serverappio_pb2_grpc.pyi,sha256=xecgtw0jIrNHMeJkG_cjuIglFM9NFRv1XPLEX7GIdck,6711
219
219
  flwr/proto/simulationio_pb2.py,sha256=sAJX72z-IttVGxyU3PFnG8AFuA-pV7itvBoxz-hOudE,3342
220
220
  flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
221
221
  flwr/proto/simulationio_pb2_grpc.py,sha256=HuGbhOwV_A5GTbvmd5XTm6lSm9fWUgKcxq9OKhgmBT0,12999
@@ -238,7 +238,7 @@ flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
238
238
  flwr/server/fleet_event_log_interceptor.py,sha256=ifV4gUB_hSg7QPLIrAyDpjciqZBOKb0L0abZno3GTwA,3780
239
239
  flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
240
240
  flwr/server/grid/grid.py,sha256=naGCYt5J6dnmUvrcGkdNyKPe3MBd-0awGm1ALmgahqY,6625
241
- flwr/server/grid/grpc_grid.py,sha256=qhJPS4tCWATHx24dDZoxtEPq6rjFu0lNggX70lstLkw,13302
241
+ flwr/server/grid/grpc_grid.py,sha256=F1AtbNxhHZL0-Rlwvynm7eUzOm8J55ENZ2-YQ21lAg4,13519
242
242
  flwr/server/grid/inmemory_grid.py,sha256=RjejYT-d-hHuTs1KSs_5wvOdAWKLus8w5_UAcnGt4iw,6168
243
243
  flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
244
244
  flwr/server/run_serverapp.py,sha256=v0p6jXj2dFxlRUdoEeF1mnaFd9XRQi6dZCflPY6d3qI,2063
@@ -286,30 +286,30 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
286
286
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
287
287
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
288
288
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
289
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=wp6I4BKv82dBlIJA8D2gx9CRgahkwnsVnKTkU6M06Og,7802
289
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Ug-EqW6dSvxMVbjBVGcrfeMudBp5INZkFZUBNhJioRI,8694
290
290
  flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=DrHubsaLgJCwCeeJPYogQTiP0xYqjxwnT9rh7OP7BoU,6984
291
291
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
292
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=hbaukJ7EpfBiaXHa_R50MZKTkesxosx5IwFtDyIAO-0,8076
292
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=NhQzO1_eGusDfBiq5lPVs-b0nisjbY8Z5Zr5sFBmYeY,8853
293
293
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
294
- flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=cmNBbqb1aHgGgu_8Cuqvf7FAf2i7xs1evTuJRgRaSnI,8381
294
+ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=j3UdI_xG00t_WDPr4Zu6QlnkTu5R1ZTCg5_fLOCFG5o,9317
295
295
  flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
296
296
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
297
297
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
298
298
  flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=Hx9hxL7lju1_VJoAwkhBOGerZ3628u0P1zgkPhGWRPY,7154
299
299
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=xSjQbBYHmUTinw7Q_-UxqR7qt07kqj9FCSpPYRsUKf8,12909
300
300
  flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
301
- flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=rw3h5cbF-T_9DNDM-f0WOrGy8yLEzzgsN3qeD0qUoR4,25592
302
- flwr/server/superlink/linkstate/linkstate.py,sha256=Jrgm1biGDkQZVGuecrgJSf4laWZ1WeBbScA-Zs7Gc3Y,13069
301
+ flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=gGA1qo-h_Rvvdv99qg112CjD8PmI_0kMjAxo4ER2piE,26350
302
+ flwr/server/superlink/linkstate/linkstate.py,sha256=JZHshn7NnUHr_hvHqO593YWwuCQVJm7InXor60DRcX0,13238
303
303
  flwr/server/superlink/linkstate/linkstate_factory.py,sha256=8RlosqSpKOoD_vhUUQPY0jtE3A84GeF96Z7sWNkRRcA,2069
304
- flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=sHJPK1w0tP0m2WCXH2F9lGxGyI3wBniPUBono30vwMY,43242
304
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=E699Ak0jMF3N7i1SIeFRutjorg51Fd7qBqaPX_gkWU0,43687
305
305
  flwr/server/superlink/linkstate/utils.py,sha256=IeLh7iGRCHU5MEWOl7iriaSE4L__8GWOa2OleXadK5M,15444
306
306
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
307
307
  flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=6-FUUt0GiLcBPljj8bBrUNeAITUoDQOLzaMihKo52hg,2326
308
- flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=mRDMklbizitbDcN6hrCSp0NpsFegdAE84MHEulW7eBQ,17232
308
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=LFt_Wu2OOmbNQWZrLW6GoQFdvZ60bupF4c7lvLF7kDw,18617
309
309
  flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
310
310
  flwr/server/superlink/simulation/simulationio_grpc.py,sha256=0l0F-UjYEk6W7HZmI28PbJQLFxSi_vBHRkdchgdaSMQ,2224
311
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=aJezU8RSJswcmWm7Eoy0BqsU13jrcfuFwX3ljm-cORM,7719
312
- flwr/server/superlink/utils.py,sha256=huXWw0R2EcO8F0D99DoBI_aWihi19tuqnc2lo8771hE,3326
311
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=8jACbVPe7YPLaR0hbpEofBBwWjc-uQPhf2FU1eNOtsw,7743
312
+ flwr/server/superlink/utils.py,sha256=SHx612HNv704oRqii3Q1SPtbRdn0AQQi1z-Rqg9moLk,3898
313
313
  flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
314
314
  flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
315
315
  flwr/server/utils/tensorboard.py,sha256=3z3MeF0cu_U6ghNgRd0UQ5bunyDQKxCLpIpEdGMoCJ0,5466
@@ -332,18 +332,18 @@ flwr/simulation/run_simulation.py,sha256=Nvw_6hI71aE2nU95_tt1F9VSo3OJWrvA97e3XZu
332
332
  flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
333
333
  flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
334
334
  flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
335
- flwr/supercore/object_store/in_memory_object_store.py,sha256=8EfTJHb6-RObWmzb2ZxBgxMobCod6NP820DzrMnYdbY,4081
336
- flwr/supercore/object_store/object_store.py,sha256=yZ6A_JgK_aGF54zlPISLK_d9FvxpYJlI2qNfmQBdlzM,4328
335
+ flwr/supercore/object_store/in_memory_object_store.py,sha256=oflJcOuVNgx9A-B2da4VHDb1qj_Jub9wKFOrUBgtz_U,9630
336
+ flwr/supercore/object_store/object_store.py,sha256=VlZz-yzoWZtITbnYD8vwLZbFosv7vgr1XVNzByObeY0,5853
337
337
  flwr/supercore/object_store/object_store_factory.py,sha256=QVwE2ywi7vsj2iKfvWWnNw3N_I7Rz91NUt2RpcbJ7iM,1527
338
338
  flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,715
339
339
  flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
340
- flwr/superexec/deployment.py,sha256=2wBBZgdNAn1Ik1M3HGg4t23CV8oZqzDz1zkOBzHjZLE,6734
340
+ flwr/superexec/deployment.py,sha256=aDTRCM2V9iVS_gvwTSGaRIPGkm2Ro-CxFYin-Mba0P8,6853
341
341
  flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
342
342
  flwr/superexec/exec_grpc.py,sha256=LS-CrwBayHQAvJz-zmzV5JsaEC49VumsS25nC0NgYXg,3364
343
- flwr/superexec/exec_servicer.py,sha256=nSqAzrWDQFQm9xE6oejoFZqgWhPchbdkC2mCMrWTbhE,8324
343
+ flwr/superexec/exec_servicer.py,sha256=5bhBzEMwsWxJozSXONcRYqHp2OVwIUMhKFtIxmaF4c8,8494
344
344
  flwr/superexec/exec_user_auth_interceptor.py,sha256=HpGHTcDKzB7XUiQHXgntNVFYL-VfP9Wj5tEVc04VOOw,5820
345
- flwr/superexec/executor.py,sha256=M5ucqSE53jfRtuCNf59WFLqQvA1Mln4741TySeZE7qQ,3112
346
- flwr/superexec/simulation.py,sha256=j6YwUvBN7EQ09ID7MYOCVZ70PGbuyBy8f9bXU0EszEM,4088
345
+ flwr/superexec/executor.py,sha256=6kazVVypj-jtfeaHsqGElOv7FCrfqeQotYxVx1m4y84,3284
346
+ flwr/superexec/simulation.py,sha256=2iRVsC2dGLuqIAvwsznt_qE3u9A-yuPsj9q94Oit_As,4212
347
347
  flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
348
348
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
349
349
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
@@ -359,7 +359,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
359
359
  flwr/supernode/servicer/clientappio/__init__.py,sha256=vJyOjO2FXZ2URbnthmdsgs6948wbYfdq1L1V8Um-Lr8,895
360
360
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=LmzkxtNQBn5vVrHc0Bhq2WqaK6-LM2v4kfLBN0PiNNM,8522
361
361
  flwr/supernode/start_client_internal.py,sha256=AkJ1FsBK6EpK7cmIGcae5WZazPhU71gileiSQogTZ-k,18164
362
- flwr_nightly-1.19.0.dev20250611.dist-info/METADATA,sha256=QYsNnMDXwVNpA9FWBxANzI_NTfAHv-AlvxHMxmeeiTE,15910
363
- flwr_nightly-1.19.0.dev20250611.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
364
- flwr_nightly-1.19.0.dev20250611.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
365
- flwr_nightly-1.19.0.dev20250611.dist-info/RECORD,,
362
+ flwr_nightly-1.19.0.dev20250612.dist-info/METADATA,sha256=XKojy0erL7FqHBslIYb56XNVEdor9P2F0mKQRV81t7U,15910
363
+ flwr_nightly-1.19.0.dev20250612.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
364
+ flwr_nightly-1.19.0.dev20250612.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
365
+ flwr_nightly-1.19.0.dev20250612.dist-info/RECORD,,