diff --git a/.release-version b/.release-version index 7ec1d6db..ccbccc3d 100644 --- a/.release-version +++ b/.release-version @@ -1 +1 @@ -2.1.0 +2.2.0 diff --git a/Pipfile b/Pipfile index bf005a3b..1103d838 100644 --- a/Pipfile +++ b/Pipfile @@ -22,7 +22,7 @@ more-itertools = "~=10.3" python-dotenv = "~=1.0" requests = "~=2.31" slackclient = "~=2.9" -lab-share-lib = {editable = false,git = 'https://github.com/sanger/lab-share-lib.git',ref = 'v1.0.1'} +lab-share-lib = {editable = false,git = 'https://github.com/sanger/lab-share-lib.git',ref = 'v1.1.1'} requests-mock = "*" types-requests = "*" python-snappy = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 6a099216..a9ebda57 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d0306e4eb3909b20c1fcb832d0d5209dc6efc482ffb19c7018df26dbd919b915" + "sha256": "27163657ef93fa02c069d035652b45009e72d7d77be535135dd276a0bc8e8932" }, "pipfile-spec": 6, "requires": { @@ -16,87 +16,95 @@ ] }, "default": { + "aiohappyeyeballs": { + "hashes": [ + "sha256:40a16ceffcf1fc9e142fd488123b2e218abc4188cf12ac20c67200e1579baa42", + "sha256:7e1ae8399c320a8adec76f6c919ed5ceae6edd4c3672f4d9eae2b27e37c80ff6" + ], + "markers": "python_version >= '3.8' and python_version < '4.0'", + "version": "==2.3.4" + }, "aiohttp": { "hashes": [ - "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8", - "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c", - "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475", - "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed", - "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf", - "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372", - "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81", - "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f", - "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1", - "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd", - "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a", - "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb", - "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46", - "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de", - "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78", - "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c", - "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771", - "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb", - "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430", - "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233", - "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156", - "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9", - "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59", - "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888", - "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c", - "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c", - "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da", - "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424", - "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2", - "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb", - "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8", - "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a", - "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10", - "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0", - "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09", - "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031", - "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4", - "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3", - "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa", - "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a", - "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe", - "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a", - "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2", - "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1", - "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323", - "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b", - "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b", - "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106", - "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac", - "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6", - "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832", - "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75", - "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6", - "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d", - "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72", - "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db", - "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a", - "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da", - "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678", - "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b", - "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24", - "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed", - "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f", - "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e", - "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58", - "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a", - "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342", - "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558", - "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2", - "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551", - "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595", - "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee", - "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11", - "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d", - "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7", - "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f" + "sha256:01c3f1eb280008e51965a8d160a108c333136f4a39d46f516c64d2aa2e6a53f2", + "sha256:028faf71b338f069077af6315ad54281612705d68889f5d914318cbc2aab0d50", + "sha256:03c0c380c83f8a8d4416224aafb88d378376d6f4cadebb56b060688251055cd4", + "sha256:0df51a3d70a2bfbb9c921619f68d6d02591f24f10e9c76de6f3388c89ed01de6", + "sha256:120548d89f14b76a041088b582454d89389370632ee12bf39d919cc5c561d1ca", + "sha256:1988b370536eb14f0ce7f3a4a5b422ab64c4e255b3f5d7752c5f583dc8c967fc", + "sha256:1a07c76a82390506ca0eabf57c0540cf5a60c993c442928fe4928472c4c6e5e6", + "sha256:1c2b104e81b3c3deba7e6f5bc1a9a0e9161c380530479970766a6655b8b77c7c", + "sha256:1c577cdcf8f92862363b3d598d971c6a84ed8f0bf824d4cc1ce70c2fb02acb4a", + "sha256:1f8605e573ed6c44ec689d94544b2c4bb1390aaa723a8b5a2cc0a5a485987a68", + "sha256:21778552ef3d44aac3278cc6f6d13a6423504fa5f09f2df34bfe489ed9ded7f5", + "sha256:2212296cdb63b092e295c3e4b4b442e7b7eb41e8a30d0f53c16d5962efed395d", + "sha256:222821c60b8f6a64c5908cb43d69c0ee978a1188f6a8433d4757d39231b42cdb", + "sha256:256ee6044214ee9d66d531bb374f065ee94e60667d6bbeaa25ca111fc3997158", + "sha256:2a384dfbe8bfebd203b778a30a712886d147c61943675f4719b56725a8bbe803", + "sha256:2fa643ca990323db68911b92f3f7a0ca9ae300ae340d0235de87c523601e58d9", + "sha256:41d8dab8c64ded1edf117d2a64f353efa096c52b853ef461aebd49abae979f16", + "sha256:440954ddc6b77257e67170d57b1026aa9545275c33312357472504eef7b4cc0b", + "sha256:47b4c2412960e64d97258f40616efddaebcb34ff664c8a972119ed38fac2a62c", + "sha256:4a9ce70f5e00380377aac0e568abd075266ff992be2e271765f7b35d228a990c", + "sha256:4dcb127ca3eb0a61205818a606393cbb60d93b7afb9accd2fd1e9081cc533144", + "sha256:4e9e9171d2fe6bfd9d3838a6fe63b1e91b55e0bf726c16edf265536e4eafed19", + "sha256:51d03e948e53b3639ce4d438f3d1d8202898ec6655cadcc09ec99229d4adc2a9", + "sha256:54b7f4a20d7cc6bfa4438abbde069d417bb7a119f870975f78a2b99890226d55", + "sha256:587237571a85716d6f71f60d103416c9df7d5acb55d96d3d3ced65f39bff9c0c", + "sha256:5951c328f9ac42d7bce7a6ded535879bc9ae13032818d036749631fa27777905", + "sha256:5a95151a5567b3b00368e99e9c5334a919514f60888a6b6d2054fea5e66e527e", + "sha256:5c12310d153b27aa630750be44e79313acc4e864c421eb7d2bc6fa3429c41bf8", + "sha256:5cd57ad998e3038aa87c38fe85c99ed728001bf5dde8eca121cadee06ee3f637", + "sha256:615348fab1a9ef7d0960a905e83ad39051ae9cb0d2837da739b5d3a7671e497a", + "sha256:67f7639424c313125213954e93a6229d3a1d386855d70c292a12628f600c7150", + "sha256:68164d43c580c2e8bf8e0eb4960142919d304052ccab92be10250a3a33b53268", + "sha256:68cc24f707ed9cb961f6ee04020ca01de2c89b2811f3cf3361dc7c96a14bfbcc", + "sha256:6b14c19172eb53b63931d3e62a9749d6519f7c121149493e6eefca055fcdb352", + "sha256:777e23609899cb230ad2642b4bdf1008890f84968be78de29099a8a86f10b261", + "sha256:786299d719eb5d868f161aeec56d589396b053925b7e0ce36e983d30d0a3e55c", + "sha256:7ccf1f0a304352c891d124ac1a9dea59b14b2abed1704aaa7689fc90ef9c5be1", + "sha256:88596384c3bec644a96ae46287bb646d6a23fa6014afe3799156aef42669c6bd", + "sha256:89b47c125ab07f0831803b88aeb12b04c564d5f07a1c1a225d4eb4d2f26e8b5e", + "sha256:8b0d058e4e425d3b45e8ec70d49b402f4d6b21041e674798b1f91ba027c73f28", + "sha256:8c81ff4afffef9b1186639506d70ea90888218f5ddfff03870e74ec80bb59970", + "sha256:8db9b749f589b5af8e4993623dbda6716b2b7a5fcb0fa2277bf3ce4b278c7059", + "sha256:8e5a26d7aac4c0d8414a347da162696eea0629fdce939ada6aedf951abb1d745", + "sha256:8fbf8c0ded367c5c8eaf585f85ca8dd85ff4d5b73fb8fe1e6ac9e1b5e62e11f7", + "sha256:93094eba50bc2ad4c40ff4997ead1fdcd41536116f2e7d6cfec9596a8ecb3615", + "sha256:9c186b270979fb1dee3ababe2d12fb243ed7da08b30abc83ebac3a928a4ddb15", + "sha256:9cb54f5725b4b37af12edf6c9e834df59258c82c15a244daa521a065fbb11717", + "sha256:9fbff00646cf8211b330690eb2fd64b23e1ce5b63a342436c1d1d6951d53d8dd", + "sha256:a57e73f9523e980f6101dc9a83adcd7ac0006ea8bf7937ca3870391c7bb4f8ff", + "sha256:a702bd3663b5cbf3916e84bf332400d24cdb18399f0877ca6b313ce6c08bfb43", + "sha256:a77c79bac8d908d839d32c212aef2354d2246eb9deb3e2cb01ffa83fb7a6ea5d", + "sha256:abda4009a30d51d3f06f36bc7411a62b3e647fa6cc935ef667e3e3d3a7dd09b1", + "sha256:b023b68c61ab0cd48bd38416b421464a62c381e32b9dc7b4bdfa2905807452a4", + "sha256:b07286a1090483799599a2f72f76ac396993da31f6e08efedb59f40876c144fa", + "sha256:b0de63ff0307eac3961b4af74382d30220d4813f36b7aaaf57f063a1243b4214", + "sha256:b7d5bb926805022508b7ddeaad957f1fce7a8d77532068d7bdb431056dc630cd", + "sha256:b9db600a86414a9a653e3c1c7f6a2f6a1894ab8f83d11505247bd1b90ad57157", + "sha256:b9fb6508893dc31cfcbb8191ef35abd79751db1d6871b3e2caee83959b4d91eb", + "sha256:bc3ea6ef2a83edad84bbdb5d96e22f587b67c68922cd7b6f9d8f24865e655bcf", + "sha256:bde0693073fd5e542e46ea100aa6c1a5d36282dbdbad85b1c3365d5421490a92", + "sha256:bf66149bb348d8e713f3a8e0b4f5b952094c2948c408e1cfef03b49e86745d60", + "sha256:bfe33cba6e127d0b5b417623c9aa621f0a69f304742acdca929a9fdab4593693", + "sha256:c8fb76214b5b739ce59e2236a6489d9dc3483649cfd6f563dbf5d8e40dbdd57d", + "sha256:cb8b79a65332e1a426ccb6290ce0409e1dc16b4daac1cc5761e059127fa3d134", + "sha256:d6bbe2c90c10382ca96df33b56e2060404a4f0f88673e1e84b44c8952517e5f3", + "sha256:d8311d0d690487359fe2247ec5d2cac9946e70d50dced8c01ce9e72341c21151", + "sha256:d8a8221a63602008550022aa3a4152ca357e1dde7ab3dd1da7e1925050b56863", + "sha256:de1a91d5faded9054957ed0a9e01b9d632109341942fc123947ced358c5d9009", + "sha256:df31641e3f02b77eb3c5fb63c0508bee0fc067cf153da0e002ebbb0db0b6d91a", + "sha256:e7168782621be4448d90169a60c8b37e9b0926b3b79b6097bc180c0a8a119e73", + "sha256:e7b55d9ede66af7feb6de87ff277e0ccf6d51c7db74cc39337fe3a0e31b5872d", + "sha256:e7dbf637f87dd315fa1f36aaed8afa929ee2c607454fb7791e74c88a0d94da59", + "sha256:f5293726943bdcea24715b121d8c4ae12581441d22623b0e6ab12d07ce85f9c4", + "sha256:f5dd109a925fee4c9ac3f6a094900461a2712df41745f5d04782ebcbe6479ccb", + "sha256:f6979b4f20d3e557a867da9d9227de4c156fcdcb348a5848e3e6190fd7feb972", + "sha256:f9f8beed277488a52ee2b459b23c4135e54d6a819eaba2e120e57311015b58e9" ], "markers": "python_version >= '3.8'", - "version": "==3.9.5" + "version": "==3.10.1" }, "aiosignal": { "hashes": [ @@ -108,18 +116,17 @@ }, "attrs": { "hashes": [ - "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", - "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1" + "sha256:377b47448cb61fea38533f671fba0d0f8a96fd58facd4dc518e3dac9dbea0905", + "sha256:adbdec84af72d38be7628e353a09b6a6790d15cd71819f6e9d7b0faa8a125745" ], "markers": "python_version >= '3.7'", - "version": "==23.2.0" + "version": "==24.1.0" }, "certifi": { "hashes": [ "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" ], - "index": "pypi", "markers": "python_version >= '3.6'", "version": "==2024.7.4" }, @@ -317,40 +324,40 @@ }, "fastavro": { "hashes": [ - "sha256:02bf1276b7326397314adf41b34a4890f6ffa59cf7e0eb20b9e4ab0a143a1598", - "sha256:063d01d197fc929c20adc09ca9f0ca86d33ac25ee0963ce0b438244eee8315ae", - "sha256:0cd2099c8c672b853e0b20c13e9b62a69d3fbf67ee7c59c7271ba5df1680310d", - "sha256:23d7e5b29c9bf6f26e8be754b2c8b919838e506f78ef724de7d22881696712fc", - "sha256:24d6942eb1db14640c2581e0ecd1bbe0afc8a83731fcd3064ae7f429d7880cb7", - "sha256:253c63993250bff4ee7b11fb46cf3a4622180a783bedc82a24c6fdcd1b10ca2a", - "sha256:2e6ab3ee53944326460edf1125b2ad5be2fadd80f7211b13c45fa0c503b4cf8d", - "sha256:33d0a00a6e09baa20f6f038d7a2ddcb7eef0e7a9980e947a018300cb047091b8", - "sha256:4451ee9a305a73313a1558d471299f3130e4ecc10a88bf5742aa03fb37e042e6", - "sha256:56b8363e360a1256c94562393dc7f8611f3baf2b3159f64fb2b9c6b87b14e876", - "sha256:56bed9eca435389a8861e6e2d631ec7f8f5dda5b23f93517ac710665bd34ca29", - "sha256:60cb38f07462a7fb4e4440ed0de67d3d400ae6b3d780f81327bebde9aa55faef", - "sha256:64d335ec2004204c501f8697c385d0a8f6b521ac82d5b30696f789ff5bc85f3c", - "sha256:68912f2020e1b3d70557260b27dd85fb49a4fc6bfab18d384926127452c1da4c", - "sha256:6925ce137cdd78e109abdb0bc33aad55de6c9f2d2d3036b65453128f2f5f5b92", - "sha256:7e05f44c493e89e73833bd3ff3790538726906d2856f59adc8103539f4a1b232", - "sha256:87a9053fcfbc895f2a16a4303af22077e3a8fdcf1cd5d6ed47ff2ef22cbba2f0", - "sha256:8b928cd294e36e35516d0deb9e104b45be922ba06940794260a4e5dbed6c192a", - "sha256:903d97418120ca6b6a7f38a731166c1ccc2c4344ee5e0470d09eb1dc3687540a", - "sha256:90c9838bc4c991ffff5dd9d88a0cc0030f938b3fdf038cdf6babde144b920246", - "sha256:a4b02839ac261100cefca2e2ad04cdfedc556cb66b5ec735e0db428e74b399de", - "sha256:a8524fccfb379565568c045d29b2ebf71e1f2c0dd484aeda9fe784ef5febe1a8", - "sha256:ac26ab0774d1b2b7af6d8f4300ad20bbc4b5469e658a02931ad13ce23635152f", - "sha256:af8c6d8c43a02b5569c093fc5467469541ac408c79c36a5b0900d3dd0b3ba838", - "sha256:c293897f12f910e58a1024f9c77f565aa8e23b36aafda6ad8e7041accc57a57f", - "sha256:c443eeb99899d062dbf78c525e4614dd77e041a7688fa2710c224f4033f193ae", - "sha256:cf7247874c22be856ba7d1f46a0f6e0379a6025f1a48a7da640444cbac6f570b", - "sha256:d47bb66be6091cd48cfe026adcad11c8b11d7d815a2949a1e4ccf03df981ca65", - "sha256:e4a138710bd61580324d23bc5e3df01f0b82aee0a76404d5dddae73d9e4c723f", - "sha256:eca6e54da571b06a3c5a72dbb7212073f56c92a6fbfbf847b91c347510f8a426", - "sha256:f05d2afcb10a92e2a9e580a3891f090589b3e567fdc5641f8a46a0b084f120c3" + "sha256:05d13f98d4e325be40387e27da9bd60239968862fe12769258225c62ec906f04", + "sha256:06e6df8527493a9f0d9a8778df82bab8b1aa6d80d1b004e5aec0a31dc4dc501c", + "sha256:07b6288e8681eede16ff077632c47395d4925c2f51545cd7a60f194454db2211", + "sha256:0adbf4956fd53bd74c41e7855bb45ccce953e0eb0e44f5836d8d54ad843f9944", + "sha256:195a5b8e33eb89a1a9b63fa9dce7a77d41b3b0cd785bac6044df619f120361a2", + "sha256:240df8bacd13ff5487f2465604c007d686a566df5cbc01d0550684eaf8ff014a", + "sha256:27820da3b17bc01cebb6d1687c9d7254b16d149ef458871aaa207ed8950f3ae6", + "sha256:44cb154f863ad80e41aea72a709b12e1533b8728c89b9b1348af91a6154ab2f5", + "sha256:48c7b5e6d2f3bf7917af301c275b05c5be3dd40bb04e80979c9e7a2ab31a00d1", + "sha256:53d838e31457db8bf44460c244543f75ed307935d5fc1d93bc631cc7caef2082", + "sha256:5b47948eb196263f6111bf34e1cd08d55529d4ed46eb50c1bc8c7c30a8d18868", + "sha256:61253148e95dd2b6457247b441b7555074a55de17aef85f5165bfd5facf600fc", + "sha256:6419ebf45f88132a9945c51fe555d4f10bb97c236288ed01894f957c6f914553", + "sha256:724ef192bc9c55d5b4c7df007f56a46a21809463499856349d4580a55e2b914c", + "sha256:753f5eedeb5ca86004e23a9ce9b41c5f25eb64a876f95edcc33558090a7f3e4b", + "sha256:85b7a66ad521298ad9373dfe1897a6ccfc38feab54a47b97922e213ae5ad8870", + "sha256:85e05969956003df8fa4491614bc62fe40cec59e94d06e8aaa8d8256ee3aab82", + "sha256:88fbbe16c61d90a89d78baeb5a34dc1c63a27b115adccdbd6b1fb6f787deacf2", + "sha256:9827d1654d7bcb118ef5efd3e5b2c9ab2a48d44dac5e8c6a2327bc3ac3caa828", + "sha256:b133456c8975ec7d2a99e16a7e68e896e45c821b852675eac4ee25364b999c14", + "sha256:b47a54a9700de3eabefd36dabfb237808acae47bc873cada6be6990ef6b165aa", + "sha256:b5f7f2b1fe21231fd01f1a2a90e714ae267fe633cd7ce930c0aea33d1c9f4901", + "sha256:b604935d671ad47d888efc92a106f98e9440874108b444ac10e28d643109c937", + "sha256:be612c109efb727bfd36d4d7ed28eb8e0506617b7dbe746463ebbf81e85eaa6b", + "sha256:bf586373c3d1748cac849395aad70c198ee39295f92e7c22c75757b5c0300fbe", + "sha256:bfd11fe355a8f9c0416803afac298960eb4c603a23b1c74ff9c1d3e673ea7185", + "sha256:c3bb35c25bbc3904e1c02333bc1ae0173e0a44aa37a8e95d07e681601246e1f1", + "sha256:c52d7bb69f617c90935a3e56feb2c34d4276819a5c477c466c6c08c224a10409", + "sha256:d84b69dca296667e6137ae7c9a96d060123adbc0c00532cc47012b64d38b47e9", + "sha256:ef08cf247fdfd61286ac0c41854f7194f2ad05088066a756423d7299b688d975", + "sha256:fb744e9de40fb1dc75354098c8db7da7636cba50a40f7bef3b3fb20f8d189d88" ], "markers": "python_version >= '3.8'", - "version": "==1.9.4" + "version": "==1.9.5" }, "frozenlist": { "hashes": [ @@ -446,7 +453,7 @@ "lab-share-lib": { "editable": false, "git": "https://github.com/sanger/lab-share-lib.git", - "ref": "fef2be61cdf04436656c3ddf1363f248d614b581" + "ref": "2e131ffe86184647c4aee031da4f778a6fbe20cb" }, "more-itertools": { "hashes": [ @@ -722,48 +729,48 @@ "develop": { "attrs": { "hashes": [ - "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30", - "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1" + "sha256:377b47448cb61fea38533f671fba0d0f8a96fd58facd4dc518e3dac9dbea0905", + "sha256:adbdec84af72d38be7628e353a09b6a6790d15cd71819f6e9d7b0faa8a125745" ], "markers": "python_version >= '3.7'", - "version": "==23.2.0" + "version": "==24.1.0" }, "black": { "hashes": [ - "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474", - "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1", - "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0", - "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8", - "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96", - "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1", - "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04", - "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021", - "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94", - "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d", - "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c", - "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7", - "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c", - "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc", - "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7", - "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d", - "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c", - "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741", - "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce", - "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb", - "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063", - "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e" + "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6", + "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e", + "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f", + "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018", + "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e", + "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd", + "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4", + "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed", + "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2", + "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42", + "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af", + "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb", + "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368", + "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb", + "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af", + "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed", + "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47", + "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2", + "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a", + "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c", + "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920", + "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==24.4.2" + "version": "==24.8.0" }, "certifi": { "hashes": [ - "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516", - "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56" + "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", + "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" ], "markers": "python_version >= '3.6'", - "version": "==2024.6.2" + "version": "==2024.7.4" }, "charset-normalizer": { "hashes": [ @@ -874,71 +881,90 @@ "toml" ], "hashes": [ - "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382", - "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1", - "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac", - "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee", - "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166", - "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57", - "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c", - "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b", - "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51", - "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da", - "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450", - "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2", - "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd", - "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d", - "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d", - "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6", - "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca", - "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169", - "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1", - "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713", - "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b", - "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6", - "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c", - "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605", - "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463", - "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b", - "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6", - "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5", - "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63", - "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c", - "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783", - "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44", - "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca", - "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8", - "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d", - "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390", - "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933", - "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67", - "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b", - "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03", - "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b", - "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791", - "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb", - "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807", - "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6", - "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2", - "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428", - "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd", - "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c", - "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94", - "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8", - "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b" + "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca", + "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d", + "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6", + "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989", + "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c", + "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b", + "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223", + "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f", + "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56", + "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3", + "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8", + "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb", + "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388", + "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0", + "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a", + "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8", + "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f", + "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a", + "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962", + "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8", + "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391", + "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc", + "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2", + "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155", + "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb", + "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0", + "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c", + "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a", + "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004", + "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060", + "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232", + "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93", + "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129", + "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163", + "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de", + "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6", + "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23", + "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569", + "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d", + "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778", + "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d", + "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36", + "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a", + "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6", + "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34", + "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704", + "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106", + "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9", + "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862", + "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b", + "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255", + "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16", + "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3", + "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133", + "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb", + "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657", + "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d", + "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca", + "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36", + "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c", + "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e", + "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff", + "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7", + "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5", + "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02", + "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c", + "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df", + "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3", + "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a", + "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959", + "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234", + "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc" ], - "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==7.6.0" + "version": "==7.6.1" }, "flake8": { "hashes": [ - "sha256:2e416edcc62471a64cea09353f4e7bdba32aeb079b6e360554c659a122b1bc6a", - "sha256:48a07b626b55236e0fb4784ee69a465fbf59d79eec1f5b4785c3d3bc57d17aa5" + "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38", + "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213" ], "index": "pypi", "markers": "python_full_version >= '3.8.1'", - "version": "==7.1.0" + "version": "==7.1.1" }, "flake8-bugbear": { "hashes": [ @@ -983,37 +1009,37 @@ }, "mypy": { "hashes": [ - "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9", - "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d", - "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0", - "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3", - "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3", - "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade", - "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31", - "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7", - "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e", - "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7", - "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c", - "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b", - "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e", - "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531", - "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04", - "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a", - "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37", - "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a", - "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f", - "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84", - "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d", - "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f", - "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a", - "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf", - "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7", - "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02", - "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3" + "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54", + "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a", + "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72", + "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69", + "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b", + "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe", + "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4", + "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd", + "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0", + "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525", + "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2", + "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c", + "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5", + "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de", + "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74", + "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c", + "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e", + "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58", + "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b", + "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417", + "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411", + "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb", + "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03", + "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca", + "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8", + "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08", + "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.10.1" + "version": "==1.11.1" }, "mypy-extensions": { "hashes": [ @@ -1025,11 +1051,11 @@ }, "packaging": { "hashes": [ - "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", - "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" + "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", + "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" ], - "markers": "python_version >= '3.7'", - "version": "==24.0" + "markers": "python_version >= '3.8'", + "version": "==24.1" }, "pathspec": { "hashes": [ @@ -1065,11 +1091,11 @@ }, "pycodestyle": { "hashes": [ - "sha256:442f950141b4f43df752dd303511ffded3a04c2b6fb7f65980574f0c31e6e79c", - "sha256:949a39f6b86c3e1515ba1787c2022131d165a8ad271b11370a8819aa070269e4" + "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3", + "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521" ], "markers": "python_version >= '3.8'", - "version": "==2.12.0" + "version": "==2.12.1" }, "pyflakes": { "hashes": [ @@ -1081,12 +1107,12 @@ }, "pytest": { "hashes": [ - "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343", - "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977" + "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5", + "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==8.2.2" + "version": "==8.3.2" }, "pytest-cov": { "hashes": [ @@ -1177,6 +1203,7 @@ "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" ], + "index": "pypi", "markers": "python_version >= '3.8'", "version": "==2.32.3" }, diff --git a/schemas/create-labware/1-create-labware.avsc b/schemas/create-labware/1-create-labware.avsc index 57abfd6d..737b4b7f 100644 --- a/schemas/create-labware/1-create-labware.avsc +++ b/schemas/create-labware/1-create-labware.avsc @@ -1,158 +1,199 @@ { - "namespace": "uk.ac.sanger.psd", - "type": "record", - "name": "CreateLabwareMessage", - "doc": "A create message to process new labware.", - "fields": [ - { - "name": "messageUuid", - "doc": "Unique message ID.", - "type": {"name": "version4MessageUuid", "type": "fixed", "size": 36} - }, - { - "name": "messageCreateDateUtc", - "doc": "Date (UTC) that the message was created.", - "type": { "type": "long", "logicalType": "timestamp-millis" } - }, - { - "name": "labware", - "doc": "Labware to process.", - "type": { - "name": "Labware", "type": "record", - "doc": "Labware data.", - "fields": [ - { - "name": "labwareType", - "type": "string" - }, - { - "name": "barcode", "type": "string", - "doc": "The barcode for this labware." - }, - { - "name": "samples", - "doc": "An array of data for samples on the labware.", + "type": "record", + "name": "CreateLabwareMessage", + "namespace": "uk.ac.sanger.psd", + "doc": "A create message to process new labware.", + "fields": [ + { + "name": "messageUuid", + "type": { + "type": "fixed", + "name": "version4MessageUuid", + "size": 36 + }, + "doc": "Unique message ID." + }, + { + "name": "messageCreateDateUtc", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + }, + "doc": "Date (UTC) that the message was created." + }, + { + "name": "labware", "type": { - "type": "array", - "items": { - "name": "Sample", "type": "record", - "doc": "A labware sample", + "name": "Labware", + "doc": "Labware data.", "fields": [ - { - "name": "sampleUuid", - "doc": "Unique sample ID in UUID format.", - "type": "version4MessageUuid" - }, - { - "name": "studyUuid", - "doc": "Unique study UUID where the sample belongs to", - "type": "version4MessageUuid" - }, - { - "name": "sangerSampleId", "type": "string", - "doc": "Unique id to identify the sample inside Sanger lims" - }, - { - "name": "location", "type": ["null", "string"], "default": null, - "doc": "The location for the sample inside the labware, or null if location is not relevant in labware (Eg: tube)." - }, - { - "name": "supplierSampleName", "type": "string", - "doc": "Name given by the supplier of the sample" - }, - { - "name": "volume", "type": "string", - "doc": "Volume of the sample." - }, - { - "name": "concentration", "type": "string", - "doc": "Concentration of the sample." - }, - { - "name": "publicName", "type": "string", - "doc": "Public name of the sample." - }, - { - "name": "taxonId", "type": "string", - "doc": "Taxonomy Identifier." - }, - { - "name": "commonName", "type": "string", - "doc": "Common name for the sample" - }, - { - "name": "donorId", "type": "string", - "doc": "Identifier for the donor of the sample" - }, - { - "name": "libraryType", "type": "string", - "doc": "Type of library created for sequencing" - }, - { - "name": "countryOfOrigin", "type": "string", - "doc": "Country of origin for the sample" - }, - { - "name": "sampleCollectionDateUtc", - "doc": "Sample Collection of the sample in UTC format.", - "type": { "type": "long", "logicalType": "timestamp-millis" } - }, - { - "name": "costCode", "type": "string", - "doc": "Code for the project for billing purposes" - }, - { - "name": "genomeSize", "type": "string", - "doc": "Size of genome" - }, - { - "name": "accessionNumber", "type": "string", - "doc": "Accession number for publication in ENA/EBI" - }, - { - "name": "shearedFemtoFragmentSize", "type": "string", - "doc": "Sheared Femto Fragment Size (bp)" - }, - { - "name": "postSPRIConcentration", "type": "string", - "doc": "Post SPRI Concentration (ng/ul)" - }, - { - "name": "postSPRIVolume", "type": "string", - "doc": "Post SPRI Volume (ul)" - }, - { - "name": "finalNanoDrop280", "type": "string", - "doc": "Final NanoDrop 260/280" - }, - { - "name": "finalNanoDrop230", "type": "string", - "doc": "Final NanoDrop 260/230" - }, - { - "name": "finalNanoDrop", "type": "string", - "doc": "Final NanoDrop ng/ul" - }, - { - "name": "shearingAndQCComments", "type": "string", - "doc": "Shearing & QC comments" - }, - { - "name": "dateSubmittedUTC", - "doc": "Date submitted in UTC format.", - "type": { "type": "long", "logicalType": "timestamp-millis" } - }, - { - "name": "priorityLevel", "type": "string", - "doc": "Priority level (if High or Medium)" - } + { + "name": "labwareType", + "type": "string" + }, + { + "name": "barcode", + "type": "string", + "doc": "The barcode for this labware." + }, + { + "name": "samples", + "type": { + "type": "array", + "items": { + "name": "Sample", + "type": "record", + "doc": "A labware sample", + "fields": [ + { + "name": "sampleUuid", + "doc": "Unique sample ID in UUID format.", + "type": "version4MessageUuid" + }, + { + "name": "studyUuid", + "doc": "Unique study UUID where the sample belongs to", + "type": "version4MessageUuid" + }, + { + "name": "sangerSampleId", + "type": "string", + "doc": "Unique id to identify the sample inside Sanger lims" + }, + { + "name": "location", + "type": [ + "null", + "string" + ], + "default": null, + "doc": "The location for the sample inside the labware, or null if location is not relevant in labware (Eg: tube)." + }, + { + "name": "supplierSampleName", + "type": "string", + "doc": "Name given by the supplier of the sample" + }, + { + "name": "volume", + "type": "string", + "doc": "Volume of the sample." + }, + { + "name": "concentration", + "type": "string", + "doc": "Concentration of the sample." + }, + { + "name": "publicName", + "type": "string", + "doc": "Public name of the sample." + }, + { + "name": "taxonId", + "type": "string", + "doc": "Taxonomy Identifier." + }, + { + "name": "commonName", + "type": "string", + "doc": "Common name for the sample" + }, + { + "name": "donorId", + "type": "string", + "doc": "Identifier for the donor of the sample" + }, + { + "name": "libraryType", + "type": "string", + "doc": "Type of library created for sequencing" + }, + { + "name": "countryOfOrigin", + "type": "string", + "doc": "Country of origin for the sample" + }, + { + "name": "sampleCollectionDateUtc", + "doc": "Sample Collection of the sample in UTC format.", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "costCode", + "type": "string", + "doc": "Code for the project for billing purposes" + }, + { + "name": "genomeSize", + "type": "string", + "doc": "Size of genome" + }, + { + "name": "accessionNumber", + "type": "string", + "doc": "Accession number for publication in ENA/EBI" + }, + { + "name": "shearedFemtoFragmentSize", + "type": "string", + "doc": "Sheared Femto Fragment Size (bp)" + }, + { + "name": "postSPRIConcentration", + "type": "string", + "doc": "Post SPRI Concentration (ng/ul)" + }, + { + "name": "postSPRIVolume", + "type": "string", + "doc": "Post SPRI Volume (ul)" + }, + { + "name": "finalNanoDrop280", + "type": "string", + "doc": "Final NanoDrop 260/280" + }, + { + "name": "finalNanoDrop230", + "type": "string", + "doc": "Final NanoDrop 260/230" + }, + { + "name": "finalNanoDrop", + "type": "string", + "doc": "Final NanoDrop ng/ul" + }, + { + "name": "shearingAndQCComments", + "type": "string", + "doc": "Shearing & QC comments" + }, + { + "name": "dateSubmittedUTC", + "doc": "Date submitted in UTC format.", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "priorityLevel", + "type": "string", + "doc": "Priority level (if High or Medium)" + } + ] + } + }, + "doc": "An array of data for samples on the labware." + } ] - } - } - } - ] - } - } - ] + }, + "doc": "Labware to process." + } + ] } diff --git a/schemas/create-labware/2-create-labware.avsc b/schemas/create-labware/2-create-labware.avsc new file mode 100644 index 00000000..541245f3 --- /dev/null +++ b/schemas/create-labware/2-create-labware.avsc @@ -0,0 +1,213 @@ +{ + "type": "record", + "name": "CreateLabwareMessage", + "namespace": "uk.ac.sanger.psd", + "doc": "A create message to process new labware.", + "fields": [ + { + "name": "messageUuid", + "type": { + "type": "fixed", + "name": "version4MessageUuid", + "size": 36 + }, + "doc": "Unique message ID." + }, + { + "name": "messageCreateDateUtc", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + }, + "doc": "Date (UTC) that the message was created." + }, + { + "name": "labware", + "type": { + "type": "record", + "name": "Labware", + "doc": "Labware data.", + "fields": [ + { + "name": "labwareType", + "type": "string" + }, + { + "name": "barcode", + "type": "string", + "doc": "The barcode for this labware." + }, + { + "name": "samples", + "type": { + "type": "array", + "items": { + "name": "Sample", + "type": "record", + "doc": "A labware sample", + "fields": [ + { + "name": "sampleUuid", + "doc": "Unique sample ID in UUID format.", + "type": "version4MessageUuid" + }, + { + "name": "studyUuid", + "doc": "Unique study UUID where the sample belongs to", + "type": "version4MessageUuid" + }, + { + "name": "sangerSampleId", + "type": "string", + "doc": "Unique id to identify the sample inside Sanger lims" + }, + { + "name": "location", + "type": [ + "null", + "string" + ], + "default": null, + "doc": "The location for the sample inside the labware, or null if location is not relevant in labware (Eg: tube)." + }, + { + "name": "supplierSampleName", + "type": "string", + "doc": "Name given by the supplier of the sample" + }, + { + "name": "volume", + "type": "string", + "doc": "Volume of the sample." + }, + { + "name": "concentration", + "type": "string", + "doc": "Concentration of the sample." + }, + { + "name": "publicName", + "type": "string", + "doc": "Public name of the sample." + }, + { + "name": "taxonId", + "type": "string", + "doc": "Taxonomy Identifier." + }, + { + "name": "commonName", + "type": "string", + "doc": "Common name for the sample" + }, + { + "name": "donorId", + "type": "string", + "doc": "Identifier for the donor of the sample" + }, + { + "name": "libraryType", + "type": "string", + "doc": "Type of library created for sequencing" + }, + { + "name": "countryOfOrigin", + "type": "string", + "doc": "Country of origin for the sample" + }, + { + "name": "sampleCollectionDateUtc", + "doc": "Sample Collection of the sample in UTC format.", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "costCode", + "type": "string", + "doc": "Code for the project for billing purposes" + }, + { + "name": "genomeSize", + "type": "string", + "doc": "Size of genome" + }, + { + "name": "accessionNumber", + "type": "string", + "doc": "Accession number for publication in ENA/EBI" + }, + { + "name": "shearedFemtoFragmentSize", + "type": "string", + "doc": "Sheared Femto Fragment Size (bp)" + }, + { + "name": "postSPRIConcentration", + "type": "string", + "doc": "Post SPRI Concentration (ng/ul)" + }, + { + "name": "postSPRIVolume", + "type": "string", + "doc": "Post SPRI Volume (ul)" + }, + { + "name": "finalNanoDrop280", + "type": "string", + "doc": "Final NanoDrop 260/280" + }, + { + "name": "finalNanoDrop230", + "type": "string", + "doc": "Final NanoDrop 260/230" + }, + { + "name": "finalNanoDrop", + "type": "string", + "doc": "Final NanoDrop ng/ul" + }, + { + "name": "shearingAndQCComments", + "type": "string", + "doc": "Shearing & QC comments" + }, + { + "name": "dateSubmittedUTC", + "doc": "Date submitted in UTC format.", + "type": { + "type": "long", + "logicalType": "timestamp-millis" + } + }, + { + "name": "priorityLevel", + "type": "string", + "doc": "Priority level (if High or Medium)" + }, + { + "name": "retentionInstruction", + "type": { + "type": "enum", + "name": "allowedRetentionInstruction", + "symbols": [ + "destroy_after_2_years", + "return_to_customer_after_2_years", + "long_term_storage" + ] + }, + "default": "return_to_customer_after_2_years", + "doc": "The retention instruction (what the customer wants to happen to the sample)" + } + ] + } + }, + "doc": "An array of data for samples on the labware." + } + ] + }, + "doc": "Labware to process." + } + ] +} diff --git a/schemas/push.sh b/schemas/push.sh index 17b55cee..65418c89 100755 --- a/schemas/push.sh +++ b/schemas/push.sh @@ -18,7 +18,7 @@ CONTENT_TYPE="Content-Type: application/vnd.schemaregistry.v1+json" pushd "$(dirname "$0")" -for schema in `find . -name "*.avsc"`; do +for schema in `(find . -name "*.avsc" | sort)`; do schema_name=`dirname $schema | sed 's/\.//g' | sed 's/\///g'` # Convert to schema diff --git a/tests/conftest.py b/tests/conftest.py index f29132ca..eb1a0ae7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -70,7 +70,7 @@ def mock_decoder(message_object): @pytest.fixture def valid_bioscan_pool_xp_to_traction_message(generic_rabbit_message): decoder = mock_decoder(VALID_BIOSCAN_POOL_XP_TO_TRACTION_PAYLOAD) - generic_rabbit_message.decode([decoder]) + generic_rabbit_message.decode([decoder], "1") return generic_rabbit_message @@ -78,7 +78,7 @@ def valid_bioscan_pool_xp_to_traction_message(generic_rabbit_message): @pytest.fixture def valid_traction_to_warehouse_message(generic_rabbit_message): decoder = mock_decoder(VALID_TRACTION_TO_WAREHOUSE_MESSAGE) - generic_rabbit_message.decode([decoder]) + generic_rabbit_message.decode([decoder], "1") return generic_rabbit_message @@ -86,7 +86,7 @@ def valid_traction_to_warehouse_message(generic_rabbit_message): @pytest.fixture def invalid_bioscan_pool_xp_to_traction_message(generic_rabbit_message): decoder = mock_decoder(INVALID_BIOSCAN_POOL_XP_TO_TRACTION_PAYLOAD) - generic_rabbit_message.decode([decoder]) + generic_rabbit_message.decode([decoder], "1") return generic_rabbit_message @@ -94,7 +94,7 @@ def invalid_bioscan_pool_xp_to_traction_message(generic_rabbit_message): @pytest.fixture def valid_create_labware_message(generic_rabbit_message): decoder = mock_decoder(TEST_VALID_CREATE_LABWARE_MSG_OBJECT) - generic_rabbit_message.decode([decoder]) + generic_rabbit_message.decode([decoder], "1") return generic_rabbit_message @@ -102,7 +102,7 @@ def valid_create_labware_message(generic_rabbit_message): @pytest.fixture def invalid_create_labware_message(generic_rabbit_message): decoder = mock_decoder(TEST_INVALID_CREATE_LABWARE_MSG_OBJECT) - generic_rabbit_message.decode([decoder]) + generic_rabbit_message.decode([decoder], "1") return generic_rabbit_message @@ -191,6 +191,7 @@ def valid_create_labware_sample(): "supplierSampleName": "SampleSupplied1", "taxonId": "10090", "volume": "5", + "retentionInstruction": "return_to_customer_after_2_years", } @@ -223,6 +224,7 @@ def invalid_create_labware_sample(): "supplierSampleName": "1234", "taxonId": "ee10090", "volume": "ee5", + "retentionInstruction": "return_to_customer_after_2_years", } diff --git a/tests/data/example_create_labware_messages.py b/tests/data/example_create_labware_messages.py index c61d5ae7..03e50073 100644 --- a/tests/data/example_create_labware_messages.py +++ b/tests/data/example_create_labware_messages.py @@ -35,6 +35,7 @@ "shearingAndQCComments": "Comments", "dateSubmittedUTC": datetime.now(UTC), "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", }, { "sampleUuid": "dd490ee5-fd1d-456d-99fd-eb9d3861e0f7".encode(), @@ -63,6 +64,7 @@ "shearingAndQCComments": "Comments", "dateSubmittedUTC": datetime.now(UTC), "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", }, ], }, @@ -103,6 +105,7 @@ "shearingAndQCComments": "Comments", "dateSubmittedUTC": datetime.now(UTC), "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", }, { "sampleUuid": "dd490ee5-fd1d-456d-99fd-eb9d3861e0f7".encode(), @@ -131,6 +134,7 @@ "shearingAndQCComments": "Comments", "dateSubmittedUTC": datetime.now(UTC), "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", }, ], }, diff --git a/tests/messages/traction/test_reception_message.py b/tests/messages/traction/test_reception_message.py index e7dfff32..0b0b5e15 100644 --- a/tests/messages/traction/test_reception_message.py +++ b/tests/messages/traction/test_reception_message.py @@ -66,6 +66,7 @@ def test_can_generate_payload_for_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1235" @@ -87,6 +88,7 @@ def test_can_generate_payload_for_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -119,6 +121,7 @@ def test_can_generate_payload_for_plates(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -142,6 +145,7 @@ def test_can_generate_payload_for_plates(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -180,6 +184,7 @@ def test_can_generate_payload_for_multiple_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" # Second plate, first well (B1). request = instance.create_request() @@ -202,6 +207,7 @@ def test_can_generate_payload_for_multiple_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" # First plate, second well (B1). request = instance.create_request() @@ -224,6 +230,7 @@ def test_can_generate_payload_for_multiple_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" # Second plate, second well (C1). request = instance.create_request() @@ -246,6 +253,7 @@ def test_can_generate_payload_for_multiple_plates(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -278,6 +286,7 @@ def test_can_generate_payload_for_multiple_plates(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -301,6 +310,7 @@ def test_can_generate_payload_for_multiple_plates(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -330,6 +340,7 @@ def test_can_generate_payload_for_multiple_plates(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -353,6 +364,7 @@ def test_can_generate_payload_for_multiple_plates(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -387,6 +399,7 @@ def test_can_generate_payload_for_ont_library_types(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1235" @@ -408,6 +421,7 @@ def test_can_generate_payload_for_ont_library_types(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -441,6 +455,7 @@ def test_can_generate_payload_for_ont_library_types(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -465,6 +480,7 @@ def test_can_generate_payload_for_ont_library_types(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -498,6 +514,7 @@ def test_can_generate_payload_for_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1235" @@ -518,6 +535,7 @@ def test_can_generate_payload_for_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -548,6 +566,7 @@ def test_can_generate_payload_for_tubes(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -572,6 +591,7 @@ def test_can_generate_payload_for_tubes(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -603,6 +623,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier1" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1235" @@ -624,6 +645,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier2" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1236" @@ -644,6 +666,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier3" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" request = instance.create_request() request.accession_number = "AN1237" @@ -664,6 +687,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.supplier_name = "supplier4" request.taxon_id = "9606" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -696,6 +720,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): "species": "test species", "supplier_name": "supplier1", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -719,6 +744,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): "species": "test species", "supplier_name": "supplier2", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -747,6 +773,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): "species": "test species", "supplier_name": "supplier3", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, { @@ -771,6 +798,7 @@ def test_can_generate_payload_for_mix_of_plate_and_tubes(self): "species": "test species", "supplier_name": "supplier4", "taxon_id": "9606", + "retention_instruction": "return_to_customer_after_2_years", }, }, ], @@ -795,6 +823,7 @@ def test_can_generate_payload_for_tube_with_library(self): request.species = "test species" request.study_uuid = "dd490ee5-fd1d-456d-99fd-eb9d3861e014" request.template_prep_kit_box_barcode = "box_barcode_001" + request.retention_instruction = "return_to_customer_after_2_years" assert instance.payload() == { "data": { @@ -831,6 +860,7 @@ def test_can_generate_payload_for_tube_with_library(self): "species": "test species", "supplier_name": None, "taxon_id": None, + "retention_instruction": "return_to_customer_after_2_years", }, }, ], diff --git a/tol_lab_share/config/rabbit.py b/tol_lab_share/config/rabbit.py index 70649b8b..1be84517 100644 --- a/tol_lab_share/config/rabbit.py +++ b/tol_lab_share/config/rabbit.py @@ -1,5 +1,5 @@ import os -from lab_share_lib.config.rabbit_config import RabbitConfig +from lab_share_lib.config.rabbit_config import RabbitConfig, MessageSubjectConfig from lab_share_lib.config.rabbit_server_details import RabbitServerDetails from tol_lab_share.constants import ( @@ -40,24 +40,34 @@ RabbitConfig( consumer_details=RABBIT_SERVER_DETAILS, consumed_queue="tls.poolxp-export-to-traction", - processors={ - RABBITMQ_SUBJECT_BIOSCAN_POOL_XP_TO_TRACTION: BioscanPoolXpToTractionProcessor, + message_subjects={ + RABBITMQ_SUBJECT_BIOSCAN_POOL_XP_TO_TRACTION: MessageSubjectConfig( + processor=BioscanPoolXpToTractionProcessor, reader_schema_version="1" + ) }, publisher_details=RABBIT_SERVER_DETAILS, ), RabbitConfig( consumer_details=RABBIT_SERVER_DETAILS, consumed_queue="tol.crud-operations", - processors={ - RABBITMQ_SUBJECT_CREATE_LABWARE: CreateLabwareProcessor, - RABBITMQ_SUBJECT_UPDATE_LABWARE: UpdateLabwareProcessor, + message_subjects={ + RABBITMQ_SUBJECT_CREATE_LABWARE: MessageSubjectConfig( + processor=CreateLabwareProcessor, reader_schema_version="2" + ), + RABBITMQ_SUBJECT_UPDATE_LABWARE: MessageSubjectConfig( + processor=UpdateLabwareProcessor, reader_schema_version="1" + ), }, publisher_details=RABBIT_SERVER_DETAILS, ), RabbitConfig( consumer_details=RABBIT_SERVER_DETAILS, consumed_queue="tls.volume-tracking", - processors={RABBITMQ_SUBJECT_CREATE_ALIQUOT_IN_MLWH: CreateAliquotProcessor}, + message_subjects={ + RABBITMQ_SUBJECT_CREATE_ALIQUOT_IN_MLWH: MessageSubjectConfig( + processor=CreateAliquotProcessor, reader_schema_version="1" + ) + }, publisher_details=WAREHOUSE_RABBIT_SERVER_DETAILS, ), ] diff --git a/tol_lab_share/constants/input_create_labware_message.py b/tol_lab_share/constants/input_create_labware_message.py index 5057d9cb..9fb51c5f 100644 --- a/tol_lab_share/constants/input_create_labware_message.py +++ b/tol_lab_share/constants/input_create_labware_message.py @@ -5,6 +5,7 @@ BARCODE = "barcode" SAMPLES = "samples" UUID = "labwareUuid" +RETENTION_INSTRUCTION = "retentionInstruction" SAMPLE_PUBLIC_NAME = "publicName" diff --git a/tol_lab_share/messages/properties/complex/labware.py b/tol_lab_share/messages/properties/complex/labware.py index d32a2e8a..bfad1ce7 100644 --- a/tol_lab_share/messages/properties/complex/labware.py +++ b/tol_lab_share/messages/properties/complex/labware.py @@ -1,17 +1,15 @@ +import logging +from functools import singledispatchmethod from typing import Any -from .labware_type import LabwareType -from tol_lab_share.messages.properties.message_specific import CreateLabwareSample from tol_lab_share.constants import OUTPUT_TRACTION_MESSAGE_CONTAINER_TYPES from tol_lab_share.constants.input_create_labware_message import BARCODE, LABWARE_TYPE, SAMPLES +from tol_lab_share.messages.properties import MessageProperty +from tol_lab_share.messages.properties.message_specific import CreateLabwareSample from tol_lab_share.messages.properties.simple import DictValue, StringValue from tol_lab_share.messages.rabbit.published import CreateLabwareFeedbackMessage from tol_lab_share.messages.traction import TractionReceptionMessage, TractionQcMessage - -from tol_lab_share.messages.properties import MessageProperty -from functools import singledispatchmethod - -import logging +from .labware_type import LabwareType logger = logging.getLogger(__name__) @@ -109,6 +107,7 @@ def _(self, message: TractionReceptionMessage) -> None: request.study_uuid = sample.properties("study_uuid").value request.supplier_name = sample.properties("supplier_sample_name").value request.taxon_id = sample.properties("taxon_id").value + request.retention_instruction = sample.properties("retention_instruction").value @add_to_message_property.register def _(self, message: TractionQcMessage) -> None: diff --git a/tol_lab_share/messages/properties/message_specific/create_labware_sample.py b/tol_lab_share/messages/properties/message_specific/create_labware_sample.py index 7770c996..bbf5e118 100644 --- a/tol_lab_share/messages/properties/message_specific/create_labware_sample.py +++ b/tol_lab_share/messages/properties/message_specific/create_labware_sample.py @@ -29,6 +29,7 @@ SHEARING_QC_COMMENTS, SUPPLIER_SAMPLE_NAME, SAMPLE_TAXON_ID, + RETENTION_INSTRUCTION, ) from ..complex.country_of_origin import CountryOfOrigin from ..complex.date_utc import DateUtc @@ -78,3 +79,4 @@ def __init__(self, input: Any): self.add_property("taxon_id", StringValue(DictValue(input, SAMPLE_TAXON_ID))) self.add_property("uuid", Uuid(DictValue(input, SAMPLE_SANGER_UUID))) self.add_property("volume", StringValue(DictValue(input, SAMPLE_VOLUME))) + self.add_property("retention_instruction", StringValue(DictValue(input, RETENTION_INSTRUCTION))) diff --git a/tol_lab_share/messages/traction/reception_message.py b/tol_lab_share/messages/traction/reception_message.py index 84fa70d0..25fe7627 100644 --- a/tol_lab_share/messages/traction/reception_message.py +++ b/tol_lab_share/messages/traction/reception_message.py @@ -48,6 +48,7 @@ def __init__(self): self.supplier_name: str | None = None self.taxon_id: str | None = None self.template_prep_kit_box_barcode: str | None = None + self.retention_instruction: str | None = None def validate(self) -> bool: """Validate the information in this request. @@ -138,6 +139,7 @@ def sample_payload(request: TractionReceptionMessageRequest) -> dict[str, Any]: "species": request.species, "supplier_name": request.supplier_name, "taxon_id": request.taxon_id, + "retention_instruction": request.retention_instruction, } diff --git a/tools/demo/create_labware_messages.py b/tools/demo/create_labware_messages.py index 5f387a8a..fce7c050 100644 --- a/tools/demo/create_labware_messages.py +++ b/tools/demo/create_labware_messages.py @@ -52,6 +52,7 @@ def build_create_labware_96_msg(unique_id, num_msg): "shearingAndQCComments": "Comments", "dateSubmittedUTC": datetime.now(UTC).timestamp() * 1000, "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", } for letter in range(ord("A"), ord("H") + 1) for pos in range(1, 13) @@ -61,6 +62,49 @@ def build_create_labware_96_msg(unique_id, num_msg): def build_create_tube_msg(unique_id, num_msg): + unique_id_lab = f"TOLTESTING-TUBE-{unique_id}-{num_msg}" + return { + "messageUuid": str(uuid4()).encode(), + "messageCreateDateUtc": datetime.now(UTC).timestamp() * 1000, + "labware": { + "labwareType": "Tube", + "barcode": barcode_for_unique_id("TUBE", unique_id, num_msg), + "samples": [ + { + "sampleUuid": str(uuid4()).encode(), + "studyUuid": "28c96f02-a15c-11ed-b8de-fa163e1e3ca9".encode(), + "sangerSampleId": f"sangerId-{unique_id_lab}", + "supplierSampleName": f"SampleSupplied-{unique_id_lab}", + "location": None, + "volume": "5", + "concentration": "5", + "publicName": f"SamplePublicName-{unique_id_lab}", + "taxonId": "10090", + "commonName": "Mus Musculus", + "donorId": f"donor-{unique_id_lab}", + "libraryType": LIBRARY_TYPE, + "countryOfOrigin": "United Kingdom", + "genomeSize": "1", + "accessionNumber": "A1234", + "costCode": "S1234", + "sampleCollectionDateUtc": datetime.now(UTC).timestamp() * 1000, + "shearedFemtoFragmentSize": "5", + "postSPRIConcentration": "10", + "postSPRIVolume": "20", + "finalNanoDrop280": "5", + "finalNanoDrop230": "6", + "finalNanoDrop": "7", + "shearingAndQCComments": "Comments", + "dateSubmittedUTC": datetime.now(UTC).timestamp() * 1000, + "priorityLevel": "Medium", + "retentionInstruction": "return_to_customer_after_2_years", + } + ], + }, + } + + +def build_create_tube_msg_without_retention_instruction(unique_id, num_msg): unique_id_lab = f"TOLTESTING-TUBE-{unique_id}-{num_msg}" return { "messageUuid": str(uuid4()).encode(), diff --git a/tools/demo/publisher.py b/tools/demo/publisher.py index d0d9e8d3..8c686b78 100644 --- a/tools/demo/publisher.py +++ b/tools/demo/publisher.py @@ -1,19 +1,25 @@ import argparse import os +from lab_share_lib.config.rabbit_server_details import RabbitServerDetails from lab_share_lib.constants import RABBITMQ_HEADER_VALUE_ENCODER_TYPE_BINARY, RABBITMQ_HEADER_VALUE_ENCODER_TYPE_JSON from lab_share_lib.rabbit.avro_encoder import AvroEncoderBinaryMessage, AvroEncoderJson from lab_share_lib.rabbit.basic_publisher import BasicPublisher from lab_share_lib.rabbit.schema_registry import SchemaRegistry -from lab_share_lib.config.rabbit_server_details import RabbitServerDetails -from bioscan_pool_xp_messages import build_bioscan_pool_xp_msg -from create_labware_messages import build_create_labware_96_msg, build_create_tube_msg, build_update_labware_msg -REDPANDA_URL = os.getenv("REDPANDA_URL", "http://localhost") +from bioscan_pool_xp_messages import build_bioscan_pool_xp_msg +from create_labware_messages import ( + build_create_labware_96_msg, + build_update_labware_msg, + build_create_tube_msg, + build_create_tube_msg_without_retention_instruction, +) + +REDPANDA_URL = os.getenv("REDPANDA_URL", "http://localhost:8081") RABBITMQ_HOST = os.getenv("RABBITMQ_HOST", "localhost") -RABBITMQ_PORT = os.getenv("RABBITMQ_PORT", "5671") -RABBITMQ_USERNAME = os.getenv("RABBITMQ_USERNAME", "psd") -RABBITMQ_PASSWORD = os.getenv("RABBITMQ_PASSWORD", "psd") +RABBITMQ_PORT = os.getenv("RABBITMQ_PORT", "5672") +RABBITMQ_USERNAME = os.getenv("RABBITMQ_USERNAME", "admin") +RABBITMQ_PASSWORD = os.getenv("RABBITMQ_PASSWORD", "development") RABBITMQ_VHOST = os.getenv("RABBITMQ_VHOST", "tol") RABBITMQ_EXCHANGE = os.getenv("RABBITMQ_EXCHANGE", "tol-team.tol") RABBITMQ_ROUTING_KEY = os.getenv("RABBITMQ_ROUTING_KEY", "crud.1") @@ -34,7 +40,7 @@ def send_message(msg, subject, encoder, registry, publisher): encoder = encoder_class(registry, subject) - encoded_message = encoder.encode([msg], version="latest") + encoded_message = encoder.encode([msg], version="1") print(f"Publishing message { encoded_message }\n") @@ -58,15 +64,16 @@ def send_message(msg, subject, encoder, registry, publisher): "--message_types", required=True, help="The type of messages being sent.", - choices=["create-update-labware", "bioscan-pool-xp-to-traction"], + choices=["create-update-labware", "bioscan-pool-xp-to-traction", "create-labware"], ) + parser.add_argument("--loop", required=False, default=False, help="Send request iteratively", choices=[True, False]) args = parser.parse_args() registry = SchemaRegistry(REDPANDA_URL, verify=False) rabbitmq_details = RabbitServerDetails( - uses_ssl=True, + uses_ssl=False, host=RABBITMQ_HOST, port=RABBITMQ_PORT, username=RABBITMQ_USERNAME, @@ -76,14 +83,34 @@ def send_message(msg, subject, encoder, registry, publisher): publisher = BasicPublisher(rabbitmq_details, publish_retry_delay=5, publish_max_retries=36, verify_cert=False) encoder = args.encoder - for pos in range(0, 5): + loop = bool(args.loop) + + if loop: + for pos in range(0, 5): + if args.message_types == "create-update-labware": + sample_msg = build_create_labware_96_msg(args.unique_id, pos) + update_msg = build_update_labware_msg(sample_msg) + tube_msg = build_create_tube_msg(args.unique_id, pos) + send_message(sample_msg, "create-labware", encoder, registry, publisher) + send_message(update_msg, "update-labware", encoder, registry, publisher) + send_message(tube_msg, "create-labware", encoder, registry, publisher) + elif args.message_types == "bioscan-pool-xp-to-traction": + pool_xp_msg = build_bioscan_pool_xp_msg(args.unique_id, pos) + send_message(pool_xp_msg, "bioscan-pool-xp-tube-to-traction", encoder, registry, publisher) + else: if args.message_types == "create-update-labware": - sample_msg = build_create_labware_96_msg(args.unique_id, pos) + sample_msg = build_create_labware_96_msg(args.unique_id, 1) update_msg = build_update_labware_msg(sample_msg) - tube_msg = build_create_tube_msg(args.unique_id, pos) - send_message(sample_msg, "create-labware", encoder, registry, publisher) + tube_msg = build_create_tube_msg(args.unique_id, 3) send_message(update_msg, "update-labware", encoder, registry, publisher) send_message(tube_msg, "create-labware", encoder, registry, publisher) - elif args.message_types == "bioscan-pool-xp-to-traction": - pool_xp_msg = build_bioscan_pool_xp_msg(args.unique_id, pos) - send_message(pool_xp_msg, "bioscan-pool-xp-tube-to-traction", encoder, registry, publisher) + send_message(sample_msg, "create-labware", encoder, registry, publisher) + elif args.message_types == "create-labware": + # tube_msg = build_create_tube_msg(args.unique_id, 3) + tube_msg_without_retention_instruction = build_create_tube_msg_without_retention_instruction( + args.unique_id, 4 + ) + # send_message(tube_msg, "create-labware", encoder, registry, publisher) + send_message(tube_msg_without_retention_instruction, "create-labware", encoder, registry, publisher) + else: + print("Error in argument inputs.")