flwr-nightly 1.17.0.dev20250319__py3-none-any.whl → 1.17.0.dev20250321__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.
- flwr/cli/run/run.py +5 -9
- flwr/client/app.py +6 -4
- flwr/client/client_app.py +10 -12
- flwr/client/clientapp/app.py +2 -2
- flwr/client/grpc_client/connection.py +24 -21
- flwr/client/message_handler/message_handler.py +27 -27
- flwr/client/mod/__init__.py +2 -2
- flwr/client/mod/centraldp_mods.py +7 -7
- flwr/client/mod/comms_mods.py +16 -22
- flwr/client/mod/localdp_mod.py +4 -4
- flwr/client/mod/secure_aggregation/secaggplus_mod.py +31 -31
- flwr/client/run_info_store.py +2 -2
- flwr/common/__init__.py +12 -4
- flwr/common/config.py +4 -4
- flwr/common/constant.py +1 -1
- flwr/common/context.py +4 -4
- flwr/common/message.py +269 -101
- flwr/common/record/__init__.py +8 -4
- flwr/common/record/{parametersrecord.py → arrayrecord.py} +75 -32
- flwr/common/record/{configsrecord.py → configrecord.py} +75 -29
- flwr/common/record/conversion_utils.py +1 -1
- flwr/common/record/{metricsrecord.py → metricrecord.py} +78 -32
- flwr/common/record/recorddict.py +288 -0
- flwr/common/recorddict_compat.py +410 -0
- flwr/common/secure_aggregation/secaggplus_constants.py +1 -1
- flwr/common/serde.py +66 -71
- flwr/common/typing.py +8 -8
- flwr/proto/exec_pb2.py +3 -3
- flwr/proto/exec_pb2.pyi +3 -3
- flwr/proto/message_pb2.py +12 -12
- flwr/proto/message_pb2.pyi +9 -9
- flwr/proto/recorddict_pb2.py +70 -0
- flwr/proto/{recordset_pb2.pyi → recorddict_pb2.pyi} +35 -35
- flwr/proto/run_pb2.py +31 -31
- flwr/proto/run_pb2.pyi +3 -3
- flwr/server/compat/grid_client_proxy.py +31 -31
- flwr/server/grid/grid.py +3 -3
- flwr/server/grid/grpc_grid.py +15 -23
- flwr/server/grid/inmemory_grid.py +14 -20
- flwr/server/superlink/fleet/vce/backend/backend.py +2 -2
- flwr/server/superlink/fleet/vce/backend/raybackend.py +2 -2
- flwr/server/superlink/fleet/vce/vce_api.py +1 -3
- flwr/server/superlink/linkstate/in_memory_linkstate.py +5 -5
- flwr/server/superlink/linkstate/linkstate.py +4 -4
- flwr/server/superlink/linkstate/sqlite_linkstate.py +21 -25
- flwr/server/superlink/linkstate/utils.py +18 -15
- flwr/server/superlink/serverappio/serverappio_servicer.py +3 -3
- flwr/server/superlink/simulation/simulationio_servicer.py +2 -2
- flwr/server/utils/validator.py +4 -4
- flwr/server/workflow/default_workflows.py +34 -41
- flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +37 -39
- flwr/simulation/app.py +2 -2
- flwr/simulation/ray_transport/ray_actor.py +4 -2
- flwr/simulation/ray_transport/ray_client_proxy.py +34 -32
- flwr/simulation/run_simulation.py +5 -5
- flwr/superexec/deployment.py +4 -4
- flwr/superexec/exec_servicer.py +2 -2
- flwr/superexec/executor.py +3 -3
- flwr/superexec/simulation.py +3 -3
- {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/METADATA +1 -1
- {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/RECORD +66 -66
- flwr/common/record/recordset.py +0 -209
- flwr/common/recordset_compat.py +0 -418
- flwr/proto/recordset_pb2.py +0 -70
- /flwr/proto/{recordset_pb2_grpc.py → recorddict_pb2_grpc.py} +0 -0
- /flwr/proto/{recordset_pb2_grpc.pyi → recorddict_pb2_grpc.pyi} +0 -0
- {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/entry_points.txt +0 -0
flwr/common/serde.py
CHANGED
@@ -28,16 +28,16 @@ from flwr.proto.fab_pb2 import Fab as ProtoFab
|
|
28
28
|
from flwr.proto.message_pb2 import Context as ProtoContext
|
29
29
|
from flwr.proto.message_pb2 import Message as ProtoMessage
|
30
30
|
from flwr.proto.message_pb2 import Metadata as ProtoMetadata
|
31
|
-
from flwr.proto.
|
32
|
-
from flwr.proto.
|
33
|
-
from flwr.proto.
|
34
|
-
from flwr.proto.
|
35
|
-
from flwr.proto.
|
36
|
-
from flwr.proto.
|
37
|
-
from flwr.proto.
|
38
|
-
from flwr.proto.
|
39
|
-
from flwr.proto.
|
40
|
-
from flwr.proto.
|
31
|
+
from flwr.proto.recorddict_pb2 import Array as ProtoArray
|
32
|
+
from flwr.proto.recorddict_pb2 import ArrayRecord as ProtoArrayRecord
|
33
|
+
from flwr.proto.recorddict_pb2 import BoolList, BytesList
|
34
|
+
from flwr.proto.recorddict_pb2 import ConfigRecord as ProtoConfigRecord
|
35
|
+
from flwr.proto.recorddict_pb2 import ConfigRecordValue as ProtoConfigRecordValue
|
36
|
+
from flwr.proto.recorddict_pb2 import DoubleList
|
37
|
+
from flwr.proto.recorddict_pb2 import MetricRecord as ProtoMetricRecord
|
38
|
+
from flwr.proto.recorddict_pb2 import MetricRecordValue as ProtoMetricRecordValue
|
39
|
+
from flwr.proto.recorddict_pb2 import RecordDict as ProtoRecordDict
|
40
|
+
from flwr.proto.recorddict_pb2 import SintList, StringList, UintList
|
41
41
|
from flwr.proto.run_pb2 import Run as ProtoRun
|
42
42
|
from flwr.proto.run_pb2 import RunStatus as ProtoRunStatus
|
43
43
|
from flwr.proto.transport_pb2 import (
|
@@ -53,14 +53,14 @@ from flwr.proto.transport_pb2 import (
|
|
53
53
|
# pylint: enable=E0611
|
54
54
|
from . import (
|
55
55
|
Array,
|
56
|
-
|
56
|
+
ArrayRecord,
|
57
|
+
ConfigRecord,
|
57
58
|
Context,
|
58
|
-
|
59
|
-
|
60
|
-
RecordSet,
|
59
|
+
MetricRecord,
|
60
|
+
RecordDict,
|
61
61
|
typing,
|
62
62
|
)
|
63
|
-
from .message import Error, Message, Metadata
|
63
|
+
from .message import Error, Message, Metadata, make_message
|
64
64
|
from .record.typeddict import TypedDict
|
65
65
|
|
66
66
|
# === Parameters message ===
|
@@ -483,19 +483,19 @@ def array_from_proto(array_proto: ProtoArray) -> Array:
|
|
483
483
|
)
|
484
484
|
|
485
485
|
|
486
|
-
def
|
487
|
-
"""Serialize
|
488
|
-
return
|
486
|
+
def array_record_to_proto(record: ArrayRecord) -> ProtoArrayRecord:
|
487
|
+
"""Serialize ArrayRecord to ProtoBuf."""
|
488
|
+
return ProtoArrayRecord(
|
489
489
|
data_keys=record.keys(),
|
490
490
|
data_values=map(array_to_proto, record.values()),
|
491
491
|
)
|
492
492
|
|
493
493
|
|
494
|
-
def
|
495
|
-
record_proto:
|
496
|
-
) ->
|
497
|
-
"""Deserialize
|
498
|
-
return
|
494
|
+
def array_record_from_proto(
|
495
|
+
record_proto: ProtoArrayRecord,
|
496
|
+
) -> ArrayRecord:
|
497
|
+
"""Deserialize ArrayRecord from ProtoBuf."""
|
498
|
+
return ArrayRecord(
|
499
499
|
array_dict=OrderedDict(
|
500
500
|
zip(record_proto.data_keys, map(array_from_proto, record_proto.data_values))
|
501
501
|
),
|
@@ -503,40 +503,40 @@ def parameters_record_from_proto(
|
|
503
503
|
)
|
504
504
|
|
505
505
|
|
506
|
-
def
|
507
|
-
"""Serialize
|
508
|
-
return
|
509
|
-
data=_record_value_dict_to_proto(record, [float, int],
|
506
|
+
def metric_record_to_proto(record: MetricRecord) -> ProtoMetricRecord:
|
507
|
+
"""Serialize MetricRecord to ProtoBuf."""
|
508
|
+
return ProtoMetricRecord(
|
509
|
+
data=_record_value_dict_to_proto(record, [float, int], ProtoMetricRecordValue)
|
510
510
|
)
|
511
511
|
|
512
512
|
|
513
|
-
def
|
514
|
-
"""Deserialize
|
515
|
-
return
|
516
|
-
|
517
|
-
dict[str, typing.
|
513
|
+
def metric_record_from_proto(record_proto: ProtoMetricRecord) -> MetricRecord:
|
514
|
+
"""Deserialize MetricRecord from ProtoBuf."""
|
515
|
+
return MetricRecord(
|
516
|
+
metric_dict=cast(
|
517
|
+
dict[str, typing.MetricRecordValues],
|
518
518
|
_record_value_dict_from_proto(record_proto.data),
|
519
519
|
),
|
520
520
|
keep_input=False,
|
521
521
|
)
|
522
522
|
|
523
523
|
|
524
|
-
def
|
525
|
-
"""Serialize
|
526
|
-
return
|
524
|
+
def config_record_to_proto(record: ConfigRecord) -> ProtoConfigRecord:
|
525
|
+
"""Serialize ConfigRecord to ProtoBuf."""
|
526
|
+
return ProtoConfigRecord(
|
527
527
|
data=_record_value_dict_to_proto(
|
528
528
|
record,
|
529
529
|
[bool, int, float, str, bytes],
|
530
|
-
|
530
|
+
ProtoConfigRecordValue,
|
531
531
|
)
|
532
532
|
)
|
533
533
|
|
534
534
|
|
535
|
-
def
|
536
|
-
"""Deserialize
|
537
|
-
return
|
538
|
-
|
539
|
-
dict[str, typing.
|
535
|
+
def config_record_from_proto(record_proto: ProtoConfigRecord) -> ConfigRecord:
|
536
|
+
"""Deserialize ConfigRecord from ProtoBuf."""
|
537
|
+
return ConfigRecord(
|
538
|
+
config_dict=cast(
|
539
|
+
dict[str, typing.ConfigRecordValues],
|
540
540
|
_record_value_dict_from_proto(record_proto.data),
|
541
541
|
),
|
542
542
|
keep_input=False,
|
@@ -558,34 +558,33 @@ def error_from_proto(error_proto: ProtoError) -> Error:
|
|
558
558
|
return Error(code=error_proto.code, reason=reason)
|
559
559
|
|
560
560
|
|
561
|
-
# ===
|
561
|
+
# === RecordDict message ===
|
562
562
|
|
563
563
|
|
564
|
-
def
|
565
|
-
"""Serialize
|
566
|
-
return
|
567
|
-
|
568
|
-
k:
|
569
|
-
for k, v in recordset.parameters_records.items()
|
564
|
+
def recorddict_to_proto(recorddict: RecordDict) -> ProtoRecordDict:
|
565
|
+
"""Serialize RecordDict to ProtoBuf."""
|
566
|
+
return ProtoRecordDict(
|
567
|
+
arrays={
|
568
|
+
k: array_record_to_proto(v) for k, v in recorddict.array_records.items()
|
570
569
|
},
|
571
570
|
metrics={
|
572
|
-
k:
|
571
|
+
k: metric_record_to_proto(v) for k, v in recorddict.metric_records.items()
|
573
572
|
},
|
574
573
|
configs={
|
575
|
-
k:
|
574
|
+
k: config_record_to_proto(v) for k, v in recorddict.config_records.items()
|
576
575
|
},
|
577
576
|
)
|
578
577
|
|
579
578
|
|
580
|
-
def
|
581
|
-
"""Deserialize
|
582
|
-
ret =
|
583
|
-
for k,
|
584
|
-
ret[k] =
|
585
|
-
for k, m_record_proto in
|
586
|
-
ret[k] =
|
587
|
-
for k, c_record_proto in
|
588
|
-
ret[k] =
|
579
|
+
def recorddict_from_proto(recorddict_proto: ProtoRecordDict) -> RecordDict:
|
580
|
+
"""Deserialize RecordDict from ProtoBuf."""
|
581
|
+
ret = RecordDict()
|
582
|
+
for k, arr_record_proto in recorddict_proto.arrays.items():
|
583
|
+
ret[k] = array_record_from_proto(arr_record_proto)
|
584
|
+
for k, m_record_proto in recorddict_proto.metrics.items():
|
585
|
+
ret[k] = metric_record_from_proto(m_record_proto)
|
586
|
+
for k, c_record_proto in recorddict_proto.configs.items():
|
587
|
+
ret[k] = config_record_from_proto(c_record_proto)
|
589
588
|
return ret
|
590
589
|
|
591
590
|
|
@@ -657,7 +656,7 @@ def metadata_to_proto(metadata: Metadata) -> ProtoMetadata:
|
|
657
656
|
message_id=metadata.message_id,
|
658
657
|
src_node_id=metadata.src_node_id,
|
659
658
|
dst_node_id=metadata.dst_node_id,
|
660
|
-
|
659
|
+
reply_to_message_id=metadata.reply_to_message_id,
|
661
660
|
group_id=metadata.group_id,
|
662
661
|
ttl=metadata.ttl,
|
663
662
|
message_type=metadata.message_type,
|
@@ -673,8 +672,9 @@ def metadata_from_proto(metadata_proto: ProtoMetadata) -> Metadata:
|
|
673
672
|
message_id=metadata_proto.message_id,
|
674
673
|
src_node_id=metadata_proto.src_node_id,
|
675
674
|
dst_node_id=metadata_proto.dst_node_id,
|
676
|
-
|
675
|
+
reply_to_message_id=metadata_proto.reply_to_message_id,
|
677
676
|
group_id=metadata_proto.group_id,
|
677
|
+
created_at=metadata_proto.created_at,
|
678
678
|
ttl=metadata_proto.ttl,
|
679
679
|
message_type=metadata_proto.message_type,
|
680
680
|
)
|
@@ -689,7 +689,7 @@ def message_to_proto(message: Message) -> ProtoMessage:
|
|
689
689
|
proto = ProtoMessage(
|
690
690
|
metadata=metadata_to_proto(message.metadata),
|
691
691
|
content=(
|
692
|
-
|
692
|
+
recorddict_to_proto(message.content) if message.has_content() else None
|
693
693
|
),
|
694
694
|
error=error_to_proto(message.error) if message.has_error() else None,
|
695
695
|
)
|
@@ -698,11 +698,10 @@ def message_to_proto(message: Message) -> ProtoMessage:
|
|
698
698
|
|
699
699
|
def message_from_proto(message_proto: ProtoMessage) -> Message:
|
700
700
|
"""Deserialize `Message` from ProtoBuf."""
|
701
|
-
|
702
|
-
message = Message(
|
701
|
+
return make_message(
|
703
702
|
metadata=metadata_from_proto(message_proto.metadata),
|
704
703
|
content=(
|
705
|
-
|
704
|
+
recorddict_from_proto(message_proto.content)
|
706
705
|
if message_proto.HasField("content")
|
707
706
|
else None
|
708
707
|
),
|
@@ -712,10 +711,6 @@ def message_from_proto(message_proto: ProtoMessage) -> Message:
|
|
712
711
|
else None
|
713
712
|
),
|
714
713
|
)
|
715
|
-
# `.created_at` is set upon Message object construction
|
716
|
-
# we need to manually set it to the original value
|
717
|
-
message.metadata.created_at = created_at
|
718
|
-
return message
|
719
714
|
|
720
715
|
|
721
716
|
# === Context messages ===
|
@@ -727,7 +722,7 @@ def context_to_proto(context: Context) -> ProtoContext:
|
|
727
722
|
run_id=context.run_id,
|
728
723
|
node_id=context.node_id,
|
729
724
|
node_config=user_config_to_proto(context.node_config),
|
730
|
-
state=
|
725
|
+
state=recorddict_to_proto(context.state),
|
731
726
|
run_config=user_config_to_proto(context.run_config),
|
732
727
|
)
|
733
728
|
return proto
|
@@ -739,7 +734,7 @@ def context_from_proto(context_proto: ProtoContext) -> Context:
|
|
739
734
|
run_id=context_proto.run_id,
|
740
735
|
node_id=context_proto.node_id,
|
741
736
|
node_config=user_config_from_proto(context_proto.node_config),
|
742
|
-
state=
|
737
|
+
state=recorddict_from_proto(context_proto.state),
|
743
738
|
run_config=user_config_from_proto(context_proto.run_config),
|
744
739
|
)
|
745
740
|
return context
|
flwr/common/typing.py
CHANGED
@@ -45,14 +45,14 @@ Value = Union[
|
|
45
45
|
list[str],
|
46
46
|
]
|
47
47
|
|
48
|
-
# Value types for common.
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
# Value types for common.
|
53
|
-
|
54
|
-
|
55
|
-
|
48
|
+
# Value types for common.MetricRecord
|
49
|
+
MetricScalar = Union[int, float]
|
50
|
+
MetricScalarList = Union[list[int], list[float]]
|
51
|
+
MetricRecordValues = Union[MetricScalar, MetricScalarList]
|
52
|
+
# Value types for common.ConfigRecord
|
53
|
+
ConfigScalar = Union[MetricScalar, str, bytes, bool]
|
54
|
+
ConfigScalarList = Union[MetricScalarList, list[str], list[bytes], list[bool]]
|
55
|
+
ConfigRecordValues = Union[ConfigScalar, ConfigScalarList]
|
56
56
|
|
57
57
|
Metrics = dict[str, Scalar]
|
58
58
|
MetricsAggregationFn = Callable[[list[tuple[int, Metrics]]], Metrics]
|
flwr/proto/exec_pb2.py
CHANGED
@@ -14,11 +14,11 @@ _sym_db = _symbol_database.Default()
|
|
14
14
|
|
15
15
|
from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
16
16
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
17
|
-
from flwr.proto import
|
17
|
+
from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
|
18
18
|
from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
19
19
|
|
20
20
|
|
21
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\
|
21
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x14\x66lwr/proto/run.proto\"\xfa\x01\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12\x34\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x18.flwr.proto.ConfigRecord\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"2\n\x10StartRunResponse\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"<\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x17\n\x0f\x61\x66ter_timestamp\x18\x02 \x01(\x01\"B\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t\x12\x18\n\x10latest_timestamp\x18\x02 \x01(\x01\"1\n\x0fListRunsRequest\x12\x13\n\x06run_id\x18\x01 \x01(\x04H\x00\x88\x01\x01\x42\t\n\x07_run_id\"\x9d\x01\n\x10ListRunsResponse\x12;\n\x08run_dict\x18\x01 \x03(\x0b\x32).flwr.proto.ListRunsResponse.RunDictEntry\x12\x0b\n\x03now\x18\x02 \x01(\t\x1a?\n\x0cRunDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x04\x12\x1e\n\x05value\x18\x02 \x01(\x0b\x32\x0f.flwr.proto.Run:\x02\x38\x01\"\x18\n\x16GetLoginDetailsRequest\"\x8a\x01\n\x17GetLoginDetailsResponse\x12\x11\n\tauth_type\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65vice_code\x18\x02 \x01(\t\x12!\n\x19verification_uri_complete\x18\x03 \x01(\t\x12\x12\n\nexpires_in\x18\x04 \x01(\x03\x12\x10\n\x08interval\x18\x05 \x01(\x03\"+\n\x14GetAuthTokensRequest\x12\x13\n\x0b\x64\x65vice_code\x18\x01 \x01(\t\"D\n\x15GetAuthTokensResponse\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x01 \x01(\t\x12\x15\n\rrefresh_token\x18\x02 \x01(\t\" \n\x0eStopRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"\"\n\x0fStopRunResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x32\xe5\x03\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12\x44\n\x07StopRun\x12\x1a.flwr.proto.StopRunRequest\x1a\x1b.flwr.proto.StopRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x12G\n\x08ListRuns\x12\x1b.flwr.proto.ListRunsRequest\x1a\x1c.flwr.proto.ListRunsResponse\"\x00\x12\\\n\x0fGetLoginDetails\x12\".flwr.proto.GetLoginDetailsRequest\x1a#.flwr.proto.GetLoginDetailsResponse\"\x00\x12V\n\rGetAuthTokens\x12 .flwr.proto.GetAuthTokensRequest\x1a!.flwr.proto.GetAuthTokensResponse\"\x00\x62\x06proto3')
|
22
22
|
|
23
23
|
_globals = globals()
|
24
24
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -29,7 +29,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
29
29
|
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_options = b'8\001'
|
30
30
|
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._options = None
|
31
31
|
_globals['_LISTRUNSRESPONSE_RUNDICTENTRY']._serialized_options = b'8\001'
|
32
|
-
_globals['_STARTRUNREQUEST']._serialized_start=
|
32
|
+
_globals['_STARTRUNREQUEST']._serialized_start=139
|
33
33
|
_globals['_STARTRUNREQUEST']._serialized_end=389
|
34
34
|
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_start=316
|
35
35
|
_globals['_STARTRUNREQUEST_OVERRIDECONFIGENTRY']._serialized_end=389
|
flwr/proto/exec_pb2.pyi
CHANGED
@@ -4,7 +4,7 @@ isort:skip_file
|
|
4
4
|
"""
|
5
5
|
import builtins
|
6
6
|
import flwr.proto.fab_pb2
|
7
|
-
import flwr.proto.
|
7
|
+
import flwr.proto.recorddict_pb2
|
8
8
|
import flwr.proto.run_pb2
|
9
9
|
import flwr.proto.transport_pb2
|
10
10
|
import google.protobuf.descriptor
|
@@ -40,12 +40,12 @@ class StartRunRequest(google.protobuf.message.Message):
|
|
40
40
|
@property
|
41
41
|
def override_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
42
42
|
@property
|
43
|
-
def federation_options(self) -> flwr.proto.
|
43
|
+
def federation_options(self) -> flwr.proto.recorddict_pb2.ConfigRecord: ...
|
44
44
|
def __init__(self,
|
45
45
|
*,
|
46
46
|
fab: typing.Optional[flwr.proto.fab_pb2.Fab] = ...,
|
47
47
|
override_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
48
|
-
federation_options: typing.Optional[flwr.proto.
|
48
|
+
federation_options: typing.Optional[flwr.proto.recorddict_pb2.ConfigRecord] = ...,
|
49
49
|
) -> None: ...
|
50
50
|
def HasField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options"]) -> builtins.bool: ...
|
51
51
|
def ClearField(self, field_name: typing_extensions.Literal["fab",b"fab","federation_options",b"federation_options","override_config",b"override_config"]) -> None: ...
|
flwr/proto/message_pb2.py
CHANGED
@@ -13,11 +13,11 @@ _sym_db = _symbol_database.Default()
|
|
13
13
|
|
14
14
|
|
15
15
|
from flwr.proto import error_pb2 as flwr_dot_proto_dot_error__pb2
|
16
|
-
from flwr.proto import
|
16
|
+
from flwr.proto import recorddict_pb2 as flwr_dot_proto_dot_recorddict__pb2
|
17
17
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
18
18
|
|
19
19
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1b\x66lwr/proto/recorddict.proto\x1a\x1a\x66lwr/proto/transport.proto\"|\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12\'\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xd0\x02\n\x07\x43ontext\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0f\n\x07node_id\x18\x02 \x01(\x04\x12\x38\n\x0bnode_config\x18\x03 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12%\n\x05state\x18\x04 \x01(\x0b\x32\x16.flwr.proto.RecordDict\x12\x36\n\nrun_config\x18\x05 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbe\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x04\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x04\x12\x1b\n\x13reply_to_message_id\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3')
|
21
21
|
|
22
22
|
_globals = globals()
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -28,14 +28,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
28
28
|
_globals['_CONTEXT_NODECONFIGENTRY']._serialized_options = b'8\001'
|
29
29
|
_globals['_CONTEXT_RUNCONFIGENTRY']._options = None
|
30
30
|
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_options = b'8\001'
|
31
|
-
_globals['_MESSAGE']._serialized_start=
|
32
|
-
_globals['_MESSAGE']._serialized_end=
|
33
|
-
_globals['_CONTEXT']._serialized_start=
|
34
|
-
_globals['_CONTEXT']._serialized_end=
|
35
|
-
_globals['_CONTEXT_NODECONFIGENTRY']._serialized_start=
|
36
|
-
_globals['_CONTEXT_NODECONFIGENTRY']._serialized_end=
|
37
|
-
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=
|
38
|
-
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=
|
39
|
-
_globals['_METADATA']._serialized_start=
|
40
|
-
_globals['_METADATA']._serialized_end=
|
31
|
+
_globals['_MESSAGE']._serialized_start=121
|
32
|
+
_globals['_MESSAGE']._serialized_end=245
|
33
|
+
_globals['_CONTEXT']._serialized_start=248
|
34
|
+
_globals['_CONTEXT']._serialized_end=584
|
35
|
+
_globals['_CONTEXT_NODECONFIGENTRY']._serialized_start=445
|
36
|
+
_globals['_CONTEXT_NODECONFIGENTRY']._serialized_end=514
|
37
|
+
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=516
|
38
|
+
_globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=584
|
39
|
+
_globals['_METADATA']._serialized_start=587
|
40
|
+
_globals['_METADATA']._serialized_end=777
|
41
41
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/message_pb2.pyi
CHANGED
@@ -4,7 +4,7 @@ isort:skip_file
|
|
4
4
|
"""
|
5
5
|
import builtins
|
6
6
|
import flwr.proto.error_pb2
|
7
|
-
import flwr.proto.
|
7
|
+
import flwr.proto.recorddict_pb2
|
8
8
|
import flwr.proto.transport_pb2
|
9
9
|
import google.protobuf.descriptor
|
10
10
|
import google.protobuf.internal.containers
|
@@ -22,13 +22,13 @@ class Message(google.protobuf.message.Message):
|
|
22
22
|
@property
|
23
23
|
def metadata(self) -> global___Metadata: ...
|
24
24
|
@property
|
25
|
-
def content(self) -> flwr.proto.
|
25
|
+
def content(self) -> flwr.proto.recorddict_pb2.RecordDict: ...
|
26
26
|
@property
|
27
27
|
def error(self) -> flwr.proto.error_pb2.Error: ...
|
28
28
|
def __init__(self,
|
29
29
|
*,
|
30
30
|
metadata: typing.Optional[global___Metadata] = ...,
|
31
|
-
content: typing.Optional[flwr.proto.
|
31
|
+
content: typing.Optional[flwr.proto.recorddict_pb2.RecordDict] = ...,
|
32
32
|
error: typing.Optional[flwr.proto.error_pb2.Error] = ...,
|
33
33
|
) -> None: ...
|
34
34
|
def HasField(self, field_name: typing_extensions.Literal["content",b"content","error",b"error","metadata",b"metadata"]) -> builtins.bool: ...
|
@@ -77,7 +77,7 @@ class Context(google.protobuf.message.Message):
|
|
77
77
|
@property
|
78
78
|
def node_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
79
79
|
@property
|
80
|
-
def state(self) -> flwr.proto.
|
80
|
+
def state(self) -> flwr.proto.recorddict_pb2.RecordDict: ...
|
81
81
|
@property
|
82
82
|
def run_config(self) -> google.protobuf.internal.containers.MessageMap[typing.Text, flwr.proto.transport_pb2.Scalar]: ...
|
83
83
|
def __init__(self,
|
@@ -85,7 +85,7 @@ class Context(google.protobuf.message.Message):
|
|
85
85
|
run_id: builtins.int = ...,
|
86
86
|
node_id: builtins.int = ...,
|
87
87
|
node_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
88
|
-
state: typing.Optional[flwr.proto.
|
88
|
+
state: typing.Optional[flwr.proto.recorddict_pb2.RecordDict] = ...,
|
89
89
|
run_config: typing.Optional[typing.Mapping[typing.Text, flwr.proto.transport_pb2.Scalar]] = ...,
|
90
90
|
) -> None: ...
|
91
91
|
def HasField(self, field_name: typing_extensions.Literal["state",b"state"]) -> builtins.bool: ...
|
@@ -98,7 +98,7 @@ class Metadata(google.protobuf.message.Message):
|
|
98
98
|
MESSAGE_ID_FIELD_NUMBER: builtins.int
|
99
99
|
SRC_NODE_ID_FIELD_NUMBER: builtins.int
|
100
100
|
DST_NODE_ID_FIELD_NUMBER: builtins.int
|
101
|
-
|
101
|
+
REPLY_TO_MESSAGE_ID_FIELD_NUMBER: builtins.int
|
102
102
|
GROUP_ID_FIELD_NUMBER: builtins.int
|
103
103
|
TTL_FIELD_NUMBER: builtins.int
|
104
104
|
MESSAGE_TYPE_FIELD_NUMBER: builtins.int
|
@@ -107,7 +107,7 @@ class Metadata(google.protobuf.message.Message):
|
|
107
107
|
message_id: typing.Text
|
108
108
|
src_node_id: builtins.int
|
109
109
|
dst_node_id: builtins.int
|
110
|
-
|
110
|
+
reply_to_message_id: typing.Text
|
111
111
|
group_id: typing.Text
|
112
112
|
ttl: builtins.float
|
113
113
|
message_type: typing.Text
|
@@ -118,11 +118,11 @@ class Metadata(google.protobuf.message.Message):
|
|
118
118
|
message_id: typing.Text = ...,
|
119
119
|
src_node_id: builtins.int = ...,
|
120
120
|
dst_node_id: builtins.int = ...,
|
121
|
-
|
121
|
+
reply_to_message_id: typing.Text = ...,
|
122
122
|
group_id: typing.Text = ...,
|
123
123
|
ttl: builtins.float = ...,
|
124
124
|
message_type: typing.Text = ...,
|
125
125
|
created_at: builtins.float = ...,
|
126
126
|
) -> None: ...
|
127
|
-
def ClearField(self, field_name: typing_extensions.Literal["created_at",b"created_at","dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","
|
127
|
+
def ClearField(self, field_name: typing_extensions.Literal["created_at",b"created_at","dst_node_id",b"dst_node_id","group_id",b"group_id","message_id",b"message_id","message_type",b"message_type","reply_to_message_id",b"reply_to_message_id","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> None: ...
|
128
128
|
global___Metadata = Metadata
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: flwr/proto/recorddict.proto
|
4
|
+
# Protobuf Python Version: 4.25.1
|
5
|
+
"""Generated protocol buffer code."""
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
9
|
+
from google.protobuf.internal import builder as _builder
|
10
|
+
# @@protoc_insertion_point(imports)
|
11
|
+
|
12
|
+
_sym_db = _symbol_database.Default()
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66lwr/proto/recorddict.proto\x12\nflwr.proto\"\x1a\n\nDoubleList\x12\x0c\n\x04vals\x18\x01 \x03(\x01\"\x18\n\x08SintList\x12\x0c\n\x04vals\x18\x01 \x03(\x12\"\x18\n\x08UintList\x12\x0c\n\x04vals\x18\x01 \x03(\x04\"\x18\n\x08\x42oolList\x12\x0c\n\x04vals\x18\x01 \x03(\x08\"\x1a\n\nStringList\x12\x0c\n\x04vals\x18\x01 \x03(\t\"\x19\n\tBytesList\x12\x0c\n\x04vals\x18\x01 \x03(\x0c\"B\n\x05\x41rray\x12\r\n\x05\x64type\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x03(\x05\x12\r\n\x05stype\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"\xd7\x01\n\x11MetricRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x10\n\x06uint64\x18\x03 \x01(\x04H\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12)\n\tsint_list\x18\x16 \x01(\x0b\x32\x14.flwr.proto.SintListH\x00\x12)\n\tuint_list\x18\x17 \x01(\x0b\x32\x14.flwr.proto.UintListH\x00\x42\x07\n\x05value\"\x91\x03\n\x11\x43onfigRecordValue\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x10\n\x06uint64\x18\x03 \x01(\x04H\x00\x12\x0e\n\x04\x62ool\x18\x04 \x01(\x08H\x00\x12\x10\n\x06string\x18\x05 \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x06 \x01(\x0cH\x00\x12-\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x16.flwr.proto.DoubleListH\x00\x12)\n\tsint_list\x18\x16 \x01(\x0b\x32\x14.flwr.proto.SintListH\x00\x12)\n\tuint_list\x18\x17 \x01(\x0b\x32\x14.flwr.proto.UintListH\x00\x12)\n\tbool_list\x18\x18 \x01(\x0b\x32\x14.flwr.proto.BoolListH\x00\x12-\n\x0bstring_list\x18\x19 \x01(\x0b\x32\x16.flwr.proto.StringListH\x00\x12+\n\nbytes_list\x18\x1a \x01(\x0b\x32\x15.flwr.proto.BytesListH\x00\x42\x07\n\x05value\"H\n\x0b\x41rrayRecord\x12\x11\n\tdata_keys\x18\x01 \x03(\t\x12&\n\x0b\x64\x61ta_values\x18\x02 \x03(\x0b\x32\x11.flwr.proto.Array\"\x8c\x01\n\x0cMetricRecord\x12\x30\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\".flwr.proto.MetricRecord.DataEntry\x1aJ\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.flwr.proto.MetricRecordValue:\x02\x38\x01\"\x8c\x01\n\x0c\x43onfigRecord\x12\x30\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\".flwr.proto.ConfigRecord.DataEntry\x1aJ\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.flwr.proto.ConfigRecordValue:\x02\x38\x01\"\x88\x03\n\nRecordDict\x12\x32\n\x06\x61rrays\x18\x01 \x03(\x0b\x32\".flwr.proto.RecordDict.ArraysEntry\x12\x34\n\x07metrics\x18\x02 \x03(\x0b\x32#.flwr.proto.RecordDict.MetricsEntry\x12\x34\n\x07\x63onfigs\x18\x03 \x03(\x0b\x32#.flwr.proto.RecordDict.ConfigsEntry\x1a\x46\n\x0b\x41rraysEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.flwr.proto.ArrayRecord:\x02\x38\x01\x1aH\n\x0cMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.flwr.proto.MetricRecord:\x02\x38\x01\x1aH\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.flwr.proto.ConfigRecord:\x02\x38\x01\x62\x06proto3')
|
18
|
+
|
19
|
+
_globals = globals()
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.recorddict_pb2', _globals)
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
23
|
+
DESCRIPTOR._options = None
|
24
|
+
_globals['_METRICRECORD_DATAENTRY']._options = None
|
25
|
+
_globals['_METRICRECORD_DATAENTRY']._serialized_options = b'8\001'
|
26
|
+
_globals['_CONFIGRECORD_DATAENTRY']._options = None
|
27
|
+
_globals['_CONFIGRECORD_DATAENTRY']._serialized_options = b'8\001'
|
28
|
+
_globals['_RECORDDICT_ARRAYSENTRY']._options = None
|
29
|
+
_globals['_RECORDDICT_ARRAYSENTRY']._serialized_options = b'8\001'
|
30
|
+
_globals['_RECORDDICT_METRICSENTRY']._options = None
|
31
|
+
_globals['_RECORDDICT_METRICSENTRY']._serialized_options = b'8\001'
|
32
|
+
_globals['_RECORDDICT_CONFIGSENTRY']._options = None
|
33
|
+
_globals['_RECORDDICT_CONFIGSENTRY']._serialized_options = b'8\001'
|
34
|
+
_globals['_DOUBLELIST']._serialized_start=43
|
35
|
+
_globals['_DOUBLELIST']._serialized_end=69
|
36
|
+
_globals['_SINTLIST']._serialized_start=71
|
37
|
+
_globals['_SINTLIST']._serialized_end=95
|
38
|
+
_globals['_UINTLIST']._serialized_start=97
|
39
|
+
_globals['_UINTLIST']._serialized_end=121
|
40
|
+
_globals['_BOOLLIST']._serialized_start=123
|
41
|
+
_globals['_BOOLLIST']._serialized_end=147
|
42
|
+
_globals['_STRINGLIST']._serialized_start=149
|
43
|
+
_globals['_STRINGLIST']._serialized_end=175
|
44
|
+
_globals['_BYTESLIST']._serialized_start=177
|
45
|
+
_globals['_BYTESLIST']._serialized_end=202
|
46
|
+
_globals['_ARRAY']._serialized_start=204
|
47
|
+
_globals['_ARRAY']._serialized_end=270
|
48
|
+
_globals['_METRICRECORDVALUE']._serialized_start=273
|
49
|
+
_globals['_METRICRECORDVALUE']._serialized_end=488
|
50
|
+
_globals['_CONFIGRECORDVALUE']._serialized_start=491
|
51
|
+
_globals['_CONFIGRECORDVALUE']._serialized_end=892
|
52
|
+
_globals['_ARRAYRECORD']._serialized_start=894
|
53
|
+
_globals['_ARRAYRECORD']._serialized_end=966
|
54
|
+
_globals['_METRICRECORD']._serialized_start=969
|
55
|
+
_globals['_METRICRECORD']._serialized_end=1109
|
56
|
+
_globals['_METRICRECORD_DATAENTRY']._serialized_start=1035
|
57
|
+
_globals['_METRICRECORD_DATAENTRY']._serialized_end=1109
|
58
|
+
_globals['_CONFIGRECORD']._serialized_start=1112
|
59
|
+
_globals['_CONFIGRECORD']._serialized_end=1252
|
60
|
+
_globals['_CONFIGRECORD_DATAENTRY']._serialized_start=1178
|
61
|
+
_globals['_CONFIGRECORD_DATAENTRY']._serialized_end=1252
|
62
|
+
_globals['_RECORDDICT']._serialized_start=1255
|
63
|
+
_globals['_RECORDDICT']._serialized_end=1647
|
64
|
+
_globals['_RECORDDICT_ARRAYSENTRY']._serialized_start=1429
|
65
|
+
_globals['_RECORDDICT_ARRAYSENTRY']._serialized_end=1499
|
66
|
+
_globals['_RECORDDICT_METRICSENTRY']._serialized_start=1501
|
67
|
+
_globals['_RECORDDICT_METRICSENTRY']._serialized_end=1573
|
68
|
+
_globals['_RECORDDICT_CONFIGSENTRY']._serialized_start=1575
|
69
|
+
_globals['_RECORDDICT_CONFIGSENTRY']._serialized_end=1647
|
70
|
+
# @@protoc_insertion_point(module_scope)
|