diff --git a/CHANGELOG.rst b/CHANGELOG.rst index b567bc5..32641ac 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,12 +2,13 @@ Change log ########## -0.4.1 (unreleased) +0.4.1 (2022-06-01) ================== - Stop masking pixels outside the cutout stencil. The current performance of masking is unreasonably slow for ``CIRCLE`` cutouts, and masking isn't required by the SODA standard. We may revisit this later with a faster algorithm. +- Update dependencies. 0.4.0 (2022-05-31) ================== diff --git a/requirements/dev.txt b/requirements/dev.txt index 5663375..9435ee8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -91,9 +91,9 @@ distlib==0.3.4 \ --hash=sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b \ --hash=sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579 # via virtualenv -filelock==3.7.0 \ - --hash=sha256:b795f1b42a61bbf8ec7113c341dad679d772567b936fbd1bf43c9a238e673e20 \ - --hash=sha256:c7b5fdb219b398a5b28c8e4c1893ef5f98ece6a38c6ab2c22e26ec161556fed6 +filelock==3.7.1 \ + --hash=sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404 \ + --hash=sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04 # via virtualenv greenlet==1.1.2 \ --hash=sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3 \ @@ -375,43 +375,42 @@ sniffio==1.2.0 \ # asgi-lifespan # httpcore # httpx -sqlalchemy[asyncio,mypy]==1.4.36 \ - --hash=sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96 \ - --hash=sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44 \ - --hash=sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e \ - --hash=sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e \ - --hash=sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1 \ - --hash=sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028 \ - --hash=sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea \ - --hash=sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b \ - --hash=sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc \ - --hash=sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3 \ - --hash=sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72 \ - --hash=sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc \ - --hash=sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243 \ - --hash=sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5 \ - --hash=sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26 \ - --hash=sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18 \ - --hash=sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58 \ - --hash=sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e \ - --hash=sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c \ - --hash=sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9 \ - --hash=sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f \ - --hash=sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7 \ - --hash=sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32 \ - --hash=sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3 \ - --hash=sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35 \ - --hash=sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da \ - --hash=sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691 \ - --hash=sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3 \ - --hash=sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31 \ - --hash=sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920 \ - --hash=sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3 \ - --hash=sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5 \ - --hash=sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8 \ - --hash=sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e \ - --hash=sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43 \ - --hash=sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15 +sqlalchemy[asyncio,mypy]==1.4.37 \ + --hash=sha256:06ec11a5e6a4b6428167d3ce33b5bd455c020c867dabe3e6951fa98836e0741d \ + --hash=sha256:0e7fd52e48e933771f177c2a1a484b06ea03774fc7741651ebdf19985a34037c \ + --hash=sha256:139c50b9384e6d32a74fc4dcd0e9717f343ed38f95dbacf832c782c68e3862f3 \ + --hash=sha256:17417327b87a0f703c9a20180f75e953315207d048159aff51822052f3e33e69 \ + --hash=sha256:29a742c29fea12259f1d2a9ee2eb7fe4694a85d904a4ac66d15e01177b17ad7f \ + --hash=sha256:2aac2a685feb9882d09f457f4e5586c885d578af4e97a2b759e91e8c457cbce5 \ + --hash=sha256:3197441772dc3b1c6419f13304402f2418a18d7fe78000aa5a026e7100836739 \ + --hash=sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea \ + --hash=sha256:3862a069a24f354145e01a76c7c720c263d62405fe5bed038c46a7ce900f5dd6 \ + --hash=sha256:4c1d9fb3931e27d59166bb5c4dcc911400fee51082cfba66ceb19ac954ade068 \ + --hash=sha256:4e8706919829d455a9fa687c6bbd1b048e36fec3919a59f2d366247c2bfdbd9c \ + --hash=sha256:50c8eaf44c3fed5ba6758d375de25f163e46137c39fda3a72b9ee1d1bb327dfc \ + --hash=sha256:5e4e517ce72fad35cce364a01aff165f524449e9c959f1837dc71088afa2824c \ + --hash=sha256:6629c79967a6c92e33fad811599adf9bc5cee6e504a1027bbf9cc1b6fb2d276d \ + --hash=sha256:78363f400fbda80f866e8e91d37d36fe6313ff847ded08674e272873c1377ea5 \ + --hash=sha256:7a44683cf97744a405103ef8fdd31199e9d7fc41b4a67e9044523b29541662b0 \ + --hash=sha256:7e579d6e281cc937bdb59917017ab98e618502067e04efb1d24ac168925e1d2a \ + --hash=sha256:7ee34c85cbda7779d66abac392c306ec78c13f5c73a1f01b8b767916d4895d23 \ + --hash=sha256:8b38e088659b30c2ca0af63e5d139fad1779a7925d75075a08717a21c406c0f6 \ + --hash=sha256:9785d6f962d2c925aeb06a7539ac9d16608877da6aeaaf341984b3693ae80a02 \ + --hash=sha256:a91d0668cada27352432f15b92ac3d43e34d8f30973fa8b86f5e9fddee928f3b \ + --hash=sha256:a940c551cfbd2e1e646ceea2777944425f5c3edff914bc808fe734d9e66f8d71 \ + --hash=sha256:aaa0e90e527066409c2ea5676282cf4afb4a40bb9dce0f56c8ec2768bff22a6e \ + --hash=sha256:b4c92823889cf9846b972ee6db30c0e3a92c0ddfc76c6060a6cda467aa5fb694 \ + --hash=sha256:b55932fd0e81b43f4aff397c8ad0b3c038f540af37930423ab8f47a20b117e4c \ + --hash=sha256:c37885f83b59e248bebe2b35beabfbea398cb40960cdc6d3a76eac863d4e1938 \ + --hash=sha256:caca6acf3f90893d7712ae2c6616ecfeac3581b4cc677c928a330ce6fbad4319 \ + --hash=sha256:cffc67cdd07f0e109a1fc83e333972ae423ea5ad414585b63275b66b870ea62b \ + --hash=sha256:d4c3b009c9220ae6e33f17b45f43fb46b9a1d281d76118405af13e26376f2e11 \ + --hash=sha256:d58f2d9d1a4b1459e8956a0153a4119da80f54ee5a9ea623cd568e99459a3ef1 \ + --hash=sha256:d6927c9e3965b194acf75c8e0fb270b4d54512db171f65faae15ef418721996e \ + --hash=sha256:d9050b0c4a7f5538650c74aaba5c80cd64450e41c206f43ea6d194ae6d060ff9 \ + --hash=sha256:eec39a17bab3f69c44c9df4e0ed87c7306f2d2bf1eca3070af644927ec4199fa \ + --hash=sha256:f9940528bf9c4df9e3c3872d23078b6b2da6431c19565637c09f1b88a427a684 \ + --hash=sha256:ffe487570f47536b96eff5ef2b84034a8ba4e19aab5ab7647e677d94a119ea55 # via # -c requirements/main.txt # -r requirements/dev.in diff --git a/requirements/main.txt b/requirements/main.txt index c7a8df1..4ca7775 100644 --- a/requirements/main.txt +++ b/requirements/main.txt @@ -545,9 +545,9 @@ pyyaml==6.0 \ # via # astropy # uvicorn -redis==4.3.1 \ - --hash=sha256:84316970995a7adb907a56754d2b92d88fc2d252963dc5ac34c88f0f1a22c25d \ - --hash=sha256:94b617b4cd296e94991146f66fc5559756fbefe9493604f0312e4d3298ac63e9 +redis==4.3.2 \ + --hash=sha256:b30a2dc3f27cab69284829d6d423643beee88f279967c42e9014a2ffb7c2a84c \ + --hash=sha256:b989406ea786a9d151066a683b32a437a48f043c3ffd3795ec5ad9d344ee9e8c # via dramatiq requests==2.27.1 \ --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ @@ -563,9 +563,9 @@ rsa==4.8 \ --hash=sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17 \ --hash=sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb # via google-auth -safir[db]==3.0.3 \ - --hash=sha256:2bf4c069b3bb3fa819e69ba2d7bf2e4a406db7341bfa31f3d9057da10b2f6518 \ - --hash=sha256:2de146ff512b3e74e353d8dc44a497d48bc7336dd712a06a07b718f22e26329c +safir[db]==3.1.0 \ + --hash=sha256:d32eafce4180fc245bd6e804b3e537159521dfe6d319994143012c2214a5ab10 \ + --hash=sha256:e46e49f54360763379897b889940e734545e601657cdec9a3a4c005d3dc9587b # via -r requirements/main.in six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ @@ -580,43 +580,42 @@ sniffio==1.2.0 \ # anyio # httpcore # httpx -sqlalchemy[asyncio]==1.4.36 \ - --hash=sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96 \ - --hash=sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44 \ - --hash=sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e \ - --hash=sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e \ - --hash=sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1 \ - --hash=sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028 \ - --hash=sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea \ - --hash=sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b \ - --hash=sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc \ - --hash=sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3 \ - --hash=sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72 \ - --hash=sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc \ - --hash=sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243 \ - --hash=sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5 \ - --hash=sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26 \ - --hash=sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18 \ - --hash=sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58 \ - --hash=sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e \ - --hash=sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c \ - --hash=sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9 \ - --hash=sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f \ - --hash=sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7 \ - --hash=sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32 \ - --hash=sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3 \ - --hash=sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35 \ - --hash=sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da \ - --hash=sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691 \ - --hash=sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3 \ - --hash=sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31 \ - --hash=sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920 \ - --hash=sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3 \ - --hash=sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5 \ - --hash=sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8 \ - --hash=sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e \ - --hash=sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43 \ - --hash=sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15 +sqlalchemy[asyncio]==1.4.37 \ + --hash=sha256:06ec11a5e6a4b6428167d3ce33b5bd455c020c867dabe3e6951fa98836e0741d \ + --hash=sha256:0e7fd52e48e933771f177c2a1a484b06ea03774fc7741651ebdf19985a34037c \ + --hash=sha256:139c50b9384e6d32a74fc4dcd0e9717f343ed38f95dbacf832c782c68e3862f3 \ + --hash=sha256:17417327b87a0f703c9a20180f75e953315207d048159aff51822052f3e33e69 \ + --hash=sha256:29a742c29fea12259f1d2a9ee2eb7fe4694a85d904a4ac66d15e01177b17ad7f \ + --hash=sha256:2aac2a685feb9882d09f457f4e5586c885d578af4e97a2b759e91e8c457cbce5 \ + --hash=sha256:3197441772dc3b1c6419f13304402f2418a18d7fe78000aa5a026e7100836739 \ + --hash=sha256:3688f92c62db6c5df268e2264891078f17ecb91e3141b400f2e28d0f75796dea \ + --hash=sha256:3862a069a24f354145e01a76c7c720c263d62405fe5bed038c46a7ce900f5dd6 \ + --hash=sha256:4c1d9fb3931e27d59166bb5c4dcc911400fee51082cfba66ceb19ac954ade068 \ + --hash=sha256:4e8706919829d455a9fa687c6bbd1b048e36fec3919a59f2d366247c2bfdbd9c \ + --hash=sha256:50c8eaf44c3fed5ba6758d375de25f163e46137c39fda3a72b9ee1d1bb327dfc \ + --hash=sha256:5e4e517ce72fad35cce364a01aff165f524449e9c959f1837dc71088afa2824c \ + --hash=sha256:6629c79967a6c92e33fad811599adf9bc5cee6e504a1027bbf9cc1b6fb2d276d \ + --hash=sha256:78363f400fbda80f866e8e91d37d36fe6313ff847ded08674e272873c1377ea5 \ + --hash=sha256:7a44683cf97744a405103ef8fdd31199e9d7fc41b4a67e9044523b29541662b0 \ + --hash=sha256:7e579d6e281cc937bdb59917017ab98e618502067e04efb1d24ac168925e1d2a \ + --hash=sha256:7ee34c85cbda7779d66abac392c306ec78c13f5c73a1f01b8b767916d4895d23 \ + --hash=sha256:8b38e088659b30c2ca0af63e5d139fad1779a7925d75075a08717a21c406c0f6 \ + --hash=sha256:9785d6f962d2c925aeb06a7539ac9d16608877da6aeaaf341984b3693ae80a02 \ + --hash=sha256:a91d0668cada27352432f15b92ac3d43e34d8f30973fa8b86f5e9fddee928f3b \ + --hash=sha256:a940c551cfbd2e1e646ceea2777944425f5c3edff914bc808fe734d9e66f8d71 \ + --hash=sha256:aaa0e90e527066409c2ea5676282cf4afb4a40bb9dce0f56c8ec2768bff22a6e \ + --hash=sha256:b4c92823889cf9846b972ee6db30c0e3a92c0ddfc76c6060a6cda467aa5fb694 \ + --hash=sha256:b55932fd0e81b43f4aff397c8ad0b3c038f540af37930423ab8f47a20b117e4c \ + --hash=sha256:c37885f83b59e248bebe2b35beabfbea398cb40960cdc6d3a76eac863d4e1938 \ + --hash=sha256:caca6acf3f90893d7712ae2c6616ecfeac3581b4cc677c928a330ce6fbad4319 \ + --hash=sha256:cffc67cdd07f0e109a1fc83e333972ae423ea5ad414585b63275b66b870ea62b \ + --hash=sha256:d4c3b009c9220ae6e33f17b45f43fb46b9a1d281d76118405af13e26376f2e11 \ + --hash=sha256:d58f2d9d1a4b1459e8956a0153a4119da80f54ee5a9ea623cd568e99459a3ef1 \ + --hash=sha256:d6927c9e3965b194acf75c8e0fb270b4d54512db171f65faae15ef418721996e \ + --hash=sha256:d9050b0c4a7f5538650c74aaba5c80cd64450e41c206f43ea6d194ae6d060ff9 \ + --hash=sha256:eec39a17bab3f69c44c9df4e0ed87c7306f2d2bf1eca3070af644927ec4199fa \ + --hash=sha256:f9940528bf9c4df9e3c3872d23078b6b2da6431c19565637c09f1b88a427a684 \ + --hash=sha256:ffe487570f47536b96eff5ef2b84034a8ba4e19aab5ab7647e677d94a119ea55 # via # -r requirements/main.in # safir diff --git a/src/vocutouts/main.py b/src/vocutouts/main.py index 9fd6c22..10e040e 100644 --- a/src/vocutouts/main.py +++ b/src/vocutouts/main.py @@ -13,6 +13,7 @@ from fastapi import FastAPI from safir.dependencies.http_client import http_client_dependency from safir.logging import configure_logging +from safir.middleware.ivoa import CaseInsensitiveQueryMiddleware from safir.middleware.x_forwarded import XForwardedMiddleware from .actors import cutout @@ -22,7 +23,6 @@ from .policy import ImageCutoutPolicy from .uws.dependencies import uws_dependency from .uws.errors import install_error_handlers -from .uws.middleware import CaseInsensitiveQueryMiddleware __all__ = ["app", "config"] diff --git a/src/vocutouts/uws/middleware.py b/src/vocutouts/uws/middleware.py deleted file mode 100644 index 2896429..0000000 --- a/src/vocutouts/uws/middleware.py +++ /dev/null @@ -1,36 +0,0 @@ -"""Middleware for UWS services.""" - -from typing import Awaitable, Callable -from urllib.parse import urlencode - -from fastapi import Request, Response -from starlette.middleware.base import BaseHTTPMiddleware - - -class CaseInsensitiveQueryMiddleware(BaseHTTPMiddleware): - """Make query parameter keys all lowercase. - - Unfortunately, UWS requires that query parameters be case-insensitive, - which is not supported by modern HTTP web frameworks. This middleware - attempts to work around this by lowercasing the query parameter keys - before the request is processed, allowing normal FastAPI query parsing to - then work without regard for case. This, in turn, permits FastAPI to - perform input validation on GET parameters, which would otherwise only - happen if the case used in the request happened to match the case used in - the function signature. - - This unfortunately doesn't handle POST, so routes that accept POST require - a much more tedious workaround (see - `~vocutouts.uws.dependencies.uws_params_dependency`). - - Based on `fastapi#826 `__. - """ - - async def dispatch( - self, - request: Request, - call_next: Callable[[Request], Awaitable[Response]], - ) -> Response: - params = [(k.lower(), v) for k, v in request.query_params.items()] - request.scope["query_string"] = urlencode(params).encode() - return await call_next(request) diff --git a/tests/uws/conftest.py b/tests/uws/conftest.py index 9ad0e07..e94a0f0 100644 --- a/tests/uws/conftest.py +++ b/tests/uws/conftest.py @@ -23,6 +23,7 @@ from safir.database import create_database_engine, initialize_database from safir.dependencies.db_session import db_session_dependency from safir.dependencies.http_client import http_client_dependency +from safir.middleware.ivoa import CaseInsensitiveQueryMiddleware from safir.middleware.x_forwarded import XForwardedMiddleware from sqlalchemy.ext.asyncio import async_scoped_session from structlog.stdlib import BoundLogger @@ -31,7 +32,6 @@ from vocutouts.uws.dependencies import UWSFactory, uws_dependency from vocutouts.uws.errors import install_error_handlers from vocutouts.uws.handlers import uws_router -from vocutouts.uws.middleware import CaseInsensitiveQueryMiddleware from vocutouts.uws.schema import Base from ..support.uws import (