flwr-nightly 1.7.0.dev20240118__py3-none-any.whl → 1.7.0.dev20240119__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/common/configsrecord.py +14 -5
- flwr/common/flowercontext.py +77 -0
- flwr/common/metricsrecord.py +17 -6
- flwr/common/parametersrecord.py +12 -5
- flwr/common/typing.py +2 -2
- flwr/proto/task_pb2.py +22 -22
- flwr/proto/task_pb2.pyi +4 -1
- {flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/METADATA +1 -1
- {flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/RECORD +12 -11
- {flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/entry_points.txt +0 -0
flwr/common/configsrecord.py
CHANGED
|
@@ -25,7 +25,6 @@ from .typing import ConfigsRecordValues, ConfigsScalar
|
|
|
25
25
|
class ConfigsRecord:
|
|
26
26
|
"""Configs record."""
|
|
27
27
|
|
|
28
|
-
keep_input: bool
|
|
29
28
|
data: Dict[str, ConfigsRecordValues] = field(default_factory=dict)
|
|
30
29
|
|
|
31
30
|
def __init__(
|
|
@@ -47,12 +46,13 @@ class ConfigsRecord:
|
|
|
47
46
|
to True, the data is duplicated in memory. If memory is a concern, set
|
|
48
47
|
it to False.
|
|
49
48
|
"""
|
|
50
|
-
self.keep_input = keep_input
|
|
51
49
|
self.data = {}
|
|
52
50
|
if configs_dict:
|
|
53
|
-
self.set_configs(configs_dict)
|
|
51
|
+
self.set_configs(configs_dict, keep_input=keep_input)
|
|
54
52
|
|
|
55
|
-
def set_configs(
|
|
53
|
+
def set_configs(
|
|
54
|
+
self, configs_dict: Dict[str, ConfigsRecordValues], keep_input: bool = True
|
|
55
|
+
) -> None:
|
|
56
56
|
"""Add configs to the record.
|
|
57
57
|
|
|
58
58
|
Parameters
|
|
@@ -61,6 +61,11 @@ class ConfigsRecord:
|
|
|
61
61
|
A dictionary that stores basic types (i.e. `str`,`int`, `float`, `bytes` as
|
|
62
62
|
defined in `ConfigsRecordValues`) and list of such types (see
|
|
63
63
|
`ConfigsScalarList`).
|
|
64
|
+
keep_input : bool (default: True)
|
|
65
|
+
A boolean indicating whether config passed should be deleted from the input
|
|
66
|
+
dictionary immediately after adding them to the record. When set
|
|
67
|
+
to True, the data is duplicated in memory. If memory is a concern, set
|
|
68
|
+
it to False.
|
|
64
69
|
"""
|
|
65
70
|
if any(not isinstance(k, str) for k in configs_dict.keys()):
|
|
66
71
|
raise TypeError(f"Not all keys are of valid type. Expected {str}")
|
|
@@ -88,7 +93,7 @@ class ConfigsRecord:
|
|
|
88
93
|
is_valid(value)
|
|
89
94
|
|
|
90
95
|
# Add configs to record
|
|
91
|
-
if
|
|
96
|
+
if keep_input:
|
|
92
97
|
# Copy
|
|
93
98
|
self.data = configs_dict.copy()
|
|
94
99
|
else:
|
|
@@ -96,3 +101,7 @@ class ConfigsRecord:
|
|
|
96
101
|
for key in list(configs_dict.keys()):
|
|
97
102
|
self.data[key] = configs_dict[key]
|
|
98
103
|
del configs_dict[key]
|
|
104
|
+
|
|
105
|
+
def __getitem__(self, key: str) -> ConfigsRecordValues:
|
|
106
|
+
"""Retrieve an element stored in record."""
|
|
107
|
+
return self.data[key]
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright 2024 Flower Labs GmbH. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ==============================================================================
|
|
15
|
+
"""FlowerContext and Metadata."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
from dataclasses import dataclass
|
|
19
|
+
|
|
20
|
+
from .recordset import RecordSet
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class Metadata:
|
|
25
|
+
"""A dataclass holding metadata associated with the current task.
|
|
26
|
+
|
|
27
|
+
Parameters
|
|
28
|
+
----------
|
|
29
|
+
run_id : int
|
|
30
|
+
An identifier for the current run.
|
|
31
|
+
task_id : str
|
|
32
|
+
An identifier for the current task.
|
|
33
|
+
group_id : str
|
|
34
|
+
An identifier for grouping tasks. In some settings
|
|
35
|
+
this is used as the FL round.
|
|
36
|
+
ttl : str
|
|
37
|
+
Time-to-live for this task.
|
|
38
|
+
task_type : str
|
|
39
|
+
A string that encodes the action to be executed on
|
|
40
|
+
the receiving end.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
run_id: int
|
|
44
|
+
task_id: str
|
|
45
|
+
group_id: str
|
|
46
|
+
ttl: str
|
|
47
|
+
task_type: str
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@dataclass
|
|
51
|
+
class FlowerContext:
|
|
52
|
+
"""State of your application from the viewpoint of the entity using it.
|
|
53
|
+
|
|
54
|
+
Parameters
|
|
55
|
+
----------
|
|
56
|
+
in_message : RecordSet
|
|
57
|
+
Holds records sent by another entity (e.g. sent by the server-side
|
|
58
|
+
logic to a client, or vice-versa)
|
|
59
|
+
out_message : RecordSet
|
|
60
|
+
Holds records added by the current entity. This `RecordSet` will
|
|
61
|
+
be sent out (e.g. back to the server-side for aggregation of
|
|
62
|
+
parameter, or to the client to perform a certain task)
|
|
63
|
+
local : RecordSet
|
|
64
|
+
Holds record added by the current entity and that will stay local.
|
|
65
|
+
This means that the data it holds will never leave the system it's running from.
|
|
66
|
+
This can be used as an intermediate storage or scratchpad when
|
|
67
|
+
executing middleware layers. It can also be used as a memory to access
|
|
68
|
+
at different points during the lifecycle of this entity (e.g. across
|
|
69
|
+
multiple rounds)
|
|
70
|
+
metadata : Metadata
|
|
71
|
+
A dataclass including information about the task to be executed.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
in_message: RecordSet
|
|
75
|
+
out_message: RecordSet
|
|
76
|
+
local: RecordSet
|
|
77
|
+
metadata: Metadata
|
flwr/common/metricsrecord.py
CHANGED
|
@@ -25,7 +25,6 @@ from .typing import MetricsRecordValues, MetricsScalar
|
|
|
25
25
|
class MetricsRecord:
|
|
26
26
|
"""Metrics record."""
|
|
27
27
|
|
|
28
|
-
keep_input: bool
|
|
29
28
|
data: Dict[str, MetricsRecordValues] = field(default_factory=dict)
|
|
30
29
|
|
|
31
30
|
def __init__(
|
|
@@ -46,12 +45,13 @@ class MetricsRecord:
|
|
|
46
45
|
to True, the data is duplicated in memory. If memory is a concern, set
|
|
47
46
|
it to False.
|
|
48
47
|
"""
|
|
49
|
-
self.keep_input = keep_input
|
|
50
48
|
self.data = {}
|
|
51
49
|
if metrics_dict:
|
|
52
|
-
self.set_metrics(metrics_dict)
|
|
50
|
+
self.set_metrics(metrics_dict, keep_input=keep_input)
|
|
53
51
|
|
|
54
|
-
def set_metrics(
|
|
52
|
+
def set_metrics(
|
|
53
|
+
self, metrics_dict: Dict[str, MetricsRecordValues], keep_input: bool = True
|
|
54
|
+
) -> None:
|
|
55
55
|
"""Add metrics to the record.
|
|
56
56
|
|
|
57
57
|
Parameters
|
|
@@ -59,13 +59,20 @@ class MetricsRecord:
|
|
|
59
59
|
metrics_dict : Dict[str, MetricsRecordValues]
|
|
60
60
|
A dictionary that stores basic types (i.e. `int`, `float` as defined
|
|
61
61
|
in `MetricsScalar`) and list of such types (see `MetricsScalarList`).
|
|
62
|
+
keep_input : bool (default: True)
|
|
63
|
+
A boolean indicating whether metrics should be deleted from the input
|
|
64
|
+
dictionary immediately after adding them to the record. When set
|
|
65
|
+
to True, the data is duplicated in memory. If memory is a concern, set
|
|
66
|
+
it to False.
|
|
62
67
|
"""
|
|
63
68
|
if any(not isinstance(k, str) for k in metrics_dict.keys()):
|
|
64
69
|
raise TypeError(f"Not all keys are of valid type. Expected {str}.")
|
|
65
70
|
|
|
66
71
|
def is_valid(value: MetricsScalar) -> None:
|
|
67
72
|
"""Check if value is of expected type."""
|
|
68
|
-
if not isinstance(value, get_args(MetricsScalar))
|
|
73
|
+
if not isinstance(value, get_args(MetricsScalar)) or isinstance(
|
|
74
|
+
value, bool
|
|
75
|
+
):
|
|
69
76
|
raise TypeError(
|
|
70
77
|
"Not all values are of valid type."
|
|
71
78
|
f" Expected {MetricsRecordValues} but you passed {type(value)}."
|
|
@@ -86,7 +93,7 @@ class MetricsRecord:
|
|
|
86
93
|
is_valid(value)
|
|
87
94
|
|
|
88
95
|
# Add metrics to record
|
|
89
|
-
if
|
|
96
|
+
if keep_input:
|
|
90
97
|
# Copy
|
|
91
98
|
self.data = metrics_dict.copy()
|
|
92
99
|
else:
|
|
@@ -94,3 +101,7 @@ class MetricsRecord:
|
|
|
94
101
|
for key in list(metrics_dict.keys()):
|
|
95
102
|
self.data[key] = metrics_dict[key]
|
|
96
103
|
del metrics_dict[key]
|
|
104
|
+
|
|
105
|
+
def __getitem__(self, key: str) -> MetricsRecordValues:
|
|
106
|
+
"""Retrieve an element stored in record."""
|
|
107
|
+
return self.data[key]
|
flwr/common/parametersrecord.py
CHANGED
|
@@ -59,7 +59,6 @@ class ParametersRecord:
|
|
|
59
59
|
PyTorch's state_dict, but holding serialised tensors instead.
|
|
60
60
|
"""
|
|
61
61
|
|
|
62
|
-
keep_input: bool
|
|
63
62
|
data: OrderedDict[str, Array] = field(default_factory=OrderedDict[str, Array])
|
|
64
63
|
|
|
65
64
|
def __init__(
|
|
@@ -82,25 +81,29 @@ class ParametersRecord:
|
|
|
82
81
|
parameters after adding it to the record, set this flag to True. When set
|
|
83
82
|
to True, the data is duplicated in memory.
|
|
84
83
|
"""
|
|
85
|
-
self.keep_input = keep_input
|
|
86
84
|
self.data = OrderedDict()
|
|
87
85
|
if array_dict:
|
|
88
|
-
self.set_parameters(array_dict)
|
|
86
|
+
self.set_parameters(array_dict, keep_input=keep_input)
|
|
89
87
|
|
|
90
|
-
def set_parameters(
|
|
88
|
+
def set_parameters(
|
|
89
|
+
self, array_dict: OrderedDict[str, Array], keep_input: bool = False
|
|
90
|
+
) -> None:
|
|
91
91
|
"""Add parameters to record.
|
|
92
92
|
|
|
93
93
|
Parameters
|
|
94
94
|
----------
|
|
95
95
|
array_dict : OrderedDict[str, Array]
|
|
96
96
|
A dictionary that stores serialized array-like or tensor-like objects.
|
|
97
|
+
keep_input : bool (default: False)
|
|
98
|
+
A boolean indicating whether parameters should be deleted from the input
|
|
99
|
+
dictionary immediately after adding them to the record.
|
|
97
100
|
"""
|
|
98
101
|
if any(not isinstance(k, str) for k in array_dict.keys()):
|
|
99
102
|
raise TypeError(f"Not all keys are of valid type. Expected {str}")
|
|
100
103
|
if any(not isinstance(v, Array) for v in array_dict.values()):
|
|
101
104
|
raise TypeError(f"Not all values are of valid type. Expected {Array}")
|
|
102
105
|
|
|
103
|
-
if
|
|
106
|
+
if keep_input:
|
|
104
107
|
# Copy
|
|
105
108
|
self.data = OrderedDict(array_dict)
|
|
106
109
|
else:
|
|
@@ -108,3 +111,7 @@ class ParametersRecord:
|
|
|
108
111
|
for key in list(array_dict.keys()):
|
|
109
112
|
self.data[key] = array_dict[key]
|
|
110
113
|
del array_dict[key]
|
|
114
|
+
|
|
115
|
+
def __getitem__(self, key: str) -> Array:
|
|
116
|
+
"""Retrieve an element stored in record."""
|
|
117
|
+
return self.data[key]
|
flwr/common/typing.py
CHANGED
|
@@ -50,8 +50,8 @@ MetricsScalar = Union[int, float]
|
|
|
50
50
|
MetricsScalarList = Union[List[int], List[float]]
|
|
51
51
|
MetricsRecordValues = Union[MetricsScalar, MetricsScalarList]
|
|
52
52
|
# Value types for common.ConfigsRecord
|
|
53
|
-
ConfigsScalar = Union[MetricsScalar, str, bytes]
|
|
54
|
-
ConfigsScalarList = Union[MetricsScalarList, List[str], List[bytes]]
|
|
53
|
+
ConfigsScalar = Union[MetricsScalar, str, bytes, bool]
|
|
54
|
+
ConfigsScalarList = Union[MetricsScalarList, List[str], List[bytes], List[bool]]
|
|
55
55
|
ConfigsRecordValues = Union[ConfigsScalar, ConfigsScalarList]
|
|
56
56
|
|
|
57
57
|
Metrics = Dict[str, Scalar]
|
flwr/proto/task_pb2.py
CHANGED
|
@@ -16,7 +16,7 @@ from flwr.proto import node_pb2 as flwr_dot_proto_dot_node__pb2
|
|
|
16
16
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/task.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1a\x66lwr/proto/transport.proto\"\
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/task.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd1\x02\n\x04Task\x12\"\n\x08producer\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\"\n\x08\x63onsumer\x18\x02 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x12\n\ncreated_at\x18\x03 \x01(\t\x12\x14\n\x0c\x64\x65livered_at\x18\x04 \x01(\t\x12\x0b\n\x03ttl\x18\x05 \x01(\t\x12\x10\n\x08\x61ncestry\x18\x06 \x03(\t\x12\x11\n\ttask_type\x18\x07 \x01(\t\x12)\n\x02sa\x18\x08 \x01(\x0b\x32\x1d.flwr.proto.SecureAggregation\x12<\n\x15legacy_server_message\x18\x65 \x01(\x0b\x32\x19.flwr.proto.ServerMessageB\x02\x18\x01\x12<\n\x15legacy_client_message\x18\x66 \x01(\x0b\x32\x19.flwr.proto.ClientMessageB\x02\x18\x01\"\\\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x12\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"\\\n\x07TaskRes\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x12\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"\xf3\x03\n\x05Value\x12\x10\n\x06\x64ouble\x18\x01 \x01(\x01H\x00\x12\x10\n\x06sint64\x18\x02 \x01(\x12H\x00\x12\x0e\n\x04\x62ool\x18\x03 \x01(\x08H\x00\x12\x10\n\x06string\x18\x04 \x01(\tH\x00\x12\x0f\n\x05\x62ytes\x18\x05 \x01(\x0cH\x00\x12\x33\n\x0b\x64ouble_list\x18\x15 \x01(\x0b\x32\x1c.flwr.proto.Value.DoubleListH\x00\x12\x33\n\x0bsint64_list\x18\x16 \x01(\x0b\x32\x1c.flwr.proto.Value.Sint64ListH\x00\x12/\n\tbool_list\x18\x17 \x01(\x0b\x32\x1a.flwr.proto.Value.BoolListH\x00\x12\x33\n\x0bstring_list\x18\x18 \x01(\x0b\x32\x1c.flwr.proto.Value.StringListH\x00\x12\x31\n\nbytes_list\x18\x19 \x01(\x0b\x32\x1b.flwr.proto.Value.BytesListH\x00\x1a\x1a\n\nDoubleList\x12\x0c\n\x04vals\x18\x01 \x03(\x01\x1a\x1a\n\nSint64List\x12\x0c\n\x04vals\x18\x01 \x03(\x12\x1a\x18\n\x08\x42oolList\x12\x0c\n\x04vals\x18\x01 \x03(\x08\x1a\x1a\n\nStringList\x12\x0c\n\x04vals\x18\x01 \x03(\t\x1a\x19\n\tBytesList\x12\x0c\n\x04vals\x18\x01 \x03(\x0c\x42\x07\n\x05value\"\xa0\x01\n\x11SecureAggregation\x12\x44\n\x0cnamed_values\x18\x01 \x03(\x0b\x32..flwr.proto.SecureAggregation.NamedValuesEntry\x1a\x45\n\x10NamedValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12 \n\x05value\x18\x02 \x01(\x0b\x32\x11.flwr.proto.Value:\x02\x38\x01\x62\x06proto3')
|
|
20
20
|
|
|
21
21
|
_globals = globals()
|
|
22
22
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -30,25 +30,25 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
30
30
|
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._options = None
|
|
31
31
|
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._serialized_options = b'8\001'
|
|
32
32
|
_globals['_TASK']._serialized_start=89
|
|
33
|
-
_globals['_TASK']._serialized_end=
|
|
34
|
-
_globals['_TASKINS']._serialized_start=
|
|
35
|
-
_globals['_TASKINS']._serialized_end=
|
|
36
|
-
_globals['_TASKRES']._serialized_start=
|
|
37
|
-
_globals['_TASKRES']._serialized_end=
|
|
38
|
-
_globals['_VALUE']._serialized_start=
|
|
39
|
-
_globals['_VALUE']._serialized_end=
|
|
40
|
-
_globals['_VALUE_DOUBLELIST']._serialized_start=
|
|
41
|
-
_globals['_VALUE_DOUBLELIST']._serialized_end=
|
|
42
|
-
_globals['_VALUE_SINT64LIST']._serialized_start=
|
|
43
|
-
_globals['_VALUE_SINT64LIST']._serialized_end=
|
|
44
|
-
_globals['_VALUE_BOOLLIST']._serialized_start=
|
|
45
|
-
_globals['_VALUE_BOOLLIST']._serialized_end=
|
|
46
|
-
_globals['_VALUE_STRINGLIST']._serialized_start=
|
|
47
|
-
_globals['_VALUE_STRINGLIST']._serialized_end=
|
|
48
|
-
_globals['_VALUE_BYTESLIST']._serialized_start=
|
|
49
|
-
_globals['_VALUE_BYTESLIST']._serialized_end=
|
|
50
|
-
_globals['_SECUREAGGREGATION']._serialized_start=
|
|
51
|
-
_globals['_SECUREAGGREGATION']._serialized_end=
|
|
52
|
-
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._serialized_start=
|
|
53
|
-
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._serialized_end=
|
|
33
|
+
_globals['_TASK']._serialized_end=426
|
|
34
|
+
_globals['_TASKINS']._serialized_start=428
|
|
35
|
+
_globals['_TASKINS']._serialized_end=520
|
|
36
|
+
_globals['_TASKRES']._serialized_start=522
|
|
37
|
+
_globals['_TASKRES']._serialized_end=614
|
|
38
|
+
_globals['_VALUE']._serialized_start=617
|
|
39
|
+
_globals['_VALUE']._serialized_end=1116
|
|
40
|
+
_globals['_VALUE_DOUBLELIST']._serialized_start=972
|
|
41
|
+
_globals['_VALUE_DOUBLELIST']._serialized_end=998
|
|
42
|
+
_globals['_VALUE_SINT64LIST']._serialized_start=1000
|
|
43
|
+
_globals['_VALUE_SINT64LIST']._serialized_end=1026
|
|
44
|
+
_globals['_VALUE_BOOLLIST']._serialized_start=1028
|
|
45
|
+
_globals['_VALUE_BOOLLIST']._serialized_end=1052
|
|
46
|
+
_globals['_VALUE_STRINGLIST']._serialized_start=1054
|
|
47
|
+
_globals['_VALUE_STRINGLIST']._serialized_end=1080
|
|
48
|
+
_globals['_VALUE_BYTESLIST']._serialized_start=1082
|
|
49
|
+
_globals['_VALUE_BYTESLIST']._serialized_end=1107
|
|
50
|
+
_globals['_SECUREAGGREGATION']._serialized_start=1119
|
|
51
|
+
_globals['_SECUREAGGREGATION']._serialized_end=1279
|
|
52
|
+
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._serialized_start=1210
|
|
53
|
+
_globals['_SECUREAGGREGATION_NAMEDVALUESENTRY']._serialized_end=1279
|
|
54
54
|
# @@protoc_insertion_point(module_scope)
|
flwr/proto/task_pb2.pyi
CHANGED
|
@@ -21,6 +21,7 @@ class Task(google.protobuf.message.Message):
|
|
|
21
21
|
DELIVERED_AT_FIELD_NUMBER: builtins.int
|
|
22
22
|
TTL_FIELD_NUMBER: builtins.int
|
|
23
23
|
ANCESTRY_FIELD_NUMBER: builtins.int
|
|
24
|
+
TASK_TYPE_FIELD_NUMBER: builtins.int
|
|
24
25
|
SA_FIELD_NUMBER: builtins.int
|
|
25
26
|
LEGACY_SERVER_MESSAGE_FIELD_NUMBER: builtins.int
|
|
26
27
|
LEGACY_CLIENT_MESSAGE_FIELD_NUMBER: builtins.int
|
|
@@ -33,6 +34,7 @@ class Task(google.protobuf.message.Message):
|
|
|
33
34
|
ttl: typing.Text
|
|
34
35
|
@property
|
|
35
36
|
def ancestry(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]: ...
|
|
37
|
+
task_type: typing.Text
|
|
36
38
|
@property
|
|
37
39
|
def sa(self) -> global___SecureAggregation: ...
|
|
38
40
|
@property
|
|
@@ -47,12 +49,13 @@ class Task(google.protobuf.message.Message):
|
|
|
47
49
|
delivered_at: typing.Text = ...,
|
|
48
50
|
ttl: typing.Text = ...,
|
|
49
51
|
ancestry: typing.Optional[typing.Iterable[typing.Text]] = ...,
|
|
52
|
+
task_type: typing.Text = ...,
|
|
50
53
|
sa: typing.Optional[global___SecureAggregation] = ...,
|
|
51
54
|
legacy_server_message: typing.Optional[flwr.proto.transport_pb2.ServerMessage] = ...,
|
|
52
55
|
legacy_client_message: typing.Optional[flwr.proto.transport_pb2.ClientMessage] = ...,
|
|
53
56
|
) -> None: ...
|
|
54
57
|
def HasField(self, field_name: typing_extensions.Literal["consumer",b"consumer","legacy_client_message",b"legacy_client_message","legacy_server_message",b"legacy_server_message","producer",b"producer","sa",b"sa"]) -> builtins.bool: ...
|
|
55
|
-
def ClearField(self, field_name: typing_extensions.Literal["ancestry",b"ancestry","consumer",b"consumer","created_at",b"created_at","delivered_at",b"delivered_at","legacy_client_message",b"legacy_client_message","legacy_server_message",b"legacy_server_message","producer",b"producer","sa",b"sa","ttl",b"ttl"]) -> None: ...
|
|
58
|
+
def ClearField(self, field_name: typing_extensions.Literal["ancestry",b"ancestry","consumer",b"consumer","created_at",b"created_at","delivered_at",b"delivered_at","legacy_client_message",b"legacy_client_message","legacy_server_message",b"legacy_server_message","producer",b"producer","sa",b"sa","task_type",b"task_type","ttl",b"ttl"]) -> None: ...
|
|
56
59
|
global___Task = Task
|
|
57
60
|
|
|
58
61
|
class TaskIns(google.protobuf.message.Message):
|
{flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/RECORD
RENAMED
|
@@ -25,15 +25,16 @@ flwr/client/secure_aggregation/secaggplus_handler.py,sha256=2jKtRhoJaVRmMJgJ2v8V
|
|
|
25
25
|
flwr/client/typing.py,sha256=75vC6dpzv99PLRztPzaGPik2OifFZbgxvHVDMIA_C30,1219
|
|
26
26
|
flwr/common/__init__.py,sha256=qttep0POwoigzB5pcraZa4YMt9jsCSfeibcrTQMUjIc,2884
|
|
27
27
|
flwr/common/address.py,sha256=iTAN9jtmIGMrWFnx9XZQl45ZEtQJVZZLYPRBSNVARGI,1882
|
|
28
|
-
flwr/common/configsrecord.py,sha256=
|
|
28
|
+
flwr/common/configsrecord.py,sha256=rVFp7r-ZySHix0vaIUfdCzm3GqndbYsT2PAiWyRdnrw,4311
|
|
29
29
|
flwr/common/constant.py,sha256=J-BpHv6OFmrA37SeS4En8Nsy7yJdoNJWHCtbdnjIxSc,1120
|
|
30
30
|
flwr/common/date.py,sha256=UWhBZj49yX9LD4BmatS_ZFZu_-kweGh0KQJ1djyWWH4,891
|
|
31
31
|
flwr/common/dp.py,sha256=hF45cPElXxcQsh4AoquAyaTrNi0xCrIcKx7xOcV_1XU,1782
|
|
32
|
+
flwr/common/flowercontext.py,sha256=pC8Vjw9ToNX4i8oMuvSSJrZEccJhPN9i60b1apQnQWE,2562
|
|
32
33
|
flwr/common/grpc.py,sha256=qVLB0d6bCuaBRW5YB0vEZXsR7Bo3R2lh4ONiCocqwRI,2270
|
|
33
34
|
flwr/common/logger.py,sha256=qX_gqEyrmGOH0x_r8uQ1Vskz4fGvEij9asdo4DUOPY8,4135
|
|
34
|
-
flwr/common/metricsrecord.py,sha256=
|
|
35
|
+
flwr/common/metricsrecord.py,sha256=ZfeSQu7lZBKgTTG6tboSW2fT1xWsWyyjFe6cOau01cA,4295
|
|
35
36
|
flwr/common/parameter.py,sha256=-bFAUayToYDF50FZGrBC1hQYJCQDtB2bbr3ZuVLMtdE,2095
|
|
36
|
-
flwr/common/parametersrecord.py,sha256=
|
|
37
|
+
flwr/common/parametersrecord.py,sha256=v5RmvJI1Y5iJhgIhdatZj7FItRRuaEmTKkCGDRFPQDU,4413
|
|
37
38
|
flwr/common/recordset.py,sha256=OeRcBMGqx9vutWRz1xkujBPHlVpU58R1EcFRHEQrePo,2351
|
|
38
39
|
flwr/common/recordset_utils.py,sha256=FgNuuAgbxtLgjB1vVmcYsTG8kqIW1ZpmYrcUEKAOH_A,3122
|
|
39
40
|
flwr/common/retry_invoker.py,sha256=H_hKqKaEI8vZPywWmoAtJYkcUnKhlYc4kV63zRY0kWA,10856
|
|
@@ -47,7 +48,7 @@ flwr/common/secure_aggregation/secaggplus_constants.py,sha256=m5UDo7IgRkMS3yixhz
|
|
|
47
48
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=PleDyDu7jHNAfbRoEaoQiOjxG6iMl9yA8rNKYTfnyFw,3155
|
|
48
49
|
flwr/common/serde.py,sha256=mujIHgxC6HhkUjqI9UHofbHtDZbepdN2nMFUE6FH6Ik,18990
|
|
49
50
|
flwr/common/telemetry.py,sha256=se_-pHgEWcmN09ChSpTeek72l1UJHf7GbwXBB1KXBjQ,7683
|
|
50
|
-
flwr/common/typing.py,sha256=
|
|
51
|
+
flwr/common/typing.py,sha256=3Wu6Ol1Ja6Gb0WdlcXVEn1EHYJbc4oRRJA81vEegxBo,4382
|
|
51
52
|
flwr/common/version.py,sha256=A0MKvyKPrV8wLg0YCAODTqM71v26NEH36c6JYtfgg0o,667
|
|
52
53
|
flwr/driver/__init__.py,sha256=NQ4KeZ5fP9wdxGjcr2cP41_7TLuuYQ3u4J7GwYtQ488,870
|
|
53
54
|
flwr/driver/app.py,sha256=tCPnUwq60kAY637htvDSZGIln21OxIVgg0-o8o4ZAGw,7307
|
|
@@ -68,8 +69,8 @@ flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
|
|
|
68
69
|
flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
|
|
69
70
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
70
71
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
71
|
-
flwr/proto/task_pb2.py,sha256=
|
|
72
|
-
flwr/proto/task_pb2.pyi,sha256=
|
|
72
|
+
flwr/proto/task_pb2.py,sha256=CHwSZTHLWIJyP53Z2hKkmFbr72uPUg6YBiZjdlp0bTY,4938
|
|
73
|
+
flwr/proto/task_pb2.pyi,sha256=ACLlnnxaYQTcApQupzwV2dxdqjtK8IPHANihoosSmLw,10974
|
|
73
74
|
flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
74
75
|
flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
75
76
|
flwr/proto/transport_pb2.py,sha256=cURzfpCgZvH7GEvBPLvTYijE3HvhK1MePjINk4xYArk,9781
|
|
@@ -136,8 +137,8 @@ flwr/simulation/ray_transport/__init__.py,sha256=FsaAnzC4cw4DqoouBCix6496k29jACk
|
|
|
136
137
|
flwr/simulation/ray_transport/ray_actor.py,sha256=S_E-7Bk0ONWx12b0ObP3CtzJSEL3yPxpFVcYfkDx6Es,17044
|
|
137
138
|
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=RziUVY9PmuI8fJEbra-Vk9oWwRxALDZOeF1fAW-a9wg,9430
|
|
138
139
|
flwr/simulation/ray_transport/utils.py,sha256=e0mkFOgOXSJHSQdiipoggF-DLBXaJZVytx9auQ35fCg,3368
|
|
139
|
-
flwr_nightly-1.7.0.
|
|
140
|
-
flwr_nightly-1.7.0.
|
|
141
|
-
flwr_nightly-1.7.0.
|
|
142
|
-
flwr_nightly-1.7.0.
|
|
143
|
-
flwr_nightly-1.7.0.
|
|
140
|
+
flwr_nightly-1.7.0.dev20240119.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
141
|
+
flwr_nightly-1.7.0.dev20240119.dist-info/METADATA,sha256=q43maEy62rOQbLN38oKMTm8K7_KxfdGneQB-FyaXJYQ,13440
|
|
142
|
+
flwr_nightly-1.7.0.dev20240119.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
|
143
|
+
flwr_nightly-1.7.0.dev20240119.dist-info/entry_points.txt,sha256=1uLlD5tIunkzALMfMWnqjdE_D5hRUX_I1iMmOMv6tZI,181
|
|
144
|
+
flwr_nightly-1.7.0.dev20240119.dist-info/RECORD,,
|
{flwr_nightly-1.7.0.dev20240118.dist-info → flwr_nightly-1.7.0.dev20240119.dist-info}/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|