diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/tests.yaml similarity index 97% rename from .github/workflows/run_tests.yaml rename to .github/workflows/tests.yaml index d9bea695..b17fc05c 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/tests.yaml @@ -1,5 +1,4 @@ -name: Run tests on non main branch - +name: Tests on: push: branches-ignore: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f342876..5a20c0cb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -49,7 +49,7 @@ repos: - id: no-commit-to-branch args: [--branch, dev, --branch, int, --branch, main] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.5.1 + rev: v0.5.2 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/.pyproject_generation/pyproject_template.toml b/.pyproject_generation/pyproject_template.toml index fc5e901c..cbbcd3a0 100644 --- a/.pyproject_generation/pyproject_template.toml +++ b/.pyproject_generation/pyproject_template.toml @@ -120,7 +120,7 @@ asyncio_mode = "strict" [tool.coverage.paths] source = [ - "services", - "/workspace/services", + "services/**/src", + "/workspace/services/**/src", "**/lib/python*/site-packages", ] diff --git a/README.md b/README.md index b6781908..dedc18ef 100644 --- a/README.md +++ b/README.md @@ -12,13 +12,13 @@ This is a monorepo containing all GHGA file backend microservices. ## Services: -[Download Controller Service](services/dcs/README.md) -[Encryption Key Store Service](services/ekss/README.md) -[File Ingest Service](services/fis/README.md) -[Internal File Registry Service](services/ifrs/README.md) -[Interrogation Room Service](services/irs/README.md) -[Purge Controller Service](services/pcs/README.md) -[Upload Controller Service](services/ucs/README.md) +[Download Controller Service](services/dcs) +[Encryption Key Store Service](services/ekss) +[File Ingest Service](services/fis) +[Internal File Registry Service](services/ifrs) +[Interrogation Room Service](services/irs) +[Purge Controller Service](services/pcs) +[Upload Controller Service](services/ucs) ## Development: diff --git a/lock/requirements-dev-template.in b/lock/requirements-dev-template.in index dd81066c..97ce387b 100644 --- a/lock/requirements-dev-template.in +++ b/lock/requirements-dev-template.in @@ -1,7 +1,7 @@ # common requirements for development and testing of services pytest>=8.2 -pytest-asyncio>=0.23.6 +pytest-asyncio>=0.23.7 pytest-cov>=5 snakeviz>=2.2 logot>=1.3 @@ -29,4 +29,4 @@ setuptools>=69.5 # required since switch to pyproject.toml and pip-tools tomli_w>=1.0 -uv>=0.1.44 +uv>=0.2.13 diff --git a/lock/requirements-dev.txt b/lock/requirements-dev.txt index c49bda4a..60493175 100644 --- a/lock/requirements-dev.txt +++ b/lock/requirements-dev.txt @@ -81,13 +81,13 @@ bcrypt==4.1.3 \ --hash=sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1 \ --hash=sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a # via crypt4gh -boto3==1.34.142 \ - --hash=sha256:72daee953cfa0631c584c9e3aef594079e1fe6a2f64c81ff791dab9a7b25c013 \ - --hash=sha256:cae11cb54f79795e44248a9e53ec5c7328519019df1ba54bc01413f51c548626 +boto3==1.34.144 \ + --hash=sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673 \ + --hash=sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1 # via hexkit -botocore==1.34.142 \ - --hash=sha256:2eeb8e6be729c1f8ded723970ed6c6ac29cc3014d86a99e73428fa8bdca81f63 \ - --hash=sha256:9d8095bab0b93b9064e856730a7ffbbb4f897353d3170bec9ddccc5f4a3753bc +botocore==1.34.144 \ + --hash=sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8 \ + --hash=sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b # via # boto3 # hexkit @@ -258,59 +258,59 @@ click==8.1.7 \ # -r lock/requirements-dev-template.in # typer # uvicorn -coverage==7.5.4 \ - --hash=sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f \ - --hash=sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d \ - --hash=sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747 \ - --hash=sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f \ - --hash=sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d \ - --hash=sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f \ - --hash=sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47 \ - --hash=sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e \ - --hash=sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba \ - --hash=sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c \ - --hash=sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b \ - --hash=sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4 \ - --hash=sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7 \ - --hash=sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555 \ - --hash=sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233 \ - --hash=sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace \ - --hash=sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805 \ - --hash=sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136 \ - --hash=sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4 \ - --hash=sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d \ - --hash=sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806 \ - --hash=sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99 \ - --hash=sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8 \ - --hash=sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b \ - --hash=sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5 \ - --hash=sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da \ - --hash=sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0 \ - --hash=sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078 \ - --hash=sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f \ - --hash=sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029 \ - --hash=sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353 \ - --hash=sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638 \ - --hash=sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9 \ - --hash=sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f \ - --hash=sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7 \ - --hash=sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3 \ - --hash=sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e \ - --hash=sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016 \ - --hash=sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088 \ - --hash=sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4 \ - --hash=sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882 \ - --hash=sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7 \ - --hash=sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53 \ - --hash=sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d \ - --hash=sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080 \ - --hash=sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5 \ - --hash=sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d \ - --hash=sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c \ - --hash=sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8 \ - --hash=sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633 \ - --hash=sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9 \ - --hash=sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c +coverage==7.6.0 \ + --hash=sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382 \ + --hash=sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1 \ + --hash=sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac \ + --hash=sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee \ + --hash=sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166 \ + --hash=sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57 \ + --hash=sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c \ + --hash=sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b \ + --hash=sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51 \ + --hash=sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da \ + --hash=sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450 \ + --hash=sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2 \ + --hash=sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd \ + --hash=sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d \ + --hash=sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d \ + --hash=sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6 \ + --hash=sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca \ + --hash=sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169 \ + --hash=sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1 \ + --hash=sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713 \ + --hash=sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b \ + --hash=sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6 \ + --hash=sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c \ + --hash=sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605 \ + --hash=sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463 \ + --hash=sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b \ + --hash=sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6 \ + --hash=sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5 \ + --hash=sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63 \ + --hash=sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c \ + --hash=sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783 \ + --hash=sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44 \ + --hash=sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca \ + --hash=sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8 \ + --hash=sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d \ + --hash=sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390 \ + --hash=sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933 \ + --hash=sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67 \ + --hash=sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b \ + --hash=sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03 \ + --hash=sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b \ + --hash=sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791 \ + --hash=sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb \ + --hash=sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807 \ + --hash=sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6 \ + --hash=sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2 \ + --hash=sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428 \ + --hash=sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd \ + --hash=sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c \ + --hash=sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94 \ + --hash=sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8 \ + --hash=sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b # via pytest-cov crypt4gh==1.7 \ --hash=sha256:1569bc4ff9b689c8852e3892ac3f6fea4b31948ca0b1e5bc28d0d2f80def2a28 \ @@ -377,9 +377,9 @@ email-validator==2.2.0 \ # via # fastapi # pydantic -fastapi==0.111.0 \ - --hash=sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0 \ - --hash=sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7 +fastapi==0.111.1 \ + --hash=sha256:4f51cfa25d72f9fbc3280832e84b32494cf186f50158d364a8765aabf22587bf \ + --hash=sha256:ddd1ac34cb1f76c2e2d7f8545a4bcb5463bce4834e81abf0b189e0c359ab2413 # via ghga-service-commons fastapi-cli==0.0.4 \ --hash=sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809 \ @@ -403,9 +403,9 @@ h11==0.14.0 \ # via # httpcore # uvicorn -hexkit==3.3.0 \ - --hash=sha256:37c23bef418bf69e26fcd03e95ceb7d623ad7f077cd3a71e50a136bac29e1724 \ - --hash=sha256:ee5c6c6f452b669db927eba5d1fb93c0f91bd7dc5beed2558a29c2285f09f805 +hexkit==3.4.0 \ + --hash=sha256:3f87d76d746a9e506d458eb729374a8b2facc04f4b40307a2db3b970a8ee4713 \ + --hash=sha256:a02f086de15858b8c72852d022c63ffcec555c24cd30b2f6628f0d41fd2fd88a # via # fsb (pyproject.toml) # ghga-service-commons @@ -580,9 +580,9 @@ mdurl==0.1.2 \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba # via markdown-it-py -motor==3.5.0 \ - --hash=sha256:2b38e405e5a0c52d499edb8d23fa029debdf0158da092c21b44d92cac7f59942 \ - --hash=sha256:e8f1d7a3370e8dd30eb4c68aaaee46dc608fbac70a757e58f3e828124f5e7693 +motor==3.5.1 \ + --hash=sha256:1622bd7b39c3e6375607c14736f6e1d498128eadf6f5f93f8786cf17d37062ac \ + --hash=sha256:f95a9ea0f011464235e0bd72910baa291db3a6009e617ac27b82f57885abafb8 # via hexkit mypy==1.10.1 \ --hash=sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9 \ @@ -623,59 +623,6 @@ nodeenv==1.9.1 \ --hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \ --hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9 # via pre-commit -orjson==3.10.6 \ - --hash=sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e \ - --hash=sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0 \ - --hash=sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f \ - --hash=sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212 \ - --hash=sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43 \ - --hash=sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b \ - --hash=sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219 \ - --hash=sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394 \ - --hash=sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a \ - --hash=sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd \ - --hash=sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844 \ - --hash=sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5 \ - --hash=sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2 \ - --hash=sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b \ - --hash=sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143 \ - --hash=sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38 \ - --hash=sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5 \ - --hash=sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148 \ - --hash=sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183 \ - --hash=sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db \ - --hash=sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a \ - --hash=sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e \ - --hash=sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6 \ - --hash=sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a \ - --hash=sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc \ - --hash=sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3 \ - --hash=sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34 \ - --hash=sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b \ - --hash=sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365 \ - --hash=sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56 \ - --hash=sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5 \ - --hash=sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863 \ - --hash=sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba \ - --hash=sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed \ - --hash=sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb \ - --hash=sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2 \ - --hash=sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0 \ - --hash=sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f \ - --hash=sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28 \ - --hash=sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a \ - --hash=sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7 \ - --hash=sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c \ - --hash=sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b \ - --hash=sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7 \ - --hash=sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb \ - --hash=sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0 \ - --hash=sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b \ - --hash=sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7 \ - --hash=sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2 \ - --hash=sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7 \ - --hash=sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b - # via fastapi packaging==24.1 \ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 @@ -1084,25 +1031,25 @@ rpds-py==0.19.0 \ # via # jsonschema # referencing -ruff==0.5.1 \ - --hash=sha256:204fb0a472f00f2e6280a7c8c7c066e11e20e23a37557d63045bf27a616ba61c \ - --hash=sha256:2875b7596a740cbbd492f32d24be73e545a4ce0a3daf51e4f4e609962bfd3cd2 \ - --hash=sha256:3164488aebd89b1745b47fd00604fb4358d774465f20d1fcd907f9c0fc1b0655 \ - --hash=sha256:38beace10b8d5f9b6bdc91619310af6d63dd2019f3fb2d17a2da26360d7962fa \ - --hash=sha256:3a9a9a1b582e37669b0138b7c1d9d60b9edac880b80eb2baba6d0e566bdeca4d \ - --hash=sha256:5c441d9c24ec09e1cb190a04535c5379b36b73c4bc20aa180c54812c27d1cca4 \ - --hash=sha256:5e478d2f09cf06add143cf8c4540ef77b6599191e0c50ed976582f06e588c994 \ - --hash=sha256:6ecf968fcf94d942d42b700af18ede94b07521bd188aaf2cd7bc898dd8cb63b6 \ - --hash=sha256:b1789bf2cd3d1b5a7d38397cac1398ddf3ad7f73f4de01b1e913e2abc7dfc51d \ - --hash=sha256:bac6288e82f6296f82ed5285f597713acb2a6ae26618ffc6b429c597b392535c \ - --hash=sha256:bdd9f723e16003623423affabcc0a807a66552ee6a29f90eddad87a40c750b78 \ - --hash=sha256:be9fd62c1e99539da05fcdc1e90d20f74aec1b7a1613463ed77870057cd6bd96 \ - --hash=sha256:c4c2112e9883a40967827d5c24803525145e7dab315497fae149764979ac7929 \ - --hash=sha256:d235968460e8758d1e1297e1de59a38d94102f60cafb4d5382033c324404ee9d \ - --hash=sha256:d7ceb9b2fe700ee09a0c6b192c5ef03c56eb82a0514218d8ff700f6ade004108 \ - --hash=sha256:dfaf11c8a116394da3b65cd4b36de30d8552fa45b8119b9ef5ca6638ab964fa3 \ - --hash=sha256:e216fc75a80ea1fbd96af94a6233d90190d5b65cc3d5dfacf2bd48c3e067d3e1 \ - --hash=sha256:f0368d765eec8247b8550251c49ebb20554cc4e812f383ff9f5bf0d5d94190b0 +ruff==0.5.2 \ + --hash=sha256:1aa7acad382ada0189dbe76095cf0a36cd0036779607c397ffdea16517f535b1 \ + --hash=sha256:1ed02fb52e3741f0738db5f93e10ae0fb5c71eb33a4f2ba87c9a2fa97462a649 \ + --hash=sha256:237a37e673e9f3cbfff0d2243e797c4862a44c93d2f52a52021c1a1b0899f846 \ + --hash=sha256:2a2949ce7c1cbd8317432ada80fe32156df825b2fd611688814c8557824ef060 \ + --hash=sha256:2c0df2d2de685433794a14d8d2e240df619b748fbe3367346baa519d8e6f1ca2 \ + --hash=sha256:3cf8fe659f6362530435d97d738eb413e9f090e7e993f88711b0377fbdc99f60 \ + --hash=sha256:481af57c8e99da92ad168924fd82220266043c8255942a1cb87958b108ac9335 \ + --hash=sha256:73439805c5cb68f364d826a5c5c4b6c798ded6b7ebaa4011f01ce6c94e4d5583 \ + --hash=sha256:7bab8345df60f9368d5f4594bfb8b71157496b44c30ff035d1d01972e764d3be \ + --hash=sha256:8532660b72b5d94d2a0a7a27ae7b9b40053662d00357bb2a6864dd7e38819084 \ + --hash=sha256:a04f54a9018f75615ae52f36ea1c5515e356e5d5e214b22609ddb546baef7132 \ + --hash=sha256:a0b62adc5ce81780ff04077e88bac0986363e4a3260ad3ef11ae9c14aa0e67ef \ + --hash=sha256:aec618d5a0cdba5592c60c2dee7d9c865180627f1a4a691257dea14ac1aa264d \ + --hash=sha256:c15c6e9f88c67ffa442681365d11df38afb11059fc44238e71a9d9f1fd51de70 \ + --hash=sha256:d3de9a5960f72c335ef00763d861fc5005ef0644cb260ba1b5a115a102157251 \ + --hash=sha256:dc42ebf56ede83cb080a50eba35a06e636775649a1ffd03dc986533f878702a3 \ + --hash=sha256:f1aea290c56d913e363066d83d3fc26848814a1fed3d72144ff9c930e8c7c718 \ + --hash=sha256:fe5a968ae933e8f7627a7b2fc8893336ac2be0eb0aace762d3421f6e8f7b7f83 # via -r lock/requirements-dev-template.in s3transfer==0.10.2 \ --hash=sha256:0711534e9356d3cc692fdde846b4a1e4b0cb6519971860796e6bc4c7aea00ef6 \ @@ -1137,9 +1084,9 @@ starlette==0.37.2 \ stringcase==1.2.0 \ --hash=sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008 # via -r lock/requirements-dev-template.in -testcontainers==4.7.1 \ - --hash=sha256:20f45c8a95c0062001d6c8c7030ffcae679b22b585543bb9368902f71d8e09eb \ - --hash=sha256:64f78e18c82d523720dbcb02d2404b10aae7a506e929579a29fd256fbfad0c8b +testcontainers==4.7.2 \ + --hash=sha256:23b13cf8078f615a08c75197f227796d90c46df92d2b282ae7c39b1fc1a9c9ed \ + --hash=sha256:9976b1cdcdeb9feeae6a477073e7c8b02cd40ea44f1daa34b5da6d2c918dff0d # via -r lock/requirements-dev.in tomli-w==1.0.0 \ --hash=sha256:9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463 \ @@ -1177,86 +1124,6 @@ typing-extensions==4.12.2 \ # pydantic-core # testcontainers # typer -ujson==5.10.0 \ - --hash=sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e \ - --hash=sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b \ - --hash=sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6 \ - --hash=sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7 \ - --hash=sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9 \ - --hash=sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd \ - --hash=sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569 \ - --hash=sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f \ - --hash=sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51 \ - --hash=sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20 \ - --hash=sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1 \ - --hash=sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf \ - --hash=sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc \ - --hash=sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e \ - --hash=sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a \ - --hash=sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539 \ - --hash=sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27 \ - --hash=sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165 \ - --hash=sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126 \ - --hash=sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1 \ - --hash=sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816 \ - --hash=sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64 \ - --hash=sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8 \ - --hash=sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e \ - --hash=sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287 \ - --hash=sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3 \ - --hash=sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb \ - --hash=sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0 \ - --hash=sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043 \ - --hash=sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557 \ - --hash=sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e \ - --hash=sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21 \ - --hash=sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d \ - --hash=sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd \ - --hash=sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0 \ - --hash=sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337 \ - --hash=sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753 \ - --hash=sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804 \ - --hash=sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f \ - --hash=sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f \ - --hash=sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5 \ - --hash=sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5 \ - --hash=sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1 \ - --hash=sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00 \ - --hash=sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2 \ - --hash=sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050 \ - --hash=sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e \ - --hash=sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4 \ - --hash=sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8 \ - --hash=sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996 \ - --hash=sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6 \ - --hash=sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1 \ - --hash=sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f \ - --hash=sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1 \ - --hash=sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4 \ - --hash=sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b \ - --hash=sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88 \ - --hash=sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518 \ - --hash=sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5 \ - --hash=sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770 \ - --hash=sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4 \ - --hash=sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a \ - --hash=sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76 \ - --hash=sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe \ - --hash=sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988 \ - --hash=sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1 \ - --hash=sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5 \ - --hash=sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b \ - --hash=sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7 \ - --hash=sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8 \ - --hash=sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc \ - --hash=sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a \ - --hash=sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720 \ - --hash=sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3 \ - --hash=sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b \ - --hash=sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9 \ - --hash=sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1 \ - --hash=sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746 - # via fastapi urllib3==2.2.2 \ --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \ --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168 @@ -1266,25 +1133,25 @@ urllib3==2.2.2 \ # docker # requests # testcontainers -uv==0.2.23 \ - --hash=sha256:052d277d950d6a0a9d7a4e5d1b49ee29a5c2f421cff579e81c0b15bf77b16f53 \ - --hash=sha256:09b1e7c082c92842c318d2e751388bfb34c4b39d5e53bddfae68782276996011 \ - --hash=sha256:0fadea0f534c2296a91c6624fb48a65343d3781f879271667624882e5e7fbb54 \ - --hash=sha256:162de3ec4c462611ae273b05967ef518cd488d049b4673bfa76160fb77b6f22f \ - --hash=sha256:3e938c7ab240abf9b8aa692976a044bdbf961917bf336f2b793ef219e723a78c \ - --hash=sha256:4b53383cf3a8d10c73037360591eeff458d9181ba0fa812895313ff73b62a556 \ - --hash=sha256:4b93b30ff8a416d317071bf9ce85fd2a8c86b984dbed44e0092bd6935c68fab4 \ - --hash=sha256:509b5b9c527e7e528838088076b745cd306796f65b562a1d891cf17e5e737359 \ - --hash=sha256:55b028cf0966b14317a27cf959967c52d96fdad39ed4eb8d00c5b9c0876d6c94 \ - --hash=sha256:607ac512ae22dd57de531f3d5ee4066cb96a16f2e13475326dff30b8c3105012 \ - --hash=sha256:662a79e530b80e69224aff312f9aa15172e4b3b8f2e4b5f812ff8b3eb0fa64a3 \ - --hash=sha256:693160ebe961510d5c59599fa5523fede124a0e6be3bb569dd0dce3678f1138a \ - --hash=sha256:720de561d24bd71b86811d17c7e98349991b6e93cdbc7a1d889155ee789a2a77 \ - --hash=sha256:81012dbe5cb1960a3a2359118b07d6695a1f157951320bf938d0e2b04d78f75c \ - --hash=sha256:93f10122ac98844a1ab1c455b7db2df5564bc277f4d6c414129fef109c8a8b6f \ - --hash=sha256:961272f76d56ec2e0c6c95466fc2e4b1a16e8abe75b378c87d4fc0ba0305f7c3 \ - --hash=sha256:ec58983a7c161cf759de6a0a5fba64aa9b4aa013f877fc722e057a5244cc93c2 \ - --hash=sha256:f032ac895c42dad2c7950016590a4c57e25b40f83ae84cc157f6d86fcdcb37de +uv==0.2.25 \ + --hash=sha256:1db7a9872bf931cd27c7c82c289537fba33fbf77b2154e0476cad6c07ce789e4 \ + --hash=sha256:28844650dbfd90971d9a3fb51a627b5cb30eaf6242ce0fb14a759b65bd9a58f7 \ + --hash=sha256:384b6efff3933bfaeaf3c91154af1240922717f66eac463ba92b701194445119 \ + --hash=sha256:42bb27b5f502087aff68b54a1b8e4b72e93fd6552120eb8cc14a36d204c49ce7 \ + --hash=sha256:583548634fe87eecff613ea07593af6188448020661bbf1b0d0ec4e7e7cdb888 \ + --hash=sha256:6bf8859b326eb63aa0626c4afc73a0c9043fb44af2506e5247a215c35a296bf5 \ + --hash=sha256:727095a2e0ceca1aa3ee8760d5515c6d70824683dafea7333e88a5dbca19a033 \ + --hash=sha256:8ed6b629b610ebd1b1d04c086f177d86bec0c1d6254223bbc2ecd9489d8f027c \ + --hash=sha256:a2133a8cbb411a36c3643b5bb0cd7dd69f87a55902eee0944936e0e0caaf79d7 \ + --hash=sha256:a722f0237e334270bc35a27592903204f573c7679961993fa9ab037ac3ff9c95 \ + --hash=sha256:ae335e182a5c5c5df55bb2bce9d21f2bdab9d3373e72ffcca07fed84d795671c \ + --hash=sha256:aefc47a2d091bf38a56443d0b9c80f54f16a8ac1abe2177313a301ed58ef8e87 \ + --hash=sha256:b19e15d91c690b0d9fb2086cc60c8f155aafe095afd893442108d7f804ad7439 \ + --hash=sha256:c5928feea7e5e3f232d81a2538de6fbe9e2ba71257c144258612fb3b2aacf54f \ + --hash=sha256:cc1187c0487529c9e0af750a855b540e21f5675c685c0fa400658eb9dc164739 \ + --hash=sha256:cd873463eb565b8c1e9d9bdba52ced3e78a345b0e2d1067af891ac0be8d5d77c \ + --hash=sha256:cdfc1aaf1b05913b48600358f98b9d84c273cffc311fb8be646e81f2153d76ae \ + --hash=sha256:e759195842e14207631e78977933507a76ac9122a0c8a289125530a238f1e0db # via -r lock/requirements-dev-template.in uvicorn==0.29.0 \ --hash=sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de \ diff --git a/lock/requirements.txt b/lock/requirements.txt index 7215c17e..450c4f65 100644 --- a/lock/requirements.txt +++ b/lock/requirements.txt @@ -91,15 +91,15 @@ bcrypt==4.1.3 \ # via # -c lock/requirements-dev.txt # crypt4gh -boto3==1.34.142 \ - --hash=sha256:72daee953cfa0631c584c9e3aef594079e1fe6a2f64c81ff791dab9a7b25c013 \ - --hash=sha256:cae11cb54f79795e44248a9e53ec5c7328519019df1ba54bc01413f51c548626 +boto3==1.34.144 \ + --hash=sha256:2f3e88b10b8fcc5f6100a9d74cd28230edc9d4fa226d99dd40a3ab38ac213673 \ + --hash=sha256:b8433d481d50b68a0162c0379c0dd4aabfc3d1ad901800beb5b87815997511c1 # via # -c lock/requirements-dev.txt # hexkit -botocore==1.34.142 \ - --hash=sha256:2eeb8e6be729c1f8ded723970ed6c6ac29cc3014d86a99e73428fa8bdca81f63 \ - --hash=sha256:9d8095bab0b93b9064e856730a7ffbbb4f897353d3170bec9ddccc5f4a3753bc +botocore==1.34.144 \ + --hash=sha256:4215db28d25309d59c99507f1f77df9089e5bebbad35f6e19c7c44ec5383a3e8 \ + --hash=sha256:a2cf26e1bf10d5917a2285e50257bc44e94a1d16574f282f3274f7a5d8d1f08b # via # -c lock/requirements-dev.txt # boto3 @@ -334,9 +334,9 @@ email-validator==2.2.0 \ # -c lock/requirements-dev.txt # fastapi # pydantic -fastapi==0.111.0 \ - --hash=sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0 \ - --hash=sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7 +fastapi==0.111.1 \ + --hash=sha256:4f51cfa25d72f9fbc3280832e84b32494cf186f50158d364a8765aabf22587bf \ + --hash=sha256:ddd1ac34cb1f76c2e2d7f8545a4bcb5463bce4834e81abf0b189e0c359ab2413 # via # -c lock/requirements-dev.txt # ghga-service-commons @@ -365,9 +365,9 @@ h11==0.14.0 \ # -c lock/requirements-dev.txt # httpcore # uvicorn -hexkit==3.3.0 \ - --hash=sha256:37c23bef418bf69e26fcd03e95ceb7d623ad7f077cd3a71e50a136bac29e1724 \ - --hash=sha256:ee5c6c6f452b669db927eba5d1fb93c0f91bd7dc5beed2558a29c2285f09f805 +hexkit==3.4.0 \ + --hash=sha256:3f87d76d746a9e506d458eb729374a8b2facc04f4b40307a2db3b970a8ee4713 \ + --hash=sha256:a02f086de15858b8c72852d022c63ffcec555c24cd30b2f6628f0d41fd2fd88a # via # -c lock/requirements-dev.txt # fsb (pyproject.toml) @@ -547,67 +547,12 @@ mdurl==0.1.2 \ # via # -c lock/requirements-dev.txt # markdown-it-py -motor==3.5.0 \ - --hash=sha256:2b38e405e5a0c52d499edb8d23fa029debdf0158da092c21b44d92cac7f59942 \ - --hash=sha256:e8f1d7a3370e8dd30eb4c68aaaee46dc608fbac70a757e58f3e828124f5e7693 +motor==3.5.1 \ + --hash=sha256:1622bd7b39c3e6375607c14736f6e1d498128eadf6f5f93f8786cf17d37062ac \ + --hash=sha256:f95a9ea0f011464235e0bd72910baa291db3a6009e617ac27b82f57885abafb8 # via # -c lock/requirements-dev.txt # hexkit -orjson==3.10.6 \ - --hash=sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e \ - --hash=sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0 \ - --hash=sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f \ - --hash=sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212 \ - --hash=sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43 \ - --hash=sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b \ - --hash=sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219 \ - --hash=sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394 \ - --hash=sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a \ - --hash=sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd \ - --hash=sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844 \ - --hash=sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5 \ - --hash=sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2 \ - --hash=sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b \ - --hash=sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143 \ - --hash=sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38 \ - --hash=sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5 \ - --hash=sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148 \ - --hash=sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183 \ - --hash=sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db \ - --hash=sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a \ - --hash=sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e \ - --hash=sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6 \ - --hash=sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a \ - --hash=sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc \ - --hash=sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3 \ - --hash=sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34 \ - --hash=sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b \ - --hash=sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365 \ - --hash=sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56 \ - --hash=sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5 \ - --hash=sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863 \ - --hash=sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba \ - --hash=sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed \ - --hash=sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb \ - --hash=sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2 \ - --hash=sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0 \ - --hash=sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f \ - --hash=sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28 \ - --hash=sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a \ - --hash=sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7 \ - --hash=sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c \ - --hash=sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b \ - --hash=sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7 \ - --hash=sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb \ - --hash=sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0 \ - --hash=sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b \ - --hash=sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7 \ - --hash=sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2 \ - --hash=sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7 \ - --hash=sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b - # via - # -c lock/requirements-dev.txt - # fastapi packaging==24.1 \ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 @@ -1052,88 +997,6 @@ typing-extensions==4.12.2 \ # pydantic # pydantic-core # typer -ujson==5.10.0 \ - --hash=sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e \ - --hash=sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b \ - --hash=sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6 \ - --hash=sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7 \ - --hash=sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9 \ - --hash=sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd \ - --hash=sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569 \ - --hash=sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f \ - --hash=sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51 \ - --hash=sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20 \ - --hash=sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1 \ - --hash=sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf \ - --hash=sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc \ - --hash=sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e \ - --hash=sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a \ - --hash=sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539 \ - --hash=sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27 \ - --hash=sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165 \ - --hash=sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126 \ - --hash=sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1 \ - --hash=sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816 \ - --hash=sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64 \ - --hash=sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8 \ - --hash=sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e \ - --hash=sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287 \ - --hash=sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3 \ - --hash=sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb \ - --hash=sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0 \ - --hash=sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043 \ - --hash=sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557 \ - --hash=sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e \ - --hash=sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21 \ - --hash=sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d \ - --hash=sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd \ - --hash=sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0 \ - --hash=sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337 \ - --hash=sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753 \ - --hash=sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804 \ - --hash=sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f \ - --hash=sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f \ - --hash=sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5 \ - --hash=sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5 \ - --hash=sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1 \ - --hash=sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00 \ - --hash=sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2 \ - --hash=sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050 \ - --hash=sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e \ - --hash=sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4 \ - --hash=sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8 \ - --hash=sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996 \ - --hash=sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6 \ - --hash=sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1 \ - --hash=sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f \ - --hash=sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1 \ - --hash=sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4 \ - --hash=sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b \ - --hash=sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88 \ - --hash=sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518 \ - --hash=sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5 \ - --hash=sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770 \ - --hash=sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4 \ - --hash=sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a \ - --hash=sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76 \ - --hash=sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe \ - --hash=sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988 \ - --hash=sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1 \ - --hash=sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5 \ - --hash=sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b \ - --hash=sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7 \ - --hash=sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8 \ - --hash=sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc \ - --hash=sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a \ - --hash=sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720 \ - --hash=sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3 \ - --hash=sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b \ - --hash=sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9 \ - --hash=sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1 \ - --hash=sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746 - # via - # -c lock/requirements-dev.txt - # fastapi urllib3==2.2.2 \ --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \ --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168 diff --git a/pyproject.toml b/pyproject.toml index 4c2ed80f..6a5057ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -136,7 +136,7 @@ asyncio_mode = "strict" [tool.coverage.paths] source = [ - "services", - "/workspace/services", + "services/**/src", + "/workspace/services/**/src", "**/lib/python*/site-packages", ] diff --git a/scripts/check_license.py b/scripts/check_license.py index 6d3d87c9..9d9bb308 100755 --- a/scripts/check_license.py +++ b/scripts/check_license.py @@ -33,47 +33,48 @@ # exclude files and dirs from license header check: EXCLUDE = [ + ".coveragerc", ".devcontainer", - "eggs", + ".editorconfig", ".eggs", - "dist", - "build", - "develop-eggs", - "lib", - "lib62", - "parts", - "sdist", - "wheels", - "pip-wheel-metadata", - ".coveragerc", ".git", ".github", ".flake8", ".gitignore", + ".mypy.ini", ".pylintrc", ".ruff.toml", ".ruff_cache", - "example_config.yaml", - "config_schema.json", - "LICENSE", # is checked but not for the license header - ".pre-commit-config.yaml", - "docs", - ".vscode", - ".mypy_cache", - ".mypy.ini", - ".pytest_cache", - ".editorconfig", - "monorepo.code-workspace", ".template/.static_files.txt", ".template/.static_files_ignore.txt", ".template/.mandatory_files.txt", ".template/.mandatory_files_ignore.txt", ".template/.deprecated_files.txt", ".template/.deprecated_files_ignore.txt", + ".tox", + ".venv", + ".vscode", + "eggs", + "build", + "config_schema.json", + "dist", + "docs", + "develop-eggs", + "example_config.yaml", + "htmlcov", + "lib", + "lib62", + "parts", + "pip-wheel-metadata", + "sdist", + "venv", + "wheels", + "LICENSE", # is checked but not for the license header ] # exclude file by file ending from license header check: EXCLUDE_ENDINGS = [ + "code-workspace", "html", "in", "ini", @@ -82,6 +83,8 @@ "md", "pub", "pyc", + "pyd", + "typed", "sec", "toml", "txt", @@ -94,12 +97,7 @@ ] # exclude any files with names that match any of the following regex: -EXCLUDE_PATTERN = [ - r".*\.egg-info.*", - r".*__cache__.*", - r".*\.git.*", - r".*\.pytest_cache.*", -] +EXCLUDE_PATTERN = [r".*\.egg-info.*", r".*__cache__.*", r".*_cache", r".*\.git.*"] # The License header, "{year}" will be replaced by current year: COPYRIGHT_TEMPLATE = """Copyright {year} {author} @@ -116,8 +114,8 @@ See the License for the specific language governing permissions and limitations under the License.""" -# A list of all chars that may be used to introduce a comment: -COMMENT_CHARS = ["#"] +# A list of strings that may be used to introduce a line comment: +LINE_COMMENTS = ["#"] AUTHOR = """Universität Tübingen, DKFZ, EMBL, and Universität zu Köln for the German Human Genome-Phenome Archive (GHGA)""" @@ -181,13 +179,13 @@ def get_target_files( """Get target files that are not match the exclude conditions. Args: target_dir (pathlib.Path): The target dir to search. - exclude (List[str], optional): + exclude (list[str], optional): Overwrite default list of file/dir paths relative to the target dir that shall be excluded. - exclude_endings (List[str], optional): + exclude_endings (list[str], optional): Overwrite default list of file endings that shall be excluded. - exclude_pattern (List[str], optional): + exclude_pattern (list[str], optional): Overwrite default list of regex patterns match file path for exclusion. """ @@ -203,24 +201,25 @@ def get_target_files( file_ for file_ in all_files if not ( - any([file_.is_relative_to(excl) for excl in exclude_normalized]) - or any([str(file_).endswith(ending) for ending in exclude_endings]) - or any([re.match(pattern, str(file_)) for pattern in exclude_pattern]) + any(file_.is_relative_to(excl) for excl in exclude_normalized) + or any(str(file_).endswith(ending) for ending in exclude_endings) + or any(re.match(pattern, str(file_)) for pattern in exclude_pattern) ) ] return target_files -def normalized_line(line: str, chars_to_trim: list[str] = COMMENT_CHARS) -> str: - norm_line = line.strip() - - for char in chars_to_trim: - norm_line = norm_line.strip(char) +def normalized_line(line: str, line_comments: list[str] = LINE_COMMENTS) -> str: + line = line.strip() + for line_comment in line_comments: + line_without_comment = line.removeprefix(line_comment) + if line_without_comment != line: + line = line_without_comment.lstrip() + break + return line - return norm_line.strip("\n").strip("\t").strip() - -def normalized_text(text: str, chars_to_trim: list[str] = COMMENT_CHARS) -> str: +def normalized_text(text: str, line_comments: list[str] = LINE_COMMENTS) -> str: "Normalize a license header text." lines = text.split("\n") @@ -232,7 +231,7 @@ def normalized_text(text: str, chars_to_trim: list[str] = COMMENT_CHARS) -> str: if stripped_line.startswith("#!"): continue - norm_line = normalized_line(stripped_line) + norm_line = normalized_line(stripped_line, line_comments=line_comments) # exclude empty lines: if norm_line == "": @@ -250,22 +249,17 @@ def format_copyright_template(copyright_template: str, author: str) -> str: return normalized_text(copyright_template.replace("{author}", author)) -def is_commented_line(line: str, comment_chars: list[str] = COMMENT_CHARS) -> bool: +def is_commented_line(line: str, line_comments: list[str] = LINE_COMMENTS) -> bool: """Checks whether a line is a comment.""" - line_stripped = line.strip() - for comment_char in comment_chars: - if line_stripped.startswith(comment_char): - return True - - return False + return line.lstrip().startswith(tuple(line_comments)) def is_empty_line(line: str) -> bool: """Checks whether a line is empty.""" - return line.strip("\n").strip("\t").strip() == "" + return not line.strip() -def get_header(file_path: Path, comment_chars: list[str] = COMMENT_CHARS): +def get_header(file_path: Path, line_comments: list[str] = LINE_COMMENTS): """Extracts the header from a file and normalizes it.""" header_lines: list[str] = [] @@ -273,7 +267,7 @@ def get_header(file_path: Path, comment_chars: list[str] = COMMENT_CHARS): with open(file_path) as file: for line in file: if is_commented_line( - line, comment_chars=comment_chars + line, line_comments=line_comments ) or is_empty_line(line): header_lines.append(line) else: @@ -283,7 +277,7 @@ def get_header(file_path: Path, comment_chars: list[str] = COMMENT_CHARS): # normalize the lines: header = "".join(header_lines) - return normalized_text(header, chars_to_trim=comment_chars) + return normalized_text(header, line_comments=line_comments) def validate_year_string(year_string: str, min_year: int = MIN_YEAR) -> bool: @@ -318,7 +312,7 @@ def check_copyright_notice( global_copyright: GlobalCopyrightNotice, copyright_template: str = COPYRIGHT_TEMPLATE, author: str = AUTHOR, - comment_chars: list[str] = COMMENT_CHARS, + line_comments: list[str] = LINE_COMMENTS, min_year: int = MIN_YEAR, ) -> bool: """Checks the specified copyright text against a template. @@ -386,7 +380,7 @@ def check_file_headers( exclude: list[str] = EXCLUDE, exclude_endings: list[str] = EXCLUDE_ENDINGS, exclude_pattern: list[str] = EXCLUDE_PATTERN, - comment_chars: list[str] = COMMENT_CHARS, + line_comments: list[str] = LINE_COMMENTS, min_year: int = MIN_YEAR, ) -> tuple[list[Path], list[Path]]: """Check files for presence of a license header and verify that @@ -407,13 +401,13 @@ def check_file_headers( The author that shall be included in the license header. It will replace any appearance of "{author}" in the license header. This defaults to an author info for GHGA. - exclude (List[str], optional): + exclude (list[str], optional): Overwrite default list of file/dir paths relative to the target dir that shall be excluded. - exclude_endings (List[str], optional): + exclude_endings (list[str], optional): Overwrite default list of file endings that shall be excluded. - exclude_pattern (List[str], optional): + exclude_pattern (list[str], optional): Overwrite default list of regex patterns match file path for exclusion. """ @@ -430,13 +424,13 @@ def check_file_headers( for target_file in target_files: try: - header = get_header(target_file, comment_chars=comment_chars) + header = get_header(target_file, line_comments=line_comments) if check_copyright_notice( copyright=header, global_copyright=global_copyright, copyright_template=copyright_template, author=author, - comment_chars=comment_chars, + line_comments=line_comments, min_year=min_year, ): passed_files.append(target_file) @@ -454,7 +448,7 @@ def check_license_file( global_copyright: GlobalCopyrightNotice, copyright_template: str = COPYRIGHT_TEMPLATE, author: str = AUTHOR, - comment_chars: list[str] = COMMENT_CHARS, + line_comments: list[str] = LINE_COMMENTS, min_year: int = MIN_YEAR, ) -> bool: """Currently only checks if the copyright notice in the @@ -496,7 +490,7 @@ def check_license_file( global_copyright=global_copyright, copyright_template=copyright_template, author=author, - comment_chars=comment_chars, + line_comments=line_comments, min_year=min_year, ) diff --git a/scripts/update_lock.py b/scripts/update_lock.py index 9eaa5009..2f263a3d 100755 --- a/scripts/update_lock.py +++ b/scripts/update_lock.py @@ -97,6 +97,9 @@ def compile_lock_file( """From the specified sources compile a lock file using pip-compile from pip-tools and write it to the specified output location. """ + + print(f"Updating '{output.name}'...") + command = ["uv", "pip", "compile", "--refresh", "--generate-hashes", "--no-header"] if upgrade: @@ -173,32 +176,26 @@ def main(upgrade: bool = False, check: bool = False): check_prod_path = Path(temp_dir) / OUTPUT_LOCK_PATH.name # compile requirements-dev.txt (includes all dependencies) - output_req_dev = check_dev_path if check else OUTPUT_DEV_LOCK_PATH - if not check: - print(f"Updating '{output_req_dev.name}'...") compile_lock_file( sources=[modified_pyproject_path, DEV_DEPS_PATH], - output=output_req_dev, + output=check_dev_path if check else OUTPUT_DEV_LOCK_PATH, upgrade=upgrade, extras=extras, ) if check and is_file_outdated(OUTPUT_DEV_LOCK_PATH, check_dev_path): - exit(1) + return # compile requirements.txt (only includes production-related subset of above) - output_req = check_prod_path if check else OUTPUT_LOCK_PATH - if not check: - print(f"Updating '{output_req.name}'...") compile_lock_file( sources=[modified_pyproject_path], - output=output_req, + output=check_prod_path if check else OUTPUT_LOCK_PATH, upgrade=upgrade, extras=extras, ) if check and is_file_outdated(OUTPUT_LOCK_PATH, check_prod_path): - exit(1) + return if check: cli.echo_success("Lock files are up to date.") diff --git a/scripts/update_readme_monorepo.py b/scripts/update_readme_monorepo.py index dbfcfb05..dabaa653 100755 --- a/scripts/update_readme_monorepo.py +++ b/scripts/update_readme_monorepo.py @@ -125,14 +125,14 @@ def read_package_description() -> str: return DESCRIPTION_PATH.read_text() -def get_service_readmes() -> str: +def get_service_links() -> str: """Get links to all service readmes.""" service_readme_links = [] for service_dir in sorted(list_service_dirs()): service_description = read_service_description(service_dir) - readme_link = service_dir.relative_to(ROOT_DIR) / "README.md" + readme_link = service_dir.relative_to(ROOT_DIR) if "-" in service_description: service_description = service_description.split("-")[0].strip() service_readme_links.append(f"[{service_description}]({readme_link})") @@ -150,7 +150,7 @@ def get_package_details() -> PackageDetails: **header.model_dump(), **name.model_dump(), description=description, - service_readmes=get_service_readmes(), + service_readmes=get_service_links(), ) diff --git a/services/dcs/pyproject.toml b/services/dcs/pyproject.toml index 5d2fd95e..c0b1633c 100644 --- a/services/dcs/pyproject.toml +++ b/services/dcs/pyproject.toml @@ -29,7 +29,7 @@ description = "Download Controller Service - a GA4GH DRS-compliant service for d text = "Apache 2.0" [project.urls] -Repository = "https://github.com/ghga-de/dcs" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/dcs" [project.scripts] dcs = "dcs.__main__:cli" diff --git a/services/dcs/src/dcs/py.typed b/services/dcs/src/dcs/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/dcs/src/dcs/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/ekss/pyproject.toml b/services/ekss/pyproject.toml index 75da9cd5..fc207dd1 100644 --- a/services/ekss/pyproject.toml +++ b/services/ekss/pyproject.toml @@ -1,3 +1,9 @@ +[build-system] +requires = [ + "setuptools>=69", +] +build-backend = "setuptools.build_meta" + [project] name = "ekss" version = "1.3.1" @@ -23,17 +29,11 @@ classifiers = [ text = "Apache 2.0" [project.urls] -Repository = "https://github.com/ghga-de/encryption-key-store-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/ekss" [project.scripts] ekss = "ekss.__main__:run" -[build-system] -requires = [ - "setuptools>=69", -] -build-backend = "setuptools.build_meta" - [tool.setuptools.packages.find] where = [ "src", diff --git a/services/ekss/src/ekss/py.typed b/services/ekss/src/ekss/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/ekss/src/ekss/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/fis/pyproject.toml b/services/fis/pyproject.toml index c1bc9edd..a39b66ee 100644 --- a/services/fis/pyproject.toml +++ b/services/fis/pyproject.toml @@ -28,7 +28,7 @@ description = "File Ingest Service - A lightweight service to propagate file upl text = "Apache 2.0" [project.urls] -Repository = "https://github.com/ghga-de/file-ingest-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/fis" [project.scripts] fis = "fis.__main__:run" diff --git a/services/fis/src/fis/py.typed b/services/fis/src/fis/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/fis/src/fis/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/ifrs/pyproject.toml b/services/ifrs/pyproject.toml index b486f381..f0361528 100644 --- a/services/ifrs/pyproject.toml +++ b/services/ifrs/pyproject.toml @@ -1,3 +1,9 @@ +[build-system] +requires = [ + "setuptools>=69", +] +build-backend = "setuptools.build_meta" + [project] name = "ifrs" version = "2.0.1" @@ -20,7 +26,7 @@ classifiers = [ ] [project.urls] -Repository = "https://github.com/ghga-de/internal-file-registry-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/ifrs" [project.scripts] ifrs = "ifrs.__main__:run_forever" @@ -28,15 +34,6 @@ ifrs = "ifrs.__main__:run_forever" [project.license] text = "Apache 2.0" -[build-system] -requires = [ - "setuptools>=67.7.2", -] -build-backend = "setuptools.build_meta" - -[tool.setuptools.package-data] -ifrs = ["py.typed"] - [tool.setuptools.packages.find] where = [ "src", diff --git a/services/ifrs/src/ifrs/py.typed b/services/ifrs/src/ifrs/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/ifrs/src/ifrs/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/irs/pyproject.toml b/services/irs/pyproject.toml index f6bc68ba..f4a549b0 100644 --- a/services/irs/pyproject.toml +++ b/services/irs/pyproject.toml @@ -1,3 +1,9 @@ +[build-system] +requires = [ + "setuptools>=69", +] +build-backend = "setuptools.build_meta" + [project] name = "irs" version = "3.0.1" @@ -20,7 +26,7 @@ classifiers = [ ] [project.urls] -Repository = "https://github.com/ghga-de/interrogation-room-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/irs" [project.scripts] irs = "irs.__main__:cli" @@ -28,15 +34,6 @@ irs = "irs.__main__:cli" [project.license] text = "Apache 2.0" -[build-system] -requires = [ - "setuptools>=67.7.2", -] -build-backend = "setuptools.build_meta" - -[tool.setuptools.package-data] -irs = ["py.typed"] - [tool.setuptools.packages.find] where = [ "src", diff --git a/services/irs/src/irs/py.typed b/services/irs/src/irs/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/irs/src/irs/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/pcs/pyproject.toml b/services/pcs/pyproject.toml index 8fa264a7..88217f3f 100644 --- a/services/pcs/pyproject.toml +++ b/services/pcs/pyproject.toml @@ -1,3 +1,9 @@ +[build-system] +requires = [ + "setuptools>=69", +] +build-backend = "setuptools.build_meta" + [project] name = "pcs" version = "2.0.1" @@ -20,7 +26,7 @@ classifiers = [ ] [project.urls] -Repository = "https://github.com/ghga-de/purge-controller-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/pcs" [project.scripts] pcs = "pcs.__main__:cli" @@ -28,15 +34,6 @@ pcs = "pcs.__main__:cli" [project.license] text = "Apache 2.0" -[build-system] -requires = [ - "setuptools>=67.7.2", -] -build-backend = "setuptools.build_meta" - -[tool.setuptools.package-data] -pcs = ["py.typed"] - [tool.setuptools.packages.find] where = [ "src", diff --git a/services/pcs/src/pcs/py.typed b/services/pcs/src/pcs/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/pcs/src/pcs/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types. diff --git a/services/ucs/pyproject.toml b/services/ucs/pyproject.toml index 9c7bd8ad..ed6b3b10 100644 --- a/services/ucs/pyproject.toml +++ b/services/ucs/pyproject.toml @@ -1,3 +1,9 @@ +[build-system] +requires = [ + "setuptools>=69", +] +build-backend = "setuptools.build_meta" + [project] name = "ucs" version = "4.0.1" @@ -20,7 +26,7 @@ classifiers = [ ] [project.urls] -Repository = "https://github.com/ghga-de/upload-controller-service" +Repository = "https://github.com/ghga-de/file-services-backend/tree/main/services/ucs" [project.scripts] ucs = "ucs.__main__:cli" @@ -28,15 +34,6 @@ ucs = "ucs.__main__:cli" [project.license] text = "Apache 2.0" -[build-system] -requires = [ - "setuptools>=67.7.2", -] -build-backend = "setuptools.build_meta" - -[tool.setuptools.package-data] -pcs = ["py.typed"] - [tool.setuptools.packages.find] where = [ "src", diff --git a/services/ucs/src/ucs/py.typed b/services/ucs/src/ucs/py.typed new file mode 100644 index 00000000..d3245e74 --- /dev/null +++ b/services/ucs/src/ucs/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561. This package uses inline types.