flwr-nightly 1.23.0.dev20251022__py3-none-any.whl → 1.23.0.dev20251024__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.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

flwr/cli/run/run.py CHANGED
@@ -155,7 +155,7 @@ def _run_with_control_api(
155
155
  fab_bytes, fab_hash, config = build_fab(app)
156
156
  fab_id, fab_version = get_metadata_from_config(config)
157
157
 
158
- fab = Fab(fab_hash, fab_bytes)
158
+ fab = Fab(fab_hash, fab_bytes, {})
159
159
 
160
160
  # Construct a `ConfigRecord` out of a flattened `UserConfig`
161
161
  fed_config = flatten_dict(federation_config.get("options", {}))
@@ -36,7 +36,12 @@ from flwr.common.inflatable_protobuf_utils import (
36
36
  from flwr.common.logger import log
37
37
  from flwr.common.message import Message, remove_content_from_message
38
38
  from flwr.common.retry_invoker import RetryInvoker, _wrap_stub
39
- from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
39
+ from flwr.common.serde import (
40
+ fab_from_proto,
41
+ message_from_proto,
42
+ message_to_proto,
43
+ run_from_proto,
44
+ )
40
45
  from flwr.common.typing import Fab, Run
41
46
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
42
47
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -289,7 +294,7 @@ def grpc_request_response( # pylint: disable=R0913,R0914,R0915,R0917
289
294
  get_fab_request = GetFabRequest(node=node, hash_str=fab_hash, run_id=run_id)
290
295
  get_fab_response: GetFabResponse = stub.GetFab(request=get_fab_request)
291
296
 
292
- return Fab(get_fab_response.fab.hash_str, get_fab_response.fab.content)
297
+ return fab_from_proto(get_fab_response.fab)
293
298
 
294
299
  def pull_object(run_id: int, object_id: str) -> bytes:
295
300
  """Pull the object from the SuperLink."""
@@ -37,7 +37,12 @@ from flwr.common.inflatable_protobuf_utils import (
37
37
  from flwr.common.logger import log
38
38
  from flwr.common.message import Message, remove_content_from_message
39
39
  from flwr.common.retry_invoker import RetryInvoker
40
- from flwr.common.serde import message_from_proto, message_to_proto, run_from_proto
40
+ from flwr.common.serde import (
41
+ fab_from_proto,
42
+ message_from_proto,
43
+ message_to_proto,
44
+ run_from_proto,
45
+ )
41
46
  from flwr.common.typing import Fab, Run
42
47
  from flwr.proto.fab_pb2 import GetFabRequest, GetFabResponse # pylint: disable=E0611
43
48
  from flwr.proto.fleet_pb2 import ( # pylint: disable=E0611
@@ -398,12 +403,9 @@ def http_request_response( # pylint: disable=R0913,R0914,R0915,R0917
398
403
  # Send the request
399
404
  res = _request(req, GetFabResponse, PATH_GET_FAB)
400
405
  if res is None:
401
- return Fab("", b"")
406
+ return Fab("", b"", {})
402
407
 
403
- return Fab(
404
- res.fab.hash_str,
405
- res.fab.content,
406
- )
408
+ return fab_from_proto(res.fab)
407
409
 
408
410
  def pull_object(run_id: int, object_id: str) -> bytes:
409
411
  """Pull the object from the SuperLink."""
flwr/common/serde.py CHANGED
@@ -501,12 +501,14 @@ def recorddict_from_proto(recorddict_proto: ProtoRecordDict) -> RecordDict:
501
501
 
502
502
  def fab_to_proto(fab: typing.Fab) -> ProtoFab:
503
503
  """Create a proto Fab object from a Python Fab."""
504
- return ProtoFab(hash_str=fab.hash_str, content=fab.content)
504
+ return ProtoFab(
505
+ hash_str=fab.hash_str, content=fab.content, verifications=fab.verifications
506
+ )
505
507
 
506
508
 
507
509
  def fab_from_proto(fab: ProtoFab) -> typing.Fab:
508
510
  """Create a Python Fab object from a proto Fab."""
509
- return typing.Fab(fab.hash_str, fab.content)
511
+ return typing.Fab(fab.hash_str, fab.content, dict(fab.verifications))
510
512
 
511
513
 
512
514
  # === User configs ===
flwr/common/typing.py CHANGED
@@ -256,6 +256,7 @@ class Fab:
256
256
 
257
257
  hash_str: str
258
258
  content: bytes
259
+ verifications: dict[str, str]
259
260
 
260
261
 
261
262
  class RunNotRunningException(BaseException):
flwr/proto/fab_pb2.py CHANGED
@@ -15,17 +15,21 @@ _sym_db = _symbol_database.Default()
15
15
  from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"(\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"Q\n\rGetFabRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08hash_str\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/fab.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\"\x99\x01\n\x03\x46\x61\x62\x12\x10\n\x08hash_str\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\x12\x39\n\rverifications\x18\x03 \x03(\x0b\x32\".flwr.proto.Fab.VerificationsEntry\x1a\x34\n\x12VerificationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"Q\n\rGetFabRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08hash_str\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\".\n\x0eGetFabResponse\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fabb\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
22
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.fab_pb2', _globals)
23
23
  if _descriptor._USE_C_DESCRIPTORS == False:
24
24
  DESCRIPTOR._options = None
25
- _globals['_FAB']._serialized_start=59
26
- _globals['_FAB']._serialized_end=99
27
- _globals['_GETFABREQUEST']._serialized_start=101
28
- _globals['_GETFABREQUEST']._serialized_end=182
29
- _globals['_GETFABRESPONSE']._serialized_start=184
30
- _globals['_GETFABRESPONSE']._serialized_end=230
25
+ _globals['_FAB_VERIFICATIONSENTRY']._options = None
26
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_options = b'8\001'
27
+ _globals['_FAB']._serialized_start=60
28
+ _globals['_FAB']._serialized_end=213
29
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_start=161
30
+ _globals['_FAB_VERIFICATIONSENTRY']._serialized_end=213
31
+ _globals['_GETFABREQUEST']._serialized_start=215
32
+ _globals['_GETFABREQUEST']._serialized_end=296
33
+ _globals['_GETFABRESPONSE']._serialized_start=298
34
+ _globals['_GETFABRESPONSE']._serialized_end=344
31
35
  # @@protoc_insertion_point(module_scope)
flwr/proto/fab_pb2.pyi CHANGED
@@ -5,6 +5,7 @@ isort:skip_file
5
5
  import builtins
6
6
  import flwr.proto.node_pb2
7
7
  import google.protobuf.descriptor
8
+ import google.protobuf.internal.containers
8
9
  import google.protobuf.message
9
10
  import typing
10
11
  import typing_extensions
@@ -13,8 +14,22 @@ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
14
 
14
15
  class Fab(google.protobuf.message.Message):
15
16
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
17
+ class VerificationsEntry(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+ KEY_FIELD_NUMBER: builtins.int
20
+ VALUE_FIELD_NUMBER: builtins.int
21
+ key: typing.Text
22
+ value: typing.Text
23
+ def __init__(self,
24
+ *,
25
+ key: typing.Text = ...,
26
+ value: typing.Text = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
29
+
16
30
  HASH_STR_FIELD_NUMBER: builtins.int
17
31
  CONTENT_FIELD_NUMBER: builtins.int
32
+ VERIFICATIONS_FIELD_NUMBER: builtins.int
18
33
  hash_str: typing.Text
19
34
  """This field is the hash of the data field. It is used to identify the data.
20
35
  The hash is calculated using the SHA-256 algorithm and is represented as a
@@ -24,12 +39,17 @@ class Fab(google.protobuf.message.Message):
24
39
  content: builtins.bytes
25
40
  """This field contains the fab file contents a one bytes blob."""
26
41
 
42
+ @property
43
+ def verifications(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]:
44
+ """Verifications."""
45
+ pass
27
46
  def __init__(self,
28
47
  *,
29
48
  hash_str: typing.Text = ...,
30
49
  content: builtins.bytes = ...,
50
+ verifications: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
31
51
  ) -> None: ...
32
- def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str"]) -> None: ...
52
+ def ClearField(self, field_name: typing_extensions.Literal["content",b"content","hash_str",b"hash_str","verifications",b"verifications"]) -> None: ...
33
53
  global___Fab = Fab
34
54
 
35
55
  class GetFabRequest(google.protobuf.message.Message):
@@ -247,7 +247,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
247
247
  """Push an object to the ObjectStore."""
248
248
  log(
249
249
  DEBUG,
250
- "[ServerAppIoServicer.PushObject] Push Object with object_id=%s",
250
+ "[Fleet.PushObject] Push Object with object_id=%s",
251
251
  request.object_id,
252
252
  )
253
253
 
@@ -272,7 +272,7 @@ class FleetServicer(fleet_pb2_grpc.FleetServicer):
272
272
  """Pull an object from the ObjectStore."""
273
273
  log(
274
274
  DEBUG,
275
- "[ServerAppIoServicer.PullObject] Pull Object with object_id=%s",
275
+ "[Fleet.PullObject] Pull Object with object_id=%s",
276
276
  request.object_id,
277
277
  )
278
278
 
@@ -210,7 +210,7 @@ def get_fab(
210
210
  raise InvalidRunStatusException(abort_msg)
211
211
 
212
212
  if result := ffs.get(request.hash_str):
213
- fab = Fab(request.hash_str, result[0])
213
+ fab = Fab(request.hash_str, result[0], result[1])
214
214
  return GetFabResponse(fab=fab_to_proto(fab))
215
215
 
216
216
  raise ValueError(f"Found no FAB with hash: {request.hash_str}")
@@ -316,7 +316,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
316
316
 
317
317
  ffs: Ffs = self.ffs_factory.ffs()
318
318
  if result := ffs.get(request.hash_str):
319
- fab = Fab(request.hash_str, result[0])
319
+ fab = Fab(request.hash_str, result[0], result[1])
320
320
  return GetFabResponse(fab=fab_to_proto(fab))
321
321
 
322
322
  raise ValueError(f"Found no FAB with hash: {request.hash_str}")
@@ -343,7 +343,7 @@ class ServerAppIoServicer(serverappio_pb2_grpc.ServerAppIoServicer):
343
343
  fab = None
344
344
  if run and run.fab_hash:
345
345
  if result := ffs.get(run.fab_hash):
346
- fab = Fab(run.fab_hash, result[0])
346
+ fab = Fab(run.fab_hash, result[0], result[1])
347
347
  if run and fab and serverapp_ctxt:
348
348
  # Update run status to STARTING
349
349
  if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
@@ -150,7 +150,7 @@ class SimulationIoServicer(simulationio_pb2_grpc.SimulationIoServicer):
150
150
  fab = None
151
151
  if run and run.fab_hash:
152
152
  if result := ffs.get(run.fab_hash):
153
- fab = Fab(run.fab_hash, result[0])
153
+ fab = Fab(run.fab_hash, result[0], result[1])
154
154
  if run and fab and serverapp_ctxt:
155
155
  # Update run status to STARTING
156
156
  if state.update_run_status(run_id, RunStatus(Status.STARTING, "", "")):
@@ -48,9 +48,6 @@ class InMemoryObjectStore(ObjectStore):
48
48
  self.verify = verify
49
49
  self.store: dict[str, ObjectEntry] = {}
50
50
  self.lock_store = threading.RLock()
51
- # Mapping the Object ID of a message to the list of descendant object IDs
52
- self.msg_descendant_objects_mapping: dict[str, list[str]] = {}
53
- self.lock_msg_mapping = threading.RLock()
54
51
  # Mapping each run ID to a set of object IDs that are used in that run
55
52
  self.run_objects_mapping: dict[int, set[str]] = {}
56
53
 
@@ -215,7 +212,6 @@ class InMemoryObjectStore(ObjectStore):
215
212
  """Clear the store."""
216
213
  with self.lock_store:
217
214
  self.store.clear()
218
- self.msg_descendant_objects_mapping.clear()
219
215
  self.run_objects_mapping.clear()
220
216
 
221
217
  def __contains__(self, object_id: str) -> bool:
@@ -129,7 +129,11 @@ class ControlServicer(control_pb2_grpc.ControlServicer):
129
129
  )
130
130
 
131
131
  # Create run
132
- fab = Fab(hashlib.sha256(fab_file).hexdigest(), fab_file)
132
+ fab = Fab(
133
+ hashlib.sha256(fab_file).hexdigest(),
134
+ fab_file,
135
+ dict(request.fab.verifications),
136
+ )
133
137
  fab_hash = ffs.put(fab.content, {})
134
138
  if fab_hash != fab.hash_str:
135
139
  raise RuntimeError(
@@ -151,7 +151,7 @@ class ClientAppIoServicer(clientappio_pb2_grpc.ClientAppIoServicer):
151
151
  # Retrieve context, run and fab for this run
152
152
  context = cast(Context, state.get_context(run_id))
153
153
  run = cast(Run, state.get_run(run_id))
154
- fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0]) # type: ignore
154
+ fab = Fab(run.fab_hash, ffs.get(run.fab_hash)[0], ffs.get(run.fab_hash)[1]) # type: ignore
155
155
 
156
156
  return PullAppInputsResponse(
157
157
  context=context_to_proto(context),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flwr-nightly
3
- Version: 1.23.0.dev20251022
3
+ Version: 1.23.0.dev20251024
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,7 +84,7 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=g7SYiAJr6Uhwg4Zs
84
84
  flwr/cli/new/templates/app/pyproject.xgboost.toml.tpl,sha256=yAJ9jL2q6U_XXYwwUT9fpIqIKFuQR_Kgg82GpWfQ5J8,1661
85
85
  flwr/cli/pull.py,sha256=sT3-f2zf7JcXfB-pHWLXmENrOzJeUDBoqK3oruJxzao,3352
86
86
  flwr/cli/run/__init__.py,sha256=RPyB7KbYTFl6YRiilCch6oezxrLQrl1kijV7BMGkLbA,790
87
- flwr/cli/run/run.py,sha256=ED1mDmO1PnSAgtVOrCeWwzwPm6t3aFYSs3Rh36BJzqk,8161
87
+ flwr/cli/run/run.py,sha256=f5ysmBytcme8E7feroCtvpLe3kEebSFV42dcqoSFzzY,8165
88
88
  flwr/cli/stop.py,sha256=W7ynTYLm0-_1nC5Il4IaZTji6A3GCCm_0R-HQUudAsI,4988
89
89
  flwr/cli/supernode/__init__.py,sha256=DBkjoPo2hS2Y-ghJxwLbrAbCQFBgD82_Itl2_892UBo,917
90
90
  flwr/cli/supernode/ls.py,sha256=OVEs9zPSomxxiwCg1Jz8AN5MkZJDf3xAE-lxCG22zyE,8640
@@ -97,7 +97,7 @@ flwr/client/dpfedavg_numpy_client.py,sha256=3hul067cT2E9jBhzp7bFnFAZ_D2nWcIUEdHY
97
97
  flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ81wvZm0-lOuuBA,742
98
98
  flwr/client/grpc_adapter_client/connection.py,sha256=JGv02EjSOAG1E5BRUD4lwXc1LLiYJ0OhInvp31qx1cU,4404
99
99
  flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
100
- flwr/client/grpc_rere_client/connection.py,sha256=SaBuUcqF6r6ieT1sv0Tg5Isqmpeb8D184R0ayLvCScQ,13091
100
+ flwr/client/grpc_rere_client/connection.py,sha256=3_CI7wx5ZrkGrVCXjDKiUGX9aJP9Zm9yl4iqSBAmH3U,13100
101
101
  flwr/client/grpc_rere_client/grpc_adapter.py,sha256=dLGB5GriszAmtgvuFGuz_F7rIwpzLfDxhJ7T3Un-Ce0,6694
102
102
  flwr/client/grpc_rere_client/node_auth_client_interceptor.py,sha256=EdTyb5ThFrpkeyXy9_nTKH7E9GnfAdXjcNZ_-uxt1AA,2410
103
103
  flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
@@ -112,7 +112,7 @@ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=Ib-HlhZOXB6-hAWGZ0Ip
112
112
  flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
113
113
  flwr/client/numpy_client.py,sha256=Qq6ghsIAop2slKqAfgiI5NiHJ4LIxGmrik3Ror4_XVc,9581
114
114
  flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
115
- flwr/client/rest_client/connection.py,sha256=y7fhRoMsgHNKfMGHX1IE_uKgseEuD1eR4MgEmw3aXwE,15971
115
+ flwr/client/rest_client/connection.py,sha256=uqcCT6lLgtzb_T2-u6iB60-fVaTz9uE7fy5uvLikQ_I,15962
116
116
  flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
117
117
  flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
118
118
  flwr/clientapp/__init__.py,sha256=dsXH29kvCk1meJj9UYMCIak8zehuuhVp0uDJ2COU_1c,829
@@ -168,10 +168,10 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3
168
168
  flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
169
169
  flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
170
170
  flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
171
- flwr/common/serde.py,sha256=dx66gumR1BpwK45qDwvDLd_05VoKfzkUzWZ7zuZi1-0,21960
171
+ flwr/common/serde.py,sha256=WdEMQzZ3G3mBh8aAYNNQ8oKSahn9UaHtCwE-qt97EmE,22032
172
172
  flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
173
173
  flwr/common/telemetry.py,sha256=xfx3KLFQKy0Qx8P7MAsOQxr5J3sEAQF5Kr5J-4jPz-o,8859
174
- flwr/common/typing.py,sha256=MwHVRa1oPzUCbaz32MZKUIeou-4UuNXrMqZnrQzLNoY,6952
174
+ flwr/common/typing.py,sha256=7tec-6Wa6ygwJl-NkXKgb3QehU9AvYn-IzNrGffli74,6986
175
175
  flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
176
176
  flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
177
177
  flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
@@ -199,8 +199,8 @@ flwr/proto/error_pb2.py,sha256=PQVWrfjVPo88ql_KgV9nCxyQNCcV9PVfmcw7sOzTMro,1084
199
199
  flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
200
200
  flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
201
201
  flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
202
- flwr/proto/fab_pb2.py,sha256=2Nu0WaWxDZ8TbutMtctjdcGM7OtXiyP4kmCgg5o7Jjw,1627
203
- flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
202
+ flwr/proto/fab_pb2.py,sha256=AQAUJmTt31Kq-lJQid3CJpQPrply2-OA_aSHokpVF84,2070
203
+ flwr/proto/fab_pb2.pyi,sha256=GOxeDi-UYzQVwIEzRk9YkzkriowmNdibZu3jMMtBPFo,3273
204
204
  flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
205
205
  flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
206
206
  flwr/proto/fleet_pb2.py,sha256=xGnNGmBbPds6LeB34HN8_vy4U1oW25-w-r-C6xNpoRo,5190
@@ -305,10 +305,10 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
305
305
  flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
306
306
  flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
307
307
  flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
308
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=2aREAaZ-okeC2TiJT0C0RLz4nZBlYVsFt8h_lMZqN4M,11654
308
+ flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Fh28q-M42m83fhLyXRkkfdKg9A8E0cxUkciVNGkPov0,11626
309
309
  flwr/server/superlink/fleet/grpc_rere/node_auth_server_interceptor.py,sha256=UWeFQNBW2pGBRVN36HodHcv7bKTgMmdToh96Lhqip1M,5411
310
310
  flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
311
- flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=ijK-zji1AKkOvJLLIzC2mYQlEh50lI1qPW8QpysNsKk,8751
311
+ flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=GYveEXgKRlyrKRUr2H6kjWPx_g4-fnATrMdJD2G4Gaw,8762
312
312
  flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
313
313
  flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=mxWKwGpgHPqd7cGFqd2ASnR-KZduIzLfT-d2yiNCqQ0,9257
314
314
  flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
@@ -324,10 +324,10 @@ flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=vmD74L8fphb0xIhArQUg1
324
324
  flwr/server/superlink/linkstate/utils.py,sha256=ZtyqSo4HzGrHXW3Wn_4irYMpIiq4onNI2XCIVOOJmJM,13971
325
325
  flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
326
326
  flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=-I7kBbr4w4ZVYwBZoAIle-xHKthFnZrsVfxa6WR8uxA,2310
327
- flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=3C_0boRbYuY1Vlf0DRGzBvTUX-D5UUzxYkFihSMZf-A,20094
327
+ flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=3N1_7wKFzif1e3mBZuzzdORPaaN9Y5F-JrpS7mI3bSM,20116
328
328
  flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
329
329
  flwr/server/superlink/simulation/simulationio_grpc.py,sha256=VqWKxjpd4bCgPFKsgtIZPk9YcG0kc1EEmr5k20EKty4,2205
330
- flwr/server/superlink/simulation/simulationio_servicer.py,sha256=aZp67AeNCGs1zI4mvj_WUOL8noxNcsYu_QIpYKhnHXg,9992
330
+ flwr/server/superlink/simulation/simulationio_servicer.py,sha256=xX-QnSvAL3kp4JKnUKmDSPnR9iD1eDtJL4JfsZx2ua8,10003
331
331
  flwr/server/superlink/utils.py,sha256=zXmyU2o535b9dgz-TvFklzfuQk4irNnMtiK8vT4Dm1c,2454
332
332
  flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
333
333
  flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
@@ -388,7 +388,7 @@ flwr/supercore/grpc_health/simple_health_servicer.py,sha256=C5QN_cR_VBqbhva1eP8z
388
388
  flwr/supercore/license_plugin/__init__.py,sha256=d8OgHTn2BwjoNSPy8jQQxTC_iT3-ENLwKM8yhHKvCRM,820
389
389
  flwr/supercore/license_plugin/license_plugin.py,sha256=BFhlCH5v9KKuY7crVCsi8fuYe98SJfnGxRS0CVc_Y5I,948
390
390
  flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
391
- flwr/supercore/object_store/in_memory_object_store.py,sha256=CGY43syxDGrUPcdOzRH3hNrfeqmoTOY_wjo3qaAHuNk,9612
391
+ flwr/supercore/object_store/in_memory_object_store.py,sha256=SovEdiW4xAPsEeOKIzdaGAJ1L4loCT3fiwn592jtOUA,9353
392
392
  flwr/supercore/object_store/object_store.py,sha256=J-rI3X7ET-F6dqOyM-UfHKCCQtPJ_EnYW62H_1txts0,5252
393
393
  flwr/supercore/object_store/object_store_factory.py,sha256=vOj60FXhiJGzZeVNQkgLyAj098vNvpMDqu5HC3kP2hc,2354
394
394
  flwr/supercore/object_store/sqlite_object_store.py,sha256=cL0e2I6PkLhWTpXiKFbT7GwPNlZcCd496Dft8KWkBUg,10315
@@ -417,7 +417,7 @@ flwr/superlink/servicer/control/control_account_auth_interceptor.py,sha256=Tbi4W
417
417
  flwr/superlink/servicer/control/control_event_log_interceptor.py,sha256=5uBl6VcJlUOgCF0d4kmsmJc1Rs1qxyouaZv0-uH2axs,5969
418
418
  flwr/superlink/servicer/control/control_grpc.py,sha256=MRCaX4I2a5ogjKmhtFs6Mj-VdWemxL2h3gU9QbQmvCA,4183
419
419
  flwr/superlink/servicer/control/control_license_interceptor.py,sha256=T3AzmRt-PPwyTq3hrdpmZHQd5_CpPOk7TtnFZrB-JRY,3349
420
- flwr/superlink/servicer/control/control_servicer.py,sha256=52SHq8yPCDjO92jFm9bg_QMjZJ_-kDC0brn7uJAOwnw,19357
420
+ flwr/superlink/servicer/control/control_servicer.py,sha256=hXKtSKSuhVvgDCPl-n-9OM7MsEz2QhrpKRgJvFTwvL8,19453
421
421
  flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
422
422
  flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
423
423
  flwr/supernode/cli/flower_supernode.py,sha256=bmPpg88Zq7NYMDzyyDwBzeZ6_1f26fD_iDdGw1o_4QQ,8334
@@ -430,9 +430,9 @@ flwr/supernode/runtime/__init__.py,sha256=JQdqd2EMTn-ORMeTvewYYh52ls0YKP68jrps1q
430
430
  flwr/supernode/runtime/run_clientapp.py,sha256=BuaAKTzRuFmNX-IJky3kJzoWMmZkz9joHodbz_wmgpA,8771
431
431
  flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca8gxdEo,717
432
432
  flwr/supernode/servicer/clientappio/__init__.py,sha256=7Oy62Y_oijqF7Dxi6tpcUQyOpLc_QpIRZ83NvwmB0Yg,813
433
- flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=nIHRu38EWK-rpNOkcgBRAAKwYQQWFeCwu0lkO7OPZGQ,10239
433
+ flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=ZvKosLV7GN1_fOF-tOmhqFQysYQywCysRc-m23DVIWA,10265
434
434
  flwr/supernode/start_client_internal.py,sha256=wKqh9-_rQYi7JFKpYBLRiUeq9YJUSyUd9b-SnVnuvwI,21567
435
- flwr_nightly-1.23.0.dev20251022.dist-info/METADATA,sha256=FqKdz3NRwoyHs8FTlbkRkmV0lz9ITGJ3kOCrK_WJ59k,14559
436
- flwr_nightly-1.23.0.dev20251022.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
437
- flwr_nightly-1.23.0.dev20251022.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
438
- flwr_nightly-1.23.0.dev20251022.dist-info/RECORD,,
435
+ flwr_nightly-1.23.0.dev20251024.dist-info/METADATA,sha256=aB-IhivK00L-rHkCDzB6ydELRWF9z3kGkwWmthzgoVw,14559
436
+ flwr_nightly-1.23.0.dev20251024.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
437
+ flwr_nightly-1.23.0.dev20251024.dist-info/entry_points.txt,sha256=hxHD2ixb_vJFDOlZV-zB4Ao32_BQlL34ftsDh1GXv14,420
438
+ flwr_nightly-1.23.0.dev20251024.dist-info/RECORD,,