From aea61c8572004ad12a40d665fb40d6341bfca72b Mon Sep 17 00:00:00 2001 From: Stelios Voutsinas Date: Fri, 18 Oct 2024 11:29:45 -0700 Subject: [PATCH 1/2] Add self-description functionality and setup obscore config loading as a singleton --- ...241018_183148_steliosvoutsinas_DM_46975.md | 9 + src/sia/constants.py | 3 + src/sia/dependencies/context.py | 2 + src/sia/dependencies/obscore_configs.py | 36 ++++ src/sia/factory.py | 20 ++ src/sia/main.py | 5 +- src/sia/services/response_handler.py | 71 ++++++- src/sia/templates/self_description.xml | 201 ++++++++++++++++++ tests/handlers/external/external_test.py | 31 +++ tests/templates/self_description.xml | 201 ++++++++++++++++++ 10 files changed, 577 insertions(+), 2 deletions(-) create mode 100644 changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md create mode 100644 src/sia/dependencies/obscore_configs.py create mode 100644 src/sia/templates/self_description.xml create mode 100644 tests/templates/self_description.xml diff --git a/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md b/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md new file mode 100644 index 0000000..6361511 --- /dev/null +++ b/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md @@ -0,0 +1,9 @@ + + +### New features + +- Setup self-description when maxrec is set to 0 + +### Other changes + +- Move obscore config loading to a dependency run at startime diff --git a/src/sia/constants.py b/src/sia/constants.py index b211204..8cc18a6 100644 --- a/src/sia/constants.py +++ b/src/sia/constants.py @@ -13,3 +13,6 @@ "responseformat", } """Parameters that should be treated as single values.""" + +BASE_RESOURCE_IDENTIFIER = "ivo://rubin/" +"""The base resource identifier for any rubin SIA service.""" diff --git a/src/sia/dependencies/context.py b/src/sia/dependencies/context.py index c10ca42..ce45697 100644 --- a/src/sia/dependencies/context.py +++ b/src/sia/dependencies/context.py @@ -16,6 +16,7 @@ from ..config import Config from ..factory import Factory from .labeled_butler_factory import labeled_butler_factory_dependency +from .obscore_configs import obscore_config_dependency __all__ = [ "ContextDependency", @@ -96,6 +97,7 @@ async def create_factory(self, logger: BoundLogger) -> Factory: logger=logger, config=self._config, labeled_butler_factory=await labeled_butler_factory_dependency(), + obscore_configs=await obscore_config_dependency(), ) async def aclose(self) -> None: diff --git a/src/sia/dependencies/obscore_configs.py b/src/sia/dependencies/obscore_configs.py new file mode 100644 index 0000000..089de13 --- /dev/null +++ b/src/sia/dependencies/obscore_configs.py @@ -0,0 +1,36 @@ +"""Dependency class for loading the Obscore configs.""" + +from lsst.dax.obscore import ExporterConfig + +from ..config import Config + + +class ObscoreConfigDependency: + """Provides a mapping of label names to Obscore (Exporter) Configs as a + dependency. + """ + + def __init__(self) -> None: + self._config_mapping: dict[str, ExporterConfig] | None = None + + async def initialize(self, config: Config) -> None: + """Initialize the dependency by processing the Butler Collections.""" + self._config_mapping = {} + for collection in config.butler_data_collections: + exporter_config = collection.get_exporter_config() + self._config_mapping[collection.label] = exporter_config + + async def __call__(self) -> dict[str, ExporterConfig]: + """Return the mapping of label names to ExporterConfigs.""" + if self._config_mapping is None: + raise RuntimeError("ExporterConfigDependency is not initialized") + return self._config_mapping + + async def aclose(self) -> None: + """Clear the config mapping.""" + self._config_mapping = None + + +obscore_config_dependency = ObscoreConfigDependency() +"""The dependency that will return the mapping of label names to +Obscore Configs.""" diff --git a/src/sia/factory.py b/src/sia/factory.py index 8806100..39051d7 100644 --- a/src/sia/factory.py +++ b/src/sia/factory.py @@ -5,6 +5,7 @@ import structlog from lsst.daf.butler import Butler, LabeledButlerFactory from lsst.daf.butler.registry import RegistryDefaults +from lsst.dax.obscore import ExporterConfig from structlog.stdlib import BoundLogger from .config import Config @@ -26,6 +27,8 @@ class Factory: The configuration instance labeled_butler_factory The LabeledButlerFactory singleton + obscore_configs + The Obscore configurations logger The logger instance """ @@ -34,10 +37,12 @@ def __init__( self, config: Config, labeled_butler_factory: LabeledButlerFactory, + obscore_configs: dict[str, ExporterConfig], logger: BoundLogger | None = None, ) -> None: self._config = config self._labeled_butler_factory = labeled_butler_factory + self._obscore_configs = obscore_configs self._logger = ( logger if logger else structlog.get_logger(self._config.name) ) @@ -71,6 +76,21 @@ def create_butler( ) return butler + def create_obscore_config(self, label: str) -> ExporterConfig: + """Create an Obscore config object for a given label. + + Parameters + ---------- + label + The label for the Obscore config. + + Returns + ------- + ExporterConfig + The Obscore config. + """ + return self._obscore_configs[label] + def create_data_collection_service(self) -> DataCollectionService: """Create a data collection service. diff --git a/src/sia/main.py b/src/sia/main.py index e67ce3c..11edcdc 100644 --- a/src/sia/main.py +++ b/src/sia/main.py @@ -27,6 +27,7 @@ from .dependencies.labeled_butler_factory import ( labeled_butler_factory_dependency, ) +from .dependencies.obscore_configs import obscore_config_dependency from .errors import votable_exception_handler from .exceptions import VOTableError from .handlers.external import external_router @@ -44,14 +45,16 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: """Set up and tear down the application.""" logger.debug("SIA has started up.") await labeled_butler_factory_dependency.initialize(config=config) + await obscore_config_dependency.initialize(config=config) await context_dependency.initialize(config=config) yield await labeled_butler_factory_dependency.aclose() + await obscore_config_dependency.aclose() await context_dependency.aclose() - logger.debug("SIA shut down complete.") await http_client_dependency.aclose() + logger.debug("SIA shut down complete.") configure_logging( diff --git a/src/sia/services/response_handler.py b/src/sia/services/response_handler.py index 3f5bd3f..6d4489b 100644 --- a/src/sia/services/response_handler.py +++ b/src/sia/services/response_handler.py @@ -1,15 +1,18 @@ """Module for the Query Processor service.""" from collections.abc import Callable +from pathlib import Path import astropy import structlog from fastapi import Request +from fastapi.templating import Jinja2Templates from lsst.daf.butler import Butler from lsst.dax.obscore import ExporterConfig from lsst.dax.obscore.siav2 import SIAv2Parameters from starlette.responses import Response +from ..constants import BASE_RESOURCE_IDENTIFIER from ..constants import RESULT_NAME as RESULT from ..factory import Factory from ..models.data_collections import ButlerDataCollection @@ -22,10 +25,67 @@ astropy.io.votable.tree.VOTableFile, ] +BASE_DIR = Path(__file__).resolve().parent.parent +_TEMPLATES = Jinja2Templates(directory=str(Path(BASE_DIR, "templates"))) + class ResponseHandlerService: """Service for handling the SIAv2 query response.""" + @staticmethod + def self_description_response( + request: Request, + butler: Butler, + obscore_config: ExporterConfig, + butler_collection: ButlerDataCollection, + ) -> Response: + """Return a self-description response for the SIAv2 service. + This should provide metadata about the expected parameters and return + values for the service. + + Parameters + ---------- + request + The request object. + butler + The Butler instance. + obscore_config + The ObsCore configuration. + butler_collection + The Butler data collection. + + Returns + ------- + Response + The response containing the self-description. + """ + return _TEMPLATES.TemplateResponse( + request, + "self_description.xml", + { + "request": request, + "instruments": [ + rec.name + for rec in butler.query_dimension_records("instrument") + ], + "collections": [obscore_config.obs_collection], + # This may need to be updated if we decide to change the + # dax_obscore config to hold multiple collections + "resource_identifier": f"{BASE_RESOURCE_IDENTIFIER}/" + f"{butler_collection.label}" + f"{butler_collection.name}", + "access_url": request.url_for( + "query", collection_name=butler_collection.name + ), + "facility_name": obscore_config.facility_name.strip(), + }, + headers={ + "content-disposition": f"attachment; filename={RESULT}.xml", + "Content-Type": "application/x-votable+xml", + }, + media_type="application/x-votable+xml", + ) + @staticmethod def process_query( *, @@ -68,11 +128,20 @@ def process_query( butler_collection=collection, token=token, ) + obscore_config = factory.create_obscore_config(collection.label) + + if params.maxrec == 0: + return ResponseHandlerService.self_description_response( + request=request, + butler=butler, + obscore_config=obscore_config, + butler_collection=collection, + ) # Execute the query table_as_votable = sia_query( butler, - collection.get_exporter_config(), + obscore_config, params, ) diff --git a/src/sia/templates/self_description.xml b/src/sia/templates/self_description.xml new file mode 100644 index 0000000..99702ac --- /dev/null +++ b/src/sia/templates/self_description.xml @@ -0,0 +1,201 @@ + + + + Self description and list of supported parameters + + + Energy bounds + + + Calibration level + + + + + Collection name + + {%- for collection in collections %} + + + + Value of dataproduct type + + + + + Range of exposure times + + + Facility (telescope) name + + + + + Format content type for image file + + + + + Field of view + + + Observation ID + + + Instrument name + + {%- for instrument in instruments %} + + + + Polarization states + + + Circle region to be searched + + + Range region to be searched + + + Polygon region to be searched + + + Format of response + + + + + Specify position resolution + + + Specify energy resolving power + + + Target name + + + Time intervals + + + Time resolution + + + + + + + + + + + Central Spatial Position in ICRS Right ascension + + + Central Spatial Position in ICRS Declination + + + Name of telescope used to acquire observation + + + Name of instrument used to acquire observation + + + Product type (e.g. science, calibration, auxiliary, preview, info) + + + Calibration level of the observation: in {0, 1, 2, 3, 4} + + + Data product (file content) primary type + + + Internal ID given by the ObsTAP service + + + Spatial resolution (FWHM) + + + Lower bound on energy axis (barycentric wavelength) + + + Upper bound on energy axis (barycentric wavelength) + + + Spectral resolving power (R) + + + URI for the physical artifact + + + Content-Type of the representation at uri + + + Exposure time per pixel + + + AstroCoordArea Region covered in STC + + + Data collection this observation belongs to + + + Name of intended target + + + Dimensions (number of pixels) along first spatial axis + + + Dimensions (number of pixels) along second spatial axis + + + Lower bound on time axis (Modified Julian Day) + + + Upper bound on time axis (Modified Julian Day) + + + Resolution on the time axis + + + Dimensions (number of pixels) along the time axis + + + IVOA Dataset ID given by the publisher + + + Estimated size of the covered region as the diameter of a containing circle + + + Dimensions (number of pixels) along the energy axis + + + Dimensions (number of pixels) along the polarization axis + + + UCD describing the observable axis (pixel values) + + + + + +
+
+
\ No newline at end of file diff --git a/tests/handlers/external/external_test.py b/tests/handlers/external/external_test.py index 424602c..24d49fe 100644 --- a/tests/handlers/external/external_test.py +++ b/tests/handlers/external/external_test.py @@ -3,9 +3,11 @@ from __future__ import annotations import re +from pathlib import Path from typing import Any import pytest +from fastapi.templating import Jinja2Templates from httpx import AsyncClient from sia.config import config @@ -223,3 +225,32 @@ async def test_query_endpoint_post( ) elif expected_status == 400: validate_votable_error(response, expected_message) + + +@pytest.mark.asyncio +async def test_query_maxrec_zero( + client_direct: AsyncClient, +) -> None: + response = await client_direct.get( + f"{config.path_prefix}/hsc/query?MAXREC=0" + ) + + template_dir = str( + Path(__file__).resolve().parent.parent.parent / "templates" + ) + templates_dir = Jinja2Templates(template_dir) + + context = { + "instruments": ["HSC"], + "collections": ["LSST.CI"], + "resource_identifier": "ivo://rubin//ci_hsc_gen3hsc", + "access_url": "https://example.com/api/sia/hsc/query", + "facility_name": "Subaru", + } + + template_rendered = templates_dir.get_template( + "self_description.xml" + ).render(context) + + assert response.status_code == 200 + assert response.text.strip() == template_rendered.strip() diff --git a/tests/templates/self_description.xml b/tests/templates/self_description.xml new file mode 100644 index 0000000..99702ac --- /dev/null +++ b/tests/templates/self_description.xml @@ -0,0 +1,201 @@ + + + + Self description and list of supported parameters + + + Energy bounds + + + Calibration level + + + + + Collection name + + {%- for collection in collections %} + + + + Value of dataproduct type + + + + + Range of exposure times + + + Facility (telescope) name + + + + + Format content type for image file + + + + + Field of view + + + Observation ID + + + Instrument name + + {%- for instrument in instruments %} + + + + Polarization states + + + Circle region to be searched + + + Range region to be searched + + + Polygon region to be searched + + + Format of response + + + + + Specify position resolution + + + Specify energy resolving power + + + Target name + + + Time intervals + + + Time resolution + + + + + + + + + + + Central Spatial Position in ICRS Right ascension + + + Central Spatial Position in ICRS Declination + + + Name of telescope used to acquire observation + + + Name of instrument used to acquire observation + + + Product type (e.g. science, calibration, auxiliary, preview, info) + + + Calibration level of the observation: in {0, 1, 2, 3, 4} + + + Data product (file content) primary type + + + Internal ID given by the ObsTAP service + + + Spatial resolution (FWHM) + + + Lower bound on energy axis (barycentric wavelength) + + + Upper bound on energy axis (barycentric wavelength) + + + Spectral resolving power (R) + + + URI for the physical artifact + + + Content-Type of the representation at uri + + + Exposure time per pixel + + + AstroCoordArea Region covered in STC + + + Data collection this observation belongs to + + + Name of intended target + + + Dimensions (number of pixels) along first spatial axis + + + Dimensions (number of pixels) along second spatial axis + + + Lower bound on time axis (Modified Julian Day) + + + Upper bound on time axis (Modified Julian Day) + + + Resolution on the time axis + + + Dimensions (number of pixels) along the time axis + + + IVOA Dataset ID given by the publisher + + + Estimated size of the covered region as the diameter of a containing circle + + + Dimensions (number of pixels) along the energy axis + + + Dimensions (number of pixels) along the polarization axis + + + UCD describing the observable axis (pixel values) + + + + + +
+
+
\ No newline at end of file From bb966e587a061b8310b821f343619b299ff5a8ae Mon Sep 17 00:00:00 2001 From: Stelios Voutsinas Date: Fri, 18 Oct 2024 16:15:55 -0700 Subject: [PATCH 2/2] Update deps, change python back to 3.12 Fix resource identifier --- .pre-commit-config.yaml | 2 +- Dockerfile | 2 +- ...241018_183148_steliosvoutsinas_DM_46975.md | 3 + requirements/dev.txt | 124 +++---- requirements/main.in | 3 +- requirements/main.txt | 351 ++++++++---------- requirements/tox.txt | 50 +-- scripts/install-base-packages.sh | 3 + scripts/install-dependency-packages.sh | 2 +- src/sia/services/response_handler.py | 3 +- tests/handlers/external/external_test.py | 2 +- 11 files changed, 246 insertions(+), 299 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 239015a..661620f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.6.9 + rev: v0.7.0 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/Dockerfile b/Dockerfile index 7b5f3b9..7354570 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ # - Runs a non-root user. # - Sets up the entrypoint and port. -FROM python:3.13.0-slim-bookworm AS base-image +FROM python:3.12.7-slim-bookworm AS base-image # Update system packages COPY scripts/install-base-packages.sh . diff --git a/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md b/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md index 6361511..8ca54ff 100644 --- a/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md +++ b/changelog.d/20241018_183148_steliosvoutsinas_DM_46975.md @@ -7,3 +7,6 @@ ### Other changes - Move obscore config loading to a dependency run at startime +- Update requirements +- Change python version back to 3.12 +- Install libpq-dev needed for psycopg2 diff --git a/requirements/dev.txt b/requirements/dev.txt index 2408d58..9624473 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -261,68 +261,68 @@ markdown-it-py==3.0.0 \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb # via scriv -markupsafe==3.0.1 \ - --hash=sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396 \ - --hash=sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38 \ - --hash=sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a \ - --hash=sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8 \ - --hash=sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b \ - --hash=sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad \ - --hash=sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a \ - --hash=sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a \ - --hash=sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da \ - --hash=sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6 \ - --hash=sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8 \ - --hash=sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344 \ - --hash=sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a \ - --hash=sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8 \ - --hash=sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5 \ - --hash=sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7 \ - --hash=sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170 \ - --hash=sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132 \ - --hash=sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9 \ - --hash=sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd \ - --hash=sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9 \ - --hash=sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346 \ - --hash=sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc \ - --hash=sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589 \ - --hash=sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5 \ - --hash=sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915 \ - --hash=sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295 \ - --hash=sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453 \ - --hash=sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea \ - --hash=sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b \ - --hash=sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d \ - --hash=sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b \ - --hash=sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4 \ - --hash=sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b \ - --hash=sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7 \ - --hash=sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf \ - --hash=sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f \ - --hash=sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91 \ - --hash=sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd \ - --hash=sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50 \ - --hash=sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b \ - --hash=sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583 \ - --hash=sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a \ - --hash=sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984 \ - --hash=sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c \ - --hash=sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c \ - --hash=sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25 \ - --hash=sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa \ - --hash=sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4 \ - --hash=sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3 \ - --hash=sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97 \ - --hash=sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1 \ - --hash=sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd \ - --hash=sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772 \ - --hash=sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a \ - --hash=sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729 \ - --hash=sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca \ - --hash=sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6 \ - --hash=sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635 \ - --hash=sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b \ - --hash=sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f +markupsafe==3.0.2 \ + --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ + --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ + --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ + --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ + --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ + --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ + --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ + --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ + --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ + --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ + --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ + --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ + --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ + --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ + --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ + --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ + --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ + --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ + --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ + --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ + --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ + --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ + --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ + --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ + --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ + --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ + --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ + --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ + --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ + --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ + --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ + --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ + --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ + --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ + --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ + --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ + --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ + --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ + --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ + --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ + --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ + --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ + --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ + --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ + --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ + --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ + --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ + --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ + --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ + --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ + --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ + --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ + --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ + --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ + --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ + --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ + --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ + --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ + --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ + --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ + --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 # via # -c requirements/main.txt # jinja2 diff --git a/requirements/main.in b/requirements/main.in index d14bae4..1a90f9c 100644 --- a/requirements/main.in +++ b/requirements/main.in @@ -14,7 +14,6 @@ uvicorn[standard] python-multipart # Other dependencies. -psycopg2-binary boto3 google-cloud-storage requests @@ -26,5 +25,5 @@ numpy astropy vo-models defusedxml -lsst-daf-butler[postgres,remote] +lsst-daf-butler[postgres, remote] lsst-dax-obscore @ git+https://github.com/lsst-dm/dax_obscore@main#egg=lsst-dax-obscore diff --git a/requirements/main.txt b/requirements/main.txt index 32913cf..03ec70d 100644 --- a/requirements/main.txt +++ b/requirements/main.txt @@ -51,13 +51,13 @@ astropy-iers-data==0.2024.10.14.0.32.55 \ --hash=sha256:1a7c8e12bfe2af5605fd46dd9f8cb7fc9e9a78328cd231fdf6753b1814efe597 \ --hash=sha256:efe7e5b26fa064df08fcda528ea910c79137625208ccc4073addf4f0eb9289a0 # via astropy -boto3==1.35.42 \ - --hash=sha256:a5b00f8b82dce62870759f04861747944da834d64a64355970120c475efdafc0 \ - --hash=sha256:e1f36f8be453505cebcc3da178ea081b2a06c0e5e1cdee774f1067599b8d9c3e +boto3==1.35.44 \ + --hash=sha256:18416d07b41e6094101a44f8b881047dcec6b846dad0b9f83b9bbf2f0cd93d07 \ + --hash=sha256:7f8e8a252458d584d8cf7877c372c4f74ec103356eedf43d2dd9e479f47f3639 # via -r requirements/main.in -botocore==1.35.42 \ - --hash=sha256:05af0bb8b9cea7ce7bc589c332348d338a21b784e9d088a588fd10ec145007ff \ - --hash=sha256:af348636f73dc24b7e2dc760a34d08c8f2f94366e9b4c78d877307b128abecef +botocore==1.35.44 \ + --hash=sha256:1fcd97b966ad8a88de4106fe1bd3bbd6d8dadabe99bbd4a6aadcf11cb6c66b39 \ + --hash=sha256:55388e80624401d017a9a2b8109afd94814f7e666b53e28fce51375cfa8d9326 # via # boto3 # s3transfer @@ -263,34 +263,34 @@ colorama==0.4.6 ; sys_platform == 'win32' or platform_system == 'Windows' \ # via # click # uvicorn -cryptography==43.0.1 \ - --hash=sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494 \ - --hash=sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806 \ - --hash=sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d \ - --hash=sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062 \ - --hash=sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2 \ - --hash=sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4 \ - --hash=sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1 \ - --hash=sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85 \ - --hash=sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84 \ - --hash=sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042 \ - --hash=sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d \ - --hash=sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962 \ - --hash=sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2 \ - --hash=sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa \ - --hash=sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d \ - --hash=sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365 \ - --hash=sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96 \ - --hash=sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47 \ - --hash=sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d \ - --hash=sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d \ - --hash=sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c \ - --hash=sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb \ - --hash=sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277 \ - --hash=sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172 \ - --hash=sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034 \ - --hash=sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a \ - --hash=sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289 +cryptography==43.0.3 \ + --hash=sha256:0c580952eef9bf68c4747774cde7ec1d85a6e61de97281f2dba83c7d2c806362 \ + --hash=sha256:0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4 \ + --hash=sha256:1ec0bcf7e17c0c5669d881b1cd38c4972fade441b27bda1051665faaa89bdcaa \ + --hash=sha256:281c945d0e28c92ca5e5930664c1cefd85efe80e5c0d2bc58dd63383fda29f83 \ + --hash=sha256:2ce6fae5bdad59577b44e4dfed356944fbf1d925269114c28be377692643b4ff \ + --hash=sha256:315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805 \ + --hash=sha256:443c4a81bb10daed9a8f334365fe52542771f25aedaf889fd323a853ce7377d6 \ + --hash=sha256:4a02ded6cd4f0a5562a8887df8b3bd14e822a90f97ac5e544c162899bc467664 \ + --hash=sha256:53a583b6637ab4c4e3591a15bc9db855b8d9dee9a669b550f311480acab6eb08 \ + --hash=sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e \ + --hash=sha256:74f57f24754fe349223792466a709f8e0c093205ff0dca557af51072ff47ab18 \ + --hash=sha256:7e1ce50266f4f70bf41a2c6dc4358afadae90e2a1e5342d3c08883df1675374f \ + --hash=sha256:81ef806b1fef6b06dcebad789f988d3b37ccaee225695cf3e07648eee0fc6b73 \ + --hash=sha256:846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5 \ + --hash=sha256:8ac43ae87929a5982f5948ceda07001ee5e83227fd69cf55b109144938d96984 \ + --hash=sha256:9762ea51a8fc2a88b70cf2995e5675b38d93bf36bd67d91721c309df184f49bd \ + --hash=sha256:a2a431ee15799d6db9fe80c82b055bae5a752bef645bba795e8e52687c69efe3 \ + --hash=sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e \ + --hash=sha256:c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405 \ + --hash=sha256:cbeb489927bd7af4aa98d4b261af9a5bc025bd87f0e3547e11584be9e9427be2 \ + --hash=sha256:d03b5621a135bffecad2c73e9f4deb1a0f977b9a8ffe6f8e002bf6c9d07b918c \ + --hash=sha256:d56e96520b1020449bbace2b78b603442e7e378a9b3bd68de65c782db1507995 \ + --hash=sha256:df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73 \ + --hash=sha256:e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16 \ + --hash=sha256:f18c716be16bc1fea8e95def49edf46b82fccaa88587a45f8dc0ff6ab5d8e0a7 \ + --hash=sha256:f46304d6f0c6ab8e52770addfa2fc41e6629495548862279641972b6215451cd \ + --hash=sha256:f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7 # via # pyjwt # safir @@ -549,28 +549,29 @@ jmespath==1.0.1 \ # via # boto3 # botocore -lsst-daf-butler==27.2024.4100 \ - --hash=sha256:28f07e3e28c4ab4e5c1b09d7648a405fc2935c31d0698ee8b3a87c2ad50b77e1 \ - --hash=sha256:8db10c0fdaef2b8dd3e012fd0cadc6efe6f58817b6d2b8ed38564e5fe3e2db83 +lsst-daf-butler==27.2024.4200 \ + --hash=sha256:8cd2074f94f27bc024bff3329e27543f9639bda3c39a9855d9b4a6d367315313 \ + --hash=sha256:d5683b751229712f2be0ad3b75cb2ca0bd26921577163248cf5541984bd87363 # via # -r requirements/main.in # lsst-dax-obscore -lsst-daf-relation==27.2024.4100 \ - --hash=sha256:b83e67cccd2f063ecbe6e59e7cb8bdebca2279f6b006b0684f0dd4709942e52b \ - --hash=sha256:ca1aed908765d337bdecd3a6fd63d488546fce41b2607ac3eb7efba7624b8389 +lsst-daf-relation==27.2024.4200 \ + --hash=sha256:686a521a9dd570883df7d07e23621282b1400848aaeda680b353bfa2925d59e9 \ + --hash=sha256:c79fc9e7a1cfed9692cfea56e73983dfcee66408940f1192913df4d42baeed3d # via lsst-daf-butler lsst-dax-obscore @ git+https://github.com/lsst-dm/dax_obscore@5919c78c29630b1c9ed7544a1e075d8cc7ebda22#egg=lsst-dax-obscore # via -r requirements/main.in -lsst-felis==27.2024.4100 \ - --hash=sha256:09fa50b45e9d3bf3f5cbb347338aa810c278b815dc8e601a5b3486348d62266d \ - --hash=sha256:384127fa69bc15d3b37694b3b8261c210049f162e2d1e440b204614b046e7191 +lsst-felis==27.2024.4200 \ + --hash=sha256:0eec74a986c99d5047fb90f6327a8208549e9624086bf343586cad6b6115b30e \ + --hash=sha256:9d3a8c1944f7cbf7fe4d8e006655e7fa0bd360abd64d421266d97d6fa8446abd # via lsst-dax-obscore -lsst-resources==27.2024.4100 \ - --hash=sha256:7471ca3644f2ad809212d4f897a4c6ab2123ab07f4def2ca8e0b670b63283bcd \ - --hash=sha256:cb141792984ec2c459a7ceed31e1e052fa7a4387a9174665d0306dcc1723eadd +lsst-resources==27.2024.4200 \ + --hash=sha256:1b4482ad03b55a8a05c9a1ddd62642ef19c5aea7bdef33edaf424ec3c8d6192f \ + --hash=sha256:b2dfe88de52672cff70f08460ab188b27eb611d7a4e212ddec58be3505b9ca53 # via # lsst-daf-butler # lsst-dax-obscore + # lsst-felis lsst-sphgeom==27.2024.3700 \ --hash=sha256:00299bd4fe9b4c7209e6b70f3d5da93c48e2a59a27fa6cc84929f2ad9905b2f4 \ --hash=sha256:314734fde962abb04a86e47c30df012356aec0c6a1d8599ae79aba3023a8f222 \ @@ -600,9 +601,9 @@ lsst-sphgeom==27.2024.3700 \ # via # lsst-daf-butler # lsst-dax-obscore -lsst-utils==27.2024.4100 \ - --hash=sha256:2ab3ae23920671defdf02899ec1b2cfcfd2629866f34c0bb0fb3588d8e0595a0 \ - --hash=sha256:fbd1a851e6259e58c25fc2171724174aa0bc25738ce0c0e1cc1ca8b0de9c4c25 +lsst-utils==27.2024.4200 \ + --hash=sha256:22eeda2b7c0e423a0a2d05077dd03331c16054482f43071c2480a31632ecde54 \ + --hash=sha256:c64de230d4bf03954207836b4ec4bff1a17ca0df5b068499dc83b9cf112646d5 # via # lsst-daf-butler # lsst-daf-relation @@ -749,68 +750,68 @@ lxml==5.3.0 \ --hash=sha256:f914c03e6a31deb632e2daa881fe198461f4d06e57ac3d0e05bbcab8eae01945 \ --hash=sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8 # via pydantic-xml -markupsafe==3.0.1 \ - --hash=sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396 \ - --hash=sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38 \ - --hash=sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a \ - --hash=sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8 \ - --hash=sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b \ - --hash=sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad \ - --hash=sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a \ - --hash=sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a \ - --hash=sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da \ - --hash=sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6 \ - --hash=sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8 \ - --hash=sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344 \ - --hash=sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a \ - --hash=sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8 \ - --hash=sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5 \ - --hash=sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7 \ - --hash=sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170 \ - --hash=sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132 \ - --hash=sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9 \ - --hash=sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd \ - --hash=sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9 \ - --hash=sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346 \ - --hash=sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc \ - --hash=sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589 \ - --hash=sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5 \ - --hash=sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915 \ - --hash=sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295 \ - --hash=sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453 \ - --hash=sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea \ - --hash=sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b \ - --hash=sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d \ - --hash=sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b \ - --hash=sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4 \ - --hash=sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b \ - --hash=sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7 \ - --hash=sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf \ - --hash=sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f \ - --hash=sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91 \ - --hash=sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd \ - --hash=sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50 \ - --hash=sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b \ - --hash=sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583 \ - --hash=sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a \ - --hash=sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984 \ - --hash=sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c \ - --hash=sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c \ - --hash=sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25 \ - --hash=sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa \ - --hash=sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4 \ - --hash=sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3 \ - --hash=sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97 \ - --hash=sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1 \ - --hash=sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd \ - --hash=sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772 \ - --hash=sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a \ - --hash=sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729 \ - --hash=sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca \ - --hash=sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6 \ - --hash=sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635 \ - --hash=sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b \ - --hash=sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f +markupsafe==3.0.2 \ + --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ + --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ + --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ + --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ + --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ + --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ + --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ + --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ + --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ + --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ + --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ + --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ + --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ + --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ + --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ + --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ + --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ + --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ + --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ + --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ + --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ + --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ + --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ + --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ + --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ + --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ + --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ + --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ + --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ + --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ + --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ + --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ + --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ + --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ + --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ + --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ + --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ + --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ + --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ + --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ + --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ + --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ + --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ + --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ + --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ + --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ + --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ + --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ + --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ + --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ + --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ + --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ + --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ + --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ + --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ + --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ + --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ + --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ + --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ + --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ + --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 # via jinja2 numpy==2.1.2 \ --hash=sha256:05b2d4e667895cc55e3ff2b56077e4c8a5604361fc21a042845ea3ad67465aa8 \ @@ -899,94 +900,36 @@ protobuf==5.28.2 \ # google-api-core # googleapis-common-protos # proto-plus -psutil==6.0.0 \ - --hash=sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35 \ - --hash=sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0 \ - --hash=sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c \ - --hash=sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1 \ - --hash=sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3 \ - --hash=sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c \ - --hash=sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd \ - --hash=sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3 \ - --hash=sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0 \ - --hash=sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2 \ - --hash=sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6 \ - --hash=sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d \ - --hash=sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c \ - --hash=sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0 \ - --hash=sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132 \ - --hash=sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14 \ - --hash=sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0 +psutil==6.1.0 \ + --hash=sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047 \ + --hash=sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc \ + --hash=sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e \ + --hash=sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747 \ + --hash=sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e \ + --hash=sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a \ + --hash=sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b \ + --hash=sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76 \ + --hash=sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca \ + --hash=sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688 \ + --hash=sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e \ + --hash=sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38 \ + --hash=sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85 \ + --hash=sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be \ + --hash=sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942 \ + --hash=sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a \ + --hash=sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0 # via lsst-utils -psycopg2-binary==2.9.10 \ - --hash=sha256:04392983d0bb89a8717772a193cfaac58871321e3ec69514e1c4e0d4957b5aff \ - --hash=sha256:056470c3dc57904bbf63d6f534988bafc4e970ffd50f6271fc4ee7daad9498a5 \ - --hash=sha256:0ea8e3d0ae83564f2fc554955d327fa081d065c8ca5cc6d2abb643e2c9c1200f \ - --hash=sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5 \ - --hash=sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0 \ - --hash=sha256:19721ac03892001ee8fdd11507e6a2e01f4e37014def96379411ca99d78aeb2c \ - --hash=sha256:1a6784f0ce3fec4edc64e985865c17778514325074adf5ad8f80636cd029ef7c \ - --hash=sha256:2286791ececda3a723d1910441c793be44625d86d1a4e79942751197f4d30341 \ - --hash=sha256:230eeae2d71594103cd5b93fd29d1ace6420d0b86f4778739cb1a5a32f607d1f \ - --hash=sha256:245159e7ab20a71d989da00f280ca57da7641fa2cdcf71749c193cea540a74f7 \ - --hash=sha256:26540d4a9a4e2b096f1ff9cce51253d0504dca5a85872c7f7be23be5a53eb18d \ - --hash=sha256:270934a475a0e4b6925b5f804e3809dd5f90f8613621d062848dd82f9cd62007 \ - --hash=sha256:2ad26b467a405c798aaa1458ba09d7e2b6e5f96b1ce0ac15d82fd9f95dc38a92 \ - --hash=sha256:2b3d2491d4d78b6b14f76881905c7a8a8abcf974aad4a8a0b065273a0ed7a2cb \ - --hash=sha256:2ce3e21dc3437b1d960521eca599d57408a695a0d3c26797ea0f72e834c7ffe5 \ - --hash=sha256:30e34c4e97964805f715206c7b789d54a78b70f3ff19fbe590104b71c45600e5 \ - --hash=sha256:3216ccf953b3f267691c90c6fe742e45d890d8272326b4a8b20850a03d05b7b8 \ - --hash=sha256:32581b3020c72d7a421009ee1c6bf4a131ef5f0a968fab2e2de0c9d2bb4577f1 \ - --hash=sha256:35958ec9e46432d9076286dda67942ed6d968b9c3a6a2fd62b48939d1d78bf68 \ - --hash=sha256:3abb691ff9e57d4a93355f60d4f4c1dd2d68326c968e7db17ea96df3c023ef73 \ - --hash=sha256:3c18f74eb4386bf35e92ab2354a12c17e5eb4d9798e4c0ad3a00783eae7cd9f1 \ - --hash=sha256:3c4745a90b78e51d9ba06e2088a2fe0c693ae19cc8cb051ccda44e8df8a6eb53 \ - --hash=sha256:3c4ded1a24b20021ebe677b7b08ad10bf09aac197d6943bfe6fec70ac4e4690d \ - --hash=sha256:3e9c76f0ac6f92ecfc79516a8034a544926430f7b080ec5a0537bca389ee0906 \ - --hash=sha256:48b338f08d93e7be4ab2b5f1dbe69dc5e9ef07170fe1f86514422076d9c010d0 \ - --hash=sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2 \ - --hash=sha256:512d29bb12608891e349af6a0cccedce51677725a921c07dba6342beaf576f9a \ - --hash=sha256:5a507320c58903967ef7384355a4da7ff3f28132d679aeb23572753cbf2ec10b \ - --hash=sha256:5c370b1e4975df846b0277b4deba86419ca77dbc25047f535b0bb03d1a544d44 \ - --hash=sha256:6b269105e59ac96aba877c1707c600ae55711d9dcd3fc4b5012e4af68e30c648 \ - --hash=sha256:6d4fa1079cab9018f4d0bd2db307beaa612b0d13ba73b5c6304b9fe2fb441ff7 \ - --hash=sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f \ - --hash=sha256:73aa0e31fa4bb82578f3a6c74a73c273367727de397a7a0f07bd83cbea696baa \ - --hash=sha256:7559bce4b505762d737172556a4e6ea8a9998ecac1e39b5233465093e8cee697 \ - --hash=sha256:79625966e176dc97ddabc142351e0409e28acf4660b88d1cf6adb876d20c490d \ - --hash=sha256:7a813c8bdbaaaab1f078014b9b0b13f5de757e2b5d9be6403639b298a04d218b \ - --hash=sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526 \ - --hash=sha256:7f4152f8f76d2023aac16285576a9ecd2b11a9895373a1f10fd9db54b3ff06b4 \ - --hash=sha256:7f5d859928e635fa3ce3477704acee0f667b3a3d3e4bb109f2b18d4005f38287 \ - --hash=sha256:851485a42dbb0bdc1edcdabdb8557c09c9655dfa2ca0460ff210522e073e319e \ - --hash=sha256:8608c078134f0b3cbd9f89b34bd60a943b23fd33cc5f065e8d5f840061bd0673 \ - --hash=sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0 \ - --hash=sha256:8aabf1c1a04584c168984ac678a668094d831f152859d06e055288fa515e4d30 \ - --hash=sha256:8aecc5e80c63f7459a1a2ab2c64df952051df196294d9f739933a9f6687e86b3 \ - --hash=sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e \ - --hash=sha256:8de718c0e1c4b982a54b41779667242bc630b2197948405b7bd8ce16bcecac92 \ - --hash=sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a \ - --hash=sha256:b5f86c56eeb91dc3135b3fd8a95dc7ae14c538a2f3ad77a19645cf55bab1799c \ - --hash=sha256:b73d6d7f0ccdad7bc43e6d34273f70d587ef62f824d7261c4ae9b8b1b6af90e8 \ - --hash=sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909 \ - --hash=sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47 \ - --hash=sha256:ce5ab4bf46a211a8e924d307c1b1fcda82368586a19d0a24f8ae166f5c784864 \ - --hash=sha256:d00924255d7fc916ef66e4bf22f354a940c67179ad3fd7067d7a0a9c84d2fbfc \ - --hash=sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00 \ - --hash=sha256:e217ce4d37667df0bc1c397fdcd8de5e81018ef305aed9415c3b093faaeb10fb \ - --hash=sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539 \ - --hash=sha256:e5720a5d25e3b99cd0dc5c8a440570469ff82659bb09431c1439b92caf184d3b \ - --hash=sha256:e8b58f0a96e7a1e341fc894f62c1177a7c83febebb5ff9123b579418fdc8a481 \ - --hash=sha256:e984839e75e0b60cfe75e351db53d6db750b00de45644c5d1f7ee5d1f34a1ce5 \ - --hash=sha256:eb09aa7f9cecb45027683bb55aebaaf45a0df8bf6de68801a6afdc7947bb09d4 \ - --hash=sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64 \ - --hash=sha256:ecced182e935529727401b24d76634a357c71c9275b356efafd8a2a91ec07392 \ - --hash=sha256:ee0e8c683a7ff25d23b55b11161c2663d4b099770f6085ff0a20d4505778d6b4 \ - --hash=sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1 \ - --hash=sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1 \ - --hash=sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567 \ - --hash=sha256:ffe8ed017e4ed70f68b7b371d84b7d4a790368db9203dfc2d222febd3a9c8863 - # via -r requirements/main.in +psycopg2==2.9.10 \ + --hash=sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4 \ + --hash=sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11 \ + --hash=sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2 \ + --hash=sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e \ + --hash=sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716 \ + --hash=sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067 \ + --hash=sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442 \ + --hash=sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b \ + --hash=sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a + # via lsst-daf-butler pyarrow==17.0.0 \ --hash=sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a \ --hash=sha256:02dae06ce212d8b3244dd3e7d12d9c4d3046945a5933d28026598e9dbbda1fca \ @@ -1148,9 +1091,9 @@ pydantic-core==2.23.4 \ # pydantic # pydantic-xml # safir -pydantic-settings==2.5.2 \ - --hash=sha256:2c912e55fd5794a59bf8c832b9de832dcfdf4778d79ff79b708744eed499a907 \ - --hash=sha256:f90b139682bee4d2065273d5185d71d37ea46cfe57e1b5ae184fc6a0b2484ca0 +pydantic-settings==2.6.0 \ + --hash=sha256:44a1804abffac9e6a30372bb45f6cafab945ef5af25e66b1c634c01dd39e0188 \ + --hash=sha256:4a819166f119b74d7f8c765196b165f95cc7487ce58ea27dec8a5a26be0970e0 # via -r requirements/main.in pydantic-xml==2.13.1 \ --hash=sha256:225d96ce8288abf84d34aa5c70cd4a834c389a7efb071f95301cbba41bfbec15 \ @@ -1268,9 +1211,9 @@ safir==6.4.0 \ --hash=sha256:ba7af071eab0d198e6e15a2117028566f3f4237e02e2278e8bfc2633a7c68228 \ --hash=sha256:f38c3f1d7d76d304984b572288826510e5c7a0e1f965b2eabdd7f3bace07c48a # via -r requirements/main.in -safir-logging==6.4.0 \ - --hash=sha256:4031a430d738b8fe5bfd29125dce6cbf4e4949879307ba4146648afa3d24cd0a \ - --hash=sha256:e2dbf0b5d9dabecd70c27bff9bf01629bf0724b05b0f0087a1fe4f45c702215f +safir-logging==6.5.0 \ + --hash=sha256:a028b34ace2b1c28e1b3973f1c78a8d8c55742921159178bdc9df366d3e27fb9 \ + --hash=sha256:cb2052dc620e3d3c11ba353874486e574f6defb1124bb6616f9900688a8ec37a # via safir six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ diff --git a/requirements/tox.txt b/requirements/tox.txt index 08f5d10..7731657 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -52,9 +52,9 @@ pyproject-api==1.8.0 \ --hash=sha256:3d7d347a047afe796fd5d1885b1e391ba29be7169bd2f102fcd378f04273d228 \ --hash=sha256:77b8049f2feb5d33eefcc21b57f1e279636277a8ac8ad6b5871037b243778496 # via tox -tox==4.22.0 \ - --hash=sha256:03734d9a9ac138cd1a898a372fb1b8079e2728618ae06dc37cbf3686cfb56eea \ - --hash=sha256:acc6c627cb3316585238d55d2b633e132fea1bdb01b9d93b56bce7caea6ae73d +tox==4.23.0 \ + --hash=sha256:46da40afb660e46238c251280eb910bdaf00b390c7557c8e4bb611f422e9db12 \ + --hash=sha256:a6bd7d54231d755348d3c3a7b450b5bf6563833716d1299a1619587a1b77a3bf # via # -r requirements/tox.in # tox-uv @@ -62,27 +62,27 @@ tox-uv==1.15.0 \ --hash=sha256:a5f08c80a3eabc47881e378700e5044b67ba94b03181ae38246627127f6a9183 \ --hash=sha256:dfe7e48274248458349b47780da7db815c0156bd3751b6486152bbf01d7672fb # via -r requirements/tox.in -uv==0.4.22 \ - --hash=sha256:062a57ac3aab9a7d41e1b6a66948d563bf47478c719894661ea2c5ed6485a146 \ - --hash=sha256:0904c141f9fd7088d7837fb7ac5e43191236ed9cf8edf824ed838bdc77da7406 \ - --hash=sha256:0ff4ff91a25ed633f4d2556777e1b317262c01f71e8f72dfbc540e97e7eb5392 \ - --hash=sha256:455538b910db65f20a70cf806c5e65cc1d80ea7f40a116ba1c3d4bd1dab933d9 \ - --hash=sha256:48232daa35ebd3e963eea236cf33915a8b0c8a3673d5da35d764f8b1fec0b1b2 \ - --hash=sha256:52605e291f7ab1daca682b7a92b926c2f70e1fc86caaa37cbd56b64587730ea2 \ - --hash=sha256:527d785dafa5bf8fa4aba42188787a4b25c11d005a5f4bd8afda6e8c2c231e1b \ - --hash=sha256:63156e306f860d9fa2bb1d7c9af30053b88276004b2790cd9bbf20cc83ce988b \ - --hash=sha256:7041bf9d2d5d391cebca7778207eb88a96537ff2e93df2ff9f41d6c4057252c3 \ - --hash=sha256:71f3faaa94f60d362a6984fdf7675d6d2d244139de91a7d46e2367caf950951e \ - --hash=sha256:765dac79e5c8e2924efbd4663d4e03f5d7689f1baa98223b298fe4292610a25a \ - --hash=sha256:7be7adf47158c456031b2b78742a432260b5c22e9a86784fa57e7a208b0c3206 \ - --hash=sha256:956c4f0a9eddb8e18003bc39d114c78f6d6b4ba2683a262af043770abee44f2e \ - --hash=sha256:9cf96ddcb6ea2743e4c44fa22b08a4f2fd09cc9c5e228e8ab04b0cd08371c868 \ - --hash=sha256:af70ea49389397d0f6ff43827f73e0e71db0fc45cdf50c7dcff8318d726c8224 \ - --hash=sha256:c96eb12d1bdb1a826cba3c38273604629ac51e723d705aed17ae282650d030f0 \ - --hash=sha256:d9a242b3360c3a62e248053b3a6f618dc59cb5c56f4e30748433a19a002e4bf5 \ - --hash=sha256:e18c42cc99bc2a3f91d43aeb2df61a6d259114fca50dd3818879e9ee12064f7f +uv==0.4.24 \ + --hash=sha256:29c514752873c1be259afd82b975e528ec6783564a306fd24deee0cccb2dc566 \ + --hash=sha256:2a3ea6780e3451c81ce1635656abcd8a47e43f1b0f02542c433b4b6dd459df8e \ + --hash=sha256:4d8e5f66a8756d4908121cb59189e6f9992fdbd0f9c26a5a30a069b94f8acab3 \ + --hash=sha256:5e3ce0350e74b3dba6854789dd253faeab2fdf8e84f2671b68573070bb40ff17 \ + --hash=sha256:70a76cb5b8a459d6f6931becf2b5689599382c2512341d566ce335b8304c44e8 \ + --hash=sha256:7d076875e9fa4d8cda44d3e51c9b47efc578db830535c62f25884772bfa265bc \ + --hash=sha256:7ef6914a7294ac7df5bd15b21652cbe61d1c12a0f29a94d178dce6192f858092 \ + --hash=sha256:a03bc4b2ca2236eece97fffb8b5605b7a2248cd8a4b9a9c67955ad08756a1ceb \ + --hash=sha256:a97c347af12deb687c09fed82dc829efd6e5fbc4d76a38e98b2eaa2b065e4cfe \ + --hash=sha256:b459913d8ba6edba2c4b299e87fccfbd7fca4b2e2abe5fd4fa0da56147e19fc8 \ + --hash=sha256:b8d467d4c4746127b2121d6f67686957a2b5431935d26767aa02fa4516694293 \ + --hash=sha256:bbc24b232c5e874741d863c5bec2257533db86f91381f1a101872028a0502ec9 \ + --hash=sha256:beaff8fdaad3bcd781a8d28b60843b8d1cd2a04229847dc314c1bb7e0bb39ca2 \ + --hash=sha256:c03a411f1b86ce7de25d6271d90358ba2d33e87b4922dc5378c4c07674909363 \ + --hash=sha256:c40f75df1f2c45a7f67fcc69d80231760f6a017b7c8e889a16e21348651a34d7 \ + --hash=sha256:d274f7ddc013697fb52962632bc7e77889a6ec87d2cd12316d218686cfece3d4 \ + --hash=sha256:ec0570f5e2e4dbfd83a89e9a55d5f033050d749f684bd0e7d4c327fd49f89b12 \ + --hash=sha256:f71a00f10cfa15b4f4f0184a67da19f35c48683bba9bb49cebe9c206f1b2bc1f # via tox-uv -virtualenv==20.26.6 \ - --hash=sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48 \ - --hash=sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2 +virtualenv==20.27.0 \ + --hash=sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2 \ + --hash=sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655 # via tox diff --git a/scripts/install-base-packages.sh b/scripts/install-base-packages.sh index 620781c..e8d6c1e 100755 --- a/scripts/install-base-packages.sh +++ b/scripts/install-base-packages.sh @@ -26,6 +26,9 @@ apt-get update # Install security updates: apt-get -y upgrade +# libpq-dev is required by psycopg2. +apt-get -y install --no-install-recommends curl unzip libpq-dev + # Example of installing a new package, without unnecessary packages: apt-get -y install --no-install-recommends git diff --git a/scripts/install-dependency-packages.sh b/scripts/install-dependency-packages.sh index f63ef75..b6fc9fc 100755 --- a/scripts/install-dependency-packages.sh +++ b/scripts/install-dependency-packages.sh @@ -27,7 +27,7 @@ apt-get update # Install build-essential because sometimes Python dependencies need to build # C modules, particularly when upgrading to newer Python versions. libffi-dev # is sometimes needed to build cffi (a cryptography dependency). -apt-get -y install --no-install-recommends build-essential libffi-dev +apt-get -y install --no-install-recommends build-essential git libffi-dev # Delete cached files we don't need anymore: apt-get clean diff --git a/src/sia/services/response_handler.py b/src/sia/services/response_handler.py index 6d4489b..9918120 100644 --- a/src/sia/services/response_handler.py +++ b/src/sia/services/response_handler.py @@ -72,8 +72,7 @@ def self_description_response( # This may need to be updated if we decide to change the # dax_obscore config to hold multiple collections "resource_identifier": f"{BASE_RESOURCE_IDENTIFIER}/" - f"{butler_collection.label}" - f"{butler_collection.name}", + f"{butler_collection.label}", "access_url": request.url_for( "query", collection_name=butler_collection.name ), diff --git a/tests/handlers/external/external_test.py b/tests/handlers/external/external_test.py index 24d49fe..d79aaec 100644 --- a/tests/handlers/external/external_test.py +++ b/tests/handlers/external/external_test.py @@ -243,7 +243,7 @@ async def test_query_maxrec_zero( context = { "instruments": ["HSC"], "collections": ["LSST.CI"], - "resource_identifier": "ivo://rubin//ci_hsc_gen3hsc", + "resource_identifier": "ivo://rubin//ci_hsc_gen3", "access_url": "https://example.com/api/sia/hsc/query", "facility_name": "Subaru", }