From 6a23be111a0ed0b98cd5471ca0091c9b8c273c34 Mon Sep 17 00:00:00 2001 From: Adam Narozniak <51029327+adam-narozniak@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:37:24 +0200 Subject: [PATCH 01/10] Add check wheel contents (#2119) Co-authored-by: Daniel J. Beutel --- dev/test-wheel.sh | 7 +++++++ pyproject.toml | 1 + 2 files changed, 8 insertions(+) diff --git a/dev/test-wheel.sh b/dev/test-wheel.sh index 68ce876955eb..98363ff35550 100755 --- a/dev/test-wheel.sh +++ b/dev/test-wheel.sh @@ -21,4 +21,11 @@ if [ -z "$(python -m pyroma ./ | grep 'Final rating: 10/10')" ]; then fi echo "Pyroma wheel check: done" +echo "Check-wheel-content wheel check: start" +# The ignore W002 is "Wheel contains duplicate files" +# It is required because of the autogenerated proto files +# There is no file-based ignore for this tool +check-wheel-contents ./dist/ --ignore W002 +echo "Check-wheel-content wheel check: done" + echo "- All wheel checks passed" diff --git a/pyproject.toml b/pyproject.toml index dfdd75ba11ab..d8d00cad1d54 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -117,6 +117,7 @@ mdformat-beautysh = "==0.1.1" mdformat-myst = "==0.1.5" twine = "==4.0.2" pyroma = "==4.2" +check-wheel-contents = "==0.4.0" GitPython = "==3.1.32" [tool.isort] From b9ae24aac0c7207eaf65ef3f800aef25df5925a7 Mon Sep 17 00:00:00 2001 From: Heng Pan <134433891+panh99@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:53:29 +0100 Subject: [PATCH 02/10] Change ID types from uint64 to sint64 (#2485) --- src/proto/flwr/proto/driver.proto | 4 ++-- src/proto/flwr/proto/node.proto | 2 +- src/proto/flwr/proto/task.proto | 4 ++-- src/py/flwr/proto/driver_pb2.py | 2 +- src/py/flwr/proto/node_pb2.py | 2 +- src/py/flwr/proto/task_pb2.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/proto/flwr/proto/driver.proto b/src/proto/flwr/proto/driver.proto index 1caaad88a0da..226862df5572 100644 --- a/src/proto/flwr/proto/driver.proto +++ b/src/proto/flwr/proto/driver.proto @@ -36,10 +36,10 @@ service Driver { // CreateWorkload message CreateWorkloadRequest {} -message CreateWorkloadResponse { uint64 workload_id = 1; } +message CreateWorkloadResponse { sint64 workload_id = 1; } // GetNodes messages -message GetNodesRequest { uint64 workload_id = 1; } +message GetNodesRequest { sint64 workload_id = 1; } message GetNodesResponse { repeated Node nodes = 1; } // PushTaskIns messages diff --git a/src/proto/flwr/proto/node.proto b/src/proto/flwr/proto/node.proto index a7ea6262b4c5..92263e0bd5ba 100644 --- a/src/proto/flwr/proto/node.proto +++ b/src/proto/flwr/proto/node.proto @@ -18,6 +18,6 @@ syntax = "proto3"; package flwr.proto; message Node { - uint64 node_id = 1; + sint64 node_id = 1; bool anonymous = 2; } diff --git a/src/proto/flwr/proto/task.proto b/src/proto/flwr/proto/task.proto index d87fb39c2637..26385f18ac61 100644 --- a/src/proto/flwr/proto/task.proto +++ b/src/proto/flwr/proto/task.proto @@ -36,14 +36,14 @@ message Task { message TaskIns { string task_id = 1; string group_id = 2; - uint64 workload_id = 3; + sint64 workload_id = 3; Task task = 4; } message TaskRes { string task_id = 1; string group_id = 2; - uint64 workload_id = 3; + sint64 workload_id = 3; Task task = 4; } diff --git a/src/py/flwr/proto/driver_pb2.py b/src/py/flwr/proto/driver_pb2.py index 6ac066d7eab3..c138507e03e9 100644 --- a/src/py/flwr/proto/driver_pb2.py +++ b/src/py/flwr/proto/driver_pb2.py @@ -16,7 +16,7 @@ from flwr.proto import task_pb2 as flwr_dot_proto_dot_task__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\"\x17\n\x15\x43reateWorkloadRequest\"-\n\x16\x43reateWorkloadResponse\x12\x13\n\x0bworkload_id\x18\x01 \x01(\x04\"&\n\x0fGetNodesRequest\x12\x13\n\x0bworkload_id\x18\x01 \x01(\x04\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"@\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"F\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes2\xd0\x02\n\x06\x44river\x12Y\n\x0e\x43reateWorkload\x12!.flwr.proto.CreateWorkloadRequest\x1a\".flwr.proto.CreateWorkloadResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66lwr/proto/driver.proto\x12\nflwr.proto\x1a\x15\x66lwr/proto/node.proto\x1a\x15\x66lwr/proto/task.proto\"\x17\n\x15\x43reateWorkloadRequest\"-\n\x16\x43reateWorkloadResponse\x12\x13\n\x0bworkload_id\x18\x01 \x01(\x12\"&\n\x0fGetNodesRequest\x12\x13\n\x0bworkload_id\x18\x01 \x01(\x12\"3\n\x10GetNodesResponse\x12\x1f\n\x05nodes\x18\x01 \x03(\x0b\x32\x10.flwr.proto.Node\"@\n\x12PushTaskInsRequest\x12*\n\rtask_ins_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskIns\"\'\n\x13PushTaskInsResponse\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"F\n\x12PullTaskResRequest\x12\x1e\n\x04node\x18\x01 \x01(\x0b\x32\x10.flwr.proto.Node\x12\x10\n\x08task_ids\x18\x02 \x03(\t\"A\n\x13PullTaskResResponse\x12*\n\rtask_res_list\x18\x01 \x03(\x0b\x32\x13.flwr.proto.TaskRes2\xd0\x02\n\x06\x44river\x12Y\n\x0e\x43reateWorkload\x12!.flwr.proto.CreateWorkloadRequest\x1a\".flwr.proto.CreateWorkloadResponse\"\x00\x12G\n\x08GetNodes\x12\x1b.flwr.proto.GetNodesRequest\x1a\x1c.flwr.proto.GetNodesResponse\"\x00\x12P\n\x0bPushTaskIns\x12\x1e.flwr.proto.PushTaskInsRequest\x1a\x1f.flwr.proto.PushTaskInsResponse\"\x00\x12P\n\x0bPullTaskRes\x12\x1e.flwr.proto.PullTaskResRequest\x1a\x1f.flwr.proto.PullTaskResResponse\"\x00\x62\x06proto3') diff --git a/src/py/flwr/proto/node_pb2.py b/src/py/flwr/proto/node_pb2.py index 7ecbc08bf4a9..9d91900d8f53 100644 --- a/src/py/flwr/proto/node_pb2.py +++ b/src/py/flwr/proto/node_pb2.py @@ -14,7 +14,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"*\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x11\n\tanonymous\x18\x02 \x01(\x08\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/node.proto\x12\nflwr.proto\"*\n\x04Node\x12\x0f\n\x07node_id\x18\x01 \x01(\x12\x12\x11\n\tanonymous\x18\x02 \x01(\x08\x62\x06proto3') diff --git a/src/py/flwr/proto/task_pb2.py b/src/py/flwr/proto/task_pb2.py index 69bad48d0d37..6d8cf8fd3656 100644 --- a/src/py/flwr/proto/task_pb2.py +++ b/src/py/flwr/proto/task_pb2.py @@ -16,7 +16,7 @@ from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2 -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\"\xbe\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)\n\x02sa\x18\x07 \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\"a\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x13\n\x0bworkload_id\x18\x03 \x01(\x04\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"a\n\x07TaskRes\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x13\n\x0bworkload_id\x18\x03 \x01(\x04\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') +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\"\xbe\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)\n\x02sa\x18\x07 \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\"a\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x13\n\x0bworkload_id\x18\x03 \x01(\x12\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"a\n\x07TaskRes\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x13\n\x0bworkload_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') From 6df3e86c8b46a818b113d293fa4f95f304ffa8e4 Mon Sep 17 00:00:00 2001 From: Adam Narozniak <51029327+adam-narozniak@users.noreply.github.com> Date: Sat, 7 Oct 2023 17:51:00 +0200 Subject: [PATCH 03/10] Fix return types in Strategy docs (#2432) --- doc/source/ref-changelog.md | 4 ++++ src/py/flwr/server/strategy/strategy.py | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index 7355b4123347..eefd215503f8 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -8,6 +8,10 @@ ### What's new? +- **Fix the incorrect return types of Strategy** ([#2432](https://github.com/adap/flower/pull/2432/files)) + + The types of the return values in the docstrings in two methods (`aggregate_fit` and `aggregate_evaluate`) now match the hint types in the code. + - **Unify client API** ([#2303](https://github.com/adap/flower/pull/2303)) Using the `client_fn`, Flower clients can interchangeably run as standalone processes (i.e. via `start_client`) or in simulation (i.e. via `start_simulation`) without requiring changes to how the client class is defined and instantiated. diff --git a/src/py/flwr/server/strategy/strategy.py b/src/py/flwr/server/strategy/strategy.py index 95d61993e02e..a2c774fe2506 100644 --- a/src/py/flwr/server/strategy/strategy.py +++ b/src/py/flwr/server/strategy/strategy.py @@ -95,7 +95,7 @@ def aggregate_fit( Returns ------- - parameters : Optional[Parameters] + parameters : Tuple[Optional[Parameters], Dict[str, Scalar]] If parameters are returned, then the server will treat these as the new global model parameters (i.e., it will replace the previous parameters with the ones returned from this method). If `None` is @@ -156,7 +156,7 @@ def aggregate_evaluate( Returns ------- - aggregation_result : Optional[float] + aggregation_result : Tuple[Optional[float], Dict[str, Scalar]] The aggregated evaluation result. Aggregation typically uses some variant of a weighted average. """ From c4a88765debffa20b4952c2f31f72c4617644df7 Mon Sep 17 00:00:00 2001 From: Heng Pan <134433891+panh99@users.noreply.github.com> Date: Sat, 7 Oct 2023 17:17:28 +0100 Subject: [PATCH 04/10] Move `node_id` generation into `State` (#2401) --- .../fleet/grpc_bidi/driver_client_manager.py | 15 ++++------- .../fleet/message_handler/message_handler.py | 12 +++------ .../message_handler/message_handler_test.py | 20 +++++++------- src/py/flwr/server/state/in_memory_state.py | 27 +++++++++++-------- src/py/flwr/server/state/sqlite_state.py | 24 +++++++++++------ src/py/flwr/server/state/state.py | 6 ++--- src/py/flwr/server/state/state_test.py | 22 +++++++-------- 7 files changed, 64 insertions(+), 62 deletions(-) diff --git a/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py b/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py index 55542d87654b..88265b0e1123 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py +++ b/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py @@ -15,7 +15,6 @@ """Flower DriverClientManager.""" -import random import threading from typing import Dict, List, Optional, Set, Tuple @@ -71,13 +70,9 @@ def register(self, client: ClientProxy) -> bool: if client.cid in self.nodes: return False - # Generate random integer ID - random_node_id: int = random.randrange(9223372036854775808) - client.node_id = random_node_id - - # Register node_id in with State + # Create node in State state: State = self.state_factory.state() - state.register_node(node_id=random_node_id) + client.node_id = state.create_node() # Create and start the instruction scheduler ins_scheduler = InsScheduler( @@ -87,7 +82,7 @@ def register(self, client: ClientProxy) -> bool: ins_scheduler.start() # Store cid, node_id, and InsScheduler - self.nodes[client.cid] = (random_node_id, ins_scheduler) + self.nodes[client.cid] = (client.node_id, ins_scheduler) with self._cv: self._cv.notify_all() @@ -108,9 +103,9 @@ def unregister(self, client: ClientProxy) -> None: del self.nodes[client.cid] ins_scheduler.stop() - # Unregister node_id in with State + # Delete node_id in State state: State = self.state_factory.state() - state.unregister_node(node_id=node_id) + state.delete_node(node_id=node_id) with self._cv: self._cv.notify_all() diff --git a/src/py/flwr/server/fleet/message_handler/message_handler.py b/src/py/flwr/server/fleet/message_handler/message_handler.py index 08b315f9b5de..da27976f112d 100644 --- a/src/py/flwr/server/fleet/message_handler/message_handler.py +++ b/src/py/flwr/server/fleet/message_handler/message_handler.py @@ -15,7 +15,6 @@ """Fleet API message handlers.""" -import random from typing import List, Optional from uuid import UUID @@ -40,12 +39,9 @@ def create_node( state: State, ) -> CreateNodeResponse: """.""" - # Generate random node_id - random_node_id: int = random.randrange(9223372036854775808) - - # Update state - state.register_node(node_id=random_node_id) - return CreateNodeResponse(node=Node(node_id=random_node_id, anonymous=False)) + # Create node + node_id = state.create_node() + return CreateNodeResponse(node=Node(node_id=node_id, anonymous=False)) def delete_node(request: DeleteNodeRequest, state: State) -> DeleteNodeResponse: @@ -55,7 +51,7 @@ def delete_node(request: DeleteNodeRequest, state: State) -> DeleteNodeResponse: return DeleteNodeResponse() # Update state - state.unregister_node(node_id=request.node.node_id) + state.delete_node(node_id=request.node.node_id) return DeleteNodeResponse() diff --git a/src/py/flwr/server/fleet/message_handler/message_handler_test.py b/src/py/flwr/server/fleet/message_handler/message_handler_test.py index da92b267f082..e5d889adeb3f 100644 --- a/src/py/flwr/server/fleet/message_handler/message_handler_test.py +++ b/src/py/flwr/server/fleet/message_handler/message_handler_test.py @@ -39,8 +39,8 @@ def test_create_node() -> None: create_node(request=request, state=state) # Assert - state.register_node.assert_called_once() - state.unregister_node.assert_not_called() + state.create_node.assert_called_once() + state.delete_node.assert_not_called() state.store_task_ins.assert_not_called() state.get_task_ins.assert_not_called() state.store_task_res.assert_not_called() @@ -57,8 +57,8 @@ def test_delete_node_failure() -> None: delete_node(request=request, state=state) # Assert - state.register_node.assert_not_called() - state.unregister_node.assert_not_called() + state.create_node.assert_not_called() + state.delete_node.assert_not_called() state.store_task_ins.assert_not_called() state.get_task_ins.assert_not_called() state.store_task_res.assert_not_called() @@ -75,8 +75,8 @@ def test_delete_node_success() -> None: delete_node(request=request, state=state) # Assert - state.register_node.assert_not_called() - state.unregister_node.assert_called_once() + state.create_node.assert_not_called() + state.delete_node.assert_called_once() state.store_task_ins.assert_not_called() state.get_task_ins.assert_not_called() state.store_task_res.assert_not_called() @@ -93,8 +93,8 @@ def test_pull_task_ins() -> None: pull_task_ins(request=request, state=state) # Assert - state.register_node.assert_not_called() - state.unregister_node.assert_not_called() + state.create_node.assert_not_called() + state.delete_node.assert_not_called() state.store_task_ins.assert_not_called() state.get_task_ins.assert_called_once() state.store_task_res.assert_not_called() @@ -120,8 +120,8 @@ def test_push_task_res() -> None: push_task_res(request=request, state=state) # Assert - state.register_node.assert_not_called() - state.unregister_node.assert_not_called() + state.create_node.assert_not_called() + state.delete_node.assert_not_called() state.store_task_ins.assert_not_called() state.get_task_ins.assert_not_called() state.store_task_res.assert_called_once() diff --git a/src/py/flwr/server/state/in_memory_state.py b/src/py/flwr/server/state/in_memory_state.py index d6292571cd6d..85515809bd4e 100644 --- a/src/py/flwr/server/state/in_memory_state.py +++ b/src/py/flwr/server/state/in_memory_state.py @@ -15,7 +15,7 @@ """In-memory State implementation.""" -import random +import os from datetime import datetime, timedelta from logging import ERROR from typing import Dict, List, Optional, Set @@ -182,16 +182,21 @@ def num_task_res(self) -> int: """ return len(self.task_res_store) - def register_node(self, node_id: int) -> None: - """Register a client node.""" - if node_id in self.node_ids: - raise ValueError(f"Node {node_id} is already registered") - self.node_ids.add(node_id) + def create_node(self) -> int: + """Create, store in state, and return `node_id`.""" + # Sample a random int64 as node_id + node_id: int = int.from_bytes(os.urandom(8), "little", signed=True) - def unregister_node(self, node_id: int) -> None: - """Unregister a client node.""" if node_id not in self.node_ids: - raise ValueError(f"Node {node_id} is not registered") + self.node_ids.add(node_id) + return node_id + log(ERROR, "Unexpected node registration failure.") + return 0 + + def delete_node(self, node_id: int) -> None: + """Delete a client node.""" + if node_id not in self.node_ids: + raise ValueError(f"Node {node_id} not found") self.node_ids.remove(node_id) def get_nodes(self, workload_id: int) -> Set[int]: @@ -208,8 +213,8 @@ def get_nodes(self, workload_id: int) -> Set[int]: def create_workload(self) -> int: """Create one workload.""" - # Sample random integer from 0 to 9223372036854775807 - workload_id: int = random.randrange(9223372036854775808) + # Sample a random int64 as workload_id + workload_id: int = int.from_bytes(os.urandom(8), "little", signed=True) if workload_id not in self.workload_ids: self.workload_ids.add(workload_id) diff --git a/src/py/flwr/server/state/sqlite_state.py b/src/py/flwr/server/state/sqlite_state.py index 0c853409b844..2f878443ccd1 100644 --- a/src/py/flwr/server/state/sqlite_state.py +++ b/src/py/flwr/server/state/sqlite_state.py @@ -15,7 +15,7 @@ """SQLite based implemenation of server state.""" -import random +import os import re import sqlite3 from datetime import datetime, timedelta @@ -469,13 +469,21 @@ def delete_tasks(self, task_ids: Set[UUID]) -> None: return None - def register_node(self, node_id: int) -> None: - """Store `node_id` in state.""" + def create_node(self) -> int: + """Create, store in state, and return `node_id`.""" + # Sample a random int64 as node_id + node_id: int = int.from_bytes(os.urandom(8), "little", signed=True) + query = "INSERT INTO node VALUES(:node_id);" - self.query(query, {"node_id": node_id}) + try: + self.query(query, {"node_id": node_id}) + except sqlite3.IntegrityError: + log(ERROR, "Unexpected node registration failure.") + return 0 + return node_id - def unregister_node(self, node_id: int) -> None: - """Remove `node_id` from state.""" + def delete_node(self, node_id: int) -> None: + """Delete a client node.""" query = "DELETE FROM node WHERE node_id = :node_id;" self.query(query, {"node_id": node_id}) @@ -500,8 +508,8 @@ def get_nodes(self, workload_id: int) -> Set[int]: def create_workload(self) -> int: """Create one workload and store it in state.""" - # Sample random integer from 0 to 9223372036854775807 - workload_id: int = random.randrange(9223372036854775808) + # Sample a random int64 as workload_id + workload_id: int = int.from_bytes(os.urandom(8), "little", signed=True) # Check conflicts query = "SELECT COUNT(*) FROM workload WHERE workload_id = ?;" diff --git a/src/py/flwr/server/state/state.py b/src/py/flwr/server/state/state.py index a0b9e663f637..1e08d9e4f5b7 100644 --- a/src/py/flwr/server/state/state.py +++ b/src/py/flwr/server/state/state.py @@ -132,11 +132,11 @@ def delete_tasks(self, task_ids: Set[UUID]) -> None: """Delete all delivered TaskIns/TaskRes pairs.""" @abc.abstractmethod - def register_node(self, node_id: int) -> None: - """Store `node_id` in state.""" + def create_node(self) -> int: + """Create, store in state, and return `node_id`.""" @abc.abstractmethod - def unregister_node(self, node_id: int) -> None: + def delete_node(self, node_id: int) -> None: """Remove `node_id` from state.""" @abc.abstractmethod diff --git a/src/py/flwr/server/state/state_test.py b/src/py/flwr/server/state/state_test.py index bc3015ba5cc2..11d6d2386a4e 100644 --- a/src/py/flwr/server/state/state_test.py +++ b/src/py/flwr/server/state/state_test.py @@ -326,32 +326,31 @@ def test_node_ids_initial_state(self) -> None: # Assert assert len(retrieved_node_ids) == 0 - def test_register_node_and_get_nodes(self) -> None: - """Test registering a client node.""" + def test_create_node_and_get_nodes(self) -> None: + """Test creating a client node.""" # Prepare state: State = self.state_factory() workload_id = state.create_workload() - node_ids = list(range(1, 11)) + node_ids = [] # Execute - for i in node_ids: - state.register_node(i) + for _ in range(10): + node_ids.append(state.create_node()) retrieved_node_ids = state.get_nodes(workload_id) # Assert for i in retrieved_node_ids: assert i in node_ids - def test_unregister_node(self) -> None: - """Test unregistering a client node.""" + def test_delete_node(self) -> None: + """Test deleting a client node.""" # Prepare state: State = self.state_factory() workload_id = state.create_workload() - node_id = 2 + node_id = state.create_node() # Execute - state.register_node(node_id) - state.unregister_node(node_id) + state.delete_node(node_id) retrieved_node_ids = state.get_nodes(workload_id) # Assert @@ -363,10 +362,9 @@ def test_get_nodes_invalid_workload_id(self) -> None: state: State = self.state_factory() state.create_workload() invalid_workload_id = 61016 - node_id = 2 + state.create_node() # Execute - state.register_node(node_id) retrieved_node_ids = state.get_nodes(invalid_workload_id) # Assert From 015dddac2de95ee53a6584153a24a3da6ef36eb6 Mon Sep 17 00:00:00 2001 From: "Daniel J. Beutel" Date: Sun, 8 Oct 2023 21:21:05 +0200 Subject: [PATCH 05/10] Upgrade mypy to 1.5.1 (#2487) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d8d00cad1d54..11910c305f9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,7 +86,7 @@ clang-format = "==16.0.6" isort = "==5.11.5" black = { version = "==23.3.0", extras = ["jupyter"] } docformatter = "==1.7.5" -mypy = "==1.4.1" +mypy = "==1.5.1" pylint = "==2.13.9" flake8 = "==3.9.2" pytest = "==7.4.0" From aa135fb4db445d8bc2030092ee51e6a32b825a56 Mon Sep 17 00:00:00 2001 From: Taner Topal Date: Sun, 8 Oct 2023 16:04:31 -0700 Subject: [PATCH 06/10] Fix issue with if condition in GitHub action (#2490) --- .github/workflows/docs.yml | 2 +- .github/workflows/e2e.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index da3a67fc155e..f8efc09e5120 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,7 +32,7 @@ jobs: - name: Build docs run: ./dev/build-docs.sh - name: Deploy docs - if: github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && ${{ !github.event.pull_request.head.repo.fork }} + if: ${{ github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }} env: AWS_DEFAULT_REGION: ${{ secrets. AWS_DEFAULT_REGION }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 3a58503ea66e..4168f5938f42 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -30,7 +30,7 @@ jobs: - name: Test wheel run: ./dev/test-wheel.sh - name: Upload wheel - if: github.repository == 'adap/flower' && ${{ !github.event.pull_request.head.repo.fork }} + if: ${{ github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }} id: upload env: AWS_DEFAULT_REGION: ${{ secrets. AWS_DEFAULT_REGION }} From 2c860469f560f7836c94d3129ddb05fd70e80f9a Mon Sep 17 00:00:00 2001 From: Charles Beauville Date: Mon, 9 Oct 2023 08:01:53 +0200 Subject: [PATCH 07/10] Fix E2E workflow (#2491) --- .github/workflows/e2e.yml | 4 ++-- .github/workflows/swift.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 4168f5938f42..238b9c0b862d 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -121,7 +121,7 @@ jobs: - name: Install dependencies run: python -m poetry install - name: Install Flower wheel from artifact store - if: github.repository == 'adap/flower' && ${{ !github.event.pull_request.head.repo.fork }} + if: ${{ github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }} run: | python -m pip install https://artifact.flower.dev/py/${{ github.head_ref }}/${{ needs.wheel.outputs.short_sha }}/${{ needs.wheel.outputs.whl_path }} - name: Download dataset @@ -156,7 +156,7 @@ jobs: run: | python -m poetry install - name: Install Flower wheel from artifact store - if: github.repository == 'adap/flower' && ${{ !github.event.pull_request.head.repo.fork }} + if: ${{ github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }} run: | python -m pip install https://artifact.flower.dev/py/${{ github.head_ref }}/${{ needs.wheel.outputs.short_sha }}/${{ needs.wheel.outputs.whl_path }} - name: Cache Datasets diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 9edd7f7ff6e1..7420566b85f5 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -40,7 +40,7 @@ jobs: deploy_docs: needs: "build_docs" - if: github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && ${{ !github.event.pull_request.head.repo.fork }} + if: ${{ github.ref == 'refs/heads/main' && github.repository == 'adap/flower' && !github.event.pull_request.head.repo.fork }} runs-on: macos-latest name: Deploy docs steps: From ebca16520631efa34787d43dd7ffae21af70cb76 Mon Sep 17 00:00:00 2001 From: Taner Topal Date: Mon, 9 Oct 2023 00:10:05 -0700 Subject: [PATCH 08/10] Fix the copyright notice in existing files (#2489) Co-authored-by: Daniel J. Beutel --- baselines/doc/source/conf.py | 4 ++-- baselines/flwr_baselines/flwr_baselines/dataset/__init__.py | 2 +- .../flwr_baselines/dataset/generator/__init__.py | 2 +- .../flwr_baselines/flwr_baselines/dataset/utils/__init__.py | 2 +- .../flwr_baselines/flwr_baselines/dataset/utils/common.py | 2 +- .../flwr_baselines/dataset/utils/common_test.py | 2 +- dev/aws-ami-bootstrap-tf.sh | 2 +- dev/aws-ami-bootstrap-torch.sh | 2 +- dev/build.sh | 2 +- dev/check-protos.sh | 2 +- dev/deploy-docs.sh | 2 +- dev/deploy-swift-docs.sh | 2 +- dev/publish-nightly.sh | 2 +- dev/publish.sh | 2 +- doc/locales/fr/LC_MESSAGES/sphinx.po | 2 +- doc/source/conf.py | 4 ++-- .../client/flower_tflite/src/main/proto/transport.proto | 2 +- examples/android/client/app/src/main/proto/transport.proto | 2 +- examples/doc/source/conf.py | 4 ++-- src/docker/build.sh | 2 +- src/proto/flwr/proto/driver.proto | 2 +- src/proto/flwr/proto/fleet.proto | 2 +- src/proto/flwr/proto/node.proto | 2 +- src/proto/flwr/proto/task.proto | 2 +- src/proto/flwr/proto/transport.proto | 2 +- src/py/flwr/__init__.py | 2 +- src/py/flwr/__init___test.py | 2 +- src/py/flwr/client/__init__.py | 2 +- src/py/flwr/client/app.py | 2 +- src/py/flwr/client/app_test.py | 2 +- src/py/flwr/client/client.py | 2 +- src/py/flwr/client/client_test.py | 2 +- src/py/flwr/client/dpfedavg_numpy_client.py | 2 +- src/py/flwr/client/grpc_client/__init__.py | 2 +- src/py/flwr/client/grpc_client/connection.py | 2 +- src/py/flwr/client/grpc_client/connection_test.py | 2 +- src/py/flwr/client/grpc_rere_client/__init__.py | 2 +- src/py/flwr/client/grpc_rere_client/connection.py | 2 +- src/py/flwr/client/message_handler/__init__.py | 2 +- src/py/flwr/client/message_handler/message_handler.py | 2 +- src/py/flwr/client/message_handler/message_handler_test.py | 2 +- src/py/flwr/client/message_handler/task_handler.py | 2 +- src/py/flwr/client/message_handler/task_handler_test.py | 2 +- src/py/flwr/client/numpy_client.py | 2 +- src/py/flwr/client/numpy_client_test.py | 2 +- src/py/flwr/client/rest_client/__init__.py | 2 +- src/py/flwr/client/rest_client/connection.py | 2 +- src/py/flwr/client/secure_aggregation/__init__.py | 2 +- src/py/flwr/client/secure_aggregation/handler.py | 2 +- src/py/flwr/client/secure_aggregation/secaggplus_handler.py | 2 +- .../flwr/client/secure_aggregation/secaggplus_handler_test.py | 2 +- src/py/flwr/common/__init__.py | 2 +- src/py/flwr/common/address.py | 2 +- src/py/flwr/common/address_test.py | 2 +- src/py/flwr/common/constant.py | 2 +- src/py/flwr/common/date.py | 2 +- src/py/flwr/common/dp.py | 2 +- src/py/flwr/common/grpc.py | 2 +- src/py/flwr/common/logger.py | 2 +- src/py/flwr/common/parameter.py | 2 +- src/py/flwr/common/parameter_test.py | 2 +- src/py/flwr/common/secure_aggregation/__init__.py | 2 +- src/py/flwr/common/secure_aggregation/crypto/__init__.py | 2 +- src/py/flwr/common/secure_aggregation/crypto/shamir.py | 2 +- .../common/secure_aggregation/crypto/symmetric_encryption.py | 2 +- src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py | 2 +- src/py/flwr/common/secure_aggregation/quantization.py | 2 +- src/py/flwr/common/secure_aggregation/secaggplus_constants.py | 2 +- src/py/flwr/common/secure_aggregation/secaggplus_utils.py | 2 +- src/py/flwr/common/serde.py | 2 +- src/py/flwr/common/serde_test.py | 2 +- src/py/flwr/common/telemetry.py | 2 +- src/py/flwr/common/telemetry_test.py | 2 +- src/py/flwr/common/typing.py | 2 +- src/py/flwr/driver/__init__.py | 2 +- src/py/flwr/driver/app.py | 2 +- src/py/flwr/driver/app_test.py | 2 +- src/py/flwr/driver/driver.py | 2 +- src/py/flwr/driver/driver_client_proxy.py | 2 +- src/py/flwr/driver/driver_client_proxy_test.py | 2 +- src/py/flwr/driver/driver_test.py | 2 +- src/py/flwr/proto/__init__.py | 2 +- src/py/flwr/server/__init__.py | 2 +- src/py/flwr/server/app.py | 2 +- src/py/flwr/server/client_manager.py | 2 +- src/py/flwr/server/client_manager_test.py | 2 +- src/py/flwr/server/client_proxy.py | 2 +- src/py/flwr/server/client_proxy_test.py | 2 +- src/py/flwr/server/criterion.py | 2 +- src/py/flwr/server/criterion_test.py | 2 +- src/py/flwr/server/driver/__init__.py | 2 +- src/py/flwr/server/driver/driver_servicer.py | 2 +- src/py/flwr/server/driver/driver_servicer_test.py | 2 +- src/py/flwr/server/fleet/__init__.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/__init__.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer.py | 2 +- .../server/fleet/grpc_bidi/flower_service_servicer_test.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_bridge.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_bridge_test.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy_test.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_server.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/grpc_server_test.py | 2 +- src/py/flwr/server/fleet/grpc_bidi/ins_scheduler.py | 2 +- src/py/flwr/server/fleet/grpc_rere/__init__.py | 2 +- src/py/flwr/server/fleet/grpc_rere/fleet_servicer.py | 2 +- src/py/flwr/server/fleet/message_handler/__init__.py | 2 +- src/py/flwr/server/fleet/message_handler/message_handler.py | 2 +- .../flwr/server/fleet/message_handler/message_handler_test.py | 2 +- src/py/flwr/server/fleet/rest_rere/__init__.py | 2 +- src/py/flwr/server/fleet/rest_rere/rest_api.py | 2 +- src/py/flwr/server/history.py | 2 +- src/py/flwr/server/history_test.py | 2 +- src/py/flwr/server/server.py | 2 +- src/py/flwr/server/server_test.py | 2 +- src/py/flwr/server/state/__init__.py | 2 +- src/py/flwr/server/state/in_memory_state.py | 2 +- src/py/flwr/server/state/sqlite_state.py | 2 +- src/py/flwr/server/state/sqlite_state_test.py | 2 +- src/py/flwr/server/state/state.py | 2 +- src/py/flwr/server/state/state_factory.py | 2 +- src/py/flwr/server/state/state_test.py | 2 +- src/py/flwr/server/strategy/__init__.py | 2 +- src/py/flwr/server/strategy/aggregate.py | 2 +- src/py/flwr/server/strategy/aggregate_test.py | 2 +- src/py/flwr/server/strategy/dpfedavg_adaptive.py | 2 +- src/py/flwr/server/strategy/dpfedavg_fixed.py | 2 +- src/py/flwr/server/strategy/fault_tolerant_fedavg.py | 2 +- src/py/flwr/server/strategy/fault_tolerant_fedavg_test.py | 2 +- src/py/flwr/server/strategy/fedadagrad.py | 2 +- src/py/flwr/server/strategy/fedadagrad_test.py | 2 +- src/py/flwr/server/strategy/fedadam.py | 2 +- src/py/flwr/server/strategy/fedavg.py | 2 +- src/py/flwr/server/strategy/fedavg_android.py | 2 +- src/py/flwr/server/strategy/fedavg_test.py | 2 +- src/py/flwr/server/strategy/fedavgm.py | 2 +- src/py/flwr/server/strategy/fedavgm_test.py | 2 +- src/py/flwr/server/strategy/fedmedian.py | 2 +- src/py/flwr/server/strategy/fedmedian_test.py | 2 +- src/py/flwr/server/strategy/fedopt.py | 2 +- src/py/flwr/server/strategy/fedprox.py | 2 +- src/py/flwr/server/strategy/fedxgb_nn_avg.py | 2 +- src/py/flwr/server/strategy/fedyogi.py | 2 +- src/py/flwr/server/strategy/krum.py | 2 +- src/py/flwr/server/strategy/krum_test.py | 2 +- src/py/flwr/server/strategy/multikrum_test.py | 2 +- src/py/flwr/server/strategy/qfedavg.py | 2 +- src/py/flwr/server/strategy/strategy.py | 2 +- src/py/flwr/server/utils/__init__.py | 2 +- src/py/flwr/server/utils/tensorboard.py | 2 +- src/py/flwr/server/utils/tensorboard_test.py | 2 +- src/py/flwr/server/utils/validator.py | 2 +- src/py/flwr/server/utils/validator_test.py | 2 +- src/py/flwr/simulation/__init__.py | 2 +- src/py/flwr/simulation/app.py | 2 +- src/py/flwr/simulation/ray_transport/__init__.py | 2 +- src/py/flwr/simulation/ray_transport/ray_client_proxy.py | 2 +- src/py/flwr_example/__init__.py | 2 +- src/py/flwr_example/pytorch_cifar/__init__.py | 2 +- src/py/flwr_example/pytorch_cifar/cifar.py | 2 +- src/py/flwr_example/pytorch_cifar/cifar_test.py | 2 +- src/py/flwr_example/pytorch_cifar/client.py | 2 +- src/py/flwr_example/pytorch_cifar/run-clients.sh | 2 +- src/py/flwr_example/pytorch_cifar/run-server.sh | 2 +- src/py/flwr_example/pytorch_cifar/server.py | 2 +- src/py/flwr_example/pytorch_imagenet/__init__.py | 2 +- src/py/flwr_example/pytorch_imagenet/client.py | 2 +- src/py/flwr_example/pytorch_imagenet/imagenet.py | 2 +- src/py/flwr_example/pytorch_imagenet/run-clients.sh | 2 +- src/py/flwr_example/pytorch_imagenet/run-server.sh | 2 +- src/py/flwr_example/pytorch_imagenet/server.py | 2 +- src/py/flwr_example/pytorch_save_weights/__init__.py | 2 +- src/py/flwr_example/pytorch_save_weights/cifar.py | 2 +- src/py/flwr_example/pytorch_save_weights/client.py | 2 +- src/py/flwr_example/pytorch_save_weights/run-clients.sh | 2 +- src/py/flwr_example/pytorch_save_weights/run-server.sh | 2 +- src/py/flwr_example/pytorch_save_weights/server.py | 2 +- src/py/flwr_example/quickstart_pytorch/client.py | 2 +- src/py/flwr_example/quickstart_pytorch/mnist.py | 2 +- src/py/flwr_example/quickstart_pytorch/run-clients.sh | 2 +- src/py/flwr_example/quickstart_pytorch/run-server.sh | 2 +- src/py/flwr_example/quickstart_pytorch/server.py | 2 +- src/py/flwr_example/quickstart_tensorflow/run-clients.sh | 2 +- src/py/flwr_example/quickstart_tensorflow/run-server.sh | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/__init__.py | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/client.py | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/download.py | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist.py | 2 +- .../tensorflow_fashion_mnist/fashion_mnist_test.py | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/run-clients.sh | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/run-server.sh | 2 +- src/py/flwr_example/tensorflow_fashion_mnist/server.py | 2 +- src/py/flwr_experimental/__init__.py | 2 +- src/py/flwr_experimental/baseline/__init__.py | 2 +- src/py/flwr_experimental/baseline/command.py | 2 +- src/py/flwr_experimental/baseline/common/__init__.py | 2 +- src/py/flwr_experimental/baseline/common/client.py | 2 +- src/py/flwr_experimental/baseline/common/common.py | 2 +- src/py/flwr_experimental/baseline/common/data.py | 2 +- src/py/flwr_experimental/baseline/config/__init__.py | 2 +- src/py/flwr_experimental/baseline/config/config.py | 2 +- src/py/flwr_experimental/baseline/config/config_test.py | 2 +- src/py/flwr_experimental/baseline/dataset/__init__.py | 2 +- src/py/flwr_experimental/baseline/dataset/dataset.py | 2 +- src/py/flwr_experimental/baseline/dataset/dataset_test.py | 2 +- .../baseline/dataset/tf_cifar_partitioned.py | 2 +- .../baseline/dataset/tf_cifar_partitioned_test.py | 2 +- .../baseline/dataset/tf_fashion_mnist_partitioned.py | 2 +- .../baseline/dataset/tf_fashion_mnist_partitioned_test.py | 2 +- .../baseline/dataset/tf_hotkey_partitioned.py | 2 +- src/py/flwr_experimental/baseline/ip.py | 2 +- src/py/flwr_experimental/baseline/model/__init__.py | 2 +- src/py/flwr_experimental/baseline/model/cnn.py | 2 +- src/py/flwr_experimental/baseline/model/cnn_test.py | 2 +- src/py/flwr_experimental/baseline/model/resnet.py | 2 +- src/py/flwr_experimental/baseline/plot/__init__.py | 2 +- src/py/flwr_experimental/baseline/plot/plot.py | 2 +- src/py/flwr_experimental/baseline/run.py | 2 +- src/py/flwr_experimental/baseline/run.sh | 2 +- src/py/flwr_experimental/baseline/setting.py | 2 +- src/py/flwr_experimental/baseline/tf_cifar/__init__.py | 2 +- src/py/flwr_experimental/baseline/tf_cifar/client.py | 2 +- src/py/flwr_experimental/baseline/tf_cifar/download.py | 2 +- src/py/flwr_experimental/baseline/tf_cifar/server.py | 2 +- src/py/flwr_experimental/baseline/tf_cifar/settings.py | 2 +- .../flwr_experimental/baseline/tf_fashion_mnist/__init__.py | 2 +- src/py/flwr_experimental/baseline/tf_fashion_mnist/client.py | 2 +- .../flwr_experimental/baseline/tf_fashion_mnist/download.py | 2 +- .../flwr_experimental/baseline/tf_fashion_mnist/fn_plots.py | 2 +- .../flwr_experimental/baseline/tf_fashion_mnist/gen_plots.py | 2 +- src/py/flwr_experimental/baseline/tf_fashion_mnist/server.py | 2 +- .../flwr_experimental/baseline/tf_fashion_mnist/settings.py | 2 +- src/py/flwr_experimental/baseline/tf_hotkey/__init__.py | 2 +- src/py/flwr_experimental/baseline/tf_hotkey/client.py | 2 +- src/py/flwr_experimental/baseline/tf_hotkey/download.py | 2 +- src/py/flwr_experimental/baseline/tf_hotkey/server.py | 2 +- src/py/flwr_experimental/baseline/tf_hotkey/settings.py | 2 +- src/py/flwr_experimental/logserver/__init__.py | 2 +- src/py/flwr_experimental/logserver/__main__.py | 2 +- src/py/flwr_experimental/logserver/server.py | 2 +- src/py/flwr_experimental/logserver/server_test.py | 2 +- src/py/flwr_experimental/ops/__init__.py | 2 +- src/py/flwr_experimental/ops/cluster.py | 2 +- src/py/flwr_experimental/ops/cluster_test.py | 2 +- src/py/flwr_experimental/ops/compute/__init__.py | 2 +- src/py/flwr_experimental/ops/compute/adapter.py | 2 +- src/py/flwr_experimental/ops/compute/docker_adapter.py | 2 +- src/py/flwr_experimental/ops/compute/docker_adapter_test.py | 2 +- src/py/flwr_experimental/ops/compute/ec2_adapter.py | 2 +- src/py/flwr_experimental/ops/compute/ec2_adapter_test.py | 2 +- src/py/flwr_experimental/ops/instance.py | 2 +- src/py/flwr_tool/__init__.py | 2 +- src/py/flwr_tool/init_py_check.py | 2 +- src/py/flwr_tool/protoc.py | 2 +- src/py/flwr_tool/protoc_test.py | 2 +- src/swift/flwr/Sources/Flower/FlowerProto/transport.pb.swift | 2 +- 257 files changed, 260 insertions(+), 260 deletions(-) diff --git a/baselines/doc/source/conf.py b/baselines/doc/source/conf.py index b9b89b24f58a..7ba9e8c9cc7d 100644 --- a/baselines/doc/source/conf.py +++ b/baselines/doc/source/conf.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,7 +32,7 @@ # -- Project information ----------------------------------------------------- project = "Flower" -copyright = "2022 Adap GmbH" +copyright = "2022 Flower Labs GmbH" author = "The Flower Authors" # The full version, including alpha/beta/rc tags diff --git a/baselines/flwr_baselines/flwr_baselines/dataset/__init__.py b/baselines/flwr_baselines/flwr_baselines/dataset/__init__.py index 3ad427581343..f4a2aff9b164 100644 --- a/baselines/flwr_baselines/flwr_baselines/dataset/__init__.py +++ b/baselines/flwr_baselines/flwr_baselines/dataset/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/baselines/flwr_baselines/flwr_baselines/dataset/generator/__init__.py b/baselines/flwr_baselines/flwr_baselines/dataset/generator/__init__.py index 362158276cc5..622dd6e648d8 100644 --- a/baselines/flwr_baselines/flwr_baselines/dataset/generator/__init__.py +++ b/baselines/flwr_baselines/flwr_baselines/dataset/generator/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/baselines/flwr_baselines/flwr_baselines/dataset/utils/__init__.py b/baselines/flwr_baselines/flwr_baselines/dataset/utils/__init__.py index ee4d0d1a1cb2..b45109671b5d 100644 --- a/baselines/flwr_baselines/flwr_baselines/dataset/utils/__init__.py +++ b/baselines/flwr_baselines/flwr_baselines/dataset/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/baselines/flwr_baselines/flwr_baselines/dataset/utils/common.py b/baselines/flwr_baselines/flwr_baselines/dataset/utils/common.py index 817201563fde..124c82588100 100644 --- a/baselines/flwr_baselines/flwr_baselines/dataset/utils/common.py +++ b/baselines/flwr_baselines/flwr_baselines/dataset/utils/common.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/baselines/flwr_baselines/flwr_baselines/dataset/utils/common_test.py b/baselines/flwr_baselines/flwr_baselines/dataset/utils/common_test.py index c919c60b12d6..6c32627d87af 100644 --- a/baselines/flwr_baselines/flwr_baselines/dataset/utils/common_test.py +++ b/baselines/flwr_baselines/flwr_baselines/dataset/utils/common_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/aws-ami-bootstrap-tf.sh b/dev/aws-ami-bootstrap-tf.sh index b7fae90be1a0..bece7d21f1a0 100755 --- a/dev/aws-ami-bootstrap-tf.sh +++ b/dev/aws-ami-bootstrap-tf.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/aws-ami-bootstrap-torch.sh b/dev/aws-ami-bootstrap-torch.sh index 511f73890e70..1c44cb09673d 100755 --- a/dev/aws-ami-bootstrap-torch.sh +++ b/dev/aws-ami-bootstrap-torch.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/build.sh b/dev/build.sh index a24fed8223d9..a257e9402dc3 100755 --- a/dev/build.sh +++ b/dev/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/check-protos.sh b/dev/check-protos.sh index 3bd0ca1f767f..4e9927bbab0b 100755 --- a/dev/check-protos.sh +++ b/dev/check-protos.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/deploy-docs.sh b/dev/deploy-docs.sh index 75b5010cc119..69fbd567baf3 100755 --- a/dev/deploy-docs.sh +++ b/dev/deploy-docs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/deploy-swift-docs.sh b/dev/deploy-swift-docs.sh index 36298fc0a5ae..5abe618f83d3 100755 --- a/dev/deploy-swift-docs.sh +++ b/dev/deploy-swift-docs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/publish-nightly.sh b/dev/publish-nightly.sh index a1378fb47eb8..2d2e82325fb9 100755 --- a/dev/publish-nightly.sh +++ b/dev/publish-nightly.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/dev/publish.sh b/dev/publish.sh index 7f368a6c24ba..fb4df1694530 100755 --- a/dev/publish.sh +++ b/dev/publish.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/doc/locales/fr/LC_MESSAGES/sphinx.po b/doc/locales/fr/LC_MESSAGES/sphinx.po index a82fcd1bfae2..28669f60bab6 100644 --- a/doc/locales/fr/LC_MESSAGES/sphinx.po +++ b/doc/locales/fr/LC_MESSAGES/sphinx.po @@ -1,5 +1,5 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022 Adap GmbH +# Copyright (C) 2022 Flower Labs GmbH # This file is distributed under the same license as the Flower package. # FIRST AUTHOR , 2023. # diff --git a/doc/source/conf.py b/doc/source/conf.py index 28787a7aca8c..87860e2c6e7b 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -81,7 +81,7 @@ # -- Project information ----------------------------------------------------- project = "Flower" -copyright = "2022 Adap GmbH" +copyright = "2022 Flower Labs GmbH" author = "The Flower Authors" # The full version, including alpha/beta/rc tags diff --git a/examples/android-kotlin/client/flower_tflite/src/main/proto/transport.proto b/examples/android-kotlin/client/flower_tflite/src/main/proto/transport.proto index 82ae5081bd02..1ba3a97639f5 100644 --- a/examples/android-kotlin/client/flower_tflite/src/main/proto/transport.proto +++ b/examples/android-kotlin/client/flower_tflite/src/main/proto/transport.proto @@ -1,4 +1,4 @@ -// Copyright 2020 Adap GmbH. All Rights Reserved. +// Copyright 2020 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/examples/android/client/app/src/main/proto/transport.proto b/examples/android/client/app/src/main/proto/transport.proto index 82ae5081bd02..1ba3a97639f5 100644 --- a/examples/android/client/app/src/main/proto/transport.proto +++ b/examples/android/client/app/src/main/proto/transport.proto @@ -1,4 +1,4 @@ -// Copyright 2020 Adap GmbH. All Rights Reserved. +// Copyright 2020 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/examples/doc/source/conf.py b/examples/doc/source/conf.py index c57f11a8c763..dcb1788ea336 100644 --- a/examples/doc/source/conf.py +++ b/examples/doc/source/conf.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ # -- Project information ----------------------------------------------------- project = "Flower" -copyright = "2022 Adap GmbH" +copyright = "2022 Flower Labs GmbH" author = "The Flower Authors" # The full version, including alpha/beta/rc tags diff --git a/src/docker/build.sh b/src/docker/build.sh index 428ed5c20ac3..ea6b643c1fb2 100755 --- a/src/docker/build.sh +++ b/src/docker/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/proto/flwr/proto/driver.proto b/src/proto/flwr/proto/driver.proto index 226862df5572..eb948217a4de 100644 --- a/src/proto/flwr/proto/driver.proto +++ b/src/proto/flwr/proto/driver.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Adap GmbH. All Rights Reserved. +// Copyright 2022 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/proto/flwr/proto/fleet.proto b/src/proto/flwr/proto/fleet.proto index 460fd7e6b372..c900a3b1148d 100644 --- a/src/proto/flwr/proto/fleet.proto +++ b/src/proto/flwr/proto/fleet.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Adap GmbH. All Rights Reserved. +// Copyright 2022 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/proto/flwr/proto/node.proto b/src/proto/flwr/proto/node.proto index 92263e0bd5ba..e61d44f0f783 100644 --- a/src/proto/flwr/proto/node.proto +++ b/src/proto/flwr/proto/node.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Adap GmbH. All Rights Reserved. +// Copyright 2022 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/proto/flwr/proto/task.proto b/src/proto/flwr/proto/task.proto index 26385f18ac61..2205ef2815c8 100644 --- a/src/proto/flwr/proto/task.proto +++ b/src/proto/flwr/proto/task.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Adap GmbH. All Rights Reserved. +// Copyright 2022 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/proto/flwr/proto/transport.proto b/src/proto/flwr/proto/transport.proto index ccbb1a2751b4..17a285ebe44b 100644 --- a/src/proto/flwr/proto/transport.proto +++ b/src/proto/flwr/proto/transport.proto @@ -1,4 +1,4 @@ -// Copyright 2020 Adap GmbH. All Rights Reserved. +// Copyright 2020 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/src/py/flwr/__init__.py b/src/py/flwr/__init__.py index bf3145c67410..d3cbf00747a4 100644 --- a/src/py/flwr/__init__.py +++ b/src/py/flwr/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/__init___test.py b/src/py/flwr/__init___test.py index 161c23f25345..61785d093b2d 100644 --- a/src/py/flwr/__init___test.py +++ b/src/py/flwr/__init___test.py @@ -1,4 +1,4 @@ -# Copyright 2021 Adap GmbH. All Rights Reserved. +# Copyright 2021 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/__init__.py b/src/py/flwr/client/__init__.py index aebc5f28a67e..4ec1082190f2 100644 --- a/src/py/flwr/client/__init__.py +++ b/src/py/flwr/client/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/app.py b/src/py/flwr/client/app.py index 7feae478ae0a..b4866bf60ead 100644 --- a/src/py/flwr/client/app.py +++ b/src/py/flwr/client/app.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/app_test.py b/src/py/flwr/client/app_test.py index 1c6e8104f544..6d1df4697a61 100644 --- a/src/py/flwr/client/app_test.py +++ b/src/py/flwr/client/app_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/client.py b/src/py/flwr/client/client.py index 8273817d45e8..a0ee3a3e94b8 100644 --- a/src/py/flwr/client/client.py +++ b/src/py/flwr/client/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/client_test.py b/src/py/flwr/client/client_test.py index 87a4205bfec4..373c676e5edc 100644 --- a/src/py/flwr/client/client_test.py +++ b/src/py/flwr/client/client_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/dpfedavg_numpy_client.py b/src/py/flwr/client/dpfedavg_numpy_client.py index 20b71728bdff..41b4d676df43 100644 --- a/src/py/flwr/client/dpfedavg_numpy_client.py +++ b/src/py/flwr/client/dpfedavg_numpy_client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/grpc_client/__init__.py b/src/py/flwr/client/grpc_client/__init__.py index 7925cf6de7c7..9e987e86b254 100644 --- a/src/py/flwr/client/grpc_client/__init__.py +++ b/src/py/flwr/client/grpc_client/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/grpc_client/connection.py b/src/py/flwr/client/grpc_client/connection.py index cc64ec9a268a..cbef4ef99051 100644 --- a/src/py/flwr/client/grpc_client/connection.py +++ b/src/py/flwr/client/grpc_client/connection.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/grpc_client/connection_test.py b/src/py/flwr/client/grpc_client/connection_test.py index 88fe1b4aa0a9..0485fa41db35 100644 --- a/src/py/flwr/client/grpc_client/connection_test.py +++ b/src/py/flwr/client/grpc_client/connection_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/grpc_rere_client/__init__.py b/src/py/flwr/client/grpc_rere_client/__init__.py index cdf3fb63ddf4..93903e725776 100644 --- a/src/py/flwr/client/grpc_rere_client/__init__.py +++ b/src/py/flwr/client/grpc_rere_client/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/grpc_rere_client/connection.py b/src/py/flwr/client/grpc_rere_client/connection.py index f1a2df233eb1..3dcc147e8eca 100644 --- a/src/py/flwr/client/grpc_rere_client/connection.py +++ b/src/py/flwr/client/grpc_rere_client/connection.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/message_handler/__init__.py b/src/py/flwr/client/message_handler/__init__.py index 571bdc403042..653563963de5 100644 --- a/src/py/flwr/client/message_handler/__init__.py +++ b/src/py/flwr/client/message_handler/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/message_handler/message_handler.py b/src/py/flwr/client/message_handler/message_handler.py index f50923450f62..b64158ea3a6c 100644 --- a/src/py/flwr/client/message_handler/message_handler.py +++ b/src/py/flwr/client/message_handler/message_handler.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/message_handler/message_handler_test.py b/src/py/flwr/client/message_handler/message_handler_test.py index 1fc2269ad75d..d9603101864f 100644 --- a/src/py/flwr/client/message_handler/message_handler_test.py +++ b/src/py/flwr/client/message_handler/message_handler_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/message_handler/task_handler.py b/src/py/flwr/client/message_handler/task_handler.py index b48c7433c1da..fc24539998c0 100644 --- a/src/py/flwr/client/message_handler/task_handler.py +++ b/src/py/flwr/client/message_handler/task_handler.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/message_handler/task_handler_test.py b/src/py/flwr/client/message_handler/task_handler_test.py index e1b7fac69d24..21f3a2ead98a 100644 --- a/src/py/flwr/client/message_handler/task_handler_test.py +++ b/src/py/flwr/client/message_handler/task_handler_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/numpy_client.py b/src/py/flwr/client/numpy_client.py index 6c3ae8566266..b535015a9c1f 100644 --- a/src/py/flwr/client/numpy_client.py +++ b/src/py/flwr/client/numpy_client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/numpy_client_test.py b/src/py/flwr/client/numpy_client_test.py index 1f4d301ecb4c..526098798e45 100644 --- a/src/py/flwr/client/numpy_client_test.py +++ b/src/py/flwr/client/numpy_client_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/rest_client/__init__.py b/src/py/flwr/client/rest_client/__init__.py index 2659915a0be3..c3485483ad35 100644 --- a/src/py/flwr/client/rest_client/__init__.py +++ b/src/py/flwr/client/rest_client/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/rest_client/connection.py b/src/py/flwr/client/rest_client/connection.py index 9d3a059bdce8..092e543bf55b 100644 --- a/src/py/flwr/client/rest_client/connection.py +++ b/src/py/flwr/client/rest_client/connection.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/secure_aggregation/__init__.py b/src/py/flwr/client/secure_aggregation/__init__.py index 5229d28764f0..37c816a390de 100644 --- a/src/py/flwr/client/secure_aggregation/__init__.py +++ b/src/py/flwr/client/secure_aggregation/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/secure_aggregation/handler.py b/src/py/flwr/client/secure_aggregation/handler.py index 16eb9bb6f715..487ed842c93f 100644 --- a/src/py/flwr/client/secure_aggregation/handler.py +++ b/src/py/flwr/client/secure_aggregation/handler.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/secure_aggregation/secaggplus_handler.py b/src/py/flwr/client/secure_aggregation/secaggplus_handler.py index d05fd61878a3..efbb00a9d916 100644 --- a/src/py/flwr/client/secure_aggregation/secaggplus_handler.py +++ b/src/py/flwr/client/secure_aggregation/secaggplus_handler.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/client/secure_aggregation/secaggplus_handler_test.py b/src/py/flwr/client/secure_aggregation/secaggplus_handler_test.py index 3411f2829028..9693a46af989 100644 --- a/src/py/flwr/client/secure_aggregation/secaggplus_handler_test.py +++ b/src/py/flwr/client/secure_aggregation/secaggplus_handler_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/__init__.py b/src/py/flwr/common/__init__.py index ec53b13b8398..2f45de45dfc3 100644 --- a/src/py/flwr/common/__init__.py +++ b/src/py/flwr/common/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/address.py b/src/py/flwr/common/address.py index d90160633f27..71b6d684597f 100644 --- a/src/py/flwr/common/address.py +++ b/src/py/flwr/common/address.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/address_test.py b/src/py/flwr/common/address_test.py index 1a001708df75..c12dd5fd289e 100644 --- a/src/py/flwr/common/address_test.py +++ b/src/py/flwr/common/address_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/constant.py b/src/py/flwr/common/constant.py index d27cd2bf287f..49802f2815be 100644 --- a/src/py/flwr/common/constant.py +++ b/src/py/flwr/common/constant.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/date.py b/src/py/flwr/common/date.py index f4071b88087d..f47ad5470106 100644 --- a/src/py/flwr/common/date.py +++ b/src/py/flwr/common/date.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/dp.py b/src/py/flwr/common/dp.py index 0cb3fadf4fb8..5030ad34805b 100644 --- a/src/py/flwr/common/dp.py +++ b/src/py/flwr/common/dp.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/grpc.py b/src/py/flwr/common/grpc.py index 35e13705d4e2..2857048f62a0 100644 --- a/src/py/flwr/common/grpc.py +++ b/src/py/flwr/common/grpc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/logger.py b/src/py/flwr/common/logger.py index 1c2192deb392..e543d6565878 100644 --- a/src/py/flwr/common/logger.py +++ b/src/py/flwr/common/logger.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/parameter.py b/src/py/flwr/common/parameter.py index f77d30f58b0d..eefd7abc19a8 100644 --- a/src/py/flwr/common/parameter.py +++ b/src/py/flwr/common/parameter.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/parameter_test.py b/src/py/flwr/common/parameter_test.py index a20d6cbb5b54..965038ead6d2 100644 --- a/src/py/flwr/common/parameter_test.py +++ b/src/py/flwr/common/parameter_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/__init__.py b/src/py/flwr/common/secure_aggregation/__init__.py index 51851528a47e..b4e0acc0c148 100644 --- a/src/py/flwr/common/secure_aggregation/__init__.py +++ b/src/py/flwr/common/secure_aggregation/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/crypto/__init__.py b/src/py/flwr/common/secure_aggregation/crypto/__init__.py index 4d7dc1943f00..2cb34493f7d0 100644 --- a/src/py/flwr/common/secure_aggregation/crypto/__init__.py +++ b/src/py/flwr/common/secure_aggregation/crypto/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/crypto/shamir.py b/src/py/flwr/common/secure_aggregation/crypto/shamir.py index 2f2821287b44..e56e21b89371 100644 --- a/src/py/flwr/common/secure_aggregation/crypto/shamir.py +++ b/src/py/flwr/common/secure_aggregation/crypto/shamir.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py b/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py index 5bcb7ec12255..844a93f3bde9 100644 --- a/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +++ b/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py b/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py index 1b7266268881..57afa56b7a08 100644 --- a/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +++ b/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/quantization.py b/src/py/flwr/common/secure_aggregation/quantization.py index f1abfdbbdb9b..56c25e2bd59c 100644 --- a/src/py/flwr/common/secure_aggregation/quantization.py +++ b/src/py/flwr/common/secure_aggregation/quantization.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/secaggplus_constants.py b/src/py/flwr/common/secure_aggregation/secaggplus_constants.py index 41220d6149a9..8dd21a6016f1 100644 --- a/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +++ b/src/py/flwr/common/secure_aggregation/secaggplus_constants.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/secure_aggregation/secaggplus_utils.py b/src/py/flwr/common/secure_aggregation/secaggplus_utils.py index 8293b0c08571..def677e9d5d9 100644 --- a/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +++ b/src/py/flwr/common/secure_aggregation/secaggplus_utils.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/serde.py b/src/py/flwr/common/serde.py index 04628556e826..c8c73e87e04a 100644 --- a/src/py/flwr/common/serde.py +++ b/src/py/flwr/common/serde.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/serde_test.py b/src/py/flwr/common/serde_test.py index f537cf071354..ba07890f4658 100644 --- a/src/py/flwr/common/serde_test.py +++ b/src/py/flwr/common/serde_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/telemetry.py b/src/py/flwr/common/telemetry.py index 9755a974ce21..d56726d83378 100644 --- a/src/py/flwr/common/telemetry.py +++ b/src/py/flwr/common/telemetry.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/telemetry_test.py b/src/py/flwr/common/telemetry_test.py index b22a0fffb150..006f4422bc1d 100644 --- a/src/py/flwr/common/telemetry_test.py +++ b/src/py/flwr/common/telemetry_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/common/typing.py b/src/py/flwr/common/typing.py index 4257bf8e3279..6c0266f5eec8 100644 --- a/src/py/flwr/common/typing.py +++ b/src/py/flwr/common/typing.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/__init__.py b/src/py/flwr/driver/__init__.py index 5295b484afc8..8c100e935f70 100644 --- a/src/py/flwr/driver/__init__.py +++ b/src/py/flwr/driver/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/app.py b/src/py/flwr/driver/app.py index f45104aa359d..eeacfc3d9ede 100644 --- a/src/py/flwr/driver/app.py +++ b/src/py/flwr/driver/app.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/app_test.py b/src/py/flwr/driver/app_test.py index 4fcd924f8432..91b4fd30bc4b 100644 --- a/src/py/flwr/driver/app_test.py +++ b/src/py/flwr/driver/app_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/driver.py b/src/py/flwr/driver/driver.py index 130cd2bbc707..8e029c1e1be1 100644 --- a/src/py/flwr/driver/driver.py +++ b/src/py/flwr/driver/driver.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/driver_client_proxy.py b/src/py/flwr/driver/driver_client_proxy.py index deb472458a15..b732cf66c220 100644 --- a/src/py/flwr/driver/driver_client_proxy.py +++ b/src/py/flwr/driver/driver_client_proxy.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/driver_client_proxy_test.py b/src/py/flwr/driver/driver_client_proxy_test.py index f413b8d8d99d..82b5b46d7810 100644 --- a/src/py/flwr/driver/driver_client_proxy_test.py +++ b/src/py/flwr/driver/driver_client_proxy_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/driver/driver_test.py b/src/py/flwr/driver/driver_test.py index 070d3219a5b4..ef2a17e8538d 100644 --- a/src/py/flwr/driver/driver_test.py +++ b/src/py/flwr/driver/driver_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/proto/__init__.py b/src/py/flwr/proto/__init__.py index a87c9e62f22a..b903538194ec 100644 --- a/src/py/flwr/proto/__init__.py +++ b/src/py/flwr/proto/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/__init__.py b/src/py/flwr/server/__init__.py index 7e97fcd25921..74abe8dd463c 100644 --- a/src/py/flwr/server/__init__.py +++ b/src/py/flwr/server/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/app.py b/src/py/flwr/server/app.py index 781791df7535..b8ad26585a1b 100644 --- a/src/py/flwr/server/app.py +++ b/src/py/flwr/server/app.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/client_manager.py b/src/py/flwr/server/client_manager.py index ccadf33daff4..7956e282bd2c 100644 --- a/src/py/flwr/server/client_manager.py +++ b/src/py/flwr/server/client_manager.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/client_manager_test.py b/src/py/flwr/server/client_manager_test.py index 7674cc550864..8145b9b2ab7f 100644 --- a/src/py/flwr/server/client_manager_test.py +++ b/src/py/flwr/server/client_manager_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/client_proxy.py b/src/py/flwr/server/client_proxy.py index 2ea015064f41..7d0547be304b 100644 --- a/src/py/flwr/server/client_proxy.py +++ b/src/py/flwr/server/client_proxy.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/client_proxy_test.py b/src/py/flwr/server/client_proxy_test.py index 7cb3e57150e7..266e4cbeb266 100644 --- a/src/py/flwr/server/client_proxy_test.py +++ b/src/py/flwr/server/client_proxy_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/criterion.py b/src/py/flwr/server/criterion.py index 6c01f88862c5..199a609104cb 100644 --- a/src/py/flwr/server/criterion.py +++ b/src/py/flwr/server/criterion.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/criterion_test.py b/src/py/flwr/server/criterion_test.py index 26c70db3275d..a7e5b62b5977 100644 --- a/src/py/flwr/server/criterion_test.py +++ b/src/py/flwr/server/criterion_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/driver/__init__.py b/src/py/flwr/server/driver/__init__.py index 508a7e63eaff..2bfe63e6065f 100644 --- a/src/py/flwr/server/driver/__init__.py +++ b/src/py/flwr/server/driver/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/driver/driver_servicer.py b/src/py/flwr/server/driver/driver_servicer.py index 87f871070b4a..f96b3b1262ac 100644 --- a/src/py/flwr/server/driver/driver_servicer.py +++ b/src/py/flwr/server/driver/driver_servicer.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/driver/driver_servicer_test.py b/src/py/flwr/server/driver/driver_servicer_test.py index 5e71a36b12e2..c432c026a632 100644 --- a/src/py/flwr/server/driver/driver_servicer_test.py +++ b/src/py/flwr/server/driver/driver_servicer_test.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/__init__.py b/src/py/flwr/server/fleet/__init__.py index 6b06784f0ddc..d3c3ef90163d 100644 --- a/src/py/flwr/server/fleet/__init__.py +++ b/src/py/flwr/server/fleet/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/__init__.py b/src/py/flwr/server/fleet/grpc_bidi/__init__.py index c6681f4ce675..bae8bc431edd 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/__init__.py +++ b/src/py/flwr/server/fleet/grpc_bidi/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py b/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py index 88265b0e1123..dc94bf3912d7 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py +++ b/src/py/flwr/server/fleet/grpc_bidi/driver_client_manager.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer.py b/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer.py index 96fc88944bfe..1f7a8e9259fc 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer.py +++ b/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer_test.py b/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer_test.py index 51f08e341962..64140ed274c9 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer_test.py +++ b/src/py/flwr/server/fleet/grpc_bidi/flower_service_servicer_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge.py index 9e4012e90700..6ae38ea3d805 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge_test.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge_test.py index a9f7bceed85e..18a2144072ed 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge_test.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_bridge_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy.py index 4ed4e7da197a..b9bc7330db31 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy_test.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy_test.py index b8816c34617a..329f29b3f616 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy_test.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_client_proxy_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_server.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_server.py index cb05bb8569a6..fc81e8eb8f4c 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_server.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/grpc_server_test.py b/src/py/flwr/server/fleet/grpc_bidi/grpc_server_test.py index 503896e24a5c..4cd093d6ab0f 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/grpc_server_test.py +++ b/src/py/flwr/server/fleet/grpc_bidi/grpc_server_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_bidi/ins_scheduler.py b/src/py/flwr/server/fleet/grpc_bidi/ins_scheduler.py index 9506c6f0ad5d..1c737d31c7fc 100644 --- a/src/py/flwr/server/fleet/grpc_bidi/ins_scheduler.py +++ b/src/py/flwr/server/fleet/grpc_bidi/ins_scheduler.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_rere/__init__.py b/src/py/flwr/server/fleet/grpc_rere/__init__.py index 03fe4b037d2d..61ab71d91400 100644 --- a/src/py/flwr/server/fleet/grpc_rere/__init__.py +++ b/src/py/flwr/server/fleet/grpc_rere/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/grpc_rere/fleet_servicer.py b/src/py/flwr/server/fleet/grpc_rere/fleet_servicer.py index 69a0ce2c7243..022470cffe8a 100644 --- a/src/py/flwr/server/fleet/grpc_rere/fleet_servicer.py +++ b/src/py/flwr/server/fleet/grpc_rere/fleet_servicer.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/message_handler/__init__.py b/src/py/flwr/server/fleet/message_handler/__init__.py index 93484bae3428..18b0f11fa6c5 100644 --- a/src/py/flwr/server/fleet/message_handler/__init__.py +++ b/src/py/flwr/server/fleet/message_handler/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/message_handler/message_handler.py b/src/py/flwr/server/fleet/message_handler/message_handler.py index da27976f112d..71876386f059 100644 --- a/src/py/flwr/server/fleet/message_handler/message_handler.py +++ b/src/py/flwr/server/fleet/message_handler/message_handler.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/message_handler/message_handler_test.py b/src/py/flwr/server/fleet/message_handler/message_handler_test.py index e5d889adeb3f..25fd822492f2 100644 --- a/src/py/flwr/server/fleet/message_handler/message_handler_test.py +++ b/src/py/flwr/server/fleet/message_handler/message_handler_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/rest_rere/__init__.py b/src/py/flwr/server/fleet/rest_rere/__init__.py index 45ded4d9ea33..a926f9ca0bfc 100644 --- a/src/py/flwr/server/fleet/rest_rere/__init__.py +++ b/src/py/flwr/server/fleet/rest_rere/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/fleet/rest_rere/rest_api.py b/src/py/flwr/server/fleet/rest_rere/rest_api.py index cb9ac7b2ebc5..cd1e47f24f00 100644 --- a/src/py/flwr/server/fleet/rest_rere/rest_api.py +++ b/src/py/flwr/server/fleet/rest_rere/rest_api.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/history.py b/src/py/flwr/server/history.py index 6dc4546e4445..ad5f5d0fc870 100644 --- a/src/py/flwr/server/history.py +++ b/src/py/flwr/server/history.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/history_test.py b/src/py/flwr/server/history_test.py index 338b06cc89e6..adb9d697e409 100644 --- a/src/py/flwr/server/history_test.py +++ b/src/py/flwr/server/history_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/server.py b/src/py/flwr/server/server.py index 279914e801d6..cf3a4d9aa07c 100644 --- a/src/py/flwr/server/server.py +++ b/src/py/flwr/server/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/server_test.py b/src/py/flwr/server/server_test.py index 00dabd16d8d2..63ec1021ff5c 100644 --- a/src/py/flwr/server/server_test.py +++ b/src/py/flwr/server/server_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/__init__.py b/src/py/flwr/server/state/__init__.py index eb5185d95038..7f260d733bbe 100644 --- a/src/py/flwr/server/state/__init__.py +++ b/src/py/flwr/server/state/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/in_memory_state.py b/src/py/flwr/server/state/in_memory_state.py index 85515809bd4e..384839b7461f 100644 --- a/src/py/flwr/server/state/in_memory_state.py +++ b/src/py/flwr/server/state/in_memory_state.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/sqlite_state.py b/src/py/flwr/server/state/sqlite_state.py index 2f878443ccd1..7bc323f17929 100644 --- a/src/py/flwr/server/state/sqlite_state.py +++ b/src/py/flwr/server/state/sqlite_state.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/sqlite_state_test.py b/src/py/flwr/server/state/sqlite_state_test.py index b9c0df9ed134..da8fead1438e 100644 --- a/src/py/flwr/server/state/sqlite_state_test.py +++ b/src/py/flwr/server/state/sqlite_state_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/state.py b/src/py/flwr/server/state/state.py index 1e08d9e4f5b7..fd8bbc8e8e25 100644 --- a/src/py/flwr/server/state/state.py +++ b/src/py/flwr/server/state/state.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/state_factory.py b/src/py/flwr/server/state/state_factory.py index c980b6ce6761..62a00d910828 100644 --- a/src/py/flwr/server/state/state_factory.py +++ b/src/py/flwr/server/state/state_factory.py @@ -1,4 +1,4 @@ -# Copyright 2022 Adap GmbH. All Rights Reserved. +# Copyright 2022 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/state/state_test.py b/src/py/flwr/server/state/state_test.py index 11d6d2386a4e..59299451c3d8 100644 --- a/src/py/flwr/server/state/state_test.py +++ b/src/py/flwr/server/state/state_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/__init__.py b/src/py/flwr/server/strategy/__init__.py index f14fd0540893..72429694bfe7 100644 --- a/src/py/flwr/server/strategy/__init__.py +++ b/src/py/flwr/server/strategy/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/aggregate.py b/src/py/flwr/server/strategy/aggregate.py index c80da3ff37a2..42390a08a110 100644 --- a/src/py/flwr/server/strategy/aggregate.py +++ b/src/py/flwr/server/strategy/aggregate.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/aggregate_test.py b/src/py/flwr/server/strategy/aggregate_test.py index 6e6c2578eb35..81cc7189b14d 100644 --- a/src/py/flwr/server/strategy/aggregate_test.py +++ b/src/py/flwr/server/strategy/aggregate_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/dpfedavg_adaptive.py b/src/py/flwr/server/strategy/dpfedavg_adaptive.py index f331bca45c53..3269735e9d73 100644 --- a/src/py/flwr/server/strategy/dpfedavg_adaptive.py +++ b/src/py/flwr/server/strategy/dpfedavg_adaptive.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/dpfedavg_fixed.py b/src/py/flwr/server/strategy/dpfedavg_fixed.py index 43dc2249736e..0154cfd79fc5 100644 --- a/src/py/flwr/server/strategy/dpfedavg_fixed.py +++ b/src/py/flwr/server/strategy/dpfedavg_fixed.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fault_tolerant_fedavg.py b/src/py/flwr/server/strategy/fault_tolerant_fedavg.py index 9bd6e2d24d2e..663ac8872c39 100644 --- a/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +++ b/src/py/flwr/server/strategy/fault_tolerant_fedavg.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fault_tolerant_fedavg_test.py b/src/py/flwr/server/strategy/fault_tolerant_fedavg_test.py index 92dd05179579..98f4cac032cb 100644 --- a/src/py/flwr/server/strategy/fault_tolerant_fedavg_test.py +++ b/src/py/flwr/server/strategy/fault_tolerant_fedavg_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedadagrad.py b/src/py/flwr/server/strategy/fedadagrad.py index 06ec06c7fa59..085362891d94 100644 --- a/src/py/flwr/server/strategy/fedadagrad.py +++ b/src/py/flwr/server/strategy/fedadagrad.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedadagrad_test.py b/src/py/flwr/server/strategy/fedadagrad_test.py index 6a47ca39b062..b3380a5be2f9 100644 --- a/src/py/flwr/server/strategy/fedadagrad_test.py +++ b/src/py/flwr/server/strategy/fedadagrad_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedadam.py b/src/py/flwr/server/strategy/fedadam.py index afdeb9a55984..ca6229029376 100644 --- a/src/py/flwr/server/strategy/fedadam.py +++ b/src/py/flwr/server/strategy/fedadam.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedavg.py b/src/py/flwr/server/strategy/fedavg.py index 2e8fb41b4acd..86afd31e2bfb 100644 --- a/src/py/flwr/server/strategy/fedavg.py +++ b/src/py/flwr/server/strategy/fedavg.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedavg_android.py b/src/py/flwr/server/strategy/fedavg_android.py index c810dc65ad1b..377397678e38 100644 --- a/src/py/flwr/server/strategy/fedavg_android.py +++ b/src/py/flwr/server/strategy/fedavg_android.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedavg_test.py b/src/py/flwr/server/strategy/fedavg_test.py index dd7fdf0ab157..947736f4a571 100644 --- a/src/py/flwr/server/strategy/fedavg_test.py +++ b/src/py/flwr/server/strategy/fedavg_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedavgm.py b/src/py/flwr/server/strategy/fedavgm.py index 3023c20bce64..37cccd01479c 100644 --- a/src/py/flwr/server/strategy/fedavgm.py +++ b/src/py/flwr/server/strategy/fedavgm.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedavgm_test.py b/src/py/flwr/server/strategy/fedavgm_test.py index dad76fd1d055..a0e942171627 100644 --- a/src/py/flwr/server/strategy/fedavgm_test.py +++ b/src/py/flwr/server/strategy/fedavgm_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedmedian.py b/src/py/flwr/server/strategy/fedmedian.py index 28b57a1ab257..7a5bf1425b44 100644 --- a/src/py/flwr/server/strategy/fedmedian.py +++ b/src/py/flwr/server/strategy/fedmedian.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedmedian_test.py b/src/py/flwr/server/strategy/fedmedian_test.py index 1e494ee91392..180503df6c80 100644 --- a/src/py/flwr/server/strategy/fedmedian_test.py +++ b/src/py/flwr/server/strategy/fedmedian_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedopt.py b/src/py/flwr/server/strategy/fedopt.py index 23f2a8bd2d50..78dd92061c07 100644 --- a/src/py/flwr/server/strategy/fedopt.py +++ b/src/py/flwr/server/strategy/fedopt.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedprox.py b/src/py/flwr/server/strategy/fedprox.py index 2ef1b6d60a29..b2e3db7c31f4 100644 --- a/src/py/flwr/server/strategy/fedprox.py +++ b/src/py/flwr/server/strategy/fedprox.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedxgb_nn_avg.py b/src/py/flwr/server/strategy/fedxgb_nn_avg.py index 0f6585ed09df..020e0ef71267 100644 --- a/src/py/flwr/server/strategy/fedxgb_nn_avg.py +++ b/src/py/flwr/server/strategy/fedxgb_nn_avg.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/fedyogi.py b/src/py/flwr/server/strategy/fedyogi.py index 19afae1d599f..245090534c7c 100644 --- a/src/py/flwr/server/strategy/fedyogi.py +++ b/src/py/flwr/server/strategy/fedyogi.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/krum.py b/src/py/flwr/server/strategy/krum.py index fecc789680c4..d7f15531902f 100644 --- a/src/py/flwr/server/strategy/krum.py +++ b/src/py/flwr/server/strategy/krum.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/krum_test.py b/src/py/flwr/server/strategy/krum_test.py index d97045bfc76f..81e59230739a 100644 --- a/src/py/flwr/server/strategy/krum_test.py +++ b/src/py/flwr/server/strategy/krum_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/multikrum_test.py b/src/py/flwr/server/strategy/multikrum_test.py index bc5eaf7615cb..1469db104252 100644 --- a/src/py/flwr/server/strategy/multikrum_test.py +++ b/src/py/flwr/server/strategy/multikrum_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/qfedavg.py b/src/py/flwr/server/strategy/qfedavg.py index 7946ab579d84..94a67fbcbfae 100644 --- a/src/py/flwr/server/strategy/qfedavg.py +++ b/src/py/flwr/server/strategy/qfedavg.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/strategy/strategy.py b/src/py/flwr/server/strategy/strategy.py index a2c774fe2506..cfdfe2e246c5 100644 --- a/src/py/flwr/server/strategy/strategy.py +++ b/src/py/flwr/server/strategy/strategy.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/utils/__init__.py b/src/py/flwr/server/utils/__init__.py index d55e3dbf1fe9..c370716adaac 100644 --- a/src/py/flwr/server/utils/__init__.py +++ b/src/py/flwr/server/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/utils/tensorboard.py b/src/py/flwr/server/utils/tensorboard.py index e69e31079b55..3e8d1e62411e 100644 --- a/src/py/flwr/server/utils/tensorboard.py +++ b/src/py/flwr/server/utils/tensorboard.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/utils/tensorboard_test.py b/src/py/flwr/server/utils/tensorboard_test.py index bf2526f47220..1827a42cf6e6 100644 --- a/src/py/flwr/server/utils/tensorboard_test.py +++ b/src/py/flwr/server/utils/tensorboard_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/utils/validator.py b/src/py/flwr/server/utils/validator.py index f83a8245edb7..fd89a01e4a4e 100644 --- a/src/py/flwr/server/utils/validator.py +++ b/src/py/flwr/server/utils/validator.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/server/utils/validator_test.py b/src/py/flwr/server/utils/validator_test.py index 54840731048f..cab51fbf46de 100644 --- a/src/py/flwr/server/utils/validator_test.py +++ b/src/py/flwr/server/utils/validator_test.py @@ -1,4 +1,4 @@ -# Copyright 2023 Adap GmbH. All Rights Reserved. +# Copyright 2023 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/simulation/__init__.py b/src/py/flwr/simulation/__init__.py index d8effdf40e1b..724ea9273916 100644 --- a/src/py/flwr/simulation/__init__.py +++ b/src/py/flwr/simulation/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/simulation/app.py b/src/py/flwr/simulation/app.py index 5c7a3e7423a3..bfa72debaae4 100644 --- a/src/py/flwr/simulation/app.py +++ b/src/py/flwr/simulation/app.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/simulation/ray_transport/__init__.py b/src/py/flwr/simulation/ray_transport/__init__.py index ac1668fa1166..0e82b75bb4b3 100644 --- a/src/py/flwr/simulation/ray_transport/__init__.py +++ b/src/py/flwr/simulation/ray_transport/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr/simulation/ray_transport/ray_client_proxy.py b/src/py/flwr/simulation/ray_transport/ray_client_proxy.py index 482ae314aadd..0365cce073b4 100644 --- a/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +++ b/src/py/flwr/simulation/ray_transport/ray_client_proxy.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/__init__.py b/src/py/flwr_example/__init__.py index 5bd3efe97198..cd2e721e36b5 100644 --- a/src/py/flwr_example/__init__.py +++ b/src/py/flwr_example/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/__init__.py b/src/py/flwr_example/pytorch_cifar/__init__.py index 1304ca888f47..e1a6d4c2e25e 100644 --- a/src/py/flwr_example/pytorch_cifar/__init__.py +++ b/src/py/flwr_example/pytorch_cifar/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/cifar.py b/src/py/flwr_example/pytorch_cifar/cifar.py index 6c83ba041ba8..279e635de356 100644 --- a/src/py/flwr_example/pytorch_cifar/cifar.py +++ b/src/py/flwr_example/pytorch_cifar/cifar.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/cifar_test.py b/src/py/flwr_example/pytorch_cifar/cifar_test.py index 12b0f047fd39..e9f908531020 100644 --- a/src/py/flwr_example/pytorch_cifar/cifar_test.py +++ b/src/py/flwr_example/pytorch_cifar/cifar_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/client.py b/src/py/flwr_example/pytorch_cifar/client.py index 18a4bf93f36a..369e6a84377d 100644 --- a/src/py/flwr_example/pytorch_cifar/client.py +++ b/src/py/flwr_example/pytorch_cifar/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/run-clients.sh b/src/py/flwr_example/pytorch_cifar/run-clients.sh index 7d3fb2ee0e74..de2c6e0d0cb4 100755 --- a/src/py/flwr_example/pytorch_cifar/run-clients.sh +++ b/src/py/flwr_example/pytorch_cifar/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/run-server.sh b/src/py/flwr_example/pytorch_cifar/run-server.sh index d355919b4ff1..6bb0d6148bc3 100755 --- a/src/py/flwr_example/pytorch_cifar/run-server.sh +++ b/src/py/flwr_example/pytorch_cifar/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_cifar/server.py b/src/py/flwr_example/pytorch_cifar/server.py index 84348ee92595..5acb4a114b44 100644 --- a/src/py/flwr_example/pytorch_cifar/server.py +++ b/src/py/flwr_example/pytorch_cifar/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/__init__.py b/src/py/flwr_example/pytorch_imagenet/__init__.py index 17c58ac20cbd..5a78f1f627df 100644 --- a/src/py/flwr_example/pytorch_imagenet/__init__.py +++ b/src/py/flwr_example/pytorch_imagenet/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/client.py b/src/py/flwr_example/pytorch_imagenet/client.py index 6a878b3f9d88..72732edee6ef 100644 --- a/src/py/flwr_example/pytorch_imagenet/client.py +++ b/src/py/flwr_example/pytorch_imagenet/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/imagenet.py b/src/py/flwr_example/pytorch_imagenet/imagenet.py index 1d55bc1368fd..20ec24fd85bf 100644 --- a/src/py/flwr_example/pytorch_imagenet/imagenet.py +++ b/src/py/flwr_example/pytorch_imagenet/imagenet.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/run-clients.sh b/src/py/flwr_example/pytorch_imagenet/run-clients.sh index 13b689743816..f907ac67db12 100755 --- a/src/py/flwr_example/pytorch_imagenet/run-clients.sh +++ b/src/py/flwr_example/pytorch_imagenet/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/run-server.sh b/src/py/flwr_example/pytorch_imagenet/run-server.sh index ea2e28b683ce..cd6909202d6f 100755 --- a/src/py/flwr_example/pytorch_imagenet/run-server.sh +++ b/src/py/flwr_example/pytorch_imagenet/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_imagenet/server.py b/src/py/flwr_example/pytorch_imagenet/server.py index cb640b1d4275..cde8a3d572fd 100644 --- a/src/py/flwr_example/pytorch_imagenet/server.py +++ b/src/py/flwr_example/pytorch_imagenet/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/__init__.py b/src/py/flwr_example/pytorch_save_weights/__init__.py index 1fbf4e2fe44e..7a4638952123 100644 --- a/src/py/flwr_example/pytorch_save_weights/__init__.py +++ b/src/py/flwr_example/pytorch_save_weights/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/cifar.py b/src/py/flwr_example/pytorch_save_weights/cifar.py index e7731e88ea09..e9fb0552a054 100644 --- a/src/py/flwr_example/pytorch_save_weights/cifar.py +++ b/src/py/flwr_example/pytorch_save_weights/cifar.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/client.py b/src/py/flwr_example/pytorch_save_weights/client.py index bd1b53f1ebf4..6f35fdb881c3 100644 --- a/src/py/flwr_example/pytorch_save_weights/client.py +++ b/src/py/flwr_example/pytorch_save_weights/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/run-clients.sh b/src/py/flwr_example/pytorch_save_weights/run-clients.sh index 5d4e09f37129..9065415148a0 100755 --- a/src/py/flwr_example/pytorch_save_weights/run-clients.sh +++ b/src/py/flwr_example/pytorch_save_weights/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/run-server.sh b/src/py/flwr_example/pytorch_save_weights/run-server.sh index c8464e204316..0464c371169c 100755 --- a/src/py/flwr_example/pytorch_save_weights/run-server.sh +++ b/src/py/flwr_example/pytorch_save_weights/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/pytorch_save_weights/server.py b/src/py/flwr_example/pytorch_save_weights/server.py index d6672d7a71c7..ede93e268c17 100644 --- a/src/py/flwr_example/pytorch_save_weights/server.py +++ b/src/py/flwr_example/pytorch_save_weights/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_pytorch/client.py b/src/py/flwr_example/quickstart_pytorch/client.py index 678e95269e0d..fc675f123cc8 100644 --- a/src/py/flwr_example/quickstart_pytorch/client.py +++ b/src/py/flwr_example/quickstart_pytorch/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_pytorch/mnist.py b/src/py/flwr_example/quickstart_pytorch/mnist.py index ccb04a9a35dd..9a65145e6ca3 100644 --- a/src/py/flwr_example/quickstart_pytorch/mnist.py +++ b/src/py/flwr_example/quickstart_pytorch/mnist.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_pytorch/run-clients.sh b/src/py/flwr_example/quickstart_pytorch/run-clients.sh index 699a1f12a8ce..f53d63dc6168 100755 --- a/src/py/flwr_example/quickstart_pytorch/run-clients.sh +++ b/src/py/flwr_example/quickstart_pytorch/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_pytorch/run-server.sh b/src/py/flwr_example/quickstart_pytorch/run-server.sh index e3da22525478..29cb8cf7caf7 100755 --- a/src/py/flwr_example/quickstart_pytorch/run-server.sh +++ b/src/py/flwr_example/quickstart_pytorch/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_pytorch/server.py b/src/py/flwr_example/quickstart_pytorch/server.py index 52a10eb53d2c..b8cc1e15aca1 100644 --- a/src/py/flwr_example/quickstart_pytorch/server.py +++ b/src/py/flwr_example/quickstart_pytorch/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_tensorflow/run-clients.sh b/src/py/flwr_example/quickstart_tensorflow/run-clients.sh index 7323a46c248e..5747bfe5fe1b 100755 --- a/src/py/flwr_example/quickstart_tensorflow/run-clients.sh +++ b/src/py/flwr_example/quickstart_tensorflow/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/quickstart_tensorflow/run-server.sh b/src/py/flwr_example/quickstart_tensorflow/run-server.sh index 0262da90fcde..030167972ac0 100755 --- a/src/py/flwr_example/quickstart_tensorflow/run-server.sh +++ b/src/py/flwr_example/quickstart_tensorflow/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/__init__.py b/src/py/flwr_example/tensorflow_fashion_mnist/__init__.py index 035cd6fb6a5d..3370fa33e781 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/__init__.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/client.py b/src/py/flwr_example/tensorflow_fashion_mnist/client.py index 4688a064af8c..bcee031163e1 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/client.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/download.py b/src/py/flwr_example/tensorflow_fashion_mnist/download.py index 385590c57699..c2f0eb580cf0 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/download.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/download.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist.py b/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist.py index 6187decddf22..6c7ad2eead79 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist_test.py b/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist_test.py index bd9b41fb9d31..1213410fbc34 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist_test.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/fashion_mnist_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/run-clients.sh b/src/py/flwr_example/tensorflow_fashion_mnist/run-clients.sh index a34232ec699d..732688b9be08 100755 --- a/src/py/flwr_example/tensorflow_fashion_mnist/run-clients.sh +++ b/src/py/flwr_example/tensorflow_fashion_mnist/run-clients.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/run-server.sh b/src/py/flwr_example/tensorflow_fashion_mnist/run-server.sh index f47446f54595..d80f3c8b30ce 100755 --- a/src/py/flwr_example/tensorflow_fashion_mnist/run-server.sh +++ b/src/py/flwr_example/tensorflow_fashion_mnist/run-server.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_example/tensorflow_fashion_mnist/server.py b/src/py/flwr_example/tensorflow_fashion_mnist/server.py index 493f56c5fa9d..f16da1e4bc93 100644 --- a/src/py/flwr_example/tensorflow_fashion_mnist/server.py +++ b/src/py/flwr_example/tensorflow_fashion_mnist/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/__init__.py b/src/py/flwr_experimental/__init__.py index b614793e9309..1e9952588480 100644 --- a/src/py/flwr_experimental/__init__.py +++ b/src/py/flwr_experimental/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/__init__.py b/src/py/flwr_experimental/baseline/__init__.py index 9033f2402f9e..b2fefc3f319d 100644 --- a/src/py/flwr_experimental/baseline/__init__.py +++ b/src/py/flwr_experimental/baseline/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/command.py b/src/py/flwr_experimental/baseline/command.py index 2006fedd7a94..a776347bacf6 100644 --- a/src/py/flwr_experimental/baseline/command.py +++ b/src/py/flwr_experimental/baseline/command.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/common/__init__.py b/src/py/flwr_experimental/baseline/common/__init__.py index 462e85995fc9..706d2c41cb69 100644 --- a/src/py/flwr_experimental/baseline/common/__init__.py +++ b/src/py/flwr_experimental/baseline/common/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/common/client.py b/src/py/flwr_experimental/baseline/common/client.py index f74f3418fae7..18346218d919 100644 --- a/src/py/flwr_experimental/baseline/common/client.py +++ b/src/py/flwr_experimental/baseline/common/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/common/common.py b/src/py/flwr_experimental/baseline/common/common.py index fea900105a13..7be848f96d79 100644 --- a/src/py/flwr_experimental/baseline/common/common.py +++ b/src/py/flwr_experimental/baseline/common/common.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/common/data.py b/src/py/flwr_experimental/baseline/common/data.py index fad1b7d8cc92..7d939d608310 100644 --- a/src/py/flwr_experimental/baseline/common/data.py +++ b/src/py/flwr_experimental/baseline/common/data.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/config/__init__.py b/src/py/flwr_experimental/baseline/config/__init__.py index c78df8f9a344..0221a92188e5 100644 --- a/src/py/flwr_experimental/baseline/config/__init__.py +++ b/src/py/flwr_experimental/baseline/config/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/config/config.py b/src/py/flwr_experimental/baseline/config/config.py index 995e515bf1b9..5170ea7f7e26 100644 --- a/src/py/flwr_experimental/baseline/config/config.py +++ b/src/py/flwr_experimental/baseline/config/config.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/config/config_test.py b/src/py/flwr_experimental/baseline/config/config_test.py index 244d15b74cf6..1e8377b3be1e 100644 --- a/src/py/flwr_experimental/baseline/config/config_test.py +++ b/src/py/flwr_experimental/baseline/config/config_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/__init__.py b/src/py/flwr_experimental/baseline/dataset/__init__.py index 0eaab456e4fb..aa19c2fbfce8 100644 --- a/src/py/flwr_experimental/baseline/dataset/__init__.py +++ b/src/py/flwr_experimental/baseline/dataset/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/dataset.py b/src/py/flwr_experimental/baseline/dataset/dataset.py index 789f3e49531e..8e27ad71821d 100644 --- a/src/py/flwr_experimental/baseline/dataset/dataset.py +++ b/src/py/flwr_experimental/baseline/dataset/dataset.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/dataset_test.py b/src/py/flwr_experimental/baseline/dataset/dataset_test.py index 565f42a494b4..4c484b8836bc 100644 --- a/src/py/flwr_experimental/baseline/dataset/dataset_test.py +++ b/src/py/flwr_experimental/baseline/dataset/dataset_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned.py b/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned.py index 4fb1ec0ff0f8..61b6e31c29ab 100644 --- a/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned.py +++ b/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned_test.py b/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned_test.py index ddf0016688f6..dc655682adec 100644 --- a/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned_test.py +++ b/src/py/flwr_experimental/baseline/dataset/tf_cifar_partitioned_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned.py b/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned.py index 86c71d6437ea..da7d70434bb4 100644 --- a/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned.py +++ b/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned_test.py b/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned_test.py index 5ede8ba54f88..2782bcf0353a 100644 --- a/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned_test.py +++ b/src/py/flwr_experimental/baseline/dataset/tf_fashion_mnist_partitioned_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/dataset/tf_hotkey_partitioned.py b/src/py/flwr_experimental/baseline/dataset/tf_hotkey_partitioned.py index 0a3279432f65..265d67301b64 100644 --- a/src/py/flwr_experimental/baseline/dataset/tf_hotkey_partitioned.py +++ b/src/py/flwr_experimental/baseline/dataset/tf_hotkey_partitioned.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/ip.py b/src/py/flwr_experimental/baseline/ip.py index db800d92dd2a..25efefa40d0a 100644 --- a/src/py/flwr_experimental/baseline/ip.py +++ b/src/py/flwr_experimental/baseline/ip.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/model/__init__.py b/src/py/flwr_experimental/baseline/model/__init__.py index 21bebe00002b..70c22a137002 100644 --- a/src/py/flwr_experimental/baseline/model/__init__.py +++ b/src/py/flwr_experimental/baseline/model/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/model/cnn.py b/src/py/flwr_experimental/baseline/model/cnn.py index 429f8e40aae4..0f0d777745b2 100644 --- a/src/py/flwr_experimental/baseline/model/cnn.py +++ b/src/py/flwr_experimental/baseline/model/cnn.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/model/cnn_test.py b/src/py/flwr_experimental/baseline/model/cnn_test.py index 3806be494c7b..3cf23d96d961 100644 --- a/src/py/flwr_experimental/baseline/model/cnn_test.py +++ b/src/py/flwr_experimental/baseline/model/cnn_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/model/resnet.py b/src/py/flwr_experimental/baseline/model/resnet.py index f6095bbd9729..264822e09616 100644 --- a/src/py/flwr_experimental/baseline/model/resnet.py +++ b/src/py/flwr_experimental/baseline/model/resnet.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/plot/__init__.py b/src/py/flwr_experimental/baseline/plot/__init__.py index 8bc054aa44c7..bfab50defebf 100644 --- a/src/py/flwr_experimental/baseline/plot/__init__.py +++ b/src/py/flwr_experimental/baseline/plot/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/plot/plot.py b/src/py/flwr_experimental/baseline/plot/plot.py index d1f130a4559a..e64b2435f5c7 100644 --- a/src/py/flwr_experimental/baseline/plot/plot.py +++ b/src/py/flwr_experimental/baseline/plot/plot.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/run.py b/src/py/flwr_experimental/baseline/run.py index 2e6ae5b10cba..f21963c69a41 100644 --- a/src/py/flwr_experimental/baseline/run.py +++ b/src/py/flwr_experimental/baseline/run.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/run.sh b/src/py/flwr_experimental/baseline/run.sh index 4600d1fbc780..9cb5b76626d3 100755 --- a/src/py/flwr_experimental/baseline/run.sh +++ b/src/py/flwr_experimental/baseline/run.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/setting.py b/src/py/flwr_experimental/baseline/setting.py index b8987a2703ab..c47d202539ab 100644 --- a/src/py/flwr_experimental/baseline/setting.py +++ b/src/py/flwr_experimental/baseline/setting.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_cifar/__init__.py b/src/py/flwr_experimental/baseline/tf_cifar/__init__.py index 3651f1f42ed2..ad2e33481ba8 100644 --- a/src/py/flwr_experimental/baseline/tf_cifar/__init__.py +++ b/src/py/flwr_experimental/baseline/tf_cifar/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_cifar/client.py b/src/py/flwr_experimental/baseline/tf_cifar/client.py index 3b85c7e9d448..5233ee368ac8 100644 --- a/src/py/flwr_experimental/baseline/tf_cifar/client.py +++ b/src/py/flwr_experimental/baseline/tf_cifar/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_cifar/download.py b/src/py/flwr_experimental/baseline/tf_cifar/download.py index 7d414b205460..4beb3fb4a0f2 100644 --- a/src/py/flwr_experimental/baseline/tf_cifar/download.py +++ b/src/py/flwr_experimental/baseline/tf_cifar/download.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_cifar/server.py b/src/py/flwr_experimental/baseline/tf_cifar/server.py index e1f0e7f80fb6..cb7a99b9d360 100644 --- a/src/py/flwr_experimental/baseline/tf_cifar/server.py +++ b/src/py/flwr_experimental/baseline/tf_cifar/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_cifar/settings.py b/src/py/flwr_experimental/baseline/tf_cifar/settings.py index 4a8a86f1c56f..829856af0ace 100644 --- a/src/py/flwr_experimental/baseline/tf_cifar/settings.py +++ b/src/py/flwr_experimental/baseline/tf_cifar/settings.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/__init__.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/__init__.py index 4315225a7367..62c3d33eee7f 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/__init__.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/client.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/client.py index b840fca79396..6177336446f1 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/client.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/download.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/download.py index 385590c57699..c2f0eb580cf0 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/download.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/download.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/fn_plots.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/fn_plots.py index 955cdb3670fb..e28d98808d8a 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/fn_plots.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/fn_plots.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/gen_plots.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/gen_plots.py index 63e78bbf9b83..f6c0383367fd 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/gen_plots.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/gen_plots.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/server.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/server.py index 9eea7b4d6418..fbeb0683df28 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/server.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_fashion_mnist/settings.py b/src/py/flwr_experimental/baseline/tf_fashion_mnist/settings.py index ec93e4ec374a..b0de9841de30 100644 --- a/src/py/flwr_experimental/baseline/tf_fashion_mnist/settings.py +++ b/src/py/flwr_experimental/baseline/tf_fashion_mnist/settings.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_hotkey/__init__.py b/src/py/flwr_experimental/baseline/tf_hotkey/__init__.py index ddb094bd0d83..7ebf8a732ab5 100644 --- a/src/py/flwr_experimental/baseline/tf_hotkey/__init__.py +++ b/src/py/flwr_experimental/baseline/tf_hotkey/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_hotkey/client.py b/src/py/flwr_experimental/baseline/tf_hotkey/client.py index e4e1a64afd3b..f59ad5f676ba 100644 --- a/src/py/flwr_experimental/baseline/tf_hotkey/client.py +++ b/src/py/flwr_experimental/baseline/tf_hotkey/client.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_hotkey/download.py b/src/py/flwr_experimental/baseline/tf_hotkey/download.py index b317cd8b588c..d9f3c53bdb39 100644 --- a/src/py/flwr_experimental/baseline/tf_hotkey/download.py +++ b/src/py/flwr_experimental/baseline/tf_hotkey/download.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_hotkey/server.py b/src/py/flwr_experimental/baseline/tf_hotkey/server.py index a96929a0d9b4..beba81f58396 100644 --- a/src/py/flwr_experimental/baseline/tf_hotkey/server.py +++ b/src/py/flwr_experimental/baseline/tf_hotkey/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/baseline/tf_hotkey/settings.py b/src/py/flwr_experimental/baseline/tf_hotkey/settings.py index 9576002d2e58..18c58d1333a5 100644 --- a/src/py/flwr_experimental/baseline/tf_hotkey/settings.py +++ b/src/py/flwr_experimental/baseline/tf_hotkey/settings.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/logserver/__init__.py b/src/py/flwr_experimental/logserver/__init__.py index 9198841d7f0b..352112d5e933 100644 --- a/src/py/flwr_experimental/logserver/__init__.py +++ b/src/py/flwr_experimental/logserver/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/logserver/__main__.py b/src/py/flwr_experimental/logserver/__main__.py index 0f68a88c7ce8..a3ac56e405f0 100644 --- a/src/py/flwr_experimental/logserver/__main__.py +++ b/src/py/flwr_experimental/logserver/__main__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/logserver/server.py b/src/py/flwr_experimental/logserver/server.py index 993257ba5401..dc729cebbf33 100644 --- a/src/py/flwr_experimental/logserver/server.py +++ b/src/py/flwr_experimental/logserver/server.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/logserver/server_test.py b/src/py/flwr_experimental/logserver/server_test.py index 9440a8babbec..becead625a5d 100644 --- a/src/py/flwr_experimental/logserver/server_test.py +++ b/src/py/flwr_experimental/logserver/server_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/__init__.py b/src/py/flwr_experimental/ops/__init__.py index e5e609c1db95..b56c757e0207 100644 --- a/src/py/flwr_experimental/ops/__init__.py +++ b/src/py/flwr_experimental/ops/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/cluster.py b/src/py/flwr_experimental/ops/cluster.py index d8a063dd4f42..dfd0dd13727e 100644 --- a/src/py/flwr_experimental/ops/cluster.py +++ b/src/py/flwr_experimental/ops/cluster.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/cluster_test.py b/src/py/flwr_experimental/ops/cluster_test.py index ef2efd12bb99..6b00182c4d2f 100644 --- a/src/py/flwr_experimental/ops/cluster_test.py +++ b/src/py/flwr_experimental/ops/cluster_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/__init__.py b/src/py/flwr_experimental/ops/compute/__init__.py index 208202f73f8e..f6ad468f484d 100644 --- a/src/py/flwr_experimental/ops/compute/__init__.py +++ b/src/py/flwr_experimental/ops/compute/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/adapter.py b/src/py/flwr_experimental/ops/compute/adapter.py index 4be66ce8ed43..51c67a226a6e 100644 --- a/src/py/flwr_experimental/ops/compute/adapter.py +++ b/src/py/flwr_experimental/ops/compute/adapter.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/docker_adapter.py b/src/py/flwr_experimental/ops/compute/docker_adapter.py index 9ce68093033a..acb7c0c5a4e0 100644 --- a/src/py/flwr_experimental/ops/compute/docker_adapter.py +++ b/src/py/flwr_experimental/ops/compute/docker_adapter.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/docker_adapter_test.py b/src/py/flwr_experimental/ops/compute/docker_adapter_test.py index 8b59adfc5b3e..c6d5759a8246 100644 --- a/src/py/flwr_experimental/ops/compute/docker_adapter_test.py +++ b/src/py/flwr_experimental/ops/compute/docker_adapter_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/ec2_adapter.py b/src/py/flwr_experimental/ops/compute/ec2_adapter.py index 9e8650432007..43fb66c2d944 100644 --- a/src/py/flwr_experimental/ops/compute/ec2_adapter.py +++ b/src/py/flwr_experimental/ops/compute/ec2_adapter.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/compute/ec2_adapter_test.py b/src/py/flwr_experimental/ops/compute/ec2_adapter_test.py index 3e2abf9fd054..14827745bf3d 100644 --- a/src/py/flwr_experimental/ops/compute/ec2_adapter_test.py +++ b/src/py/flwr_experimental/ops/compute/ec2_adapter_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_experimental/ops/instance.py b/src/py/flwr_experimental/ops/instance.py index eb3d368118d2..20be40552727 100644 --- a/src/py/flwr_experimental/ops/instance.py +++ b/src/py/flwr_experimental/ops/instance.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_tool/__init__.py b/src/py/flwr_tool/__init__.py index 50e3d8645b6d..f85580898a5e 100644 --- a/src/py/flwr_tool/__init__.py +++ b/src/py/flwr_tool/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_tool/init_py_check.py b/src/py/flwr_tool/init_py_check.py index 60acfabb22b4..8cdc2e0ab5be 100755 --- a/src/py/flwr_tool/init_py_check.py +++ b/src/py/flwr_tool/init_py_check.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. """Check provided directory and sub-directories for missing __init__.py files. Example: diff --git a/src/py/flwr_tool/protoc.py b/src/py/flwr_tool/protoc.py index b571279f0707..5d3ce942c1e0 100644 --- a/src/py/flwr_tool/protoc.py +++ b/src/py/flwr_tool/protoc.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/py/flwr_tool/protoc_test.py b/src/py/flwr_tool/protoc_test.py index 07e7dd833e9d..57ca3ff423c2 100644 --- a/src/py/flwr_tool/protoc_test.py +++ b/src/py/flwr_tool/protoc_test.py @@ -1,4 +1,4 @@ -# Copyright 2020 Adap GmbH. All Rights Reserved. +# Copyright 2020 Flower Labs GmbH. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/swift/flwr/Sources/Flower/FlowerProto/transport.pb.swift b/src/swift/flwr/Sources/Flower/FlowerProto/transport.pb.swift index 398d2834e370..d1d17e5c875c 100644 --- a/src/swift/flwr/Sources/Flower/FlowerProto/transport.pb.swift +++ b/src/swift/flwr/Sources/Flower/FlowerProto/transport.pb.swift @@ -7,7 +7,7 @@ // For information on using the generated types, please see the documentation: // https://github.com/apple/swift-protobuf/ -// Copyright 2020 Adap GmbH. All Rights Reserved. +// Copyright 2020 Flower Labs GmbH. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 0be08301f6312be3273dc2169ccddec45502e9dc Mon Sep 17 00:00:00 2001 From: Daniel Nata Nugraha Date: Mon, 9 Oct 2023 10:18:52 +0200 Subject: [PATCH 09/10] Update quickstart-huggingface example requirements (#2465) --------- Co-authored-by: Javier Co-authored-by: Taner Topal --- examples/quickstart-huggingface/pyproject.toml | 14 +++++++------- examples/quickstart-huggingface/requirements.txt | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/quickstart-huggingface/pyproject.toml b/examples/quickstart-huggingface/pyproject.toml index 760dbf114cfa..eb9687c5152c 100644 --- a/examples/quickstart-huggingface/pyproject.toml +++ b/examples/quickstart-huggingface/pyproject.toml @@ -12,10 +12,10 @@ authors = [ ] [tool.poetry.dependencies] -python = "^3.8" -flwr = "^1.0.0" -torch = "^1.13.1" -transformers = "4.30.0" -datasets = "1.12.1" -evaluate = "0.4.0" -scikit-learn = "1.0" +python = ">=3.8,<3.11" +flwr = ">=1.0,<2.0" +torch = ">=1.13.1,<2.0" +transformers = ">=4.30.0,<5.0" +evaluate = ">=0.4.0,<1.0" +datasets = ">=2.0.0, <3.0" +scikit-learn = ">=1.3.1, <2.0" diff --git a/examples/quickstart-huggingface/requirements.txt b/examples/quickstart-huggingface/requirements.txt index 865cac252fd9..aeb2d13fc4a4 100644 --- a/examples/quickstart-huggingface/requirements.txt +++ b/examples/quickstart-huggingface/requirements.txt @@ -1,6 +1,6 @@ -datasets~=2.13.1 -evaluate~=0.4.0 -flwr~=1.4.0 -numpy~=1.21.1 -torch~=2.0.1 -transformers~=4.30.2 +flwr>=1.0, <2.0 +torch>=1.13.1, <2.0 +transformers>=4.30.0, <5.0 +evaluate>=0.4.0, <1.0 +datasets>=2.0.0, <3.0 +scikit-learn>=1.3.1, <2.0 From 908d539bb4f76dcae5257d2a7683f266a4bf8357 Mon Sep 17 00:00:00 2001 From: Marius Schlegel <85943265+mariusschlegel@users.noreply.github.com> Date: Mon, 9 Oct 2023 10:28:42 +0200 Subject: [PATCH 10/10] Fix code example using TensorFlow/Keras + MLCube (#2425) Co-authored-by: Javier --- .gitignore | 2 +- doc/source/ref-changelog.md | 4 +- examples/quickstart-mlcube/README.md | 28 +- examples/quickstart-mlcube/dev/Dockerfile | 18 ++ examples/quickstart-mlcube/dev/all.sh | 19 ++ examples/quickstart-mlcube/dev/client.sh | 11 + examples/quickstart-mlcube/dev/mnist.py | 282 ++++++++++++++++++ .../quickstart-mlcube/dev/requirements.txt | 4 + examples/quickstart-mlcube/dev/server.sh | 6 + examples/quickstart-mlcube/dev/setup.sh | 18 ++ examples/quickstart-mlcube/pyproject.toml | 4 +- examples/quickstart-mlcube/requirements.txt | 4 +- 12 files changed, 390 insertions(+), 10 deletions(-) create mode 100644 examples/quickstart-mlcube/dev/Dockerfile create mode 100755 examples/quickstart-mlcube/dev/all.sh create mode 100755 examples/quickstart-mlcube/dev/client.sh create mode 100644 examples/quickstart-mlcube/dev/mnist.py create mode 100644 examples/quickstart-mlcube/dev/requirements.txt create mode 100755 examples/quickstart-mlcube/dev/server.sh create mode 100755 examples/quickstart-mlcube/dev/setup.sh diff --git a/.gitignore b/.gitignore index d7de7de3c3eb..7a152abdc715 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ node_modules # Flower Examples examples/**/dataset/** -examples/**/dev/*.sh +#examples/**/dev/*.sh # Flower Baselines baselines/datasets/leaf diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index eefd215503f8..47685f201f2b 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -20,9 +20,9 @@ - FedProx ([#2210](https://github.com/adap/flower/pull/2210), [#2286](https://github.com/adap/flower/pull/2286)) -- **Update Flower Examples** ([#2384](https://github.com/adap/flower/pull/2384)) +- **Update Flower Examples** ([#2384](https://github.com/adap/flower/pull/2384)), ([#2425](https://github.com/adap/flower/pull/2425)) -- **General updates to baselines** ([#2301](https://github.com/adap/flower/pull/2301).[#2305](https://github.com/adap/flower/pull/2305), [#2307](https://github.com/adap/flower/pull/2307), [#2327](https://github.com/adap/flower/pull/2327)) +- **General updates to baselines** ([#2301](https://github.com/adap/flower/pull/2301), [#2305](https://github.com/adap/flower/pull/2305), [#2307](https://github.com/adap/flower/pull/2307), [#2327](https://github.com/adap/flower/pull/2327)) - **General updates to the simulation engine** ([#2331](https://github.com/adap/flower/pull/2331), [#2448](https://github.com/adap/flower/pull/2448)) diff --git a/examples/quickstart-mlcube/README.md b/examples/quickstart-mlcube/README.md index b7994a0d0631..8e6fc29b3ad8 100644 --- a/examples/quickstart-mlcube/README.md +++ b/examples/quickstart-mlcube/README.md @@ -10,7 +10,11 @@ Start by cloning the example project. We prepared a single-line command that you git clone --depth=1 https://github.com/adap/flower.git && mv flower/examples/quickstart-mlcube . && rm -rf flower && cd quickstart-mlcube ``` -Project dependencies (such as `tensorflow` and `flwr`) are defined in `pyproject.toml`. We recommend [Poetry](https://python-poetry.org/docs/) to install those dependencies and manage your virtual environment ([Poetry installation](https://python-poetry.org/docs/#installation)), but feel free to use a different way of installing dependencies and managing virtual environments if you have other preferences. +### Installing Dependencies + +Project dependencies (such as `tensorflow` and `flwr`) are defined in `pyproject.toml` and `requirements.txt`. We recommend [Poetry](https://python-poetry.org/docs/) to install those dependencies and manage your virtual environment ([Poetry installation](https://python-poetry.org/docs/#installation)) or [pip](https://pip.pypa.io/en/latest/development/), but feel free to use a different way of installing dependencies and managing virtual environments if you have other preferences. + +#### Poetry ```shell poetry install @@ -23,11 +27,29 @@ Poetry will install all your dependencies in a newly created virtual environment poetry run python3 -c "import flwr" ``` -For the MLCube setup you will need to install Docker on your system. Please refer to the [Docker install guide](https://docs.docker.com/get-docker/) on how to do that. +If you don't see any errors, you're good to go! + +#### pip + +Write the command below in your terminal to install the dependencies according to the configuration file requirements.txt. + +```shell +pip install -r requirements.txt +``` + +To verify that everything works correctly, you can run the following command: + +```shell +python3 -c "import flwr" +``` If you don't see any errors, you're good to go! -## MLCube setup +#### Docker + +For the MLCube setup you will need to install Docker on your system. Please refer to the [Docker install guide](https://docs.docker.com/get-docker/) on how to do that. + +#### MLCube For the MLCube setup, we have prepared a script that you can execute in your shell using: diff --git a/examples/quickstart-mlcube/dev/Dockerfile b/examples/quickstart-mlcube/dev/Dockerfile new file mode 100644 index 000000000000..98df9655d70d --- /dev/null +++ b/examples/quickstart-mlcube/dev/Dockerfile @@ -0,0 +1,18 @@ +FROM ubuntu:22.04 +LABEL author="The Flower Authors" + +RUN apt-get update && \ + # install Python + apt-get install -y python3 python3-distutils curl && \ + update-alternatives --install /usr/bin/python python /usr/bin/python3 1 && \ + curl -sSL -O https://bootstrap.pypa.io/get-pip.py && \ + python3 get-pip.py && \ + rm get-pip.py && \ + # clean apt cache + rm -rf /var/lib/apt/lists/* + +COPY requirements.txt /requirements.txt +RUN pip3 install --no-cache-dir -r /requirements.txt + +COPY mnist.py /workspace/mnist.py +ENTRYPOINT ["python3", "/workspace/mnist.py"] diff --git a/examples/quickstart-mlcube/dev/all.sh b/examples/quickstart-mlcube/dev/all.sh new file mode 100755 index 000000000000..993e3a0f5d56 --- /dev/null +++ b/examples/quickstart-mlcube/dev/all.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -e +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"/../ + +# Cleanup & prepare mlcube +./dev/setup.sh + +# Start server +./dev/server.sh & +sleep 2 # Sleep for 2s to give the server enough time to start + +for i in `seq 0 1`; do + ./dev/client.sh $i & +done + +# This will allow you to use CTRL+C to stop all background processes +trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM +# Wait for all background processes to complete +wait diff --git a/examples/quickstart-mlcube/dev/client.sh b/examples/quickstart-mlcube/dev/client.sh new file mode 100755 index 000000000000..54e506be7446 --- /dev/null +++ b/examples/quickstart-mlcube/dev/client.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"/../ + +if [ $# -eq 0 ] + then + echo "Please provide the name of the client workspace e.g. 'python client.py one'" + exit 1 +fi + +poetry run python client.py $1 diff --git a/examples/quickstart-mlcube/dev/mnist.py b/examples/quickstart-mlcube/dev/mnist.py new file mode 100644 index 000000000000..e52e2cba85c7 --- /dev/null +++ b/examples/quickstart-mlcube/dev/mnist.py @@ -0,0 +1,282 @@ +""" +https://www.tensorflow.org/tutorials/quickstart/beginner +""" + +from __future__ import absolute_import, division, print_function, unicode_literals + +import argparse +import json +import logging +import logging.config +import os +import sys +from enum import Enum +from typing import List + +import numpy as np +import tensorflow as tf +import yaml +from tensorflow.keras.utils import get_file + +os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" # Remove warning messages + +logger = logging.getLogger(__name__) + + +class Task(str, Enum): + DownloadData = "download" + Train = "train" + Evaluate = "evaluate" + + +def create_directory(path: str) -> None: + if not os.path.exists(path): + os.makedirs(path, exist_ok=True) + + +def download(task_args: List[str]) -> None: + """Task: download. + Input parameters: + --data_dir + """ + logger.info(f"Starting '{Task.DownloadData}' task") + parser = argparse.ArgumentParser() + parser.add_argument( + "--data_dir", + "--data-dir", + type=str, + default=None, + help="Path to a dataset file.", + ) + args = parser.parse_args(args=task_args) + + if args.data_dir is None: + raise ValueError( + "Data directory is not specified (did you use --data-dir=PATH?)" + ) + os.makedirs(args.data_dir, exist_ok=True) + + if not args.data_dir.startswith("/"): + logger.warning("Data directory seems to be a relative path.") + + data_file = os.path.join(args.data_dir, "mnist.npz") + if os.path.exists(data_file): + logger.info("MNIST data has already been download (file exists: %s)", data_file) + return + + data_file = get_file( + fname=data_file, + origin="https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz", + file_hash="731c5ac602752760c8e48fbffcf8c3b850d9dc2a2aedcf2cc48468fc17b673d1", + ) + + if not os.path.isfile(data_file): + raise ValueError( + f"MNIST dataset has not been downloaded - dataset file does not exist: {data_file}" + ) + else: + logger.info("MNIST dataset has been downloaded.") + logger.info("The '%s' task has been completed.", Task.DownloadData) + + +def train(task_args: List[str]) -> None: + """Task: train. + Input parameters: + --data_dir, --log_dir, --model_dir, --parameters_file + """ + parser = argparse.ArgumentParser() + parser.add_argument( + "--data_dir", "--data-dir", type=str, default=None, help="Dataset path." + ) + parser.add_argument( + "--model_in", + "--model-in", + type=str, + default=None, + help="Model output directory.", + ) + parser.add_argument( + "--model_dir", + "--model-dir", + type=str, + default=None, + help="Model output directory.", + ) + parser.add_argument( + "--parameters_file", + "--parameters-file", + type=str, + default=None, + help="Parameters default values.", + ) + parser.add_argument( + "--metrics", + "--metrics", + type=str, + default=None, + help="Parameters default values.", + ) + + args = parser.parse_args(args=task_args) + + with open(args.parameters_file, "r") as stream: + parameters = yaml.load(stream, Loader=yaml.FullLoader) + logger.info("Parameters have been read (%s).", args.parameters_file) + + dataset_file = os.path.join(args.data_dir, "mnist.npz") + with np.load(dataset_file, allow_pickle=True) as f: + x_train, y_train = f["x_train"], f["y_train"] + x_train = x_train / 255.0 + logger.info("Dataset has been loaded (%s).", dataset_file) + + if args.model_in != "" and len(os.listdir(args.model_in)) != 0: + # Load from checkpoint; + model = tf.keras.models.load_model(os.path.join(args.model_in, "mnist_model")) + else: + # if no model given on CLI, create a new one + model = tf.keras.models.Sequential( + [ + tf.keras.layers.Flatten(input_shape=(28, 28)), + tf.keras.layers.Dense(128, activation="relu"), + tf.keras.layers.Dropout(0.2), + tf.keras.layers.Dense(10, activation="softmax"), + ] + ) + + logger.info("Model has been built.") + + model.compile( + optimizer=parameters.get("optimizer", "adam"), + loss="sparse_categorical_crossentropy", + metrics=["accuracy"], + ) + logger.info("Model has been compiled.") + + # Train and evaluate + history = model.fit( + x_train, + y_train, + batch_size=parameters.get("batch_size", 32), + epochs=parameters.get("epochs", 5), + ) + logger.info("Model has been trained.") + + with open(args.metrics, "w") as f: + data_json = { + "loss": str(history.history["loss"][-1]), + "accuracy": str(history.history["accuracy"][-1]), + } + json.dump(data_json, f) + + os.makedirs(args.model_dir, exist_ok=True) + model.save(os.path.join(args.model_dir, "mnist_model")) + logger.info("Model has been saved.") + + +def evaluate(task_args: List[str]) -> None: + """Task: train. + Input parameters: + --data_dir, --log_dir, --model_dir, --parameters_file + """ + parser = argparse.ArgumentParser() + parser.add_argument( + "--data_dir", "--data-dir", type=str, default=None, help="Dataset path." + ) + parser.add_argument( + "--model_in", + "--model-in", + type=str, + default=None, + help="Model output directory.", + ) + parser.add_argument( + "--parameters_file", + "--parameters-file", + type=str, + default=None, + help="Parameters default values.", + ) + parser.add_argument( + "--metrics", + "--metrics", + type=str, + default=None, + help="Parameters default values.", + ) + args = parser.parse_args(args=task_args) + + with open(args.parameters_file, "r") as stream: + parameters = yaml.load(stream, Loader=yaml.FullLoader) + logger.info("Parameters have been read (%s).", parameters) + + dataset_file = os.path.join(args.data_dir, "mnist.npz") + with np.load(dataset_file, allow_pickle=True) as f: + x_test, y_test = f["x_test"], f["y_test"] + x_test = x_test / 255.0 + logger.info("Dataset has been loaded (%s).", dataset_file) + + model = tf.keras.models.load_model(os.path.join(args.model_in, "mnist_model")) + + eval_result = model.evaluate(x_test, y_test) + + with open(args.metrics, "w") as f: + data_json = {"loss": str(eval_result[0]), "accuracy": str(eval_result[1])} + json.dump(data_json, f) + + logger.info("Model has been evaluated.") + + +def main(): + """mnist.py task task_specific_parameters...""" + # noinspection PyBroadException + try: + parser = argparse.ArgumentParser() + parser.add_argument("mlcube_task", type=str, help="Task for this MLCube.") + parser.add_argument( + "--log_dir", "--log-dir", type=str, required=True, help="Logging directory." + ) + mlcube_args, task_args = parser.parse_known_args() + + os.makedirs(mlcube_args.log_dir, exist_ok=True) + logger_config = { + "version": 1, + "disable_existing_loggers": True, + "formatters": { + "standard": { + "format": "%(asctime)s - %(name)s - %(threadName)s - %(levelname)s - %(message)s" + }, + }, + "handlers": { + "file_handler": { + "class": "logging.FileHandler", + "level": "INFO", + "formatter": "standard", + "filename": os.path.join( + mlcube_args.log_dir, + f"mlcube_mnist_{mlcube_args.mlcube_task}.log", + ), + } + }, + "loggers": { + "": {"level": "INFO", "handlers": ["file_handler"]}, + "__main__": {"level": "NOTSET", "propagate": "yes"}, + "tensorflow": {"level": "NOTSET", "propagate": "yes"}, + }, + } + logging.config.dictConfig(logger_config) + + if mlcube_args.mlcube_task == Task.DownloadData: + download(task_args) + elif mlcube_args.mlcube_task == Task.Train: + train(task_args) + elif mlcube_args.mlcube_task == Task.Evaluate: + evaluate(task_args) + else: + raise ValueError(f"Unknown task: {task_args}") + except Exception as err: + logger.exception(err) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/examples/quickstart-mlcube/dev/requirements.txt b/examples/quickstart-mlcube/dev/requirements.txt new file mode 100644 index 000000000000..c39a5fa73f81 --- /dev/null +++ b/examples/quickstart-mlcube/dev/requirements.txt @@ -0,0 +1,4 @@ +PyYAML==5.3 +tensorflow==2.14.0 +tensorflow-estimator==2.14.0 +requests[security] diff --git a/examples/quickstart-mlcube/dev/server.sh b/examples/quickstart-mlcube/dev/server.sh new file mode 100755 index 000000000000..8a0f5857f198 --- /dev/null +++ b/examples/quickstart-mlcube/dev/server.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"/../ + +# Start server +poetry run python server.py diff --git a/examples/quickstart-mlcube/dev/setup.sh b/examples/quickstart-mlcube/dev/setup.sh new file mode 100755 index 000000000000..087ca94020c9 --- /dev/null +++ b/examples/quickstart-mlcube/dev/setup.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"/../ + +# Cleanup +echo "Cleanup mlcube and clients directory" +rm -rf mlcube + +# Clone mlcube +echo "Clone mlcube from GitHub" +git clone https://github.com/mlcommons/mlcube_examples.git +cp -r mlcube_examples/mnist_fl/tensorflow mlcube +rm -rf mlcube_examples +cp dev/{Dockerfile,requirements.txt,mnist.py} mlcube/build + +# Download dataset +cd mlcube +mlcube configure -Pdocker.build_strategy=auto diff --git a/examples/quickstart-mlcube/pyproject.toml b/examples/quickstart-mlcube/pyproject.toml index 156a9635528b..0d42fc3b2898 100644 --- a/examples/quickstart-mlcube/pyproject.toml +++ b/examples/quickstart-mlcube/pyproject.toml @@ -13,6 +13,6 @@ python = ">=3.8,<3.11" flwr = ">=1.0,<2.0" # For development: { path = "../../", develop = true } tensorflow-cpu = {version = ">=2.9.1,<2.11.1 || >2.11.1", markers = "platform_machine == \"x86_64\""} tensorflow-macos = {version = ">=2.9.1,<2.11.1 || >2.11.1", markers = "sys_platform == \"darwin\" and platform_machine == \"arm64\""} -mlcube = "0.0.8" -mlcube-docker = "0.0.8" +mlcube = "0.0.9" +mlcube-docker = "0.0.9" tensorflow-estimator = ">=2.9.1,<2.11.1 || >2.11.1" diff --git a/examples/quickstart-mlcube/requirements.txt b/examples/quickstart-mlcube/requirements.txt index bfcf0ff1e115..af8514bc7392 100644 --- a/examples/quickstart-mlcube/requirements.txt +++ b/examples/quickstart-mlcube/requirements.txt @@ -1,6 +1,6 @@ flwr>=1.0, <2.0 tensorflow-macos>=2.9.1, != 2.11.1 ; sys_platform == "darwin" and platform_machine == "arm64" tensorflow-cpu>=2.9.1, != 2.11.1 ; platform_machine == "x86_64" -mlcube==0.0.8 -mlcube-docker==0.0.8 +mlcube==0.0.9 +mlcube-docker==0.0.9 tensorflow-estimator>=2.9.1, !=2.11.1