From 9b5bf8b856f4affe9b49dd9982f460e834c50ca5 Mon Sep 17 00:00:00 2001 From: Christoph Zwerschke Date: Tue, 9 Jul 2024 14:28:44 +0000 Subject: [PATCH] Some updates were still missing --- lock/requirements-dev.txt | 38 ++++++- lock/requirements.txt | 169 ++++++++++++++++++++++------ pyproject.toml | 9 +- scripts/script_utils/deps.py | 2 +- scripts/update_pyproject.py | 2 +- scripts/update_readme.py | 2 +- src/wps/core/models.py | 7 +- src/wps/core/repository.py | 7 +- src/wps/inject.py | 8 +- src/wps/ports/inbound/repository.py | 7 +- tests/test_models.py | 6 +- 11 files changed, 190 insertions(+), 67 deletions(-) diff --git a/lock/requirements-dev.txt b/lock/requirements-dev.txt index 4897627..b05b1c7 100644 --- a/lock/requirements-dev.txt +++ b/lock/requirements-dev.txt @@ -244,6 +244,7 @@ click==8.1.7 \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de # via + # -r lock/requirements-dev-template.in # typer # uvicorn coverage==7.5.4 \ @@ -378,9 +379,11 @@ filelock==3.15.4 \ ghga-event-schemas==3.3.1 \ --hash=sha256:6b21b45efd8a1a5dbbc3b671f3d23390b728dd19669ce39a7153acb5487f1256 \ --hash=sha256:845e72aa8045c52fbb42a215dcd95dd8436c841788b1d8edb80794584faab09a + # via wps (pyproject.toml) ghga-service-commons==3.1.5 \ --hash=sha256:6650167f9fe21d683d7f7bd81320f3301f6624f6c71d7e633fbf5f0a3453d973 \ --hash=sha256:eeae99a976d2c81bce754e20cc0156a49b76ef3f2f660175d654de0abcb62c6e + # via wps (pyproject.toml) h11==0.14.0 \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -390,7 +393,9 @@ h11==0.14.0 \ hexkit==3.3.0 \ --hash=sha256:37c23bef418bf69e26fcd03e95ceb7d623ad7f077cd3a71e50a136bac29e1724 \ --hash=sha256:ee5c6c6f452b669db927eba5d1fb93c0f91bd7dc5beed2558a29c2285f09f805 - # via ghga-service-commons + # via + # wps (pyproject.toml) + # ghga-service-commons httpcore==1.0.5 \ --hash=sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61 \ --hash=sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5 @@ -437,6 +442,8 @@ httpx==0.27.0 \ --hash=sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5 \ --hash=sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5 # via + # -r lock/requirements-dev-template.in + # wps (pyproject.toml) # fastapi # pytest-httpx identify==2.6.0 \ @@ -472,6 +479,7 @@ jsonschema-specifications==2023.12.1 \ jsonschema2md==1.1.0 \ --hash=sha256:2386fc4d119330686db3989ea497ab96a4defb6388386fc0ceff756b5c1a66a7 \ --hash=sha256:e89edf2de1bc7fc3e842915c7c29b7b70888555a87002eccc06350c0412a1458 + # via -r lock/requirements-dev-template.in jwcrypto==1.5.6 \ --hash=sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789 \ --hash=sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039 @@ -479,6 +487,7 @@ jwcrypto==1.5.6 \ logot==1.3.0 \ --hash=sha256:bb2e8cf8ca949015e1e096e45023095ebd5df06ea4627f5df47d53dcdf62b74e \ --hash=sha256:de392d182308828a0a9a442120e25e4ad2258fef52c4ed275e012aaffb0514a5 + # via -r lock/requirements-dev-template.in markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb @@ -581,10 +590,13 @@ mypy==1.10.1 \ --hash=sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7 \ --hash=sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02 \ --hash=sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3 + # via -r lock/requirements-dev-template.in mypy-extensions==1.0.0 \ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 - # via mypy + # via + # -r lock/requirements-dev-template.in + # mypy nodeenv==1.9.1 \ --hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \ --hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9 @@ -659,6 +671,7 @@ pluggy==1.5.0 \ pre-commit==3.7.1 \ --hash=sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a \ --hash=sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5 + # via -r lock/requirements-dev-template.in pycparser==2.22 \ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc @@ -841,18 +854,22 @@ pytest==8.2.2 \ --hash=sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343 \ --hash=sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977 # via + # -r lock/requirements-dev-template.in # pytest-asyncio # pytest-cov # pytest-httpx pytest-asyncio==0.23.7 \ --hash=sha256:009b48127fbe44518a547bddd25611551b0e43ccdbf1e67d12479f569832c20b \ --hash=sha256:5f5c72948f4c49e7db4f29f2521d4031f1c27f86e57b046126654083d4770268 + # via -r lock/requirements-dev-template.in pytest-cov==5.0.0 \ --hash=sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652 \ --hash=sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857 + # via -r lock/requirements-dev-template.in pytest-httpx==0.30.0 \ --hash=sha256:6d47849691faf11d2532565d0c8e0e02b9f4ee730da31687feae315581d7520c \ --hash=sha256:755b8edca87c974dd4f3605c374fda11db84631de3d163b99c0df5807023a19a + # via -r lock/requirements-dev-template.in python-dotenv==1.0.1 \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a @@ -930,7 +947,9 @@ referencing==0.35.1 \ requests==2.32.3 \ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 - # via docker + # via + # -r lock/requirements-dev-template.in + # docker rich==13.7.1 \ --hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \ --hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432 @@ -1057,9 +1076,11 @@ ruff==0.5.1 \ --hash=sha256:dfaf11c8a116394da3b65cd4b36de30d8552fa45b8119b9ef5ca6638ab964fa3 \ --hash=sha256:e216fc75a80ea1fbd96af94a6233d90190d5b65cc3d5dfacf2bd48c3e067d3e1 \ --hash=sha256:f0368d765eec8247b8550251c49ebb20554cc4e812f383ff9f5bf0d5d94190b0 + # via -r lock/requirements-dev-template.in setuptools==70.2.0 \ --hash=sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 \ --hash=sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1 + # via -r lock/requirements-dev-template.in shellingham==1.5.4 \ --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de @@ -1067,6 +1088,7 @@ shellingham==1.5.4 \ snakeviz==2.2.0 \ --hash=sha256:569e2d71c47f80a886aa6e70d6405cb6d30aa3520969ad956b06f824c5f02b8e \ --hash=sha256:7bfd00be7ae147eb4a170a471578e1cd3f41f803238958b6b8efcf2c698a6aa9 + # via -r lock/requirements-dev-template.in sniffio==1.3.1 \ --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc @@ -1079,12 +1101,15 @@ starlette==0.37.2 \ # via fastapi stringcase==1.2.0 \ --hash=sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008 + # via -r lock/requirements-dev-template.in testcontainers==4.7.1 \ --hash=sha256:20f45c8a95c0062001d6c8c7030ffcae679b22b585543bb9368902f71d8e09eb \ --hash=sha256:64f78e18c82d523720dbcb02d2404b10aae7a506e929579a29fd256fbfad0c8b + # via -r lock/requirements-dev.in tomli-w==1.0.0 \ --hash=sha256:9f2a07e8be30a0729e533ec968016807069991ae2fd921a78d42f429ae5f4463 \ --hash=sha256:f463434305e0336248cac9c2dc8076b707d8a12d019dd349f5c1e382dd1ae1b9 + # via -r lock/requirements-dev-template.in tornado==6.4.1 \ --hash=sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8 \ --hash=sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f \ @@ -1101,7 +1126,10 @@ tornado==6.4.1 \ typer==0.12.3 \ --hash=sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914 \ --hash=sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482 - # via fastapi-cli + # via + # -r lock/requirements-dev-template.in + # wps (pyproject.toml) + # fastapi-cli typing-extensions==4.12.2 \ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 @@ -1198,6 +1226,7 @@ urllib3==2.2.2 \ --hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \ --hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168 # via + # -r lock/requirements-dev-template.in # docker # requests # testcontainers @@ -1220,6 +1249,7 @@ uv==0.2.23 \ --hash=sha256:961272f76d56ec2e0c6c95466fc2e4b1a16e8abe75b378c87d4fc0ba0305f7c3 \ --hash=sha256:ec58983a7c161cf759de6a0a5fba64aa9b4aa013f877fc722e057a5244cc93c2 \ --hash=sha256:f032ac895c42dad2c7950016590a4c57e25b40f83ae84cc157f6d86fcdcb37de + # via -r lock/requirements-dev-template.in uvicorn==0.29.0 \ --hash=sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de \ --hash=sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0 diff --git a/lock/requirements.txt b/lock/requirements.txt index f2392ea..f4bc9fa 100644 --- a/lock/requirements.txt +++ b/lock/requirements.txt @@ -30,26 +30,34 @@ aiokafka==0.11.0 \ --hash=sha256:ee0c61a2dcabbe4474ff237d708f9bd663dd2317e03a9cb7239a212c9ee05b12 \ --hash=sha256:f1c85f66eb3564c5e74d8e4c25df4ac1fd94f1a6f6e66f005aafa6f791bde215 \ --hash=sha256:f2def07fe1720c4fe37c0309e355afa9ff4a28e0aabfe847be0692461ac69352 - # via hexkit + # via + # -c lock/requirements-dev.txt + # hexkit annotated-types==0.7.0 \ --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 - # via pydantic + # via + # -c lock/requirements-dev.txt + # pydantic anyio==4.4.0 \ --hash=sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94 \ --hash=sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7 # via + # -c lock/requirements-dev.txt # httpx # starlette # watchfiles async-timeout==4.0.3 \ --hash=sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f \ --hash=sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028 - # via aiokafka + # via + # -c lock/requirements-dev.txt + # aiokafka attrs==23.2.0 \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 # via + # -c lock/requirements-dev.txt # jsonschema # referencing bcrypt==4.1.3 \ @@ -80,11 +88,14 @@ bcrypt==4.1.3 \ --hash=sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84 \ --hash=sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1 \ --hash=sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a - # via crypt4gh + # via + # -c lock/requirements-dev.txt + # crypt4gh certifi==2024.7.4 \ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # via + # -c lock/requirements-dev.txt # httpcore # httpx cffi==1.16.0 \ @@ -141,18 +152,22 @@ cffi==1.16.0 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 # via + # -c lock/requirements-dev.txt # cryptography # pynacl click==8.1.7 \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de # via + # -c lock/requirements-dev.txt # typer # uvicorn crypt4gh==1.7 \ --hash=sha256:1569bc4ff9b689c8852e3892ac3f6fea4b31948ca0b1e5bc28d0d2f80def2a28 \ --hash=sha256:9aeb37065769a560b5bbe8cf67c47eb4d8b53ed36725a8d3fb0385084c682c3c - # via ghga-service-commons + # via + # -c lock/requirements-dev.txt + # ghga-service-commons cryptography==42.0.8 \ --hash=sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad \ --hash=sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583 \ @@ -187,51 +202,72 @@ cryptography==42.0.8 \ --hash=sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a \ --hash=sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e # via + # -c lock/requirements-dev.txt # crypt4gh # jwcrypto dnspython==2.6.1 \ --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \ --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc # via + # -c lock/requirements-dev.txt # email-validator # pymongo docopt==0.6.2 \ --hash=sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491 - # via crypt4gh + # via + # -c lock/requirements-dev.txt + # crypt4gh email-validator==2.2.0 \ --hash=sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631 \ --hash=sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7 # via + # -c lock/requirements-dev.txt # fastapi # pydantic fastapi==0.111.0 \ --hash=sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0 \ --hash=sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7 - # via ghga-service-commons + # via + # -c lock/requirements-dev.txt + # ghga-service-commons fastapi-cli==0.0.4 \ --hash=sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809 \ --hash=sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32 - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi ghga-event-schemas==3.3.1 \ --hash=sha256:6b21b45efd8a1a5dbbc3b671f3d23390b728dd19669ce39a7153acb5487f1256 \ --hash=sha256:845e72aa8045c52fbb42a215dcd95dd8436c841788b1d8edb80794584faab09a + # via + # -c lock/requirements-dev.txt + # wps (pyproject.toml) ghga-service-commons==3.1.5 \ --hash=sha256:6650167f9fe21d683d7f7bd81320f3301f6624f6c71d7e633fbf5f0a3453d973 \ --hash=sha256:eeae99a976d2c81bce754e20cc0156a49b76ef3f2f660175d654de0abcb62c6e + # via + # -c lock/requirements-dev.txt + # wps (pyproject.toml) h11==0.14.0 \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 # via + # -c lock/requirements-dev.txt # httpcore # uvicorn hexkit==3.3.0 \ --hash=sha256:37c23bef418bf69e26fcd03e95ceb7d623ad7f077cd3a71e50a136bac29e1724 \ --hash=sha256:ee5c6c6f452b669db927eba5d1fb93c0f91bd7dc5beed2558a29c2285f09f805 - # via ghga-service-commons + # via + # -c lock/requirements-dev.txt + # wps (pyproject.toml) + # ghga-service-commons httpcore==1.0.5 \ --hash=sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61 \ --hash=sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5 - # via httpx + # via + # -c lock/requirements-dev.txt + # httpx httptools==0.6.1 \ --hash=sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563 \ --hash=sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142 \ @@ -269,40 +305,55 @@ httptools==0.6.1 \ --hash=sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81 \ --hash=sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185 \ --hash=sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3 - # via uvicorn + # via + # -c lock/requirements-dev.txt + # uvicorn httpx==0.27.0 \ --hash=sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5 \ --hash=sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5 - # via fastapi + # via + # -c lock/requirements-dev.txt + # wps (pyproject.toml) + # fastapi idna==3.7 \ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 # via + # -c lock/requirements-dev.txt # anyio # email-validator # httpx jinja2==3.1.4 \ --hash=sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369 \ --hash=sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi jsonschema==4.23.0 \ --hash=sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4 \ --hash=sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 # via + # -c lock/requirements-dev.txt # ghga-event-schemas # hexkit jsonschema-specifications==2023.12.1 \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c - # via jsonschema + # via + # -c lock/requirements-dev.txt + # jsonschema jwcrypto==1.5.6 \ --hash=sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789 \ --hash=sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039 - # via ghga-service-commons + # via + # -c lock/requirements-dev.txt + # ghga-service-commons markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb - # via rich + # via + # -c lock/requirements-dev.txt + # rich markupsafe==2.1.5 \ --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ @@ -364,15 +415,21 @@ markupsafe==2.1.5 \ --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 - # via jinja2 + # via + # -c lock/requirements-dev.txt + # jinja2 mdurl==0.1.2 \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba - # via markdown-it-py + # via + # -c lock/requirements-dev.txt + # markdown-it-py motor==3.5.0 \ --hash=sha256:2b38e405e5a0c52d499edb8d23fa029debdf0158da092c21b44d92cac7f59942 \ --hash=sha256:e8f1d7a3370e8dd30eb4c68aaaee46dc608fbac70a757e58f3e828124f5e7693 - # via hexkit + # via + # -c lock/requirements-dev.txt + # hexkit orjson==3.10.6 \ --hash=sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e \ --hash=sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0 \ @@ -425,19 +482,26 @@ orjson==3.10.6 \ --hash=sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2 \ --hash=sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7 \ --hash=sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi packaging==24.1 \ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 - # via aiokafka + # via + # -c lock/requirements-dev.txt + # aiokafka pycparser==2.22 \ --hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \ --hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc - # via cffi + # via + # -c lock/requirements-dev.txt + # cffi pydantic==2.8.2 \ --hash=sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a \ --hash=sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8 # via + # -c lock/requirements-dev.txt # fastapi # ghga-event-schemas # ghga-service-commons @@ -533,15 +597,21 @@ pydantic-core==2.20.1 \ --hash=sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f \ --hash=sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a \ --hash=sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27 - # via pydantic + # via + # -c lock/requirements-dev.txt + # pydantic pydantic-settings==2.3.4 \ --hash=sha256:11ad8bacb68a045f00e4f862c7a718c8a9ec766aa8fd4c32e39a0594b207b53a \ --hash=sha256:c5802e3d62b78e82522319bbc9b8f8ffb28ad1c988a99311d04f2a6051fca0a7 - # via hexkit + # via + # -c lock/requirements-dev.txt + # hexkit pygments==2.18.0 \ --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \ --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a - # via rich + # via + # -c lock/requirements-dev.txt + # rich pymongo==4.8.0 \ --hash=sha256:0fc18b3a093f3db008c5fea0e980dbd3b743449eee29b5718bc2dc15ab5088bb \ --hash=sha256:16e5019f75f6827bb5354b6fef8dfc9d6c7446894a27346e03134d290eb9e758 \ @@ -593,7 +663,9 @@ pymongo==4.8.0 \ --hash=sha256:f2fbdb87fe5075c8beb17a5c16348a1ea3c8b282a5cb72d173330be2fecf22f5 \ --hash=sha256:f5bf0eb8b6ef40fa22479f09375468c33bebb7fe49d14d9c96c8fd50355188b0 \ --hash=sha256:fdc20cd1e1141b04696ffcdb7c71e8a4a665db31fe72e51ec706b3bdd2d09f36 - # via motor + # via + # -c lock/requirements-dev.txt + # motor pynacl==1.5.0 \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -606,18 +678,22 @@ pynacl==1.5.0 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 # via + # -c lock/requirements-dev.txt # crypt4gh # ghga-service-commons python-dotenv==1.0.1 \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a # via + # -c lock/requirements-dev.txt # pydantic-settings # uvicorn python-multipart==0.0.9 \ --hash=sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 \ --hash=sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215 - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi pyyaml==6.0.1 \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -671,6 +747,7 @@ pyyaml==6.0.1 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f # via + # -c lock/requirements-dev.txt # crypt4gh # hexkit # uvicorn @@ -678,12 +755,15 @@ referencing==0.35.1 \ --hash=sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c \ --hash=sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de # via + # -c lock/requirements-dev.txt # jsonschema # jsonschema-specifications rich==13.7.1 \ --hash=sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222 \ --hash=sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432 - # via typer + # via + # -c lock/requirements-dev.txt + # typer rpds-py==0.19.0 \ --hash=sha256:0121803b0f424ee2109d6e1f27db45b166ebaa4b32ff47d6aa225642636cd834 \ --hash=sha256:06925c50f86da0596b9c3c64c3837b2481337b83ef3519e5db2701df695453a4 \ @@ -785,30 +865,40 @@ rpds-py==0.19.0 \ --hash=sha256:f757f359f30ec7dcebca662a6bd46d1098f8b9fb1fcd661a9e13f2e8ce343ba1 \ --hash=sha256:fb37bd599f031f1a6fb9e58ec62864ccf3ad549cf14bac527dbfa97123edcca4 # via + # -c lock/requirements-dev.txt # jsonschema # referencing shellingham==1.5.4 \ --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de - # via typer + # via + # -c lock/requirements-dev.txt + # typer sniffio==1.3.1 \ --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc # via + # -c lock/requirements-dev.txt # anyio # httpx starlette==0.37.2 \ --hash=sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee \ --hash=sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823 - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi typer==0.12.3 \ --hash=sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914 \ --hash=sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482 - # via fastapi-cli + # via + # -c lock/requirements-dev.txt + # wps (pyproject.toml) + # fastapi-cli typing-extensions==4.12.2 \ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 # via + # -c lock/requirements-dev.txt # aiokafka # fastapi # jwcrypto @@ -894,11 +984,14 @@ ujson==5.10.0 \ --hash=sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9 \ --hash=sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1 \ --hash=sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746 - # via fastapi + # via + # -c lock/requirements-dev.txt + # fastapi uvicorn==0.29.0 \ --hash=sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de \ --hash=sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0 # via + # -c lock/requirements-dev.txt # fastapi # ghga-service-commons uvloop==0.19.0 \ @@ -933,7 +1026,9 @@ uvloop==0.19.0 \ --hash=sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e \ --hash=sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7 \ --hash=sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256 - # via uvicorn + # via + # -c lock/requirements-dev.txt + # uvicorn watchfiles==0.22.0 \ --hash=sha256:00095dd368f73f8f1c3a7982a9801190cc88a2f3582dd395b289294f8975172b \ --hash=sha256:00ad0bcd399503a84cc688590cdffbe7a991691314dde5b57b3ed50a41319a31 \ @@ -1010,7 +1105,9 @@ watchfiles==0.22.0 \ --hash=sha256:e0f0a874231e2839abbf473256efffe577d6ee2e3bfa5b540479e892e47c172d \ --hash=sha256:f7e1f9c5d1160d03b93fc4b68a0aeb82fe25563e12fbcdc8507f8434ab6f823c \ --hash=sha256:fe82d13461418ca5e5a808a9e40f79c1879351fcaeddbede094028e74d836e86 - # via uvicorn + # via + # -c lock/requirements-dev.txt + # uvicorn websockets==12.0 \ --hash=sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b \ --hash=sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6 \ @@ -1084,4 +1181,6 @@ websockets==12.0 \ --hash=sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5 \ --hash=sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8 \ --hash=sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7 - # via uvicorn + # via + # -c lock/requirements-dev.txt + # uvicorn diff --git a/pyproject.toml b/pyproject.toml index 89f7a40..b9c8f93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,13 +9,11 @@ readme = "README.md" authors = [ { name = "German Human Genome Phenome Archive (GHGA)", email = "contact@ghga.de" }, ] -requires-python = ">=3.9" +requires-python = ">=3.12" classifiers = [ "Development Status :: 1 - Planning", "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "License :: OSI Approved :: Apache Software License", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", @@ -62,7 +60,7 @@ src = [ "examples", "scripts", ] -target-version = "py39" +target-version = "py312" [tool.ruff.lint] fixable = [ @@ -87,6 +85,7 @@ ignore = [ "D107", "D206", "D300", + "UP040", ] select = [ "C90", diff --git a/scripts/script_utils/deps.py b/scripts/script_utils/deps.py index 28acd5e..4e2f8e7 100644 --- a/scripts/script_utils/deps.py +++ b/scripts/script_utils/deps.py @@ -15,12 +15,12 @@ # """Contains utils for working with dependencies, lock files, etc.""" +import tomllib from copy import deepcopy from pathlib import Path from typing import Any import stringcase -import tomllib def exclude_from_dependency_list(*, package_name: str, dependencies: list) -> list: diff --git a/scripts/update_pyproject.py b/scripts/update_pyproject.py index fd5f06b..a09c6f0 100755 --- a/scripts/update_pyproject.py +++ b/scripts/update_pyproject.py @@ -19,10 +19,10 @@ """A script to update the pyproject.toml.""" import sys +import tomllib from pathlib import Path import tomli_w -import tomllib from script_utils import cli diff --git a/scripts/update_readme.py b/scripts/update_readme.py index 0064b82..41052d2 100755 --- a/scripts/update_readme.py +++ b/scripts/update_readme.py @@ -20,11 +20,11 @@ import json import subprocess # nosec import sys +import tomllib from pathlib import Path from string import Template import jsonschema2md -import tomllib from pydantic import BaseModel, Field from stringcase import spinalcase, titlecase diff --git a/src/wps/core/models.py b/src/wps/core/models.py index a6db8e4..27104b3 100644 --- a/src/wps/core/models.py +++ b/src/wps/core/models.py @@ -18,7 +18,6 @@ """ from enum import Enum -from typing import Optional from ghga_service_commons.utils.utc_dates import UTCDatetime from pydantic import BaseModel, ConfigDict, EmailStr, Field, field_validator @@ -61,9 +60,7 @@ class Dataset(BaseDto): id: str = Field(default=..., description="ID of the dataset") stage: WorkType = Field(default=..., description="Current stage of this dataset.") title: str = Field(default=..., description="The title of the dataset.") - description: Optional[str] = Field( - ..., description="The description of the dataset." - ) + description: str | None = Field(..., description="The description of the dataset.") files: list[DatasetFile] = Field(..., description="Files contained in the dataset.") @@ -83,7 +80,7 @@ class WorkPackageCreationData(BaseDto): dataset_id: str type: WorkType - file_ids: Optional[list[str]] = Field( + file_ids: list[str] | None = Field( default=None, description="IDs of all included files." " If None, all files of the dataset are assumed as target.", diff --git a/src/wps/core/repository.py b/src/wps/core/repository.py index 5640ef4..7ec5dfd 100644 --- a/src/wps/core/repository.py +++ b/src/wps/core/repository.py @@ -18,7 +18,6 @@ import logging from datetime import timedelta -from typing import Optional from ghga_service_commons.auth.ghga import AuthContext from ghga_service_commons.utils.crypt import encrypt @@ -192,7 +191,7 @@ async def get( work_package_id: str, *, check_valid: bool = True, - work_package_access_token: Optional[str] = None, + work_package_access_token: str | None = None, ) -> WorkPackage: """Get a work package with the given ID from the repository. @@ -248,7 +247,7 @@ async def work_order_token( work_package_id: str, file_id: str, check_valid: bool = True, - work_package_access_token: Optional[str] = None, + work_package_access_token: str | None = None, ) -> str: """Create a work order token for a given work package and file. @@ -319,7 +318,7 @@ async def get_dataset(self, dataset_id: str) -> Dataset: raise dataset_not_found_error from error async def get_datasets( - self, *, auth_context: AuthContext, work_type: Optional[WorkType] = None + self, *, auth_context: AuthContext, work_type: WorkType | None = None ) -> list[Dataset]: """Get the list of all datasets accessible to the authenticated user. diff --git a/src/wps/inject.py b/src/wps/inject.py index 1a5bff2..a6098cb 100644 --- a/src/wps/inject.py +++ b/src/wps/inject.py @@ -17,7 +17,7 @@ from collections.abc import AsyncGenerator from contextlib import AbstractAsyncContextManager, asynccontextmanager -from typing import NamedTuple, Optional +from typing import NamedTuple from fastapi import FastAPI from ghga_service_commons.auth.ghga import AuthContext, GHGAAuthContextProvider @@ -64,7 +64,7 @@ async def prepare_core( def _prepare_core_with_override( *, config: Config, - work_package_repo_override: Optional[WorkPackageRepositoryPort] = None, + work_package_repo_override: WorkPackageRepositoryPort | None = None, ) -> AbstractAsyncContextManager[WorkPackageRepositoryPort]: """Get context manager for preparing the core components or provide override.""" return ( @@ -78,7 +78,7 @@ def _prepare_core_with_override( async def prepare_rest_app( *, config: Config, - work_package_repo_override: Optional[WorkPackageRepositoryPort] = None, + work_package_repo_override: WorkPackageRepositoryPort | None = None, ) -> AsyncGenerator[FastAPI, None]: """Construct and initialize an REST API app along with all its dependencies. @@ -113,7 +113,7 @@ class Consumer(NamedTuple): async def prepare_consumer( *, config: Config, - work_package_repo_override: Optional[WorkPackageRepositoryPort] = None, + work_package_repo_override: WorkPackageRepositoryPort | None = None, ) -> AsyncGenerator[Consumer, None]: """Construct and initialize an event subscriber with all its dependencies. diff --git a/src/wps/ports/inbound/repository.py b/src/wps/ports/inbound/repository.py index c32ead7..06fc8d0 100644 --- a/src/wps/ports/inbound/repository.py +++ b/src/wps/ports/inbound/repository.py @@ -17,7 +17,6 @@ """Interface for the work package repository.""" from abc import ABC, abstractmethod -from typing import Optional from ghga_service_commons.auth.ghga import AuthContext @@ -51,7 +50,7 @@ async def get( work_package_id: str, *, check_valid: bool = True, - work_package_access_token: Optional[str] = None, + work_package_access_token: str | None = None, ) -> WorkPackage: """Get a work package with the given ID from the repository. @@ -69,7 +68,7 @@ async def work_order_token( work_package_id: str, file_id: str, check_valid: bool = True, - work_package_access_token: Optional[str] = None, + work_package_access_token: str | None = None, ) -> str: """Create a work order token for a given work package and file. @@ -98,7 +97,7 @@ async def get_dataset(self, dataset_id: str) -> Dataset: @abstractmethod async def get_datasets( - self, *, auth_context: AuthContext, work_type: Optional[WorkType] = None + self, *, auth_context: AuthContext, work_type: WorkType | None = None ) -> list[Dataset]: """Get the list of all datasets accessible to the authenticated user. diff --git a/tests/test_models.py b/tests/test_models.py index 3d30249..e957701 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -16,7 +16,7 @@ """Test the creation of dataclasses and DTOs""" -from datetime import datetime, timezone +from datetime import UTC, datetime import pytest from pydantic import ValidationError @@ -118,8 +118,8 @@ def test_work_package(): full_user_name="Dr. John Doe", email="john@home.org", token_hash="308eda9daf26b7446b284449a5895ab9a04ff30c129d4454e471cfb81bf5557d", - created=datetime(2022, 2, 2, 2, tzinfo=timezone.utc), # pyright: ignore - expires=datetime(2022, 2, 2, 3, tzinfo=timezone.utc), # pyright: ignore + created=datetime(2022, 2, 2, 2, tzinfo=UTC), # pyright: ignore + expires=datetime(2022, 2, 2, 3, tzinfo=UTC), # pyright: ignore ) assert package.id == "some-work-package-id" assert package.full_user_name == "Dr. John Doe"