From bf27a72394bdad39b7e2a9bfa578565124f12a48 Mon Sep 17 00:00:00 2001 From: vincentsarago Date: Thu, 13 Feb 2025 18:01:54 +0100 Subject: [PATCH] update titiler requirement and add lock to Cache --- pyproject.toml | 4 ++-- titiler/pgstac/backend.py | 2 ++ titiler/pgstac/dependencies.py | 3 +++ titiler/pgstac/factory.py | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6472955..fa70269 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,8 +28,8 @@ classifiers = [ "Topic :: Scientific/Engineering :: GIS", ] dependencies = [ - "titiler.core>=0.20.0,<0.21", - "titiler.mosaic>=0.20.0,<0.21", + "titiler.core>=0.21,<0.22", + "titiler.mosaic>=0.21,<0.22", "geojson-pydantic~=1.0", "pydantic>=2.4,<3.0", "pydantic-settings~=2.0", diff --git a/titiler/pgstac/backend.py b/titiler/pgstac/backend.py index 8b94949..9e34304 100644 --- a/titiler/pgstac/backend.py +++ b/titiler/pgstac/backend.py @@ -1,6 +1,7 @@ """TiTiler.PgSTAC custom Mosaic Backend and Custom STACReader.""" import json +from threading import Lock from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type import attr @@ -165,6 +166,7 @@ def assets_for_bbox( @cached( # type: ignore TTLCache(maxsize=cache_config.maxsize, ttl=cache_config.ttl), key=lambda self, geom, **kwargs: hashkey(self.input, str(geom), **kwargs), + lock=Lock(), ) @retry( tries=retry_config.retry, diff --git a/titiler/pgstac/dependencies.py b/titiler/pgstac/dependencies.py index cd9f599..e4faa18 100644 --- a/titiler/pgstac/dependencies.py +++ b/titiler/pgstac/dependencies.py @@ -2,6 +2,7 @@ import warnings from dataclasses import dataclass, field +from threading import Lock from typing import List, Optional, Tuple import morecantile @@ -45,6 +46,7 @@ def SearchIdParams( str(bbox), datetime, ), + lock=Lock(), ) @retry( tries=retry_config.retry, @@ -263,6 +265,7 @@ class PgSTACParams(DefaultDependency): @cached( # type: ignore TTLCache(maxsize=cache_config.maxsize, ttl=cache_config.ttl), key=lambda pool, collection, item: hashkey(collection, item), + lock=Lock(), ) @retry( tries=retry_config.retry, diff --git a/titiler/pgstac/factory.py b/titiler/pgstac/factory.py index e691386..b34c8b1 100644 --- a/titiler/pgstac/factory.py +++ b/titiler/pgstac/factory.py @@ -34,7 +34,7 @@ from rio_tiler.constants import MAX_THREADS, WGS84_CRS from rio_tiler.mosaic.methods.base import MosaicMethodBase from rio_tiler.types import ColorMapType -from rio_tiler.utils import CRS_to_uri +from rio_tiler.utils import CRS_to_uri, CRS_to_urn from starlette.datastructures import QueryParams from starlette.requests import Request from starlette.responses import HTMLResponse, Response @@ -894,7 +894,7 @@ def wmts( # noqa: C901 bbox_crs_uri = "urn:ogc:def:crs:OGC:2:84" if tms.rasterio_geographic_crs != WGS84_CRS: bbox_crs_type = "BoundingBox" - bbox_crs_uri = CRS_to_uri(tms.rasterio_geographic_crs) + bbox_crs_uri = CRS_to_urn(tms.rasterio_geographic_crs) # WGS88BoundingBox is always xy ordered, but BoundingBox must match the CRS order if crs_axis_inverted(tms.geographic_crs): # match the bounding box coordinate order to the CRS