flwr-nightly 1.12.0.dev20240916__py3-none-any.whl → 1.12.0.dev20240918__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flwr-nightly might be problematic. Click here for more details.
- flwr/proto/clientappio_pb2.py +1 -1
- flwr/proto/driver_pb2.py +1 -1
- flwr/proto/exec_pb2.py +1 -1
- flwr/proto/message_pb2.py +1 -1
- flwr/proto/node_pb2.py +1 -1
- flwr/proto/run_pb2.py +1 -1
- flwr/proto/task_pb2.py +1 -1
- flwr/server/superlink/state/sqlite_state.py +99 -19
- flwr/server/superlink/state/utils.py +98 -2
- {flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/METADATA +1 -1
- {flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/RECORD +14 -14
- {flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/LICENSE +0 -0
- {flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/WHEEL +0 -0
- {flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/entry_points.txt +0 -0
flwr/proto/clientappio_pb2.py
CHANGED
|
@@ -17,7 +17,7 @@ from flwr.proto import run_pb2 as flwr_dot_proto_dot_run__pb2
|
|
|
17
17
|
from flwr.proto import message_pb2 as flwr_dot_proto_dot_message__pb2
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\"W\n\x15\x43lientAppOutputStatus\x12-\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1f.flwr.proto.ClientAppOutputCode\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x11\n\x0fGetTokenRequest\"!\n\x10GetTokenResponse\x12\r\n\x05token\x18\x01 \x01(\
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x66lwr/proto/clientappio.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x14\x66lwr/proto/run.proto\x1a\x18\x66lwr/proto/message.proto\"W\n\x15\x43lientAppOutputStatus\x12-\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1f.flwr.proto.ClientAppOutputCode\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x11\n\x0fGetTokenRequest\"!\n\x10GetTokenResponse\x12\r\n\x05token\x18\x01 \x01(\x04\"+\n\x1aPullClientAppInputsRequest\x12\r\n\x05token\x18\x01 \x01(\x04\"\xa5\x01\n\x1bPullClientAppInputsResponse\x12$\n\x07message\x18\x01 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Context\x12\x1c\n\x03run\x18\x03 \x01(\x0b\x32\x0f.flwr.proto.Run\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\"x\n\x1bPushClientAppOutputsRequest\x12\r\n\x05token\x18\x01 \x01(\x04\x12$\n\x07message\x18\x02 \x01(\x0b\x32\x13.flwr.proto.Message\x12$\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x13.flwr.proto.Context\"Q\n\x1cPushClientAppOutputsResponse\x12\x31\n\x06status\x18\x01 \x01(\x0b\x32!.flwr.proto.ClientAppOutputStatus*L\n\x13\x43lientAppOutputCode\x12\x0b\n\x07SUCCESS\x10\x00\x12\x15\n\x11\x44\x45\x41\x44LINE_EXCEEDED\x10\x01\x12\x11\n\rUNKNOWN_ERROR\x10\x02\x32\xad\x02\n\x0b\x43lientAppIo\x12G\n\x08GetToken\x12\x1b.flwr.proto.GetTokenRequest\x1a\x1c.flwr.proto.GetTokenResponse\"\x00\x12h\n\x13PullClientAppInputs\x12&.flwr.proto.PullClientAppInputsRequest\x1a\'.flwr.proto.PullClientAppInputsResponse\"\x00\x12k\n\x14PushClientAppOutputs\x12\'.flwr.proto.PushClientAppOutputsRequest\x1a(.flwr.proto.PushClientAppOutputsResponse\"\x00\x62\x06proto3')
|
|
21
21
|
|
|
22
22
|
_globals = globals()
|
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/driver_pb2.py
CHANGED
|
@@ -19,7 +19,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
|
19
19
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
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\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xeb\x01\n\x10\x43reateRunRequest\x12\x0e\n\x06\x66\x61\x62_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x02 \x01(\t\x12I\n\x0foverride_config\x18\x03 \x03(\x0b\x32\x30.flwr.proto.CreateRunRequest.OverrideConfigEntry\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"#\n\x11\x43reateRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\
|
|
22
|
+
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\x1a\x14\x66lwr/proto/run.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xeb\x01\n\x10\x43reateRunRequest\x12\x0e\n\x06\x66\x61\x62_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x02 \x01(\t\x12I\n\x0foverride_config\x18\x03 \x03(\x0b\x32\x30.flwr.proto.CreateRunRequest.OverrideConfigEntry\x12\x1c\n\x03\x66\x61\x62\x18\x04 \x01(\x0b\x32\x0f.flwr.proto.Fab\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"#\n\x11\x43reateRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"!\n\x0fGetNodesRequest\x12\x0e\n\x06run_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\xc7\x03\n\x06\x44river\x12J\n\tCreateRun\x12\x1c.flwr.proto.CreateRunRequest\x1a\x1d.flwr.proto.CreateRunResponse\"\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\x12\x41\n\x06GetRun\x12\x19.flwr.proto.GetRunRequest\x1a\x1a.flwr.proto.GetRunResponse\"\x00\x12\x41\n\x06GetFab\x12\x19.flwr.proto.GetFabRequest\x1a\x1a.flwr.proto.GetFabResponse\"\x00\x62\x06proto3')
|
|
23
23
|
|
|
24
24
|
_globals = globals()
|
|
25
25
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/exec_pb2.py
CHANGED
|
@@ -16,7 +16,7 @@ from flwr.proto import fab_pb2 as flwr_dot_proto_dot_fab__pb2
|
|
|
16
16
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xdf\x02\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12L\n\x11\x66\x65\x64\x65ration_config\x18\x03 \x03(\x0b\x32\x31.flwr.proto.StartRunRequest.FederationConfigEntry\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1aK\n\x15\x46\x65\x64\x65rationConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\"\n\x10StartRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x66lwr/proto/exec.proto\x12\nflwr.proto\x1a\x14\x66lwr/proto/fab.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xdf\x02\n\x0fStartRunRequest\x12\x1c\n\x03\x66\x61\x62\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Fab\x12H\n\x0foverride_config\x18\x02 \x03(\x0b\x32/.flwr.proto.StartRunRequest.OverrideConfigEntry\x12L\n\x11\x66\x65\x64\x65ration_config\x18\x03 \x03(\x0b\x32\x31.flwr.proto.StartRunRequest.FederationConfigEntry\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1aK\n\x15\x46\x65\x64\x65rationConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\"\n\x10StartRunResponse\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"#\n\x11StreamLogsRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\"(\n\x12StreamLogsResponse\x12\x12\n\nlog_output\x18\x01 \x01(\t2\xa0\x01\n\x04\x45xec\x12G\n\x08StartRun\x12\x1b.flwr.proto.StartRunRequest\x1a\x1c.flwr.proto.StartRunResponse\"\x00\x12O\n\nStreamLogs\x12\x1d.flwr.proto.StreamLogsRequest\x1a\x1e.flwr.proto.StreamLogsResponse\"\x00\x30\x01\x62\x06proto3')
|
|
20
20
|
|
|
21
21
|
_globals = globals()
|
|
22
22
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/message_pb2.py
CHANGED
|
@@ -17,7 +17,7 @@ from flwr.proto import recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
|
|
|
17
17
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\
|
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66lwr/proto/message.proto\x12\nflwr.proto\x1a\x16\x66lwr/proto/error.proto\x1a\x1a\x66lwr/proto/recordset.proto\x1a\x1a\x66lwr/proto/transport.proto\"{\n\x07Message\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.flwr.proto.Metadata\x12&\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\x03 \x01(\x0b\x32\x11.flwr.proto.Error\"\xbf\x02\n\x07\x43ontext\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x38\n\x0bnode_config\x18\x02 \x03(\x0b\x32#.flwr.proto.Context.NodeConfigEntry\x12$\n\x05state\x18\x03 \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12\x36\n\nrun_config\x18\x04 \x03(\x0b\x32\".flwr.proto.Context.RunConfigEntry\x1a\x45\n\x0fNodeConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\x1a\x44\n\x0eRunConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\xbb\x01\n\x08Metadata\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x12\n\nmessage_id\x18\x02 \x01(\t\x12\x13\n\x0bsrc_node_id\x18\x03 \x01(\x04\x12\x13\n\x0b\x64st_node_id\x18\x04 \x01(\x04\x12\x18\n\x10reply_to_message\x18\x05 \x01(\t\x12\x10\n\x08group_id\x18\x06 \x01(\t\x12\x0b\n\x03ttl\x18\x07 \x01(\x01\x12\x14\n\x0cmessage_type\x18\x08 \x01(\t\x12\x12\n\ncreated_at\x18\t \x01(\x01\x62\x06proto3')
|
|
21
21
|
|
|
22
22
|
_globals = globals()
|
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/node_pb2.py
CHANGED
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
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(\
|
|
17
|
+
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')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/run_pb2.py
CHANGED
|
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
|
|
|
15
15
|
from flwr.proto import transport_pb2 as flwr_dot_proto_dot_transport__pb2
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\
|
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x66lwr/proto/run.proto\x12\nflwr.proto\x1a\x1a\x66lwr/proto/transport.proto\"\xd5\x01\n\x03Run\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\x12\x0e\n\x06\x66\x61\x62_id\x18\x02 \x01(\t\x12\x13\n\x0b\x66\x61\x62_version\x18\x03 \x01(\t\x12<\n\x0foverride_config\x18\x04 \x03(\x0b\x32#.flwr.proto.Run.OverrideConfigEntry\x12\x10\n\x08\x66\x61\x62_hash\x18\x05 \x01(\t\x1aI\n\x13OverrideConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.flwr.proto.Scalar:\x02\x38\x01\"\x1f\n\rGetRunRequest\x12\x0e\n\x06run_id\x18\x01 \x01(\x04\".\n\x0eGetRunResponse\x12\x1c\n\x03run\x18\x01 \x01(\x0b\x32\x0f.flwr.proto.Runb\x06proto3')
|
|
19
19
|
|
|
20
20
|
_globals = globals()
|
|
21
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
flwr/proto/task_pb2.py
CHANGED
|
@@ -17,7 +17,7 @@ from flwr.proto import recordset_pb2 as flwr_dot_proto_dot_recordset__pb2
|
|
|
17
17
|
from flwr.proto import error_pb2 as flwr_dot_proto_dot_error__pb2
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
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/recordset.proto\x1a\x16\x66lwr/proto/error.proto\"\x89\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(\x01\x12\x14\n\x0c\x64\x65livered_at\x18\x04 \x01(\t\x12\x11\n\tpushed_at\x18\x05 \x01(\x01\x12\x0b\n\x03ttl\x18\x06 \x01(\x01\x12\x10\n\x08\x61ncestry\x18\x07 \x03(\t\x12\x11\n\ttask_type\x18\x08 \x01(\t\x12(\n\trecordset\x18\t \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\n \x01(\x0b\x32\x11.flwr.proto.Error\"\\\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\
|
|
20
|
+
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/recordset.proto\x1a\x16\x66lwr/proto/error.proto\"\x89\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(\x01\x12\x14\n\x0c\x64\x65livered_at\x18\x04 \x01(\t\x12\x11\n\tpushed_at\x18\x05 \x01(\x01\x12\x0b\n\x03ttl\x18\x06 \x01(\x01\x12\x10\n\x08\x61ncestry\x18\x07 \x03(\t\x12\x11\n\ttask_type\x18\x08 \x01(\t\x12(\n\trecordset\x18\t \x01(\x0b\x32\x15.flwr.proto.RecordSet\x12 \n\x05\x65rror\x18\n \x01(\x0b\x32\x11.flwr.proto.Error\"\\\n\x07TaskIns\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Task\"\\\n\x07TaskRes\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\x04\x12\x1e\n\x04task\x18\x04 \x01(\x0b\x32\x10.flwr.proto.Taskb\x06proto3')
|
|
21
21
|
|
|
22
22
|
_globals = globals()
|
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -33,7 +33,14 @@ from flwr.proto.task_pb2 import Task, TaskIns, TaskRes # pylint: disable=E0611
|
|
|
33
33
|
from flwr.server.utils.validator import validate_task_ins_or_res
|
|
34
34
|
|
|
35
35
|
from .state import State
|
|
36
|
-
from .utils import
|
|
36
|
+
from .utils import (
|
|
37
|
+
convert_sint64_to_uint64,
|
|
38
|
+
convert_sint64_values_in_dict_to_uint64,
|
|
39
|
+
convert_uint64_to_sint64,
|
|
40
|
+
convert_uint64_values_in_dict_to_sint64,
|
|
41
|
+
generate_rand_int_from_bytes,
|
|
42
|
+
make_node_unavailable_taskres,
|
|
43
|
+
)
|
|
37
44
|
|
|
38
45
|
SQL_CREATE_TABLE_NODE = """
|
|
39
46
|
CREATE TABLE IF NOT EXISTS node(
|
|
@@ -223,6 +230,12 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
223
230
|
# Store TaskIns
|
|
224
231
|
task_ins.task_id = str(task_id)
|
|
225
232
|
data = (task_ins_to_dict(task_ins),)
|
|
233
|
+
|
|
234
|
+
# Convert values from uint64 to sint64 for SQLite
|
|
235
|
+
convert_uint64_values_in_dict_to_sint64(
|
|
236
|
+
data[0], ["run_id", "producer_node_id", "consumer_node_id"]
|
|
237
|
+
)
|
|
238
|
+
|
|
226
239
|
columns = ", ".join([f":{key}" for key in data[0]])
|
|
227
240
|
query = f"INSERT INTO task_ins VALUES({columns});"
|
|
228
241
|
|
|
@@ -284,6 +297,9 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
284
297
|
AND delivered_at = ""
|
|
285
298
|
"""
|
|
286
299
|
else:
|
|
300
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
301
|
+
data["node_id"] = convert_uint64_to_sint64(node_id)
|
|
302
|
+
|
|
287
303
|
# Retrieve all TaskIns for node_id
|
|
288
304
|
query = """
|
|
289
305
|
SELECT task_id
|
|
@@ -292,7 +308,6 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
292
308
|
AND consumer_node_id == :node_id
|
|
293
309
|
AND delivered_at = ""
|
|
294
310
|
"""
|
|
295
|
-
data["node_id"] = node_id
|
|
296
311
|
|
|
297
312
|
if limit is not None:
|
|
298
313
|
query += " LIMIT :limit"
|
|
@@ -322,6 +337,12 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
322
337
|
# Run query
|
|
323
338
|
rows = self.query(query, data)
|
|
324
339
|
|
|
340
|
+
for row in rows:
|
|
341
|
+
# Convert values from sint64 to uint64
|
|
342
|
+
convert_sint64_values_in_dict_to_uint64(
|
|
343
|
+
row, ["run_id", "producer_node_id", "consumer_node_id"]
|
|
344
|
+
)
|
|
345
|
+
|
|
325
346
|
result = [dict_to_task_ins(row) for row in rows]
|
|
326
347
|
|
|
327
348
|
return result
|
|
@@ -354,6 +375,12 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
354
375
|
# Store TaskIns
|
|
355
376
|
task_res.task_id = str(task_id)
|
|
356
377
|
data = (task_res_to_dict(task_res),)
|
|
378
|
+
|
|
379
|
+
# Convert values from uint64 to sint64 for SQLite
|
|
380
|
+
convert_uint64_values_in_dict_to_sint64(
|
|
381
|
+
data[0], ["run_id", "producer_node_id", "consumer_node_id"]
|
|
382
|
+
)
|
|
383
|
+
|
|
357
384
|
columns = ", ".join([f":{key}" for key in data[0]])
|
|
358
385
|
query = f"INSERT INTO task_res VALUES({columns});"
|
|
359
386
|
|
|
@@ -431,6 +458,12 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
431
458
|
# Run query
|
|
432
459
|
rows = self.query(query, data)
|
|
433
460
|
|
|
461
|
+
for row in rows:
|
|
462
|
+
# Convert values from sint64 to uint64
|
|
463
|
+
convert_sint64_values_in_dict_to_uint64(
|
|
464
|
+
row, ["run_id", "producer_node_id", "consumer_node_id"]
|
|
465
|
+
)
|
|
466
|
+
|
|
434
467
|
result = [dict_to_task_res(row) for row in rows]
|
|
435
468
|
|
|
436
469
|
# 1. Query: Fetch consumer_node_id of remaining task_ids
|
|
@@ -474,6 +507,13 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
474
507
|
for row in task_ins_rows:
|
|
475
508
|
if limit and len(result) == limit:
|
|
476
509
|
break
|
|
510
|
+
|
|
511
|
+
for row in rows:
|
|
512
|
+
# Convert values from sint64 to uint64
|
|
513
|
+
convert_sint64_values_in_dict_to_uint64(
|
|
514
|
+
row, ["run_id", "producer_node_id", "consumer_node_id"]
|
|
515
|
+
)
|
|
516
|
+
|
|
477
517
|
task_ins = dict_to_task_ins(row)
|
|
478
518
|
err_taskres = make_node_unavailable_taskres(
|
|
479
519
|
ref_taskins=task_ins,
|
|
@@ -544,8 +584,11 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
544
584
|
self, ping_interval: float, public_key: Optional[bytes] = None
|
|
545
585
|
) -> int:
|
|
546
586
|
"""Create, store in state, and return `node_id`."""
|
|
547
|
-
# Sample a random
|
|
548
|
-
|
|
587
|
+
# Sample a random uint64 as node_id
|
|
588
|
+
uint64_node_id = generate_rand_int_from_bytes(NODE_ID_NUM_BYTES)
|
|
589
|
+
|
|
590
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
591
|
+
sint64_node_id = convert_uint64_to_sint64(uint64_node_id)
|
|
549
592
|
|
|
550
593
|
query = "SELECT node_id FROM node WHERE public_key = :public_key;"
|
|
551
594
|
row = self.query(query, {"public_key": public_key})
|
|
@@ -562,17 +605,28 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
562
605
|
|
|
563
606
|
try:
|
|
564
607
|
self.query(
|
|
565
|
-
query,
|
|
608
|
+
query,
|
|
609
|
+
(
|
|
610
|
+
sint64_node_id,
|
|
611
|
+
time.time() + ping_interval,
|
|
612
|
+
ping_interval,
|
|
613
|
+
public_key,
|
|
614
|
+
),
|
|
566
615
|
)
|
|
567
616
|
except sqlite3.IntegrityError:
|
|
568
617
|
log(ERROR, "Unexpected node registration failure.")
|
|
569
618
|
return 0
|
|
570
|
-
|
|
619
|
+
|
|
620
|
+
# Note: we need to return the uint64 value of the node_id
|
|
621
|
+
return uint64_node_id
|
|
571
622
|
|
|
572
623
|
def delete_node(self, node_id: int, public_key: Optional[bytes] = None) -> None:
|
|
573
624
|
"""Delete a node."""
|
|
625
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
626
|
+
sint64_node_id = convert_uint64_to_sint64(node_id)
|
|
627
|
+
|
|
574
628
|
query = "DELETE FROM node WHERE node_id = ?"
|
|
575
|
-
params = (
|
|
629
|
+
params = (sint64_node_id,)
|
|
576
630
|
|
|
577
631
|
if public_key is not None:
|
|
578
632
|
query += " AND public_key = ?"
|
|
@@ -597,15 +651,20 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
597
651
|
If the provided `run_id` does not exist or has no matching nodes,
|
|
598
652
|
an empty `Set` MUST be returned.
|
|
599
653
|
"""
|
|
654
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
655
|
+
sint64_run_id = convert_uint64_to_sint64(run_id)
|
|
656
|
+
|
|
600
657
|
# Validate run ID
|
|
601
658
|
query = "SELECT COUNT(*) FROM run WHERE run_id = ?;"
|
|
602
|
-
if self.query(query, (
|
|
659
|
+
if self.query(query, (sint64_run_id,))[0]["COUNT(*)"] == 0:
|
|
603
660
|
return set()
|
|
604
661
|
|
|
605
662
|
# Get nodes
|
|
606
663
|
query = "SELECT node_id FROM node WHERE online_until > ?;"
|
|
607
664
|
rows = self.query(query, (time.time(),))
|
|
608
|
-
|
|
665
|
+
|
|
666
|
+
# Convert sint64 node_ids to uint64
|
|
667
|
+
result: set[int] = {convert_sint64_to_uint64(row["node_id"]) for row in rows}
|
|
609
668
|
return result
|
|
610
669
|
|
|
611
670
|
def get_node_id(self, node_public_key: bytes) -> Optional[int]:
|
|
@@ -614,7 +673,11 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
614
673
|
row = self.query(query, {"public_key": node_public_key})
|
|
615
674
|
if len(row) > 0:
|
|
616
675
|
node_id: int = row[0]["node_id"]
|
|
617
|
-
|
|
676
|
+
|
|
677
|
+
# Convert the sint64 value to uint64 after reading from SQLite
|
|
678
|
+
uint64_node_id = convert_sint64_to_uint64(node_id)
|
|
679
|
+
|
|
680
|
+
return uint64_node_id
|
|
618
681
|
return None
|
|
619
682
|
|
|
620
683
|
def create_run(
|
|
@@ -626,12 +689,15 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
626
689
|
) -> int:
|
|
627
690
|
"""Create a new run for the specified `fab_id` and `fab_version`."""
|
|
628
691
|
# Sample a random int64 as run_id
|
|
629
|
-
|
|
692
|
+
uint64_run_id = generate_rand_int_from_bytes(RUN_ID_NUM_BYTES)
|
|
693
|
+
|
|
694
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
695
|
+
sint64_run_id = convert_uint64_to_sint64(uint64_run_id)
|
|
630
696
|
|
|
631
697
|
# Check conflicts
|
|
632
698
|
query = "SELECT COUNT(*) FROM run WHERE run_id = ?;"
|
|
633
|
-
# If
|
|
634
|
-
if self.query(query, (
|
|
699
|
+
# If sint64_run_id does not exist
|
|
700
|
+
if self.query(query, (sint64_run_id,))[0]["COUNT(*)"] == 0:
|
|
635
701
|
query = (
|
|
636
702
|
"INSERT INTO run "
|
|
637
703
|
"(run_id, fab_id, fab_version, fab_hash, override_config)"
|
|
@@ -639,14 +705,22 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
639
705
|
)
|
|
640
706
|
if fab_hash:
|
|
641
707
|
self.query(
|
|
642
|
-
query,
|
|
708
|
+
query,
|
|
709
|
+
(sint64_run_id, "", "", fab_hash, json.dumps(override_config)),
|
|
643
710
|
)
|
|
644
711
|
else:
|
|
645
712
|
self.query(
|
|
646
713
|
query,
|
|
647
|
-
(
|
|
714
|
+
(
|
|
715
|
+
sint64_run_id,
|
|
716
|
+
fab_id,
|
|
717
|
+
fab_version,
|
|
718
|
+
"",
|
|
719
|
+
json.dumps(override_config),
|
|
720
|
+
),
|
|
648
721
|
)
|
|
649
|
-
return run_id
|
|
722
|
+
# Note: we need to return the uint64 value of the run_id
|
|
723
|
+
return uint64_run_id
|
|
650
724
|
log(ERROR, "Unexpected run creation failure.")
|
|
651
725
|
return 0
|
|
652
726
|
|
|
@@ -705,11 +779,13 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
705
779
|
|
|
706
780
|
def get_run(self, run_id: int) -> Optional[Run]:
|
|
707
781
|
"""Retrieve information about the run with the specified `run_id`."""
|
|
782
|
+
# Convert the uint64 value to sint64 for SQLite
|
|
783
|
+
sint64_run_id = convert_uint64_to_sint64(run_id)
|
|
708
784
|
query = "SELECT * FROM run WHERE run_id = ?;"
|
|
709
785
|
try:
|
|
710
|
-
row = self.query(query, (
|
|
786
|
+
row = self.query(query, (sint64_run_id,))[0]
|
|
711
787
|
return Run(
|
|
712
|
-
run_id=run_id,
|
|
788
|
+
run_id=convert_sint64_to_uint64(row["run_id"]),
|
|
713
789
|
fab_id=row["fab_id"],
|
|
714
790
|
fab_version=row["fab_version"],
|
|
715
791
|
fab_hash=row["fab_hash"],
|
|
@@ -721,10 +797,14 @@ class SqliteState(State): # pylint: disable=R0904
|
|
|
721
797
|
|
|
722
798
|
def acknowledge_ping(self, node_id: int, ping_interval: float) -> bool:
|
|
723
799
|
"""Acknowledge a ping received from a node, serving as a heartbeat."""
|
|
800
|
+
sint64_node_id = convert_uint64_to_sint64(node_id)
|
|
801
|
+
|
|
724
802
|
# Update `online_until` and `ping_interval` for the given `node_id`
|
|
725
803
|
query = "UPDATE node SET online_until = ?, ping_interval = ? WHERE node_id = ?;"
|
|
726
804
|
try:
|
|
727
|
-
self.query(
|
|
805
|
+
self.query(
|
|
806
|
+
query, (time.time() + ping_interval, ping_interval, sint64_node_id)
|
|
807
|
+
)
|
|
728
808
|
return True
|
|
729
809
|
except sqlite3.IntegrityError:
|
|
730
810
|
log(ERROR, "`node_id` does not exist.")
|
|
@@ -33,8 +33,104 @@ NODE_UNAVAILABLE_ERROR_REASON = (
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def generate_rand_int_from_bytes(num_bytes: int) -> int:
|
|
36
|
-
"""Generate a random `num_bytes`
|
|
37
|
-
return int.from_bytes(urandom(num_bytes), "little", signed=
|
|
36
|
+
"""Generate a random unsigned integer from `num_bytes` bytes."""
|
|
37
|
+
return int.from_bytes(urandom(num_bytes), "little", signed=False)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def convert_uint64_to_sint64(u: int) -> int:
|
|
41
|
+
"""Convert a uint64 value to a sint64 value with the same bit sequence.
|
|
42
|
+
|
|
43
|
+
Parameters
|
|
44
|
+
----------
|
|
45
|
+
u : int
|
|
46
|
+
The unsigned 64-bit integer to convert.
|
|
47
|
+
|
|
48
|
+
Returns
|
|
49
|
+
-------
|
|
50
|
+
int
|
|
51
|
+
The signed 64-bit integer equivalent.
|
|
52
|
+
|
|
53
|
+
The signed 64-bit integer will have the same bit pattern as the
|
|
54
|
+
unsigned 64-bit integer but may have a different decimal value.
|
|
55
|
+
|
|
56
|
+
For numbers within the range [0, `sint64` max value], the decimal
|
|
57
|
+
value remains the same. However, for numbers greater than the `sint64`
|
|
58
|
+
max value, the decimal value will differ due to the wraparound caused
|
|
59
|
+
by the sign bit.
|
|
60
|
+
"""
|
|
61
|
+
if u >= (1 << 63):
|
|
62
|
+
return u - (1 << 64)
|
|
63
|
+
return u
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def convert_sint64_to_uint64(s: int) -> int:
|
|
67
|
+
"""Convert a sint64 value to a uint64 value with the same bit sequence.
|
|
68
|
+
|
|
69
|
+
Parameters
|
|
70
|
+
----------
|
|
71
|
+
s : int
|
|
72
|
+
The signed 64-bit integer to convert.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
int
|
|
77
|
+
The unsigned 64-bit integer equivalent.
|
|
78
|
+
|
|
79
|
+
The unsigned 64-bit integer will have the same bit pattern as the
|
|
80
|
+
signed 64-bit integer but may have a different decimal value.
|
|
81
|
+
|
|
82
|
+
For negative `sint64` values, the conversion adds 2^64 to the
|
|
83
|
+
signed value to obtain the equivalent `uint64` value. For non-negative
|
|
84
|
+
`sint64` values, the decimal value remains unchanged in the `uint64`
|
|
85
|
+
representation.
|
|
86
|
+
"""
|
|
87
|
+
if s < 0:
|
|
88
|
+
return s + (1 << 64)
|
|
89
|
+
return s
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def convert_uint64_values_in_dict_to_sint64(
|
|
93
|
+
data_dict: dict[str, int], keys: list[str]
|
|
94
|
+
) -> None:
|
|
95
|
+
"""Convert uint64 values to sint64 in the given dictionary.
|
|
96
|
+
|
|
97
|
+
Parameters
|
|
98
|
+
----------
|
|
99
|
+
data_dict : dict[str, int]
|
|
100
|
+
A dictionary where the values are integers to be converted.
|
|
101
|
+
keys : list[str]
|
|
102
|
+
A list of keys in the dictionary whose values need to be converted.
|
|
103
|
+
|
|
104
|
+
Returns
|
|
105
|
+
-------
|
|
106
|
+
None
|
|
107
|
+
This function does not return a value. It modifies `data_dict` in place.
|
|
108
|
+
"""
|
|
109
|
+
for key in keys:
|
|
110
|
+
if key in data_dict:
|
|
111
|
+
data_dict[key] = convert_uint64_to_sint64(data_dict[key])
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def convert_sint64_values_in_dict_to_uint64(
|
|
115
|
+
data_dict: dict[str, int], keys: list[str]
|
|
116
|
+
) -> None:
|
|
117
|
+
"""Convert sint64 values to uint64 in the given dictionary.
|
|
118
|
+
|
|
119
|
+
Parameters
|
|
120
|
+
----------
|
|
121
|
+
data_dict : dict[str, int]
|
|
122
|
+
A dictionary where the values are integers to be converted.
|
|
123
|
+
keys : list[str]
|
|
124
|
+
A list of keys in the dictionary whose values need to be converted.
|
|
125
|
+
|
|
126
|
+
Returns
|
|
127
|
+
-------
|
|
128
|
+
None
|
|
129
|
+
This function does not return a value. It modifies `data_dict` in place.
|
|
130
|
+
"""
|
|
131
|
+
for key in keys:
|
|
132
|
+
if key in data_dict:
|
|
133
|
+
data_dict[key] = convert_sint64_to_uint64(data_dict[key])
|
|
38
134
|
|
|
39
135
|
|
|
40
136
|
def make_node_unavailable_taskres(ref_taskins: TaskIns) -> TaskRes:
|
{flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/RECORD
RENAMED
|
@@ -135,7 +135,7 @@ flwr/common/telemetry.py,sha256=PvdlipCPYciqEgmXRwQ1HklP1uyECcNqt9HTBzthmAg,8904
|
|
|
135
135
|
flwr/common/typing.py,sha256=ZVviEABqDeGCyo_yM9ft8EbIGA9RaLOeoNHmMnTkmUo,4985
|
|
136
136
|
flwr/common/version.py,sha256=tCcl_FvxVK206C1dxIJCs4TjL06WmyaODBP19FRHE1c,1324
|
|
137
137
|
flwr/proto/__init__.py,sha256=hbY7JYakwZwCkYgCNlmHdc8rtvfoJbAZLalMdc--CGc,683
|
|
138
|
-
flwr/proto/clientappio_pb2.py,sha256=
|
|
138
|
+
flwr/proto/clientappio_pb2.py,sha256=Y3PMv-JMaBGehpslgbvGY6l2u5vNpfCTFWu-fmAmBJ4,3703
|
|
139
139
|
flwr/proto/clientappio_pb2.pyi,sha256=iL6pOPmnot5wP3aXGiDfiUpp-eJIkysyju0ebPehS8Y,5670
|
|
140
140
|
flwr/proto/clientappio_pb2_grpc.py,sha256=G35GhZ3iEOL8N6tu7Kn_ip4QUx4O2HveXngHAuU2YEM,6112
|
|
141
141
|
flwr/proto/clientappio_pb2_grpc.pyi,sha256=cybktpMPaIMwrItd8hQaQDnRv4zNu_wgRddSqR9REyI,1822
|
|
@@ -143,7 +143,7 @@ flwr/proto/common_pb2.py,sha256=uzSmq0FJdC-MriN9UGPFs7QVIFTKJmX5lyLnzcyZ5WE,2405
|
|
|
143
143
|
flwr/proto/common_pb2.pyi,sha256=0ylFO7G79qqLuRg9IQUCBdgyIIFv4m8VzrfoWad4xXU,5394
|
|
144
144
|
flwr/proto/common_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
145
145
|
flwr/proto/common_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
146
|
-
flwr/proto/driver_pb2.py,sha256=
|
|
146
|
+
flwr/proto/driver_pb2.py,sha256=gxlDAZUCELzYCkmhxcJdVyGXLmzYFXVFeqlJAIHPChE,4299
|
|
147
147
|
flwr/proto/driver_pb2.pyi,sha256=apvTyy7N0SV3H8mueOwgB8aDETtxb6ZuKB1g1nMmJ4o,6390
|
|
148
148
|
flwr/proto/driver_pb2_grpc.py,sha256=ZNDFyPfEZt5L3eFqJRwAE_ylwWLTNf1hfXzUGkVpzTI,10462
|
|
149
149
|
flwr/proto/driver_pb2_grpc.pyi,sha256=_SLFI7AvJv5JU_7axipERF4oTspRh3bzZswLiKDtV1E,2812
|
|
@@ -151,7 +151,7 @@ flwr/proto/error_pb2.py,sha256=LarjKL90LbwkXKlhzNrDssgl4DXcvIPve8NVCXHpsKA,1084
|
|
|
151
151
|
flwr/proto/error_pb2.pyi,sha256=ZNH4HhJTU_KfMXlyCeg8FwU-fcUYxTqEmoJPtWtHikc,734
|
|
152
152
|
flwr/proto/error_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
153
153
|
flwr/proto/error_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
154
|
-
flwr/proto/exec_pb2.py,sha256=
|
|
154
|
+
flwr/proto/exec_pb2.py,sha256=GH_VWC-BZwWmeWdmjP4IkXvwR8yY1uBZNNwKru-ZZL4,3231
|
|
155
155
|
flwr/proto/exec_pb2.pyi,sha256=5y6L3xFkAuCfLTn2pVIHQAlXp17YcTTq8WVDS7_MPl4,4273
|
|
156
156
|
flwr/proto/exec_pb2_grpc.py,sha256=faAN19XEMP8GTKrcIU6jvlWkN44n2KiUsZh_OG0sYcg,4072
|
|
157
157
|
flwr/proto/exec_pb2_grpc.pyi,sha256=VrFhT1Um3Nb8UC2YqnR9GIiM-Yyx0FqaxVOWljh-G_w,1208
|
|
@@ -167,11 +167,11 @@ flwr/proto/grpcadapter_pb2.py,sha256=bb8mW09XzNCpMdr1KuYQkefPFWR8lc8y1uL6Uk0TtsM
|
|
|
167
167
|
flwr/proto/grpcadapter_pb2.pyi,sha256=AR77gDsF6f8zqSIQp3877DUd7S8lP95lFak5Ir_WPkw,1716
|
|
168
168
|
flwr/proto/grpcadapter_pb2_grpc.py,sha256=rRNuNES5nBugUZWfeA8oAy8dMHgzqU_PF1srTseo3b8,2634
|
|
169
169
|
flwr/proto/grpcadapter_pb2_grpc.pyi,sha256=AgA9Qo_lnANb9SNuPzbZGAxupau-xcqYawZz6vqf-24,735
|
|
170
|
-
flwr/proto/message_pb2.py,sha256=
|
|
170
|
+
flwr/proto/message_pb2.py,sha256=GW0ID-d2pvtgylsKxtINQx_oORgNGel3WJ3ybZcXxtI,3151
|
|
171
171
|
flwr/proto/message_pb2.pyi,sha256=_J9NjZa7Pr-kSO7-GGOL5EvIXQx5mQD04iVIvnVHBMU,5617
|
|
172
172
|
flwr/proto/message_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
173
173
|
flwr/proto/message_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
174
|
-
flwr/proto/node_pb2.py,sha256=
|
|
174
|
+
flwr/proto/node_pb2.py,sha256=qrxEpf7Up9XhigP8g9cIHVhmpdKmYpxMdlO67H0xjEM,1081
|
|
175
175
|
flwr/proto/node_pb2.pyi,sha256=aX3BHhgXvJE1rvcRnEE_gB-5GcaFQ0SJ88yTE223bjI,751
|
|
176
176
|
flwr/proto/node_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
177
177
|
flwr/proto/node_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
@@ -179,11 +179,11 @@ flwr/proto/recordset_pb2.py,sha256=un8L0kvBcgFXQIiQweOseeIJBjlOozUvQY9uTQ42Dqo,6
|
|
|
179
179
|
flwr/proto/recordset_pb2.pyi,sha256=NPzCJWAj1xLWzeZ_xZ6uaObQjQfWGnnqlLtn4J-SoFY,14161
|
|
180
180
|
flwr/proto/recordset_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
181
181
|
flwr/proto/recordset_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
182
|
-
flwr/proto/run_pb2.py,sha256=
|
|
182
|
+
flwr/proto/run_pb2.py,sha256=zTH0YjBETYhQzv2MC5TD8cW8Lvsc89ublkFtGuHp0ek,2102
|
|
183
183
|
flwr/proto/run_pb2.pyi,sha256=oIaKIjgyjnifossFMTSqQISEMb1IJYhSYGQYcAGBIS4,3063
|
|
184
184
|
flwr/proto/run_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
185
185
|
flwr/proto/run_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
186
|
-
flwr/proto/task_pb2.py,sha256=
|
|
186
|
+
flwr/proto/task_pb2.py,sha256=R5GfHgL8IJRI_qHWNeILl1Y9zHjvB0tnCvMHmTgF4Is,2361
|
|
187
187
|
flwr/proto/task_pb2.pyi,sha256=KJVsLm-THY5QjHreHDm_-OS1tyZyD61mx6BzOpoeMjw,4320
|
|
188
188
|
flwr/proto/task_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
189
189
|
flwr/proto/task_pb2_grpc.pyi,sha256=ff2TSiLVnG6IVQcTGzb2DIH3XRSoAvAo_RMcvbMFyc0,76
|
|
@@ -266,10 +266,10 @@ flwr/server/superlink/fleet/vce/backend/raybackend.py,sha256=7kB3re3mR53b7E6L6DP
|
|
|
266
266
|
flwr/server/superlink/fleet/vce/vce_api.py,sha256=cGPsjS_4SJHm8jszGjsHh8ZNk9nqWoIQwW_62yKKR1Y,12647
|
|
267
267
|
flwr/server/superlink/state/__init__.py,sha256=Gj2OTFLXvA-mAjBvwuKDM3rDrVaQPcIoybSa2uskMTE,1003
|
|
268
268
|
flwr/server/superlink/state/in_memory_state.py,sha256=DvPSyK-ITZI9XfW-1M0bljLa6Sj0JIUeHFbg5tKKc2s,13142
|
|
269
|
-
flwr/server/superlink/state/sqlite_state.py,sha256=
|
|
269
|
+
flwr/server/superlink/state/sqlite_state.py,sha256=W1qFF8QvQ9CwhqCwE_sqDERiFVb5rqppira7gJSWI-w,32155
|
|
270
270
|
flwr/server/superlink/state/state.py,sha256=KpM894R8RE1N0b-s_Nlii6i0TDxj0DRkKa3Vf24Gt70,8127
|
|
271
271
|
flwr/server/superlink/state/state_factory.py,sha256=Fo8pBQ1WWrVJK5TOEPZ_zgJE69_mfTGjTO6czh6571o,2021
|
|
272
|
-
flwr/server/superlink/state/utils.py,sha256=
|
|
272
|
+
flwr/server/superlink/state/utils.py,sha256=OsF3OOoU4bU4PgLWkypX6EDoFs0L8RP_mHEBG-tVqGA,5227
|
|
273
273
|
flwr/server/typing.py,sha256=5kaRLZuxTEse9A0g7aVna2VhYxU3wTq1f3d3mtw7kXs,1019
|
|
274
274
|
flwr/server/utils/__init__.py,sha256=pltsPHJoXmUIr3utjwwYxu7_ZAGy5u4MVHzv9iA5Un8,908
|
|
275
275
|
flwr/server/utils/tensorboard.py,sha256=gEBD8w_5uaIfp5aw5RYH66lYZpd_SfkObHQ7eDd9MUk,5466
|
|
@@ -294,8 +294,8 @@ flwr/superexec/exec_grpc.py,sha256=ZPq7EP55Vwj0kRcLVuTCokFqfIgBk-7YmDykZoMKi-c,1
|
|
|
294
294
|
flwr/superexec/exec_servicer.py,sha256=P4bJtQqCr0NiVIa-ss9lvdUM1SbM_ip5g5UqKp3dNL4,2344
|
|
295
295
|
flwr/superexec/executor.py,sha256=k_adivto6R2U82DADOHNvdtobehBYreRek1gOEBIQnQ,2318
|
|
296
296
|
flwr/superexec/simulation.py,sha256=J6pw-RqCSiUed8I_3MasZH4tl57ZmDebPAHNnbb0-vE,7420
|
|
297
|
-
flwr_nightly-1.12.0.
|
|
298
|
-
flwr_nightly-1.12.0.
|
|
299
|
-
flwr_nightly-1.12.0.
|
|
300
|
-
flwr_nightly-1.12.0.
|
|
301
|
-
flwr_nightly-1.12.0.
|
|
297
|
+
flwr_nightly-1.12.0.dev20240918.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
298
|
+
flwr_nightly-1.12.0.dev20240918.dist-info/METADATA,sha256=lnIUhAPYCT7RrWdszYziCh3uNppNN_xtOLQqihPN92I,15452
|
|
299
|
+
flwr_nightly-1.12.0.dev20240918.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
300
|
+
flwr_nightly-1.12.0.dev20240918.dist-info/entry_points.txt,sha256=WUCbqhLEOzjx_lyATIM0-f0e8kOVaQjzwOvyOxHrMhs,434
|
|
301
|
+
flwr_nightly-1.12.0.dev20240918.dist-info/RECORD,,
|
{flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/LICENSE
RENAMED
|
File without changes
|
{flwr_nightly-1.12.0.dev20240916.dist-info → flwr_nightly-1.12.0.dev20240918.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|