flwr-nightly 1.9.0.dev20240529__py3-none-any.whl → 1.9.0.dev20240604__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/client_app.py CHANGED
@@ -221,7 +221,7 @@ def _registration_error(fn_name: str) -> ValueError:
221
221
  >>> def client_fn(cid) -> Client:
222
222
  >>> return FlowerClient().to_client()
223
223
  >>>
224
- >>> app = ClientApp()
224
+ >>> app = ClientApp(
225
225
  >>> client_fn=client_fn,
226
226
  >>> )
227
227
 
@@ -21,7 +21,7 @@ from contextlib import contextmanager
21
21
  from copy import copy
22
22
  from logging import DEBUG, ERROR
23
23
  from pathlib import Path
24
- from typing import Callable, Iterator, Optional, Sequence, Tuple, Union, cast
24
+ from typing import Callable, Iterator, Optional, Sequence, Tuple, Type, Union, cast
25
25
 
26
26
  import grpc
27
27
  from cryptography.hazmat.primitives.asymmetric import ec
@@ -73,6 +73,7 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
73
73
  authentication_keys: Optional[
74
74
  Tuple[ec.EllipticCurvePrivateKey, ec.EllipticCurvePublicKey]
75
75
  ] = None,
76
+ adapter_cls: Optional[Type[FleetStub]] = None,
76
77
  ) -> Iterator[
77
78
  Tuple[
78
79
  Callable[[], Optional[Message]],
@@ -133,7 +134,9 @@ def grpc_request_response( # pylint: disable=R0913, R0914, R0915
133
134
  channel.subscribe(on_channel_state_change)
134
135
 
135
136
  # Shared variables for inner functions
136
- stub = FleetStub(channel)
137
+ if adapter_cls is None:
138
+ adapter_cls = FleetStub
139
+ stub = adapter_cls(channel)
137
140
  metadata: Optional[Metadata] = None
138
141
  node: Optional[Node] = None
139
142
  ping_thread: Optional[threading.Thread] = None
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: flwr/proto/grpcadapter.proto
4
+ # Protobuf Python Version: 4.25.0
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\x1c\x66lwr/proto/grpcadapter.proto\x12\nflwr.proto\"\xba\x01\n\x10MessageContainer\x12<\n\x08metadata\x18\x01 \x03(\x0b\x32*.flwr.proto.MessageContainer.MetadataEntry\x12\x19\n\x11grpc_message_name\x18\x02 \x01(\t\x12\x1c\n\x14grpc_message_content\x18\x03 \x01(\x0c\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x32Z\n\x0bGrpcAdapter\x12K\n\x0bSendReceive\x12\x1c.flwr.proto.MessageContainer\x1a\x1c.flwr.proto.MessageContainer\"\x00\x62\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'flwr.proto.grpcadapter_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ DESCRIPTOR._options = None
24
+ _globals['_MESSAGECONTAINER_METADATAENTRY']._options = None
25
+ _globals['_MESSAGECONTAINER_METADATAENTRY']._serialized_options = b'8\001'
26
+ _globals['_MESSAGECONTAINER']._serialized_start=45
27
+ _globals['_MESSAGECONTAINER']._serialized_end=231
28
+ _globals['_MESSAGECONTAINER_METADATAENTRY']._serialized_start=184
29
+ _globals['_MESSAGECONTAINER_METADATAENTRY']._serialized_end=231
30
+ _globals['_GRPCADAPTER']._serialized_start=233
31
+ _globals['_GRPCADAPTER']._serialized_end=323
32
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,43 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import google.protobuf.descriptor
7
+ import google.protobuf.internal.containers
8
+ import google.protobuf.message
9
+ import typing
10
+ import typing_extensions
11
+
12
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
13
+
14
+ class MessageContainer(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+ class MetadataEntry(google.protobuf.message.Message):
17
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
18
+ KEY_FIELD_NUMBER: builtins.int
19
+ VALUE_FIELD_NUMBER: builtins.int
20
+ key: typing.Text
21
+ value: typing.Text
22
+ def __init__(self,
23
+ *,
24
+ key: typing.Text = ...,
25
+ value: typing.Text = ...,
26
+ ) -> None: ...
27
+ def ClearField(self, field_name: typing_extensions.Literal["key",b"key","value",b"value"]) -> None: ...
28
+
29
+ METADATA_FIELD_NUMBER: builtins.int
30
+ GRPC_MESSAGE_NAME_FIELD_NUMBER: builtins.int
31
+ GRPC_MESSAGE_CONTENT_FIELD_NUMBER: builtins.int
32
+ @property
33
+ def metadata(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ...
34
+ grpc_message_name: typing.Text
35
+ grpc_message_content: builtins.bytes
36
+ def __init__(self,
37
+ *,
38
+ metadata: typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
39
+ grpc_message_name: typing.Text = ...,
40
+ grpc_message_content: builtins.bytes = ...,
41
+ ) -> None: ...
42
+ def ClearField(self, field_name: typing_extensions.Literal["grpc_message_content",b"grpc_message_content","grpc_message_name",b"grpc_message_name","metadata",b"metadata"]) -> None: ...
43
+ global___MessageContainer = MessageContainer
@@ -0,0 +1,66 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from flwr.proto import grpcadapter_pb2 as flwr_dot_proto_dot_grpcadapter__pb2
6
+
7
+
8
+ class GrpcAdapterStub(object):
9
+ """Missing associated documentation comment in .proto file."""
10
+
11
+ def __init__(self, channel):
12
+ """Constructor.
13
+
14
+ Args:
15
+ channel: A grpc.Channel.
16
+ """
17
+ self.SendReceive = channel.unary_unary(
18
+ '/flwr.proto.GrpcAdapter/SendReceive',
19
+ request_serializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.SerializeToString,
20
+ response_deserializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.FromString,
21
+ )
22
+
23
+
24
+ class GrpcAdapterServicer(object):
25
+ """Missing associated documentation comment in .proto file."""
26
+
27
+ def SendReceive(self, request, context):
28
+ """Missing associated documentation comment in .proto file."""
29
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
30
+ context.set_details('Method not implemented!')
31
+ raise NotImplementedError('Method not implemented!')
32
+
33
+
34
+ def add_GrpcAdapterServicer_to_server(servicer, server):
35
+ rpc_method_handlers = {
36
+ 'SendReceive': grpc.unary_unary_rpc_method_handler(
37
+ servicer.SendReceive,
38
+ request_deserializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.FromString,
39
+ response_serializer=flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.SerializeToString,
40
+ ),
41
+ }
42
+ generic_handler = grpc.method_handlers_generic_handler(
43
+ 'flwr.proto.GrpcAdapter', rpc_method_handlers)
44
+ server.add_generic_rpc_handlers((generic_handler,))
45
+
46
+
47
+ # This class is part of an EXPERIMENTAL API.
48
+ class GrpcAdapter(object):
49
+ """Missing associated documentation comment in .proto file."""
50
+
51
+ @staticmethod
52
+ def SendReceive(request,
53
+ target,
54
+ options=(),
55
+ channel_credentials=None,
56
+ call_credentials=None,
57
+ insecure=False,
58
+ compression=None,
59
+ wait_for_ready=None,
60
+ timeout=None,
61
+ metadata=None):
62
+ return grpc.experimental.unary_unary(request, target, '/flwr.proto.GrpcAdapter/SendReceive',
63
+ flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.SerializeToString,
64
+ flwr_dot_proto_dot_grpcadapter__pb2.MessageContainer.FromString,
65
+ options, channel_credentials,
66
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -0,0 +1,24 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import abc
6
+ import flwr.proto.grpcadapter_pb2
7
+ import grpc
8
+
9
+ class GrpcAdapterStub:
10
+ def __init__(self, channel: grpc.Channel) -> None: ...
11
+ SendReceive: grpc.UnaryUnaryMultiCallable[
12
+ flwr.proto.grpcadapter_pb2.MessageContainer,
13
+ flwr.proto.grpcadapter_pb2.MessageContainer]
14
+
15
+
16
+ class GrpcAdapterServicer(metaclass=abc.ABCMeta):
17
+ @abc.abstractmethod
18
+ def SendReceive(self,
19
+ request: flwr.proto.grpcadapter_pb2.MessageContainer,
20
+ context: grpc.ServicerContext,
21
+ ) -> flwr.proto.grpcadapter_pb2.MessageContainer: ...
22
+
23
+
24
+ def add_GrpcAdapterServicer_to_server(servicer: GrpcAdapterServicer, server: grpc.Server) -> None: ...
flwr/server/server_app.py CHANGED
@@ -39,7 +39,7 @@ class ServerApp:
39
39
  >>> server_config = ServerConfig(num_rounds=3)
40
40
  >>> strategy = FedAvg()
41
41
  >>>
42
- >>> app = ServerApp()
42
+ >>> app = ServerApp(
43
43
  >>> server_config=server_config,
44
44
  >>> strategy=strategy,
45
45
  >>> )
@@ -106,7 +106,7 @@ class ServerApp:
106
106
  >>> server_config = ServerConfig(num_rounds=3)
107
107
  >>> strategy = FedAvg()
108
108
  >>>
109
- >>> app = ServerApp()
109
+ >>> app = ServerApp(
110
110
  >>> server_config=server_config,
111
111
  >>> strategy=strategy,
112
112
  >>> )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240529
3
+ Version: 1.9.0.dev20240604
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -44,13 +44,13 @@ flwr/cli/utils.py,sha256=px-M-IlBLu6Ez-Sc9tWhsJRjWurRaZTmxB9ASz8wurk,4119
44
44
  flwr/client/__init__.py,sha256=CivBxRFjK6gXHN5kUUf9UaZQHa_NHlEM867WWB-H0D8,1268
45
45
  flwr/client/app.py,sha256=rzfaHiXxrtjwyhHrHb3epRD6NNw07YzL5DoZO6eW7RA,22313
46
46
  flwr/client/client.py,sha256=Vp9UkOkoHdNfn6iMYZsj_5m_GICiFfUlKEVaLad-YhM,8183
47
- flwr/client/client_app.py,sha256=-Cs0084tLQUoBCeYZdG2KgU7cjp95_ZJ4MfjoaN4Fzk,8636
47
+ flwr/client/client_app.py,sha256=2jyVTzu8pwDtg66z4FjAa_kPzg31Q8-hx-RkDhguIqw,8635
48
48
  flwr/client/dpfedavg_numpy_client.py,sha256=9Tnig4iml2J88HBKNahegjXjbfvIQyBtaIQaqjbeqsA,7435
49
49
  flwr/client/grpc_client/__init__.py,sha256=LsnbqXiJhgQcB0XzAlUQgPx011Uf7Y7yabIC1HxivJ8,735
50
50
  flwr/client/grpc_client/connection.py,sha256=KWbBwuvn1-2wjrAKteydGCZC_7A2zmEjk3DycQWafrA,8993
51
51
  flwr/client/grpc_rere_client/__init__.py,sha256=avn6W_vHEM_yZEB1S7hCZgnTbXb6ZujqRP_vAzyXu-0,752
52
52
  flwr/client/grpc_rere_client/client_interceptor.py,sha256=rDBXRVo-d-rflxJ6Kw3eDfBmvChdUHkzRw5eP-bpe6Y,4903
53
- flwr/client/grpc_rere_client/connection.py,sha256=gSSJJ9pSe5SgUb1Ey-xcrVK6xArUkwq0yGdav0h2kww,9597
53
+ flwr/client/grpc_rere_client/connection.py,sha256=e-e6CQmubzmB4n36MtS_u7_T1daNKl5ZltfLATllM-U,9716
54
54
  flwr/client/heartbeat.py,sha256=cx37mJBH8LyoIN4Lks85wtqT1mnU5GulQnr4pGCvAq0,2404
55
55
  flwr/client/message_handler/__init__.py,sha256=abHvBRJJiiaAMNgeILQbMOa6h8WqMK2BcnvxwQZFpic,719
56
56
  flwr/client/message_handler/message_handler.py,sha256=ml_FlduAJ5pxO31n1tKRrWfQRSxkMgKLbwXXcRsNSos,6553
@@ -120,6 +120,10 @@ flwr/proto/fleet_pb2.py,sha256=mKxwomayARq2nQanY3CtnA8ZWqW8NChWsoWeAyGJAOE,5018
120
120
  flwr/proto/fleet_pb2.pyi,sha256=yibeuFHsm0ygnJmuyI2V9XNvEt9CLT3dTNUOvAItezU,9161
121
121
  flwr/proto/fleet_pb2_grpc.py,sha256=TNt0ydDAXoe1YF2Pl6aNxlGueeOjn0dQ7fdgGx9wd7U,10605
122
122
  flwr/proto/fleet_pb2_grpc.pyi,sha256=6flR6x4gB0CZc4YK_MTGeA4zV8Tk_mCcXuxosfDsxGM,2811
123
+ flwr/proto/grpcadapter_pb2.py,sha256=bb8mW09XzNCpMdr1KuYQkefPFWR8lc8y1uL6Uk0TtsM,1843
124
+ flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
125
+ flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
126
+ flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=AgA9Qo_lnANb9SNuPzbZGAxupau-xcqYawZz6vqf-24,735
123
127
  flwr/proto/node_pb2.py,sha256=1zfXEvgGObglIcaVb4SLFmOcHZvA8eHzEtMFM5A6FYY,1081
124
128
  flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
125
129
  flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -154,7 +158,7 @@ flwr/server/driver/inmemory_driver.py,sha256=XfdLV3mVorTWBfthBkErJDLm8jXZ834IHF3
154
158
  flwr/server/history.py,sha256=bBOHKyX1eQONIsUx4EUU-UnAk1i0EbEl8ioyMq_UWQ8,5063
155
159
  flwr/server/run_serverapp.py,sha256=avLi_yRNE5jD2ql95gzh04BTUbHvzH-N848_mdnnkVk,5972
156
160
  flwr/server/server.py,sha256=wsXsxMZ9SQ0B42nBnUlcV83NJPycgrgg5bFwcQ4BYBE,17821
157
- flwr/server/server_app.py,sha256=KgAT_HqsfseTLNnfX2ph42PBbVqQ0lFzvYrT90V34y0,4402
161
+ flwr/server/server_app.py,sha256=Re5Y9ftXlBRJXYHY_8TrNWsjyOUCPC5F_93H0xiZDhI,4400
158
162
  flwr/server/server_config.py,sha256=CZaHVAsMvGLjpWVcLPkiYxgJN4xfIyAiUrCI3fETKY4,1349
159
163
  flwr/server/strategy/__init__.py,sha256=7eVZ3hQEg2BgA_usAeL6tsLp9T6XI1VYYoFy08Xn-ew,2836
160
164
  flwr/server/strategy/aggregate.py,sha256=QyRIJtI5gnuY1NbgrcrOvkHxGIxBvApq7d9Y4xl-6W4,13468
@@ -225,8 +229,8 @@ flwr/simulation/ray_transport/ray_actor.py,sha256=_wv2eP7qxkCZ-6rMyYWnjLrGPBZRxj
225
229
  flwr/simulation/ray_transport/ray_client_proxy.py,sha256=oDu4sEPIOu39vrNi-fqDAe10xtNUXMO49bM2RWfRcyw,6738
226
230
  flwr/simulation/ray_transport/utils.py,sha256=TYdtfg1P9VfTdLMOJlifInGpxWHYs9UfUqIv2wfkRLA,2392
227
231
  flwr/simulation/run_simulation.py,sha256=Jmc6DyN5UCY1U1PcDvL04NgYmEQ6ufJ1JisjG5yqfY8,15098
228
- flwr_nightly-1.9.0.dev20240529.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
229
- flwr_nightly-1.9.0.dev20240529.dist-info/METADATA,sha256=svdf1FFRDCtmH7_t3jh_AxQKYGJYLUbuLra-6r1gZuw,15517
230
- flwr_nightly-1.9.0.dev20240529.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
231
- flwr_nightly-1.9.0.dev20240529.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
232
- flwr_nightly-1.9.0.dev20240529.dist-info/RECORD,,
232
+ flwr_nightly-1.9.0.dev20240604.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
233
+ flwr_nightly-1.9.0.dev20240604.dist-info/METADATA,sha256=G_tlOA4q9i-3c_Wgs7qy1dqWOk0J6Ib5yu6UHp4EbWE,15517
234
+ flwr_nightly-1.9.0.dev20240604.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
235
+ flwr_nightly-1.9.0.dev20240604.dist-info/entry_points.txt,sha256=8JJPfpqMnXz9c5V_FSt07Xwd-wCWbAO3MFUDXQ5ZGsI,378
236
+ flwr_nightly-1.9.0.dev20240604.dist-info/RECORD,,