flwr-nightly 1.19.0.dev20250610__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 (45) hide show
  1. flwr/client/grpc_rere_client/connection.py +48 -29
  2. flwr/client/grpc_rere_client/grpc_adapter.py +8 -0
  3. flwr/client/rest_client/connection.py +138 -27
  4. flwr/common/auth_plugin/auth_plugin.py +6 -4
  5. flwr/common/event_log_plugin/event_log_plugin.py +3 -3
  6. flwr/common/inflatable.py +70 -1
  7. flwr/common/inflatable_grpc_utils.py +1 -1
  8. flwr/common/inflatable_rest_utils.py +99 -0
  9. flwr/common/serde.py +2 -0
  10. flwr/common/typing.py +5 -3
  11. flwr/proto/fleet_pb2.py +12 -16
  12. flwr/proto/fleet_pb2.pyi +4 -19
  13. flwr/proto/fleet_pb2_grpc.py +34 -0
  14. flwr/proto/fleet_pb2_grpc.pyi +13 -0
  15. flwr/proto/message_pb2.py +15 -9
  16. flwr/proto/message_pb2.pyi +41 -0
  17. flwr/proto/run_pb2.py +24 -24
  18. flwr/proto/run_pb2.pyi +4 -1
  19. flwr/proto/serverappio_pb2.py +22 -26
  20. flwr/proto/serverappio_pb2.pyi +4 -19
  21. flwr/proto/serverappio_pb2_grpc.py +34 -0
  22. flwr/proto/serverappio_pb2_grpc.pyi +13 -0
  23. flwr/server/fleet_event_log_interceptor.py +2 -2
  24. flwr/server/grid/grpc_grid.py +20 -9
  25. flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +25 -0
  26. flwr/server/superlink/fleet/message_handler/message_handler.py +33 -2
  27. flwr/server/superlink/fleet/rest_rere/rest_api.py +56 -2
  28. flwr/server/superlink/linkstate/in_memory_linkstate.py +17 -2
  29. flwr/server/superlink/linkstate/linkstate.py +6 -2
  30. flwr/server/superlink/linkstate/sqlite_linkstate.py +19 -7
  31. flwr/server/superlink/serverappio/serverappio_servicer.py +65 -29
  32. flwr/server/superlink/simulation/simulationio_servicer.py +2 -1
  33. flwr/server/superlink/utils.py +23 -10
  34. flwr/supercore/object_store/in_memory_object_store.py +160 -33
  35. flwr/supercore/object_store/object_store.py +54 -7
  36. flwr/superexec/deployment.py +6 -2
  37. flwr/superexec/exec_event_log_interceptor.py +4 -4
  38. flwr/superexec/exec_servicer.py +4 -1
  39. flwr/superexec/exec_user_auth_interceptor.py +11 -11
  40. flwr/superexec/executor.py +4 -0
  41. flwr/superexec/simulation.py +7 -1
  42. {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/METADATA +1 -1
  43. {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/RECORD +45 -44
  44. {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/WHEEL +0 -0
  45. {flwr_nightly-1.19.0.dev20250610.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
@@ -24,7 +24,7 @@ from google.protobuf.message import Message as GrpcMessage
24
24
  from flwr.common.event_log_plugin.event_log_plugin import EventLogWriterPlugin
25
25
  from flwr.common.typing import LogEntry
26
26
 
27
- from .exec_user_auth_interceptor import shared_user_info
27
+ from .exec_user_auth_interceptor import shared_account_info
28
28
 
29
29
 
30
30
  class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
@@ -62,7 +62,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
62
62
  log_entry = self.log_plugin.compose_log_before_event(
63
63
  request=request,
64
64
  context=context,
65
- user_info=shared_user_info.get(),
65
+ account_info=shared_account_info.get(),
66
66
  method_name=method_name,
67
67
  )
68
68
  self.log_plugin.write_log(log_entry)
@@ -81,7 +81,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
81
81
  log_entry = self.log_plugin.compose_log_after_event(
82
82
  request=request,
83
83
  context=context,
84
- user_info=shared_user_info.get(),
84
+ account_info=shared_account_info.get(),
85
85
  method_name=method_name,
86
86
  response=unary_response or error,
87
87
  )
@@ -111,7 +111,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
111
111
  log_entry = self.log_plugin.compose_log_after_event(
112
112
  request=request,
113
113
  context=context,
114
- user_info=shared_user_info.get(),
114
+ account_info=shared_account_info.get(),
115
115
  method_name=method_name,
116
116
  response=stream_response or error,
117
117
  )
@@ -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
 
@@ -21,7 +21,7 @@ from typing import Any, Callable, Union
21
21
  import grpc
22
22
 
23
23
  from flwr.common.auth_plugin import ExecAuthPlugin, ExecAuthzPlugin
24
- from flwr.common.typing import UserInfo
24
+ from flwr.common.typing import AccountInfo
25
25
  from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
26
26
  GetAuthTokensRequest,
27
27
  GetAuthTokensResponse,
@@ -45,8 +45,8 @@ Response = Union[
45
45
  ]
46
46
 
47
47
 
48
- shared_user_info: contextvars.ContextVar[UserInfo] = contextvars.ContextVar(
49
- "user_info", default=UserInfo(user_id=None, user_name=None)
48
+ shared_account_info: contextvars.ContextVar[AccountInfo] = contextvars.ContextVar(
49
+ "account_info", default=AccountInfo(flwr_aid=None, account_name=None)
50
50
  )
51
51
 
52
52
 
@@ -93,20 +93,20 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
93
93
  return call(request, context) # type: ignore
94
94
 
95
95
  # For other requests, check if the user is authenticated
96
- valid_tokens, user_info = self.auth_plugin.validate_tokens_in_metadata(
96
+ valid_tokens, account_info = self.auth_plugin.validate_tokens_in_metadata(
97
97
  metadata
98
98
  )
99
99
  if valid_tokens:
100
- if user_info is None:
100
+ if account_info is None:
101
101
  context.abort(
102
102
  grpc.StatusCode.UNAUTHENTICATED,
103
103
  "Tokens validated, but user info not found",
104
104
  )
105
105
  raise grpc.RpcError()
106
106
  # Store user info in contextvars for authenticated users
107
- shared_user_info.set(user_info)
107
+ shared_account_info.set(account_info)
108
108
  # Check if the user is authorized
109
- if not self.authz_plugin.verify_user_authorization(user_info):
109
+ if not self.authz_plugin.verify_user_authorization(account_info):
110
110
  context.abort(
111
111
  grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
112
112
  )
@@ -114,18 +114,18 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
114
114
  return call(request, context) # type: ignore
115
115
 
116
116
  # If the user is not authenticated, refresh tokens
117
- tokens, user_info = self.auth_plugin.refresh_tokens(metadata)
117
+ tokens, account_info = self.auth_plugin.refresh_tokens(metadata)
118
118
  if tokens is not None:
119
- if user_info is None:
119
+ if account_info is None:
120
120
  context.abort(
121
121
  grpc.StatusCode.UNAUTHENTICATED,
122
122
  "Tokens refreshed, but user info not found",
123
123
  )
124
124
  raise grpc.RpcError()
125
125
  # Store user info in contextvars for authenticated users
126
- shared_user_info.set(user_info)
126
+ shared_account_info.set(account_info)
127
127
  # Check if the user is authorized
128
- if not self.authz_plugin.verify_user_authorization(user_info):
128
+ if not self.authz_plugin.verify_user_authorization(account_info):
129
129
  context.abort(
130
130
  grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
131
131
  )
@@ -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.dev20250610
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=zxnr1Ppp3PpffvqhRlTBwTWHnek15lIDEBLfgqCSW40,14039
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=6yBh2Eeso0XLtinAs2kOHkSnge7C-co_a_QfBaAEudU,12766
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
@@ -106,7 +106,7 @@ flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
106
106
  flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
107
107
  flwr/common/args.py,sha256=-aX_jVnSaDrJR2KZ8Wq0Y3dQHII4R4MJtJOIXzVUA0c,5417
108
108
  flwr/common/auth_plugin/__init__.py,sha256=3rzPkVLn9WyB5n7HLk1XGDw3SLCqRWAU1_CnglcWPfw,970
109
- flwr/common/auth_plugin/auth_plugin.py,sha256=yEIapwim14tn99oGhkQKun_WifoY8hscAtU8Z6fcGXE,4796
109
+ flwr/common/auth_plugin/auth_plugin.py,sha256=kXx5o39vJchaPv28sK9qO6H_UXSWym6zRBbCa7sUwtQ,4825
110
110
  flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
111
111
  flwr/common/constant.py,sha256=A8rWHZZUH4Rxbx-bCKW5pNJ_BG4W9Xfw4fLevNhZ8l0,8077
112
112
  flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
@@ -115,15 +115,16 @@ flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHE
115
115
  flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxFk-P7pviFguy9KvQ0,1074
116
116
  flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
117
117
  flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
118
- flwr/common/event_log_plugin/event_log_plugin.py,sha256=up7a9H0UxmxdDKlEMNLBhUn5APVJ0fFS2qH0IO3j_rg,2046
118
+ flwr/common/event_log_plugin/event_log_plugin.py,sha256=eK8OaDFagQRwqpb9eV0cJcm2ErtEBpMxFbhxJNx6n5w,2061
119
119
  flwr/common/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
120
120
  flwr/common/exit/exit.py,sha256=mJgbqMlVlwAgYtq-Vedj53wO4VxcDcy_P-GzqGK-1GQ,3452
121
121
  flwr/common/exit/exit_code.py,sha256=PNEnCrZfOILjfDAFu5m-2YWEJBrk97xglq4zCUlqV7E,3470
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=gdAICtXklkQRMrxoTYEbzJl7AeFqZtUm4JU6f2it9FM,7264
126
- flwr/common/inflatable_grpc_utils.py,sha256=-cdu-VNBK7aNdYRtjtTz3pnXmK-_q3XIzpr14vhanto,3549
125
+ flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
126
+ flwr/common/inflatable_grpc_utils.py,sha256=ZpwtgF1tGD6NwQkCidbhbeBPDBZ1Nx9eGMHQ04eNEE8,3554
127
+ flwr/common/inflatable_rest_utils.py,sha256=KiZd06XRiXcl_WewOrag0JTvUQt5kZ74UIsQ3FCAXGc,3580
127
128
  flwr/common/inflatable_utils.py,sha256=-GTdgR1zLS9WtXrbOGJMpaoyVEL8KmoQ2yF4HeLxTI0,12406
128
129
  flwr/common/logger.py,sha256=JbRf6E2vQxXzpDBq1T8IDUJo_usu3gjWEBPQ6uKcmdg,13049
129
130
  flwr/common/message.py,sha256=xAL7iZN5-n-xPQpgoSFvxNrzs8fmiiPfoU0DjNQEhRw,19953
@@ -148,10 +149,10 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3
148
149
  flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
149
150
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
150
151
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
151
- flwr/common/serde.py,sha256=hHqXbAF-MtSRWsROz4v-P_C4dMDSIt1XJ3Hecxp8os0,23020
152
+ flwr/common/serde.py,sha256=ZJ89Eq-t3-MK_Np1G27Db-eXUhKigp3gSkgQt5E6vaA,23088
152
153
  flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
153
154
  flwr/common/telemetry.py,sha256=jF47v0SbnBd43XamHtl3wKxs3knFUY2p77cm_2lzZ8M,8762
154
- flwr/common/typing.py,sha256=97QRfRRS7sQnjkAI5FDZ01-38oQUSz4i1qqewQmBWRg,6886
155
+ flwr/common/typing.py,sha256=B8z50fv8K0H4F5m8XRPBoWy-qqbNMyQXBAaaSuzfbnY,6936
155
156
  flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
156
157
  flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
157
158
  flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
@@ -179,10 +180,10 @@ flwr/proto/fab_pb2.py,sha256=2Nu0WaWxDZ8TbutMtctjdcGM7OtXiyP4kmCgg5o7Jjw,1627
179
180
  flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
180
181
  flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
181
182
  flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
182
- flwr/proto/fleet_pb2.py,sha256=6QgmU4saPKVCEEB5miAa_0-qCTyl8AhdQBKLN6pyC-U,6520
183
- flwr/proto/fleet_pb2.pyi,sha256=72jgu8aUxxmDG3QzAIvaIf0pNZnlW3H0QHyC6bUzKrU,9986
184
- flwr/proto/fleet_pb2_grpc.py,sha256=pYQwwZ8KUZFmbYaJKJ8YJ06QCilhLqI_9vc0bBFXrNI,15779
185
- 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
186
187
  flwr/proto/grpcadapter_pb2.py,sha256=PJ8DtfeV29g_y4Z3aNZlSZocLqSxeLmTsYCdOZDYCiE,1843
187
188
  flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
188
189
  flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
@@ -195,8 +196,8 @@ flwr/proto/log_pb2.py,sha256=iKaS3MVn1BS4xHu8uGPFCOi1KWtvVx-H9V4jCUIJghs,1393
195
196
  flwr/proto/log_pb2.pyi,sha256=ipuhgo40sAHTcRzCsGI1HwIstr5q0THPNk_cf62YyME,1448
196
197
  flwr/proto/log_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
197
198
  flwr/proto/log_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
198
- flwr/proto/message_pb2.py,sha256=VoFv02FalR-xegoyqVMC1M_rD02sdWdoAAfFkw00k84,4481
199
- 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
200
201
  flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
201
202
  flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
202
203
  flwr/proto/node_pb2.py,sha256=BzZfAWIX7lV62bZr9f7x16lUZcpg-EImxnwxQXgCbYg,1045
@@ -207,14 +208,14 @@ flwr/proto/recorddict_pb2.py,sha256=eVkcnxMTFa3rvknRNiFuJ8z8xxPqgw7bV04aFiTe1j4,
207
208
  flwr/proto/recorddict_pb2.pyi,sha256=xHRSK_GWlIynXDQxWNNmmidsj4OjZzVYqosRB6EonmE,14544
208
209
  flwr/proto/recorddict_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
209
210
  flwr/proto/recorddict_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
210
- flwr/proto/run_pb2.py,sha256=SWpc2yDTprm7DaabMQne43q_7_NWQN3I66y-d_PpcGg,4727
211
- 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
212
213
  flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
213
214
  flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
214
- flwr/proto/serverappio_pb2.py,sha256=J75Kc6TI0HN2EWIX687ULCjr7Fe1tpLNHltWpfhABdw,7022
215
- flwr/proto/serverappio_pb2.pyi,sha256=xo_Tl-r-Hdtfrrp9RRfpqzethtCPfvs8vMJ7ILXb7Kg,9659
216
- flwr/proto/serverappio_pb2_grpc.py,sha256=An5cPfO_1-MjvP8FaVymRfAFpes_pASDLUoxonZ1vrs,22602
217
- 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
218
219
  flwr/proto/simulationio_pb2.py,sha256=sAJX72z-IttVGxyU3PFnG8AFuA-pV7itvBoxz-hOudE,3342
219
220
  flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
220
221
  flwr/proto/simulationio_pb2_grpc.py,sha256=HuGbhOwV_A5GTbvmd5XTm6lSm9fWUgKcxq9OKhgmBT0,12999
@@ -234,10 +235,10 @@ flwr/server/compat/app_utils.py,sha256=Uz6m-NV90cQ6k-gW6wlWQuhoFoK78qlMr0CEmALKX
234
235
  flwr/server/compat/grid_client_proxy.py,sha256=FxMgGtrzBoBAPby2ZjTWzpCJsCht8FwMm4PzqW80dmQ,4956
235
236
  flwr/server/compat/legacy_context.py,sha256=94JsRQxyOdLI6lZZkFjS3-TMd0YJGAgSBBO0M_s_9ts,1804
236
237
  flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
237
- flwr/server/fleet_event_log_interceptor.py,sha256=AkL7Y5d3xm2vRhL3ahmEVVoOvAP7PA7dRgB-je4v-Ys,3774
238
+ flwr/server/fleet_event_log_interceptor.py,sha256=ifV4gUB_hSg7QPLIrAyDpjciqZBOKb0L0abZno3GTwA,3780
238
239
  flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
239
240
  flwr/server/grid/grid.py,sha256=naGCYt5J6dnmUvrcGkdNyKPe3MBd-0awGm1ALmgahqY,6625
240
- flwr/server/grid/grpc_grid.py,sha256=qhJPS4tCWATHx24dDZoxtEPq6rjFu0lNggX70lstLkw,13302
241
+ flwr/server/grid/grpc_grid.py,sha256=F1AtbNxhHZL0-Rlwvynm7eUzOm8J55ENZ2-YQ21lAg4,13519
241
242
  flwr/server/grid/inmemory_grid.py,sha256=RjejYT-d-hHuTs1KSs_5wvOdAWKLus8w5_UAcnGt4iw,6168
242
243
  flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
243
244
  flwr/server/run_serverapp.py,sha256=v0p6jXj2dFxlRUdoEeF1mnaFd9XRQi6dZCflPY6d3qI,2063
@@ -285,30 +286,30 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
285
286
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
286
287
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
287
288
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
288
- 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
289
290
  flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=DrHubsaLgJCwCeeJPYogQTiP0xYqjxwnT9rh7OP7BoU,6984
290
291
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
291
- 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
292
293
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
293
- flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=jIljUNMvZ8dDvSlkyn1c2y9sDAf_QoBr-q_o3BWxJ7o,7199
294
+ flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=j3UdI_xG00t_WDPr4Zu6QlnkTu5R1ZTCg5_fLOCFG5o,9317
294
295
  flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
295
296
  flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
296
297
  flwr/server/superlink/fleet/vce/backend/backend.py,sha256=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
297
298
  flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=Hx9hxL7lju1_VJoAwkhBOGerZ3628u0P1zgkPhGWRPY,7154
298
299
  flwr/server/superlink/fleet/vce/vce_api.py,sha256=xSjQbBYHmUTinw7Q_-UxqR7qt07kqj9FCSpPYRsUKf8,12909
299
300
  flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
300
- flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=rw3h5cbF-T_9DNDM-f0WOrGy8yLEzzgsN3qeD0qUoR4,25592
301
- 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
302
303
  flwr/server/superlink/linkstate/linkstate_factory.py,sha256=8RlosqSpKOoD_vhUUQPY0jtE3A84GeF96Z7sWNkRRcA,2069
303
- flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=sHJPK1w0tP0m2WCXH2F9lGxGyI3wBniPUBono30vwMY,43242
304
+ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=E699Ak0jMF3N7i1SIeFRutjorg51Fd7qBqaPX_gkWU0,43687
304
305
  flwr/server/superlink/linkstate/utils.py,sha256=IeLh7iGRCHU5MEWOl7iriaSE4L__8GWOa2OleXadK5M,15444
305
306
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
306
307
  flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=6-FUUt0GiLcBPljj8bBrUNeAITUoDQOLzaMihKo52hg,2326
307
- flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=mRDMklbizitbDcN6hrCSp0NpsFegdAE84MHEulW7eBQ,17232
308
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=LFt_Wu2OOmbNQWZrLW6GoQFdvZ60bupF4c7lvLF7kDw,18617
308
309
  flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
309
310
  flwr/server/superlink/simulation/simulationio_grpc.py,sha256=0l0F-UjYEk6W7HZmI28PbJQLFxSi_vBHRkdchgdaSMQ,2224
310
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=aJezU8RSJswcmWm7Eoy0BqsU13jrcfuFwX3ljm-cORM,7719
311
- 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
312
313
  flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
313
314
  flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
314
315
  flwr/server/utils/tensorboard.py,sha256=3z3MeF0cu_U6ghNgRd0UQ5bunyDQKxCLpIpEdGMoCJ0,5466
@@ -331,18 +332,18 @@ flwr/simulation/run_simulation.py,sha256=Nvw_6hI71aE2nU95_tt1F9VSo3OJWrvA97e3XZu
331
332
  flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
332
333
  flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
333
334
  flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
334
- flwr/supercore/object_store/in_memory_object_store.py,sha256=8EfTJHb6-RObWmzb2ZxBgxMobCod6NP820DzrMnYdbY,4081
335
- 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
336
337
  flwr/supercore/object_store/object_store_factory.py,sha256=QVwE2ywi7vsj2iKfvWWnNw3N_I7Rz91NUt2RpcbJ7iM,1527
337
338
  flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,715
338
339
  flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
339
- flwr/superexec/deployment.py,sha256=2wBBZgdNAn1Ik1M3HGg4t23CV8oZqzDz1zkOBzHjZLE,6734
340
- flwr/superexec/exec_event_log_interceptor.py,sha256=IlQ_w-GpGNMJ4g1gTI3H4LHfWli1-8O7a2-pCqB3yeA,5753
340
+ flwr/superexec/deployment.py,sha256=aDTRCM2V9iVS_gvwTSGaRIPGkm2Ro-CxFYin-Mba0P8,6853
341
+ flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
341
342
  flwr/superexec/exec_grpc.py,sha256=LS-CrwBayHQAvJz-zmzV5JsaEC49VumsS25nC0NgYXg,3364
342
- flwr/superexec/exec_servicer.py,sha256=nSqAzrWDQFQm9xE6oejoFZqgWhPchbdkC2mCMrWTbhE,8324
343
- flwr/superexec/exec_user_auth_interceptor.py,sha256=L-oYmcf35HJFnqNVyfAPwhbkyaTEjkNM_ooioOVATCQ,5771
344
- flwr/superexec/executor.py,sha256=M5ucqSE53jfRtuCNf59WFLqQvA1Mln4741TySeZE7qQ,3112
345
- flwr/superexec/simulation.py,sha256=j6YwUvBN7EQ09ID7MYOCVZ70PGbuyBy8f9bXU0EszEM,4088
343
+ flwr/superexec/exec_servicer.py,sha256=5bhBzEMwsWxJozSXONcRYqHp2OVwIUMhKFtIxmaF4c8,8494
344
+ flwr/superexec/exec_user_auth_interceptor.py,sha256=HpGHTcDKzB7XUiQHXgntNVFYL-VfP9Wj5tEVc04VOOw,5820
345
+ flwr/superexec/executor.py,sha256=6kazVVypj-jtfeaHsqGElOv7FCrfqeQotYxVx1m4y84,3284
346
+ flwr/superexec/simulation.py,sha256=2iRVsC2dGLuqIAvwsznt_qE3u9A-yuPsj9q94Oit_As,4212
346
347
  flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
347
348
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
348
349
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
@@ -358,7 +359,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
358
359
  flwr/supernode/servicer/clientappio/__init__.py,sha256=vJyOjO2FXZ2URbnthmdsgs6948wbYfdq1L1V8Um-Lr8,895
359
360
  flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=LmzkxtNQBn5vVrHc0Bhq2WqaK6-LM2v4kfLBN0PiNNM,8522
360
361
  flwr/supernode/start_client_internal.py,sha256=AkJ1FsBK6EpK7cmIGcae5WZazPhU71gileiSQogTZ-k,18164
361
- flwr_nightly-1.19.0.dev20250610.dist-info/METADATA,sha256=98gf7-LsujpWAZw4bsDkaitvVM4M0NT44a2lIGFtjCE,15910
362
- flwr_nightly-1.19.0.dev20250610.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
363
- flwr_nightly-1.19.0.dev20250610.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
364
- flwr_nightly-1.19.0.dev20250610.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,,