flwr-nightly 1.10.0.dev20240629__py3-none-any.whl → 1.10.0.dev20240630__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/client/__init__.py +2 -0
- flwr/client/app.py +9 -8
- flwr/client/client_app.py +29 -4
- flwr/client/message_handler/message_handler.py +3 -4
- flwr/client/typing.py +2 -1
- flwr/simulation/app.py +12 -12
- flwr/simulation/ray_transport/ray_client_proxy.py +2 -2
- {flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/METADATA +1 -1
- {flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/RECORD +12 -12
- {flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/entry_points.txt +0 -0
flwr/client/__init__.py
CHANGED
|
@@ -23,11 +23,13 @@ from .numpy_client import NumPyClient as NumPyClient
|
|
|
23
23
|
from .supernode import run_client_app as run_client_app
|
|
24
24
|
from .supernode import run_supernode as run_supernode
|
|
25
25
|
from .typing import ClientFn as ClientFn
|
|
26
|
+
from .typing import ClientFnExt as ClientFnExt
|
|
26
27
|
|
|
27
28
|
__all__ = [
|
|
28
29
|
"Client",
|
|
29
30
|
"ClientApp",
|
|
30
31
|
"ClientFn",
|
|
32
|
+
"ClientFnExt",
|
|
31
33
|
"NumPyClient",
|
|
32
34
|
"mod",
|
|
33
35
|
"run_client_app",
|
flwr/client/app.py
CHANGED
|
@@ -26,7 +26,7 @@ from grpc import RpcError
|
|
|
26
26
|
|
|
27
27
|
from flwr.client.client import Client
|
|
28
28
|
from flwr.client.client_app import ClientApp, LoadClientAppError
|
|
29
|
-
from flwr.client.typing import
|
|
29
|
+
from flwr.client.typing import ClientFnExt
|
|
30
30
|
from flwr.common import GRPC_MAX_MESSAGE_LENGTH, EventType, Message, event
|
|
31
31
|
from flwr.common.address import parse_address
|
|
32
32
|
from flwr.common.constant import (
|
|
@@ -51,7 +51,7 @@ from .numpy_client import NumPyClient
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
def _check_actionable_client(
|
|
54
|
-
client: Optional[Client], client_fn: Optional[
|
|
54
|
+
client: Optional[Client], client_fn: Optional[ClientFnExt]
|
|
55
55
|
) -> None:
|
|
56
56
|
if client_fn is None and client is None:
|
|
57
57
|
raise ValueError(
|
|
@@ -72,7 +72,7 @@ def _check_actionable_client(
|
|
|
72
72
|
def start_client(
|
|
73
73
|
*,
|
|
74
74
|
server_address: str,
|
|
75
|
-
client_fn: Optional[
|
|
75
|
+
client_fn: Optional[ClientFnExt] = None,
|
|
76
76
|
client: Optional[Client] = None,
|
|
77
77
|
grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
|
|
78
78
|
root_certificates: Optional[Union[bytes, str]] = None,
|
|
@@ -92,7 +92,7 @@ def start_client(
|
|
|
92
92
|
The IPv4 or IPv6 address of the server. If the Flower
|
|
93
93
|
server runs on the same machine on port 8080, then `server_address`
|
|
94
94
|
would be `"[::]:8080"`.
|
|
95
|
-
client_fn : Optional[
|
|
95
|
+
client_fn : Optional[ClientFnExt]
|
|
96
96
|
A callable that instantiates a Client. (default: None)
|
|
97
97
|
client : Optional[flwr.client.Client]
|
|
98
98
|
An implementation of the abstract base
|
|
@@ -136,7 +136,7 @@ def start_client(
|
|
|
136
136
|
|
|
137
137
|
Starting an SSL-enabled gRPC client using system certificates:
|
|
138
138
|
|
|
139
|
-
>>> def client_fn(
|
|
139
|
+
>>> def client_fn(node_id: int, partition_id: Optional[int]):
|
|
140
140
|
>>> return FlowerClient()
|
|
141
141
|
>>>
|
|
142
142
|
>>> start_client(
|
|
@@ -180,7 +180,7 @@ def _start_client_internal(
|
|
|
180
180
|
*,
|
|
181
181
|
server_address: str,
|
|
182
182
|
load_client_app_fn: Optional[Callable[[str, str], ClientApp]] = None,
|
|
183
|
-
client_fn: Optional[
|
|
183
|
+
client_fn: Optional[ClientFnExt] = None,
|
|
184
184
|
client: Optional[Client] = None,
|
|
185
185
|
grpc_max_message_length: int = GRPC_MAX_MESSAGE_LENGTH,
|
|
186
186
|
root_certificates: Optional[Union[bytes, str]] = None,
|
|
@@ -203,7 +203,7 @@ def _start_client_internal(
|
|
|
203
203
|
would be `"[::]:8080"`.
|
|
204
204
|
load_client_app_fn : Optional[Callable[[], ClientApp]] (default: None)
|
|
205
205
|
A function that can be used to load a `ClientApp` instance.
|
|
206
|
-
client_fn : Optional[
|
|
206
|
+
client_fn : Optional[ClientFnExt]
|
|
207
207
|
A callable that instantiates a Client. (default: None)
|
|
208
208
|
client : Optional[flwr.client.Client]
|
|
209
209
|
An implementation of the abstract base
|
|
@@ -248,7 +248,8 @@ def _start_client_internal(
|
|
|
248
248
|
if client_fn is None:
|
|
249
249
|
# Wrap `Client` instance in `client_fn`
|
|
250
250
|
def single_client_factory(
|
|
251
|
-
|
|
251
|
+
node_id: int, # pylint: disable=unused-argument
|
|
252
|
+
partition_id: Optional[int], # pylint: disable=unused-argument
|
|
252
253
|
) -> Client:
|
|
253
254
|
if client is None: # Added this to keep mypy happy
|
|
254
255
|
raise ValueError(
|
flwr/client/client_app.py
CHANGED
|
@@ -15,19 +15,42 @@
|
|
|
15
15
|
"""Flower ClientApp."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
import inspect
|
|
18
19
|
from typing import Callable, List, Optional
|
|
19
20
|
|
|
21
|
+
from flwr.client.client import Client
|
|
20
22
|
from flwr.client.message_handler.message_handler import (
|
|
21
23
|
handle_legacy_message_from_msgtype,
|
|
22
24
|
)
|
|
23
25
|
from flwr.client.mod.utils import make_ffn
|
|
24
|
-
from flwr.client.typing import
|
|
26
|
+
from flwr.client.typing import ClientFnExt, Mod
|
|
25
27
|
from flwr.common import Context, Message, MessageType
|
|
26
|
-
from flwr.common.logger import warn_preview_feature
|
|
28
|
+
from flwr.common.logger import warn_deprecated_feature, warn_preview_feature
|
|
27
29
|
|
|
28
30
|
from .typing import ClientAppCallable
|
|
29
31
|
|
|
30
32
|
|
|
33
|
+
def _inspect_maybe_adapt_client_fn_signature(client_fn: ClientFnExt) -> ClientFnExt:
|
|
34
|
+
client_fn_args = inspect.signature(client_fn).parameters
|
|
35
|
+
|
|
36
|
+
if not all(key in client_fn_args for key in ["node_id", "partition_id"]):
|
|
37
|
+
warn_deprecated_feature(
|
|
38
|
+
"`client_fn` now expects a signature `def client_fn(node_id: int, "
|
|
39
|
+
"partition_id: Optional[int])`.\nYou provided `client_fn` with signature: "
|
|
40
|
+
f"{dict(client_fn_args.items())}"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
# Wrap depcreated client_fn inside a function with the expected signature
|
|
44
|
+
def adaptor_fn(
|
|
45
|
+
node_id: int, partition_id: Optional[int] # pylint: disable=unused-argument
|
|
46
|
+
) -> Client:
|
|
47
|
+
return client_fn(str(partition_id)) # type: ignore
|
|
48
|
+
|
|
49
|
+
return adaptor_fn
|
|
50
|
+
|
|
51
|
+
return client_fn
|
|
52
|
+
|
|
53
|
+
|
|
31
54
|
class ClientAppException(Exception):
|
|
32
55
|
"""Exception raised when an exception is raised while executing a ClientApp."""
|
|
33
56
|
|
|
@@ -48,7 +71,7 @@ class ClientApp:
|
|
|
48
71
|
>>> class FlowerClient(NumPyClient):
|
|
49
72
|
>>> # ...
|
|
50
73
|
>>>
|
|
51
|
-
>>> def client_fn(
|
|
74
|
+
>>> def client_fn(node_id: int, partition_id: Optional[int]):
|
|
52
75
|
>>> return FlowerClient().to_client()
|
|
53
76
|
>>>
|
|
54
77
|
>>> app = ClientApp(client_fn)
|
|
@@ -65,7 +88,7 @@ class ClientApp:
|
|
|
65
88
|
|
|
66
89
|
def __init__(
|
|
67
90
|
self,
|
|
68
|
-
client_fn: Optional[
|
|
91
|
+
client_fn: Optional[ClientFnExt] = None, # Only for backward compatibility
|
|
69
92
|
mods: Optional[List[Mod]] = None,
|
|
70
93
|
) -> None:
|
|
71
94
|
self._mods: List[Mod] = mods if mods is not None else []
|
|
@@ -74,6 +97,8 @@ class ClientApp:
|
|
|
74
97
|
self._call: Optional[ClientAppCallable] = None
|
|
75
98
|
if client_fn is not None:
|
|
76
99
|
|
|
100
|
+
client_fn = _inspect_maybe_adapt_client_fn_signature(client_fn)
|
|
101
|
+
|
|
77
102
|
def ffn(
|
|
78
103
|
message: Message,
|
|
79
104
|
context: Context,
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
# ==============================================================================
|
|
15
15
|
"""Client-side message handler."""
|
|
16
16
|
|
|
17
|
-
|
|
18
17
|
from logging import WARN
|
|
19
18
|
from typing import Optional, Tuple, cast
|
|
20
19
|
|
|
@@ -25,7 +24,7 @@ from flwr.client.client import (
|
|
|
25
24
|
maybe_call_get_properties,
|
|
26
25
|
)
|
|
27
26
|
from flwr.client.numpy_client import NumPyClient
|
|
28
|
-
from flwr.client.typing import
|
|
27
|
+
from flwr.client.typing import ClientFnExt
|
|
29
28
|
from flwr.common import ConfigsRecord, Context, Message, Metadata, RecordSet, log
|
|
30
29
|
from flwr.common.constant import MessageType, MessageTypeLegacy
|
|
31
30
|
from flwr.common.recordset_compat import (
|
|
@@ -90,10 +89,10 @@ def handle_control_message(message: Message) -> Tuple[Optional[Message], int]:
|
|
|
90
89
|
|
|
91
90
|
|
|
92
91
|
def handle_legacy_message_from_msgtype(
|
|
93
|
-
client_fn:
|
|
92
|
+
client_fn: ClientFnExt, message: Message, context: Context
|
|
94
93
|
) -> Message:
|
|
95
94
|
"""Handle legacy message in the inner most mod."""
|
|
96
|
-
client = client_fn(
|
|
95
|
+
client = client_fn(message.metadata.dst_node_id, context.partition_id)
|
|
97
96
|
|
|
98
97
|
# Check if NumPyClient is returend
|
|
99
98
|
if isinstance(client, NumPyClient):
|
flwr/client/typing.py
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"""Custom types for Flower clients."""
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
from typing import Callable
|
|
18
|
+
from typing import Callable, Optional
|
|
19
19
|
|
|
20
20
|
from flwr.common import Context, Message
|
|
21
21
|
|
|
@@ -23,6 +23,7 @@ from .client import Client as Client
|
|
|
23
23
|
|
|
24
24
|
# Compatibility
|
|
25
25
|
ClientFn = Callable[[str], Client]
|
|
26
|
+
ClientFnExt = Callable[[int, Optional[int]], Client]
|
|
26
27
|
|
|
27
28
|
ClientAppCallable = Callable[[Message, Context], Message]
|
|
28
29
|
Mod = Callable[[Message, Context, ClientAppCallable], Message]
|
flwr/simulation/app.py
CHANGED
|
@@ -27,7 +27,7 @@ from typing import Any, Dict, List, Optional, Type, Union
|
|
|
27
27
|
import ray
|
|
28
28
|
from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy
|
|
29
29
|
|
|
30
|
-
from flwr.client import
|
|
30
|
+
from flwr.client import ClientFnExt
|
|
31
31
|
from flwr.common import EventType, event
|
|
32
32
|
from flwr.common.logger import log, set_logger_propagation
|
|
33
33
|
from flwr.server.client_manager import ClientManager
|
|
@@ -74,7 +74,7 @@ REASON:
|
|
|
74
74
|
# pylint: disable=too-many-arguments,too-many-statements,too-many-branches
|
|
75
75
|
def start_simulation(
|
|
76
76
|
*,
|
|
77
|
-
client_fn:
|
|
77
|
+
client_fn: ClientFnExt,
|
|
78
78
|
num_clients: Optional[int] = None,
|
|
79
79
|
clients_ids: Optional[List[str]] = None,
|
|
80
80
|
client_resources: Optional[Dict[str, float]] = None,
|
|
@@ -92,16 +92,16 @@ def start_simulation(
|
|
|
92
92
|
|
|
93
93
|
Parameters
|
|
94
94
|
----------
|
|
95
|
-
client_fn :
|
|
96
|
-
A function creating
|
|
97
|
-
`
|
|
98
|
-
of type Client. Note that the created client
|
|
99
|
-
and will often be destroyed after a single method
|
|
100
|
-
instances are not long-lived, they should not attempt
|
|
101
|
-
method invocations. Any state required by the instance
|
|
102
|
-
hyperparameters, ...) should be (re-)created in either the
|
|
103
|
-
or the call to any of the client methods (e.g., load
|
|
104
|
-
`evaluate` method itself).
|
|
95
|
+
client_fn : ClientFnExt
|
|
96
|
+
A function creating Client instances. The function must have the signature
|
|
97
|
+
`client_fn(node_id: int, partition_id: Optional[int]). It should return
|
|
98
|
+
a single client instance of type Client. Note that the created client
|
|
99
|
+
instances are ephemeral and will often be destroyed after a single method
|
|
100
|
+
invocation. Since client instances are not long-lived, they should not attempt
|
|
101
|
+
to carry state over method invocations. Any state required by the instance
|
|
102
|
+
(model, dataset, hyperparameters, ...) should be (re-)created in either the
|
|
103
|
+
call to `client_fn` or the call to any of the client methods (e.g., load
|
|
104
|
+
evaluation data in the `evaluate` method itself).
|
|
105
105
|
num_clients : Optional[int]
|
|
106
106
|
The total number of clients in this simulation. This must be set if
|
|
107
107
|
`clients_ids` is not set and vice-versa.
|
|
@@ -20,7 +20,7 @@ from logging import ERROR
|
|
|
20
20
|
from typing import Optional
|
|
21
21
|
|
|
22
22
|
from flwr import common
|
|
23
|
-
from flwr.client import
|
|
23
|
+
from flwr.client import ClientFnExt
|
|
24
24
|
from flwr.client.client_app import ClientApp
|
|
25
25
|
from flwr.client.node_state import NodeState
|
|
26
26
|
from flwr.common import DEFAULT_TTL, Message, Metadata, RecordSet
|
|
@@ -44,7 +44,7 @@ class RayActorClientProxy(ClientProxy):
|
|
|
44
44
|
"""Flower client proxy which delegates work using Ray."""
|
|
45
45
|
|
|
46
46
|
def __init__(
|
|
47
|
-
self, client_fn:
|
|
47
|
+
self, client_fn: ClientFnExt, cid: str, actor_pool: VirtualClientEngineActorPool
|
|
48
48
|
):
|
|
49
49
|
super().__init__(cid)
|
|
50
50
|
|
{flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/RECORD
RENAMED
|
@@ -52,10 +52,10 @@ flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl,sha256=zkxLTQRvujF76sIl
|
|
|
52
52
|
flwr/cli/run/__init__.py,sha256=oCd6HmQDx-sqver1gecgx-uMA38BLTSiiKpl7RGNceg,789
|
|
53
53
|
flwr/cli/run/run.py,sha256=WsOknYnwm_iD-s6jAHxjGKbm0PgV3VZdQ04v6s4nPQY,4449
|
|
54
54
|
flwr/cli/utils.py,sha256=l65Ul0YsSBPuypk0uorAtEDmLEYiUrzpCXi6zCg9mJ4,4506
|
|
55
|
-
flwr/client/__init__.py,sha256=
|
|
56
|
-
flwr/client/app.py,sha256=
|
|
55
|
+
flwr/client/__init__.py,sha256=wzJZsYJIHf_8-PMzvfbinyzzjgh1UP1vLrAw2_yEbKI,1345
|
|
56
|
+
flwr/client/app.py,sha256=q6gVN_uTeShH708E7xNrQqMp-ECU1mLTQQ-Ozxicrs4,24743
|
|
57
57
|
flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
|
|
58
|
-
flwr/client/client_app.py,sha256=
|
|
58
|
+
flwr/client/client_app.py,sha256=cvY-km3JEOWKxUio4xvksNFBk2FQQXliUfQTlDty71w,9648
|
|
59
59
|
flwr/client/dpfedavg_numpy_client.py,sha256=ylZ-LpBIKmL1HCiS8kq4pkp2QGalc8rYEzDHdRG3VRQ,7435
|
|
60
60
|
flwr/client/grpc_adapter_client/__init__.py,sha256=QyNWIbsq9DpyMk7oemiO1P3TBFfkfkctnJ1JoAkTl3s,742
|
|
61
61
|
flwr/client/grpc_adapter_client/connection.py,sha256=kUObTsJ_4OwxE4tvIlWwn_iSWk2snjLWMo19tqdXo1s,3841
|
|
@@ -67,7 +67,7 @@ flwr/client/grpc_rere_client/connection.py,sha256=MazJNpMkatxXXcmkwNCWfCzCqMXW-n
|
|
|
67
67
|
flwr/client/grpc_rere_client/grpc_adapter.py,sha256=woljH8yr1pyLH4W4Azogyy7Nafn6y9DHBnDCIIVKwCw,4711
|
|
68
68
|
flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
|
|
69
69
|
flwr/client/message_handler/__init__.py,sha256=QxxQuBNpFPTHx3KiUNvQSlqMKlEnbRR1kFfc1KVje08,719
|
|
70
|
-
flwr/client/message_handler/message_handler.py,sha256=
|
|
70
|
+
flwr/client/message_handler/message_handler.py,sha256=rLuzcpRqSFofQ8QIB6OGnh9HC5uxUAnkQQIJaP0JHvM,6574
|
|
71
71
|
flwr/client/message_handler/task_handler.py,sha256=ZDJBKmrn2grRMNl1rU1iGs7FiMHL5VmZiSp_6h9GHVU,1824
|
|
72
72
|
flwr/client/mod/__init__.py,sha256=37XeXZLFq_tzFVKVtC9JaigM2bSAU7BrGQvMPCE3Q28,1159
|
|
73
73
|
flwr/client/mod/centraldp_mods.py,sha256=UGwNuqpmOWfLdfJITFgdi1TG-nLjuSb-cbEyoyfDgxQ,5415
|
|
@@ -84,7 +84,7 @@ flwr/client/rest_client/__init__.py,sha256=5KGlp7pjc1dhNRkKlaNtUfQmg8wrRFh9lS3P3
|
|
|
84
84
|
flwr/client/rest_client/connection.py,sha256=vw264e67jq7kgqgqHLvgXFbQwoHll2yET9XKzJkXtnM,11957
|
|
85
85
|
flwr/client/supernode/__init__.py,sha256=SUhWOzcgXRNXk1V9UgB5-FaWukqqrOEajVUHEcPkwyQ,865
|
|
86
86
|
flwr/client/supernode/app.py,sha256=pPQigWa_TfPA5UpsKdX73k_0w0v6zR-DYwAb6ykVa8U,14849
|
|
87
|
-
flwr/client/typing.py,sha256=
|
|
87
|
+
flwr/client/typing.py,sha256=RJGVF64Z0nqW-qmdFuFaY4Jig3dMUFgNhFi-5dq-8-I,1069
|
|
88
88
|
flwr/common/__init__.py,sha256=4cBLNNnNTwHDnL_HCxhU5ILCSZ6fYh3A_aMBtlvHTVw,3721
|
|
89
89
|
flwr/common/address.py,sha256=wRu1Luezx1PWadwV9OA_KNko01oVvbRnPqfzaDn8QOk,1882
|
|
90
90
|
flwr/common/config.py,sha256=afI57MxKWrLzrh0rlrSxnAlMCI7crgnllouAKxznWLY,2628
|
|
@@ -252,10 +252,10 @@ flwr/server/workflow/secure_aggregation/__init__.py,sha256=3XlgDOjD_hcukTGl6Bc1B
|
|
|
252
252
|
flwr/server/workflow/secure_aggregation/secagg_workflow.py,sha256=wpAkYPId0nfK6SgpUAtsCni4_MQLd-uqJ81tUKu3xlI,5838
|
|
253
253
|
flwr/server/workflow/secure_aggregation/secaggplus_workflow.py,sha256=BRqhlnVe8CYNoUvb_KCfRXay02NTT6a-pCrMaOqAxGc,29038
|
|
254
254
|
flwr/simulation/__init__.py,sha256=9x8OCkK3jpFAPJB1aeEMOddz6V58bExQPtwE8Z3q-RY,1359
|
|
255
|
-
flwr/simulation/app.py,sha256=
|
|
255
|
+
flwr/simulation/app.py,sha256=MKqAQAw93VmH5ILWWXu7UFxp3qzWrBV-oxKZNZus010,14420
|
|
256
256
|
flwr/simulation/ray_transport/__init__.py,sha256=wzcEEwUUlulnXsg6raCA1nGpP3LlAQDtJ8zNkCXcVbA,734
|
|
257
257
|
flwr/simulation/ray_transport/ray_actor.py,sha256=bu6gEnbHYtlUxLtzjzpEUtvkQDRzl1PVMjJuCDZvfgQ,19196
|
|
258
|
-
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=
|
|
258
|
+
flwr/simulation/ray_transport/ray_client_proxy.py,sha256=jpdNk1Du67e2Y1mw14ciMRHuctOPUIN28vYJjObGXEY,6726
|
|
259
259
|
flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
|
|
260
260
|
flwr/simulation/run_simulation.py,sha256=m2FK0LzLSOR2HC94XDowLLwvHuIhaV6q78HsT_MKLMU,16858
|
|
261
261
|
flwr/superexec/__init__.py,sha256=9h94ogLxi6eJ3bUuJYq3E3pApThSabTPiSmPAGlTkHE,800
|
|
@@ -264,8 +264,8 @@ flwr/superexec/deployment.py,sha256=yWIhS8rozuDo_jQ-Uw-RX_9-Lsn3Pb2uqe7OZYjXSQ0,
|
|
|
264
264
|
flwr/superexec/exec_grpc.py,sha256=u-rztpOleqSGqgvNE-ZLw1HchNsBHU1-eB3m52GZ0pQ,1852
|
|
265
265
|
flwr/superexec/exec_servicer.py,sha256=qf8CT4RLXnY8omOy75kwfsWmMnfTD42B4ENTh5S-BCY,2120
|
|
266
266
|
flwr/superexec/executor.py,sha256=GouXCY2LiZ-ffsOoZ_z-fh4JwbzMmhTl-gwpWFgGWTY,1688
|
|
267
|
-
flwr_nightly-1.10.0.
|
|
268
|
-
flwr_nightly-1.10.0.
|
|
269
|
-
flwr_nightly-1.10.0.
|
|
270
|
-
flwr_nightly-1.10.0.
|
|
271
|
-
flwr_nightly-1.10.0.
|
|
267
|
+
flwr_nightly-1.10.0.dev20240630.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
268
|
+
flwr_nightly-1.10.0.dev20240630.dist-info/METADATA,sha256=1mlk16NZodRXzZqsHz5jGzwa_RnmVpcsMCGHHKiP6-o,15614
|
|
269
|
+
flwr_nightly-1.10.0.dev20240630.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
270
|
+
flwr_nightly-1.10.0.dev20240630.dist-info/entry_points.txt,sha256=7qBQcA-bDGDxnJmLd9FYqglFQubjCNqyg9M8a-lukps,336
|
|
271
|
+
flwr_nightly-1.10.0.dev20240630.dist-info/RECORD,,
|
{flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.10.0.dev20240629.dist-info → flwr_nightly-1.10.0.dev20240630.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|