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.
Files changed (69) hide show
  1. flwr/cli/run/run.py +5 -9
  2. flwr/client/app.py +6 -4
  3. flwr/client/client_app.py +10 -12
  4. flwr/client/clientapp/app.py +2 -2
  5. flwr/client/grpc_client/connection.py +24 -21
  6. flwr/client/message_handler/message_handler.py +27 -27
  7. flwr/client/mod/__init__.py +2 -2
  8. flwr/client/mod/centraldp_mods.py +7 -7
  9. flwr/client/mod/comms_mods.py +16 -22
  10. flwr/client/mod/localdp_mod.py +4 -4
  11. flwr/client/mod/secure_aggregation/secaggplus_mod.py +31 -31
  12. flwr/client/run_info_store.py +2 -2
  13. flwr/common/__init__.py +12 -4
  14. flwr/common/config.py +4 -4
  15. flwr/common/constant.py +1 -1
  16. flwr/common/context.py +4 -4
  17. flwr/common/message.py +269 -101
  18. flwr/common/record/__init__.py +8 -4
  19. flwr/common/record/{parametersrecord.py → arrayrecord.py} +75 -32
  20. flwr/common/record/{configsrecord.py → configrecord.py} +75 -29
  21. flwr/common/record/conversion_utils.py +1 -1
  22. flwr/common/record/{metricsrecord.py → metricrecord.py} +78 -32
  23. flwr/common/record/recorddict.py +288 -0
  24. flwr/common/recorddict_compat.py +410 -0
  25. flwr/common/secure_aggregation/secaggplus_constants.py +1 -1
  26. flwr/common/serde.py +66 -71
  27. flwr/common/typing.py +8 -8
  28. flwr/proto/exec_pb2.py +3 -3
  29. flwr/proto/exec_pb2.pyi +3 -3
  30. flwr/proto/message_pb2.py +12 -12
  31. flwr/proto/message_pb2.pyi +9 -9
  32. flwr/proto/recorddict_pb2.py +70 -0
  33. flwr/proto/{recordset_pb2.pyi → recorddict_pb2.pyi} +35 -35
  34. flwr/proto/run_pb2.py +31 -31
  35. flwr/proto/run_pb2.pyi +3 -3
  36. flwr/server/compat/grid_client_proxy.py +31 -31
  37. flwr/server/grid/grid.py +3 -3
  38. flwr/server/grid/grpc_grid.py +15 -23
  39. flwr/server/grid/inmemory_grid.py +14 -20
  40. flwr/server/superlink/fleet/vce/backend/backend.py +2 -2
  41. flwr/server/superlink/fleet/vce/backend/raybackend.py +2 -2
  42. flwr/server/superlink/fleet/vce/vce_api.py +1 -3
  43. flwr/server/superlink/linkstate/in_memory_linkstate.py +5 -5
  44. flwr/server/superlink/linkstate/linkstate.py +4 -4
  45. flwr/server/superlink/linkstate/sqlite_linkstate.py +21 -25
  46. flwr/server/superlink/linkstate/utils.py +18 -15
  47. flwr/server/superlink/serverappio/serverappio_servicer.py +3 -3
  48. flwr/server/superlink/simulation/simulationio_servicer.py +2 -2
  49. flwr/server/utils/validator.py +4 -4
  50. flwr/server/workflow/default_workflows.py +34 -41
  51. flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +37 -39
  52. flwr/simulation/app.py +2 -2
  53. flwr/simulation/ray_transport/ray_actor.py +4 -2
  54. flwr/simulation/ray_transport/ray_client_proxy.py +34 -32
  55. flwr/simulation/run_simulation.py +5 -5
  56. flwr/superexec/deployment.py +4 -4
  57. flwr/superexec/exec_servicer.py +2 -2
  58. flwr/superexec/executor.py +3 -3
  59. flwr/superexec/simulation.py +3 -3
  60. {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/METADATA +1 -1
  61. {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/RECORD +66 -66
  62. flwr/common/record/recordset.py +0 -209
  63. flwr/common/recordset_compat.py +0 -418
  64. flwr/proto/recordset_pb2.py +0 -70
  65. /flwr/proto/{recordset_pb2_grpc.py → recorddict_pb2_grpc.py} +0 -0
  66. /flwr/proto/{recordset_pb2_grpc.pyi → recorddict_pb2_grpc.pyi} +0 -0
  67. {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/LICENSE +0 -0
  68. {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/WHEEL +0 -0
  69. {flwr_nightly-1.17.0.dev20250319.dist-info → flwr_nightly-1.17.0.dev20250321.dist-info}/entry_points.txt +0 -0
@@ -42,7 +42,7 @@ class Stage:
42
42
 
43
43
 
44
44
  class Key:
45
- """Keys for the configs in the ConfigsRecord."""
45
+ """Keys for the configs in the ConfigRecord."""
46
46
 
47
47
  STAGE = "stage"
48
48
  SAMPLE_NUMBER = "sample_num"
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.recordset_pb2 import Array as ProtoArray
32
- from flwr.proto.recordset_pb2 import BoolList, BytesList
33
- from flwr.proto.recordset_pb2 import ConfigsRecord as ProtoConfigsRecord
34
- from flwr.proto.recordset_pb2 import ConfigsRecordValue as ProtoConfigsRecordValue
35
- from flwr.proto.recordset_pb2 import DoubleList
36
- from flwr.proto.recordset_pb2 import MetricsRecord as ProtoMetricsRecord
37
- from flwr.proto.recordset_pb2 import MetricsRecordValue as ProtoMetricsRecordValue
38
- from flwr.proto.recordset_pb2 import ParametersRecord as ProtoParametersRecord
39
- from flwr.proto.recordset_pb2 import RecordSet as ProtoRecordSet
40
- from flwr.proto.recordset_pb2 import SintList, StringList, UintList
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
- ConfigsRecord,
56
+ ArrayRecord,
57
+ ConfigRecord,
57
58
  Context,
58
- MetricsRecord,
59
- ParametersRecord,
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 parameters_record_to_proto(record: ParametersRecord) -> ProtoParametersRecord:
487
- """Serialize ParametersRecord to ProtoBuf."""
488
- return ProtoParametersRecord(
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 parameters_record_from_proto(
495
- record_proto: ProtoParametersRecord,
496
- ) -> ParametersRecord:
497
- """Deserialize ParametersRecord from ProtoBuf."""
498
- return ParametersRecord(
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 metrics_record_to_proto(record: MetricsRecord) -> ProtoMetricsRecord:
507
- """Serialize MetricsRecord to ProtoBuf."""
508
- return ProtoMetricsRecord(
509
- data=_record_value_dict_to_proto(record, [float, int], ProtoMetricsRecordValue)
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 metrics_record_from_proto(record_proto: ProtoMetricsRecord) -> MetricsRecord:
514
- """Deserialize MetricsRecord from ProtoBuf."""
515
- return MetricsRecord(
516
- metrics_dict=cast(
517
- dict[str, typing.MetricsRecordValues],
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 configs_record_to_proto(record: ConfigsRecord) -> ProtoConfigsRecord:
525
- """Serialize ConfigsRecord to ProtoBuf."""
526
- return ProtoConfigsRecord(
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
- ProtoConfigsRecordValue,
530
+ ProtoConfigRecordValue,
531
531
  )
532
532
  )
533
533
 
534
534
 
535
- def configs_record_from_proto(record_proto: ProtoConfigsRecord) -> ConfigsRecord:
536
- """Deserialize ConfigsRecord from ProtoBuf."""
537
- return ConfigsRecord(
538
- configs_dict=cast(
539
- dict[str, typing.ConfigsRecordValues],
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
- # === RecordSet message ===
561
+ # === RecordDict message ===
562
562
 
563
563
 
564
- def recordset_to_proto(recordset: RecordSet) -> ProtoRecordSet:
565
- """Serialize RecordSet to ProtoBuf."""
566
- return ProtoRecordSet(
567
- parameters={
568
- k: parameters_record_to_proto(v)
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: metrics_record_to_proto(v) for k, v in recordset.metrics_records.items()
571
+ k: metric_record_to_proto(v) for k, v in recorddict.metric_records.items()
573
572
  },
574
573
  configs={
575
- k: configs_record_to_proto(v) for k, v in recordset.configs_records.items()
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 recordset_from_proto(recordset_proto: ProtoRecordSet) -> RecordSet:
581
- """Deserialize RecordSet from ProtoBuf."""
582
- ret = RecordSet()
583
- for k, p_record_proto in recordset_proto.parameters.items():
584
- ret[k] = parameters_record_from_proto(p_record_proto)
585
- for k, m_record_proto in recordset_proto.metrics.items():
586
- ret[k] = metrics_record_from_proto(m_record_proto)
587
- for k, c_record_proto in recordset_proto.configs.items():
588
- ret[k] = configs_record_from_proto(c_record_proto)
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
- reply_to_message=metadata.reply_to_message,
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
- reply_to_message=metadata_proto.reply_to_message,
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
- recordset_to_proto(message.content) if message.has_content() else None
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
- created_at = message_proto.metadata.created_at
702
- message = Message(
701
+ return make_message(
703
702
  metadata=metadata_from_proto(message_proto.metadata),
704
703
  content=(
705
- recordset_from_proto(message_proto.content)
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=recordset_to_proto(context.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=recordset_from_proto(context_proto.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.MetricsRecord
49
- MetricsScalar = Union[int, float]
50
- MetricsScalarList = Union[list[int], list[float]]
51
- MetricsRecordValues = Union[MetricsScalar, MetricsScalarList]
52
- # Value types for common.ConfigsRecord
53
- ConfigsScalar = Union[MetricsScalar, str, bytes, bool]
54
- ConfigsScalarList = Union[MetricsScalarList, list[str], list[bytes], list[bool]]
55
- ConfigsRecordValues = Union[ConfigsScalar, ConfigsScalarList]
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 recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
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\x1a\x66lwr/proto/recordset.proto\x1a\x14\x66lwr/proto/run.proto\"\xfb\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\x35\n\x12\x66\x65\x64\x65ration_options\x18\x03 \x01(\x0b\x32\x19.flwr.proto.ConfigsRecord\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')
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=138
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.recordset_pb2
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.recordset_pb2.ConfigsRecord: ...
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.recordset_pb2.ConfigsRecord] = ...,
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 recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
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\x1a\x66lwr/proto/recordset.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\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xcf\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\x15.flwr.proto.RecordSet\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\"\xbb\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\x18\n\x10reply_to_message\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')
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=120
32
- _globals['_MESSAGE']._serialized_end=243
33
- _globals['_CONTEXT']._serialized_start=246
34
- _globals['_CONTEXT']._serialized_end=581
35
- _globals['_CONTEXT_NODECONFIGENTRY']._serialized_start=442
36
- _globals['_CONTEXT_NODECONFIGENTRY']._serialized_end=511
37
- _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_start=513
38
- _globals['_CONTEXT_RUNCONFIGENTRY']._serialized_end=581
39
- _globals['_METADATA']._serialized_start=584
40
- _globals['_METADATA']._serialized_end=771
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)
@@ -4,7 +4,7 @@ isort:skip_file
4
4
  """
5
5
  import builtins
6
6
  import flwr.proto.error_pb2
7
- import flwr.proto.recordset_pb2
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.recordset_pb2.RecordSet: ...
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.recordset_pb2.RecordSet] = ...,
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.recordset_pb2.RecordSet: ...
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.recordset_pb2.RecordSet] = ...,
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
- REPLY_TO_MESSAGE_FIELD_NUMBER: builtins.int
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
- reply_to_message: typing.Text
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
- reply_to_message: typing.Text = ...,
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","reply_to_message",b"reply_to_message","run_id",b"run_id","src_node_id",b"src_node_id","ttl",b"ttl"]) -> 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","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)