flwr-nightly 1.19.0.dev20250610__py3-none-any.whl → 1.19.0.dev20250612__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flwr/client/grpc_rere_client/connection.py +48 -29
- flwr/client/grpc_rere_client/grpc_adapter.py +8 -0
- flwr/client/rest_client/connection.py +138 -27
- flwr/common/auth_plugin/auth_plugin.py +6 -4
- flwr/common/event_log_plugin/event_log_plugin.py +3 -3
- flwr/common/inflatable.py +70 -1
- flwr/common/inflatable_grpc_utils.py +1 -1
- flwr/common/inflatable_rest_utils.py +99 -0
- flwr/common/serde.py +2 -0
- flwr/common/typing.py +5 -3
- flwr/proto/fleet_pb2.py +12 -16
- flwr/proto/fleet_pb2.pyi +4 -19
- flwr/proto/fleet_pb2_grpc.py +34 -0
- flwr/proto/fleet_pb2_grpc.pyi +13 -0
- flwr/proto/message_pb2.py +15 -9
- flwr/proto/message_pb2.pyi +41 -0
- flwr/proto/run_pb2.py +24 -24
- flwr/proto/run_pb2.pyi +4 -1
- flwr/proto/serverappio_pb2.py +22 -26
- flwr/proto/serverappio_pb2.pyi +4 -19
- flwr/proto/serverappio_pb2_grpc.py +34 -0
- flwr/proto/serverappio_pb2_grpc.pyi +13 -0
- flwr/server/fleet_event_log_interceptor.py +2 -2
- flwr/server/grid/grpc_grid.py +20 -9
- flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +25 -0
- flwr/server/superlink/fleet/message_handler/message_handler.py +33 -2
- flwr/server/superlink/fleet/rest_rere/rest_api.py +56 -2
- flwr/server/superlink/linkstate/in_memory_linkstate.py +17 -2
- flwr/server/superlink/linkstate/linkstate.py +6 -2
- flwr/server/superlink/linkstate/sqlite_linkstate.py +19 -7
- flwr/server/superlink/serverappio/serverappio_servicer.py +65 -29
- flwr/server/superlink/simulation/simulationio_servicer.py +2 -1
- flwr/server/superlink/utils.py +23 -10
- flwr/supercore/object_store/in_memory_object_store.py +160 -33
- flwr/supercore/object_store/object_store.py +54 -7
- flwr/superexec/deployment.py +6 -2
- flwr/superexec/exec_event_log_interceptor.py +4 -4
- flwr/superexec/exec_servicer.py +4 -1
- flwr/superexec/exec_user_auth_interceptor.py +11 -11
- flwr/superexec/executor.py +4 -0
- flwr/superexec/simulation.py +7 -1
- {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/METADATA +1 -1
- {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/RECORD +45 -44
- {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/entry_points.txt +0 -0
@@ -18,6 +18,8 @@
|
|
18
18
|
import abc
|
19
19
|
from typing import Optional
|
20
20
|
|
21
|
+
from flwr.proto.message_pb2 import ObjectTree # pylint: disable=E0611
|
22
|
+
|
21
23
|
|
22
24
|
class NoObjectInStoreError(Exception):
|
23
25
|
"""Error when trying to access an element in the ObjectStore that does not exist."""
|
@@ -39,20 +41,23 @@ class ObjectStore(abc.ABC):
|
|
39
41
|
"""
|
40
42
|
|
41
43
|
@abc.abstractmethod
|
42
|
-
def preregister(self,
|
44
|
+
def preregister(self, run_id: int, object_tree: ObjectTree) -> list[str]:
|
43
45
|
"""Identify and preregister missing objects in the `ObjectStore`.
|
44
46
|
|
45
47
|
Parameters
|
46
48
|
----------
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
run_id : int
|
50
|
+
The ID of the run for which to preregister objects.
|
51
|
+
object_tree : ObjectTree
|
52
|
+
The object tree containing the IDs of objects to preregister.
|
53
|
+
This tree should contain all objects that are expected to be
|
54
|
+
stored in the `ObjectStore`.
|
50
55
|
|
51
56
|
Returns
|
52
57
|
-------
|
53
58
|
list[str]
|
54
|
-
A list of object IDs that were not
|
55
|
-
|
59
|
+
A list of object IDs that were either not previously preregistered
|
60
|
+
in the `ObjectStore`, or were preregistered but are not yet available.
|
56
61
|
"""
|
57
62
|
|
58
63
|
@abc.abstractmethod
|
@@ -84,12 +89,34 @@ class ObjectStore(abc.ABC):
|
|
84
89
|
|
85
90
|
@abc.abstractmethod
|
86
91
|
def delete(self, object_id: str) -> None:
|
87
|
-
"""Delete an object from the store.
|
92
|
+
"""Delete an object and its unreferenced descendants from the store.
|
93
|
+
|
94
|
+
This method attempts to recursively delete the specified object and its
|
95
|
+
descendants, if they are not referenced by any other object.
|
88
96
|
|
89
97
|
Parameters
|
90
98
|
----------
|
91
99
|
object_id : str
|
92
100
|
The object_id under which the object is stored.
|
101
|
+
|
102
|
+
Notes
|
103
|
+
-----
|
104
|
+
The object of the given object_id will NOT be deleted if it is still referenced
|
105
|
+
by any other object in the store.
|
106
|
+
"""
|
107
|
+
|
108
|
+
@abc.abstractmethod
|
109
|
+
def delete_objects_in_run(self, run_id: int) -> None:
|
110
|
+
"""Delete all objects that were registered in a specific run.
|
111
|
+
|
112
|
+
Parameters
|
113
|
+
----------
|
114
|
+
run_id : int
|
115
|
+
The ID of the run for which to delete objects.
|
116
|
+
|
117
|
+
Notes
|
118
|
+
-----
|
119
|
+
Objects that are still registered in other runs will NOT be deleted.
|
93
120
|
"""
|
94
121
|
|
95
122
|
@abc.abstractmethod
|
@@ -129,6 +156,16 @@ class ObjectStore(abc.ABC):
|
|
129
156
|
A list of object IDs of all descendant objects of the ``Message``.
|
130
157
|
"""
|
131
158
|
|
159
|
+
@abc.abstractmethod
|
160
|
+
def delete_message_descendant_ids(self, msg_object_id: str) -> None:
|
161
|
+
"""Delete the mapping from a ``Message`` object ID to its descendants.
|
162
|
+
|
163
|
+
Parameters
|
164
|
+
----------
|
165
|
+
msg_object_id : str
|
166
|
+
The object ID of the ``Message``.
|
167
|
+
"""
|
168
|
+
|
132
169
|
@abc.abstractmethod
|
133
170
|
def __contains__(self, object_id: str) -> bool:
|
134
171
|
"""Check if an object_id is in the store.
|
@@ -143,3 +180,13 @@ class ObjectStore(abc.ABC):
|
|
143
180
|
bool
|
144
181
|
True if the object_id is in the store, False otherwise.
|
145
182
|
"""
|
183
|
+
|
184
|
+
@abc.abstractmethod
|
185
|
+
def __len__(self) -> int:
|
186
|
+
"""Return the number of objects in the store.
|
187
|
+
|
188
|
+
Returns
|
189
|
+
-------
|
190
|
+
int
|
191
|
+
The number of objects currently stored.
|
192
|
+
"""
|
flwr/superexec/deployment.py
CHANGED
@@ -132,6 +132,7 @@ class DeploymentEngine(Executor):
|
|
132
132
|
self,
|
133
133
|
fab: Fab,
|
134
134
|
override_config: UserConfig,
|
135
|
+
flwr_aid: Optional[str],
|
135
136
|
) -> int:
|
136
137
|
fab_hash = self.ffs.put(fab.content, {})
|
137
138
|
if fab_hash != fab.hash_str:
|
@@ -141,7 +142,7 @@ class DeploymentEngine(Executor):
|
|
141
142
|
fab_id, fab_version = get_fab_metadata(fab.content)
|
142
143
|
|
143
144
|
run_id = self.linkstate.create_run(
|
144
|
-
fab_id, fab_version, fab_hash, override_config, ConfigRecord()
|
145
|
+
fab_id, fab_version, fab_hash, override_config, ConfigRecord(), flwr_aid
|
145
146
|
)
|
146
147
|
return run_id
|
147
148
|
|
@@ -161,6 +162,7 @@ class DeploymentEngine(Executor):
|
|
161
162
|
fab_file: bytes,
|
162
163
|
override_config: UserConfig,
|
163
164
|
federation_options: ConfigRecord,
|
165
|
+
flwr_aid: Optional[str],
|
164
166
|
) -> Optional[int]:
|
165
167
|
"""Start run using the Flower Deployment Engine."""
|
166
168
|
run_id = None
|
@@ -168,7 +170,9 @@ class DeploymentEngine(Executor):
|
|
168
170
|
|
169
171
|
# Call SuperLink to create run
|
170
172
|
run_id = self._create_run(
|
171
|
-
Fab(hashlib.sha256(fab_file).hexdigest(), fab_file),
|
173
|
+
Fab(hashlib.sha256(fab_file).hexdigest(), fab_file),
|
174
|
+
override_config,
|
175
|
+
flwr_aid,
|
172
176
|
)
|
173
177
|
|
174
178
|
# Register context for the Run
|
@@ -24,7 +24,7 @@ from google.protobuf.message import Message as GrpcMessage
|
|
24
24
|
from flwr.common.event_log_plugin.event_log_plugin import EventLogWriterPlugin
|
25
25
|
from flwr.common.typing import LogEntry
|
26
26
|
|
27
|
-
from .exec_user_auth_interceptor import
|
27
|
+
from .exec_user_auth_interceptor import shared_account_info
|
28
28
|
|
29
29
|
|
30
30
|
class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
@@ -62,7 +62,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
62
62
|
log_entry = self.log_plugin.compose_log_before_event(
|
63
63
|
request=request,
|
64
64
|
context=context,
|
65
|
-
|
65
|
+
account_info=shared_account_info.get(),
|
66
66
|
method_name=method_name,
|
67
67
|
)
|
68
68
|
self.log_plugin.write_log(log_entry)
|
@@ -81,7 +81,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
81
81
|
log_entry = self.log_plugin.compose_log_after_event(
|
82
82
|
request=request,
|
83
83
|
context=context,
|
84
|
-
|
84
|
+
account_info=shared_account_info.get(),
|
85
85
|
method_name=method_name,
|
86
86
|
response=unary_response or error,
|
87
87
|
)
|
@@ -111,7 +111,7 @@ class ExecEventLogInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
111
111
|
log_entry = self.log_plugin.compose_log_after_event(
|
112
112
|
request=request,
|
113
113
|
context=context,
|
114
|
-
|
114
|
+
account_info=shared_account_info.get(),
|
115
115
|
method_name=method_name,
|
116
116
|
response=stream_response or error,
|
117
117
|
)
|
flwr/superexec/exec_servicer.py
CHANGED
@@ -50,6 +50,7 @@ from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
|
|
50
50
|
from flwr.server.superlink.ffs.ffs_factory import FfsFactory
|
51
51
|
from flwr.server.superlink.linkstate import LinkState, LinkStateFactory
|
52
52
|
|
53
|
+
from .exec_user_auth_interceptor import shared_account_info
|
53
54
|
from .executor import Executor
|
54
55
|
|
55
56
|
|
@@ -75,10 +76,12 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
75
76
|
"""Create run ID."""
|
76
77
|
log(INFO, "ExecServicer.StartRun")
|
77
78
|
|
79
|
+
flwr_aid = shared_account_info.get().flwr_aid if self.auth_plugin else None
|
78
80
|
run_id = self.executor.start_run(
|
79
81
|
request.fab.content,
|
80
82
|
user_config_from_proto(request.override_config),
|
81
83
|
config_record_from_proto(request.federation_options),
|
84
|
+
flwr_aid,
|
82
85
|
)
|
83
86
|
|
84
87
|
if run_id is None:
|
@@ -132,7 +135,7 @@ class ExecServicer(exec_pb2_grpc.ExecServicer):
|
|
132
135
|
|
133
136
|
# Handle `flwr ls --runs`
|
134
137
|
if not request.HasField("run_id"):
|
135
|
-
return _create_list_runs_response(state.get_run_ids(), state)
|
138
|
+
return _create_list_runs_response(state.get_run_ids(None), state)
|
136
139
|
# Handle `flwr ls --run-id <run_id>`
|
137
140
|
return _create_list_runs_response({request.run_id}, state)
|
138
141
|
|
@@ -21,7 +21,7 @@ from typing import Any, Callable, Union
|
|
21
21
|
import grpc
|
22
22
|
|
23
23
|
from flwr.common.auth_plugin import ExecAuthPlugin, ExecAuthzPlugin
|
24
|
-
from flwr.common.typing import
|
24
|
+
from flwr.common.typing import AccountInfo
|
25
25
|
from flwr.proto.exec_pb2 import ( # pylint: disable=E0611
|
26
26
|
GetAuthTokensRequest,
|
27
27
|
GetAuthTokensResponse,
|
@@ -45,8 +45,8 @@ Response = Union[
|
|
45
45
|
]
|
46
46
|
|
47
47
|
|
48
|
-
|
49
|
-
"
|
48
|
+
shared_account_info: contextvars.ContextVar[AccountInfo] = contextvars.ContextVar(
|
49
|
+
"account_info", default=AccountInfo(flwr_aid=None, account_name=None)
|
50
50
|
)
|
51
51
|
|
52
52
|
|
@@ -93,20 +93,20 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
93
93
|
return call(request, context) # type: ignore
|
94
94
|
|
95
95
|
# For other requests, check if the user is authenticated
|
96
|
-
valid_tokens,
|
96
|
+
valid_tokens, account_info = self.auth_plugin.validate_tokens_in_metadata(
|
97
97
|
metadata
|
98
98
|
)
|
99
99
|
if valid_tokens:
|
100
|
-
if
|
100
|
+
if account_info is None:
|
101
101
|
context.abort(
|
102
102
|
grpc.StatusCode.UNAUTHENTICATED,
|
103
103
|
"Tokens validated, but user info not found",
|
104
104
|
)
|
105
105
|
raise grpc.RpcError()
|
106
106
|
# Store user info in contextvars for authenticated users
|
107
|
-
|
107
|
+
shared_account_info.set(account_info)
|
108
108
|
# Check if the user is authorized
|
109
|
-
if not self.authz_plugin.verify_user_authorization(
|
109
|
+
if not self.authz_plugin.verify_user_authorization(account_info):
|
110
110
|
context.abort(
|
111
111
|
grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
|
112
112
|
)
|
@@ -114,18 +114,18 @@ class ExecUserAuthInterceptor(grpc.ServerInterceptor): # type: ignore
|
|
114
114
|
return call(request, context) # type: ignore
|
115
115
|
|
116
116
|
# If the user is not authenticated, refresh tokens
|
117
|
-
tokens,
|
117
|
+
tokens, account_info = self.auth_plugin.refresh_tokens(metadata)
|
118
118
|
if tokens is not None:
|
119
|
-
if
|
119
|
+
if account_info is None:
|
120
120
|
context.abort(
|
121
121
|
grpc.StatusCode.UNAUTHENTICATED,
|
122
122
|
"Tokens refreshed, but user info not found",
|
123
123
|
)
|
124
124
|
raise grpc.RpcError()
|
125
125
|
# Store user info in contextvars for authenticated users
|
126
|
-
|
126
|
+
shared_account_info.set(account_info)
|
127
127
|
# Check if the user is authorized
|
128
|
-
if not self.authz_plugin.verify_user_authorization(
|
128
|
+
if not self.authz_plugin.verify_user_authorization(account_info):
|
129
129
|
context.abort(
|
130
130
|
grpc.StatusCode.PERMISSION_DENIED, "User not authorized"
|
131
131
|
)
|
flwr/superexec/executor.py
CHANGED
@@ -74,6 +74,7 @@ class Executor(ABC):
|
|
74
74
|
fab_file: bytes,
|
75
75
|
override_config: UserConfig,
|
76
76
|
federation_options: ConfigRecord,
|
77
|
+
flwr_aid: Optional[str],
|
77
78
|
) -> Optional[int]:
|
78
79
|
"""Start a run using the given Flower FAB ID and version.
|
79
80
|
|
@@ -88,6 +89,9 @@ class Executor(ABC):
|
|
88
89
|
The config overrides dict sent by the user (using `flwr run`).
|
89
90
|
federation_options: ConfigRecord
|
90
91
|
The federation options sent by the user (using `flwr run`).
|
92
|
+
flwr_aid : Optional[str]
|
93
|
+
The Flower Account ID of the user starting the run, if authentication is
|
94
|
+
enabled.
|
91
95
|
|
92
96
|
Returns
|
93
97
|
-------
|
flwr/superexec/simulation.py
CHANGED
@@ -77,6 +77,7 @@ class SimulationEngine(Executor):
|
|
77
77
|
fab_file: bytes,
|
78
78
|
override_config: UserConfig,
|
79
79
|
federation_options: ConfigRecord,
|
80
|
+
flwr_aid: Optional[str],
|
80
81
|
) -> Optional[int]:
|
81
82
|
"""Start run using the Flower Simulation Engine."""
|
82
83
|
try:
|
@@ -96,7 +97,12 @@ class SimulationEngine(Executor):
|
|
96
97
|
fab_id, fab_version = get_fab_metadata(fab.content)
|
97
98
|
|
98
99
|
run_id = self.linkstate.create_run(
|
99
|
-
fab_id,
|
100
|
+
fab_id,
|
101
|
+
fab_version,
|
102
|
+
fab_hash,
|
103
|
+
override_config,
|
104
|
+
federation_options,
|
105
|
+
flwr_aid,
|
100
106
|
)
|
101
107
|
|
102
108
|
# Create an empty context for the Run
|
{flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: flwr-nightly
|
3
|
-
Version: 1.19.0.
|
3
|
+
Version: 1.19.0.dev20250612
|
4
4
|
Summary: Flower: A Friendly Federated AI Framework
|
5
5
|
License: Apache-2.0
|
6
6
|
Keywords: Artificial Intelligence,Federated AI,Federated Analytics,Federated Evaluation,Federated Learning,Flower,Machine Learning
|
{flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/RECORD
RENAMED
@@ -84,8 +84,8 @@ flwr/client/grpc_adapter_client/__init__.py,sha256=RQWP5mFPROLHKgombiRvPXVWSoVrQ
|
|
84
84
|
flwr/client/grpc_adapter_client/connection.py,sha256=aj5tTYyE8z2hQLXPPydsJiz8gBDIWLUhfWvqYkAL1L4,3966
|
85
85
|
flwr/client/grpc_rere_client/__init__.py,sha256=i7iS0Lt8B7q0E2L72e4F_YrKm6ClRKnd71PNA6PW2O0,752
|
86
86
|
flwr/client/grpc_rere_client/client_interceptor.py,sha256=zFaVHw6AxeNO-7eCKKb-RxrPa7zbM5Z-2-1Efc4adQY,2451
|
87
|
-
flwr/client/grpc_rere_client/connection.py,sha256=
|
88
|
-
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=
|
87
|
+
flwr/client/grpc_rere_client/connection.py,sha256=dyRBkTVUNhlMmLaoJUz9U4lWnAb7QjYRmGfOzaE0CbA,14402
|
88
|
+
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=dLGB5GriszAmtgvuFGuz_F7rIwpzLfDxhJ7T3Un-Ce0,6694
|
89
89
|
flwr/client/message_handler/__init__.py,sha256=0lyljDVqre3WljiZbPcwCCf8GiIaSVI_yo_ylEyPwSE,719
|
90
90
|
flwr/client/message_handler/message_handler.py,sha256=X9SXX6et97Lw9_DGD93HKsEBGNjXClcFgc_5aLK0oiU,6541
|
91
91
|
flwr/client/mod/__init__.py,sha256=AtV4Y5UGuYqJdTg7bJ--KtfOZUYLGDPMy616LvtP5W4,1151
|
@@ -98,7 +98,7 @@ flwr/client/mod/secure_aggregation/secaggplus_mod.py,sha256=aKqjZCrikF73y3E-7h40
|
|
98
98
|
flwr/client/mod/utils.py,sha256=FUgD2TfcWqSeF6jUKZ4i6Ke56U4Nrv85AeVb93s6R9g,1201
|
99
99
|
flwr/client/numpy_client.py,sha256=Qq6ghsIAop2slKqAfgiI5NiHJ4LIxGmrik3Ror4_XVc,9581
|
100
100
|
flwr/client/rest_client/__init__.py,sha256=MBiuK62hj439m9rtwSwI184Hth6Tt5GbmpNMyl3zkZY,735
|
101
|
-
flwr/client/rest_client/connection.py,sha256=
|
101
|
+
flwr/client/rest_client/connection.py,sha256=yxWuuh9A7CVzHDoAcBOQOUmCoT0kXSTGZ8zyD8YZGuo,17033
|
102
102
|
flwr/client/run_info_store.py,sha256=MaJ3UQ-07hWtK67wnWu0zR29jrk0fsfgJX506dvEOfE,4042
|
103
103
|
flwr/client/typing.py,sha256=Jw3rawDzI_-ZDcRmEQcs5gZModY7oeQlEeltYsdOhlU,1048
|
104
104
|
flwr/clientapp/__init__.py,sha256=zGW4z49Ojzoi1hDiRC7kyhLjijUilc6fqHhtM_ATRVA,719
|
@@ -106,7 +106,7 @@ flwr/common/__init__.py,sha256=5GCLVk399Az_rTJHNticRlL0Sl_oPw_j5_LuFKfX7-M,4171
|
|
106
106
|
flwr/common/address.py,sha256=9JucdTwlc-jpeJkRKeUboZoacUtErwSVtnDR9kAtLqE,4119
|
107
107
|
flwr/common/args.py,sha256=-aX_jVnSaDrJR2KZ8Wq0Y3dQHII4R4MJtJOIXzVUA0c,5417
|
108
108
|
flwr/common/auth_plugin/__init__.py,sha256=3rzPkVLn9WyB5n7HLk1XGDw3SLCqRWAU1_CnglcWPfw,970
|
109
|
-
flwr/common/auth_plugin/auth_plugin.py,sha256=
|
109
|
+
flwr/common/auth_plugin/auth_plugin.py,sha256=kXx5o39vJchaPv28sK9qO6H_UXSWym6zRBbCa7sUwtQ,4825
|
110
110
|
flwr/common/config.py,sha256=glcZDjco-amw1YfQcYTFJ4S1pt9APoexT-mf1QscuHs,13960
|
111
111
|
flwr/common/constant.py,sha256=A8rWHZZUH4Rxbx-bCKW5pNJ_BG4W9Xfw4fLevNhZ8l0,8077
|
112
112
|
flwr/common/context.py,sha256=Be8obQR_OvEDy1OmshuUKxGRQ7Qx89mf5F4xlhkR10s,2407
|
@@ -115,15 +115,16 @@ flwr/common/differential_privacy.py,sha256=FdlpdpPl_H_2HJa8CQM1iCUGBBQ5Dc8CzxmHE
|
|
115
115
|
flwr/common/differential_privacy_constants.py,sha256=ruEjH4qF_S2bgxRI6brWCGWQPxFk-P7pviFguy9KvQ0,1074
|
116
116
|
flwr/common/dp.py,sha256=ftqWheOICK5N_zPaofnbFb474lMb5w9lclwxf5DKY0w,1978
|
117
117
|
flwr/common/event_log_plugin/__init__.py,sha256=ts3VAL3Fk6Grp1EK_1Qg_V-BfOof9F86iBx4rbrEkyo,838
|
118
|
-
flwr/common/event_log_plugin/event_log_plugin.py,sha256=
|
118
|
+
flwr/common/event_log_plugin/event_log_plugin.py,sha256=eK8OaDFagQRwqpb9eV0cJcm2ErtEBpMxFbhxJNx6n5w,2061
|
119
119
|
flwr/common/exit/__init__.py,sha256=-ZOJYLaNnR729a7VzZiFsLiqngzKQh3xc27svYStZ_Q,826
|
120
120
|
flwr/common/exit/exit.py,sha256=mJgbqMlVlwAgYtq-Vedj53wO4VxcDcy_P-GzqGK-1GQ,3452
|
121
121
|
flwr/common/exit/exit_code.py,sha256=PNEnCrZfOILjfDAFu5m-2YWEJBrk97xglq4zCUlqV7E,3470
|
122
122
|
flwr/common/exit_handlers.py,sha256=IaqJ60fXZuu7McaRYnoYKtlbH9t4Yl9goNExKqtmQbs,4304
|
123
123
|
flwr/common/grpc.py,sha256=manTaHaPiyYngUq1ErZvvV2B2GxlXUUUGRy3jc3TBIQ,9798
|
124
124
|
flwr/common/heartbeat.py,sha256=SyEpNDnmJ0lni0cWO67rcoJVKasCLmkNHm3dKLeNrLU,5749
|
125
|
-
flwr/common/inflatable.py,sha256=
|
126
|
-
flwr/common/inflatable_grpc_utils.py,sha256
|
125
|
+
flwr/common/inflatable.py,sha256=GDL9oBKs16_yyVdlH6kBf493O5xll_h9V7XB5Mpx1Hc,9524
|
126
|
+
flwr/common/inflatable_grpc_utils.py,sha256=ZpwtgF1tGD6NwQkCidbhbeBPDBZ1Nx9eGMHQ04eNEE8,3554
|
127
|
+
flwr/common/inflatable_rest_utils.py,sha256=KiZd06XRiXcl_WewOrag0JTvUQt5kZ74UIsQ3FCAXGc,3580
|
127
128
|
flwr/common/inflatable_utils.py,sha256=-GTdgR1zLS9WtXrbOGJMpaoyVEL8KmoQ2yF4HeLxTI0,12406
|
128
129
|
flwr/common/logger.py,sha256=JbRf6E2vQxXzpDBq1T8IDUJo_usu3gjWEBPQ6uKcmdg,13049
|
129
130
|
flwr/common/message.py,sha256=xAL7iZN5-n-xPQpgoSFvxNrzs8fmiiPfoU0DjNQEhRw,19953
|
@@ -148,10 +149,10 @@ flwr/common/secure_aggregation/ndarrays_arithmetic.py,sha256=TrggOlizlny3V2KS7-3
|
|
148
149
|
flwr/common/secure_aggregation/quantization.py,sha256=ssFZpiRyj9ltIh0Ai3vGkDqWFO4SoqgoD1mDU9XqMEM,2400
|
149
150
|
flwr/common/secure_aggregation/secaggplus_constants.py,sha256=dGYhWOBMMDJcQH4_tQNC8-Efqm-ecEUNN9ANz59UnCk,2182
|
150
151
|
flwr/common/secure_aggregation/secaggplus_utils.py,sha256=E_xU-Zd45daO1em7M6C2wOjFXVtJf-6tl7fp-7xq1wo,3214
|
151
|
-
flwr/common/serde.py,sha256=
|
152
|
+
flwr/common/serde.py,sha256=ZJ89Eq-t3-MK_Np1G27Db-eXUhKigp3gSkgQt5E6vaA,23088
|
152
153
|
flwr/common/serde_utils.py,sha256=krx2C_W31KpfmDqnDCtULoTkT8WKweWTJ7FHYWtF1r4,5815
|
153
154
|
flwr/common/telemetry.py,sha256=jF47v0SbnBd43XamHtl3wKxs3knFUY2p77cm_2lzZ8M,8762
|
154
|
-
flwr/common/typing.py,sha256=
|
155
|
+
flwr/common/typing.py,sha256=B8z50fv8K0H4F5m8XRPBoWy-qqbNMyQXBAaaSuzfbnY,6936
|
155
156
|
flwr/common/version.py,sha256=7GAGzPn73Mkh09qhrjbmjZQtcqVhBuzhFBaK4Mk4VRk,1325
|
156
157
|
flwr/compat/__init__.py,sha256=gbfDQKKKMZzi3GswyVRgyLdDlHiWj3wU6dg7y6m5O_s,752
|
157
158
|
flwr/compat/client/__init__.py,sha256=qpbo0lcxdNL4qy5KHqiGm8OLxSxkYgI_-dLh5rwhtcI,746
|
@@ -179,10 +180,10 @@ flwr/proto/fab_pb2.py,sha256=2Nu0WaWxDZ8TbutMtctjdcGM7OtXiyP4kmCgg5o7Jjw,1627
|
|
179
180
|
flwr/proto/fab_pb2.pyi,sha256=AMXpiDK0fo3nZWjxsC2E4otSaVjyQbU7iiWKrsSZavs,2395
|
180
181
|
flwr/proto/fab_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
181
182
|
flwr/proto/fab_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
182
|
-
flwr/proto/fleet_pb2.py,sha256=
|
183
|
-
flwr/proto/fleet_pb2.pyi,sha256=
|
184
|
-
flwr/proto/fleet_pb2_grpc.py,sha256=
|
185
|
-
flwr/proto/fleet_pb2_grpc.pyi,sha256=
|
183
|
+
flwr/proto/fleet_pb2.py,sha256=bXqfcyKYFaXYt3V1XMe600xdXb66swYPa6hByEA05e0,6131
|
184
|
+
flwr/proto/fleet_pb2.pyi,sha256=1zAv5BD0-iXNVvd6EXQIxRei_axG7k_RdXeiCwneT-U,9241
|
185
|
+
flwr/proto/fleet_pb2_grpc.py,sha256=NmzrDYxyM3MQNh3vwYczQNuFimZz3prU6ke3E-fKk_g,17539
|
186
|
+
flwr/proto/fleet_pb2_grpc.pyi,sha256=PDERhzOrBCMAytTLS65Qck8A45bTIYni7Lotq6_I0sM,4721
|
186
187
|
flwr/proto/grpcadapter_pb2.py,sha256=PJ8DtfeV29g_y4Z3aNZlSZocLqSxeLmTsYCdOZDYCiE,1843
|
187
188
|
flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
|
188
189
|
flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
|
@@ -195,8 +196,8 @@ flwr/proto/log_pb2.py,sha256=iKaS3MVn1BS4xHu8uGPFCOi1KWtvVx-H9V4jCUIJghs,1393
|
|
195
196
|
flwr/proto/log_pb2.pyi,sha256=ipuhgo40sAHTcRzCsGI1HwIstr5q0THPNk_cf62YyME,1448
|
196
197
|
flwr/proto/log_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
197
198
|
flwr/proto/log_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
198
|
-
flwr/proto/message_pb2.py,sha256=
|
199
|
-
flwr/proto/message_pb2.pyi,sha256=
|
199
|
+
flwr/proto/message_pb2.py,sha256=giymevXYEUdpIO-3A0XKsmRabXW1xSz0sIo5oOlbQ8Y,5198
|
200
|
+
flwr/proto/message_pb2.pyi,sha256=EzXZHy2mtabofrd_ZgKSI6M4QH-soIaRZIZBPwBGPv0,11260
|
200
201
|
flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
201
202
|
flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
202
203
|
flwr/proto/node_pb2.py,sha256=BzZfAWIX7lV62bZr9f7x16lUZcpg-EImxnwxQXgCbYg,1045
|
@@ -207,14 +208,14 @@ flwr/proto/recorddict_pb2.py,sha256=eVkcnxMTFa3rvknRNiFuJ8z8xxPqgw7bV04aFiTe1j4,
|
|
207
208
|
flwr/proto/recorddict_pb2.pyi,sha256=xHRSK_GWlIynXDQxWNNmmidsj4OjZzVYqosRB6EonmE,14544
|
208
209
|
flwr/proto/recorddict_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
209
210
|
flwr/proto/recorddict_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
210
|
-
flwr/proto/run_pb2.py,sha256=
|
211
|
-
flwr/proto/run_pb2.pyi,sha256=
|
211
|
+
flwr/proto/run_pb2.py,sha256=76pAp3ugvpsUyx34ehvMTe-o-J2pTTvb1OskDmsAcag,4768
|
212
|
+
flwr/proto/run_pb2.pyi,sha256=7hWfS3DzrrrKn5ZXRYL1x1rz9u1ZZd68Sz5kinRBDCk,9542
|
212
213
|
flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
213
214
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
214
|
-
flwr/proto/serverappio_pb2.py,sha256=
|
215
|
-
flwr/proto/serverappio_pb2.pyi,sha256=
|
216
|
-
flwr/proto/serverappio_pb2_grpc.py,sha256=
|
217
|
-
flwr/proto/serverappio_pb2_grpc.pyi,sha256=
|
215
|
+
flwr/proto/serverappio_pb2.py,sha256=ugZZ0zZulDKuL7BZbAMptyMAozmJv888tee0ZrteOB0,6608
|
216
|
+
flwr/proto/serverappio_pb2.pyi,sha256=YxIhMPaF9fhBCR6P0AX3t5yM03B15HuwudDPHktMwTk,8914
|
217
|
+
flwr/proto/serverappio_pb2_grpc.py,sha256=kUPYPzA8ozjkTp-KVTeTWB_viTj-OJiX-lErH7b5kVc,24374
|
218
|
+
flwr/proto/serverappio_pb2_grpc.pyi,sha256=xecgtw0jIrNHMeJkG_cjuIglFM9NFRv1XPLEX7GIdck,6711
|
218
219
|
flwr/proto/simulationio_pb2.py,sha256=sAJX72z-IttVGxyU3PFnG8AFuA-pV7itvBoxz-hOudE,3342
|
219
220
|
flwr/proto/simulationio_pb2.pyi,sha256=oXx8_FLBe5B54wduZj-f89kub73XxNtQbThuW8YfPAs,2660
|
220
221
|
flwr/proto/simulationio_pb2_grpc.py,sha256=HuGbhOwV_A5GTbvmd5XTm6lSm9fWUgKcxq9OKhgmBT0,12999
|
@@ -234,10 +235,10 @@ flwr/server/compat/app_utils.py,sha256=Uz6m-NV90cQ6k-gW6wlWQuhoFoK78qlMr0CEmALKX
|
|
234
235
|
flwr/server/compat/grid_client_proxy.py,sha256=FxMgGtrzBoBAPby2ZjTWzpCJsCht8FwMm4PzqW80dmQ,4956
|
235
236
|
flwr/server/compat/legacy_context.py,sha256=94JsRQxyOdLI6lZZkFjS3-TMd0YJGAgSBBO0M_s_9ts,1804
|
236
237
|
flwr/server/criterion.py,sha256=G4e-6B48Pc7d5rmGVUpIzNKb6UF88O3VmTRuUltgjzM,1061
|
237
|
-
flwr/server/fleet_event_log_interceptor.py,sha256=
|
238
|
+
flwr/server/fleet_event_log_interceptor.py,sha256=ifV4gUB_hSg7QPLIrAyDpjciqZBOKb0L0abZno3GTwA,3780
|
238
239
|
flwr/server/grid/__init__.py,sha256=aWZHezoR2UGMJISB_gPMCm2N_2GSbm97A3lAp7ruhRQ,888
|
239
240
|
flwr/server/grid/grid.py,sha256=naGCYt5J6dnmUvrcGkdNyKPe3MBd-0awGm1ALmgahqY,6625
|
240
|
-
flwr/server/grid/grpc_grid.py,sha256=
|
241
|
+
flwr/server/grid/grpc_grid.py,sha256=F1AtbNxhHZL0-Rlwvynm7eUzOm8J55ENZ2-YQ21lAg4,13519
|
241
242
|
flwr/server/grid/inmemory_grid.py,sha256=RjejYT-d-hHuTs1KSs_5wvOdAWKLus8w5_UAcnGt4iw,6168
|
242
243
|
flwr/server/history.py,sha256=cCkFhBN4GoHsYYNk5GG1Y089eKJh2DH_ZJbYPwLaGyk,5026
|
243
244
|
flwr/server/run_serverapp.py,sha256=v0p6jXj2dFxlRUdoEeF1mnaFd9XRQi6dZCflPY6d3qI,2063
|
@@ -285,30 +286,30 @@ flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py,sha256=KouR9PUcrPmMtoLooF4O
|
|
285
286
|
flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py,sha256=iSf0mbBAlig7G6subQwBSVjcUCgSihONKdZ1RmQPTOk,4887
|
286
287
|
flwr/server/superlink/fleet/grpc_bidi/grpc_server.py,sha256=OsS-6GgCIzMMZDVu5Y-OKjynHVUrpdc_5OrtuB-IbU0,5174
|
287
288
|
flwr/server/superlink/fleet/grpc_rere/__init__.py,sha256=ahDJJ1e-lDxBpeBMgPk7YZt2wB38_QltcpOC0gLbpFs,758
|
288
|
-
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=
|
289
|
+
flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py,sha256=Ug-EqW6dSvxMVbjBVGcrfeMudBp5INZkFZUBNhJioRI,8694
|
289
290
|
flwr/server/superlink/fleet/grpc_rere/server_interceptor.py,sha256=DrHubsaLgJCwCeeJPYogQTiP0xYqjxwnT9rh7OP7BoU,6984
|
290
291
|
flwr/server/superlink/fleet/message_handler/__init__.py,sha256=fHsRV0KvJ8HtgSA4_YBsEzuhJLjO8p6xx4aCY2oE1p4,731
|
291
|
-
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=
|
292
|
+
flwr/server/superlink/fleet/message_handler/message_handler.py,sha256=NhQzO1_eGusDfBiq5lPVs-b0nisjbY8Z5Zr5sFBmYeY,8853
|
292
293
|
flwr/server/superlink/fleet/rest_rere/__init__.py,sha256=Lzc93nA7tDqoy-zRUaPG316oqFiZX1HUCL5ELaXY_xw,735
|
293
|
-
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=
|
294
|
+
flwr/server/superlink/fleet/rest_rere/rest_api.py,sha256=j3UdI_xG00t_WDPr4Zu6QlnkTu5R1ZTCg5_fLOCFG5o,9317
|
294
295
|
flwr/server/superlink/fleet/vce/__init__.py,sha256=XOKbAWOzlCqEOQ3M2cBYkH7HKA7PxlbCJMunt-ty-DY,784
|
295
296
|
flwr/server/superlink/fleet/vce/backend/__init__.py,sha256=PPH89Yqd1XKm-sRJN6R0WQlKT_b4v54Kzl2yzHAFzM8,1437
|
296
297
|
flwr/server/superlink/fleet/vce/backend/backend.py,sha256=-wDHjgAy5mrfEgXj0GxkJI7lhEbgSUyPwmNAf9ZcDzc,2193
|
297
298
|
flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=Hx9hxL7lju1_VJoAwkhBOGerZ3628u0P1zgkPhGWRPY,7154
|
298
299
|
flwr/server/superlink/fleet/vce/vce_api.py,sha256=xSjQbBYHmUTinw7Q_-UxqR7qt07kqj9FCSpPYRsUKf8,12909
|
299
300
|
flwr/server/superlink/linkstate/__init__.py,sha256=OtsgvDTnZLU3k0sUbkHbqoVwW6ql2FDmb6uT6DbNkZo,1064
|
300
|
-
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=
|
301
|
-
flwr/server/superlink/linkstate/linkstate.py,sha256=
|
301
|
+
flwr/server/superlink/linkstate/in_memory_linkstate.py,sha256=gGA1qo-h_Rvvdv99qg112CjD8PmI_0kMjAxo4ER2piE,26350
|
302
|
+
flwr/server/superlink/linkstate/linkstate.py,sha256=JZHshn7NnUHr_hvHqO593YWwuCQVJm7InXor60DRcX0,13238
|
302
303
|
flwr/server/superlink/linkstate/linkstate_factory.py,sha256=8RlosqSpKOoD_vhUUQPY0jtE3A84GeF96Z7sWNkRRcA,2069
|
303
|
-
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=
|
304
|
+
flwr/server/superlink/linkstate/sqlite_linkstate.py,sha256=E699Ak0jMF3N7i1SIeFRutjorg51Fd7qBqaPX_gkWU0,43687
|
304
305
|
flwr/server/superlink/linkstate/utils.py,sha256=IeLh7iGRCHU5MEWOl7iriaSE4L__8GWOa2OleXadK5M,15444
|
305
306
|
flwr/server/superlink/serverappio/__init__.py,sha256=Fy4zJuoccZe5mZSEIpOmQvU6YeXFBa1M4eZuXXmJcn8,717
|
306
307
|
flwr/server/superlink/serverappio/serverappio_grpc.py,sha256=6-FUUt0GiLcBPljj8bBrUNeAITUoDQOLzaMihKo52hg,2326
|
307
|
-
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=
|
308
|
+
flwr/server/superlink/serverappio/serverappio_servicer.py,sha256=LFt_Wu2OOmbNQWZrLW6GoQFdvZ60bupF4c7lvLF7kDw,18617
|
308
309
|
flwr/server/superlink/simulation/__init__.py,sha256=Ry8DrNaZCMcQXvUc4FoCN2m3dvUQgWjasfp015o3Ec4,718
|
309
310
|
flwr/server/superlink/simulation/simulationio_grpc.py,sha256=0l0F-UjYEk6W7HZmI28PbJQLFxSi_vBHRkdchgdaSMQ,2224
|
310
|
-
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=
|
311
|
-
flwr/server/superlink/utils.py,sha256=
|
311
|
+
flwr/server/superlink/simulation/simulationio_servicer.py,sha256=8jACbVPe7YPLaR0hbpEofBBwWjc-uQPhf2FU1eNOtsw,7743
|
312
|
+
flwr/server/superlink/utils.py,sha256=SHx612HNv704oRqii3Q1SPtbRdn0AQQi1z-Rqg9moLk,3898
|
312
313
|
flwr/server/typing.py,sha256=LvO6gq7H6TAWhA9JFx0WyqHxU7FycyvhSsLjBLPgpts,1011
|
313
314
|
flwr/server/utils/__init__.py,sha256=U4gM84-uUFddarODDQkO6SjNUuGhFcsHJZMjSEbezkU,884
|
314
315
|
flwr/server/utils/tensorboard.py,sha256=3z3MeF0cu_U6ghNgRd0UQ5bunyDQKxCLpIpEdGMoCJ0,5466
|
@@ -331,18 +332,18 @@ flwr/simulation/run_simulation.py,sha256=Nvw_6hI71aE2nU95_tt1F9VSo3OJWrvA97e3XZu
|
|
331
332
|
flwr/simulation/simulationio_connection.py,sha256=mzS1C6EEREwQDPceDo30anAasmTDLb9qqV2tXlBhOUA,3494
|
332
333
|
flwr/supercore/__init__.py,sha256=pqkFoow_E6UhbBlhmoD1gmTH-33yJRhBsIZqxRPFZ7U,755
|
333
334
|
flwr/supercore/object_store/__init__.py,sha256=cdfPAmjINY6iOp8oI_LdcVh2simg469Mkdl4LLV4kHI,911
|
334
|
-
flwr/supercore/object_store/in_memory_object_store.py,sha256=
|
335
|
-
flwr/supercore/object_store/object_store.py,sha256=
|
335
|
+
flwr/supercore/object_store/in_memory_object_store.py,sha256=oflJcOuVNgx9A-B2da4VHDb1qj_Jub9wKFOrUBgtz_U,9630
|
336
|
+
flwr/supercore/object_store/object_store.py,sha256=VlZz-yzoWZtITbnYD8vwLZbFosv7vgr1XVNzByObeY0,5853
|
336
337
|
flwr/supercore/object_store/object_store_factory.py,sha256=QVwE2ywi7vsj2iKfvWWnNw3N_I7Rz91NUt2RpcbJ7iM,1527
|
337
338
|
flwr/superexec/__init__.py,sha256=YFqER0IJc1XEWfsX6AxZ9LSRq0sawPYrNYki-brvTIc,715
|
338
339
|
flwr/superexec/app.py,sha256=U2jjOHb2LGWoU7vrl9_czTzre9O2mPxu3CPGUZ86sK4,1465
|
339
|
-
flwr/superexec/deployment.py,sha256=
|
340
|
-
flwr/superexec/exec_event_log_interceptor.py,sha256=
|
340
|
+
flwr/superexec/deployment.py,sha256=aDTRCM2V9iVS_gvwTSGaRIPGkm2Ro-CxFYin-Mba0P8,6853
|
341
|
+
flwr/superexec/exec_event_log_interceptor.py,sha256=7aBjZ4lkpOIyWut0s394OpMePr16g_Te594s-9aDM9Q,5774
|
341
342
|
flwr/superexec/exec_grpc.py,sha256=LS-CrwBayHQAvJz-zmzV5JsaEC49VumsS25nC0NgYXg,3364
|
342
|
-
flwr/superexec/exec_servicer.py,sha256=
|
343
|
-
flwr/superexec/exec_user_auth_interceptor.py,sha256=
|
344
|
-
flwr/superexec/executor.py,sha256=
|
345
|
-
flwr/superexec/simulation.py,sha256=
|
343
|
+
flwr/superexec/exec_servicer.py,sha256=5bhBzEMwsWxJozSXONcRYqHp2OVwIUMhKFtIxmaF4c8,8494
|
344
|
+
flwr/superexec/exec_user_auth_interceptor.py,sha256=HpGHTcDKzB7XUiQHXgntNVFYL-VfP9Wj5tEVc04VOOw,5820
|
345
|
+
flwr/superexec/executor.py,sha256=6kazVVypj-jtfeaHsqGElOv7FCrfqeQotYxVx1m4y84,3284
|
346
|
+
flwr/superexec/simulation.py,sha256=2iRVsC2dGLuqIAvwsznt_qE3u9A-yuPsj9q94Oit_As,4212
|
346
347
|
flwr/superlink/__init__.py,sha256=GNSuJ4-N6Z8wun2iZNlXqENt5beUyzC0Gi_tN396bbM,707
|
347
348
|
flwr/supernode/__init__.py,sha256=KgeCaVvXWrU3rptNR1y0oBp4YtXbAcrnCcJAiOoWkI4,707
|
348
349
|
flwr/supernode/cli/__init__.py,sha256=JuEMr0-s9zv-PEWKuLB9tj1ocNfroSyNJ-oyv7ati9A,887
|
@@ -358,7 +359,7 @@ flwr/supernode/servicer/__init__.py,sha256=lucTzre5WPK7G1YLCfaqg3rbFWdNSb7ZTt-ca
|
|
358
359
|
flwr/supernode/servicer/clientappio/__init__.py,sha256=vJyOjO2FXZ2URbnthmdsgs6948wbYfdq1L1V8Um-Lr8,895
|
359
360
|
flwr/supernode/servicer/clientappio/clientappio_servicer.py,sha256=LmzkxtNQBn5vVrHc0Bhq2WqaK6-LM2v4kfLBN0PiNNM,8522
|
360
361
|
flwr/supernode/start_client_internal.py,sha256=AkJ1FsBK6EpK7cmIGcae5WZazPhU71gileiSQogTZ-k,18164
|
361
|
-
flwr_nightly-1.19.0.
|
362
|
-
flwr_nightly-1.19.0.
|
363
|
-
flwr_nightly-1.19.0.
|
364
|
-
flwr_nightly-1.19.0.
|
362
|
+
flwr_nightly-1.19.0.dev20250612.dist-info/METADATA,sha256=XKojy0erL7FqHBslIYb56XNVEdor9P2F0mKQRV81t7U,15910
|
363
|
+
flwr_nightly-1.19.0.dev20250612.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
364
|
+
flwr_nightly-1.19.0.dev20250612.dist-info/entry_points.txt,sha256=jNpDXGBGgs21RqUxelF_jwGaxtqFwm-MQyfz-ZqSjrA,367
|
365
|
+
flwr_nightly-1.19.0.dev20250612.dist-info/RECORD,,
|
{flwr_nightly-1.19.0.dev20250610.dist-info → flwr_nightly-1.19.0.dev20250612.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|