From 0dabfd005a319fc3988a03671925b0070c390f9c Mon Sep 17 00:00:00 2001 From: vincentsarago Date: Fri, 21 Nov 2025 13:34:14 +0100 Subject: [PATCH] use typing.Annotated --- docs/src/advanced/dependencies.md | 3 ++- .../examples/code/tiler_with_custom_colormap.md | 3 +-- .../code/tiler_with_custom_stac+xarray.md | 3 +-- src/titiler/core/tests/test_CustomPath.py | 2 +- src/titiler/core/tests/test_cache_middleware.py | 3 ++- src/titiler/core/tests/test_case_middleware.py | 3 +-- src/titiler/core/tests/test_dependencies.py | 3 +-- .../core/titiler/core/algorithm/__init__.py | 3 +-- src/titiler/core/titiler/core/dependencies.py | 13 +++++++++++-- src/titiler/core/titiler/core/factory.py | 2 +- src/titiler/core/titiler/core/models/OGC.py | 3 +-- src/titiler/core/titiler/core/telemetry.py | 4 +--- .../extensions/titiler/extensions/cogeo.py | 3 ++- .../extensions/titiler/extensions/render.py | 3 +-- src/titiler/extensions/titiler/extensions/stac.py | 4 ++-- src/titiler/mosaic/tests/test_factory.py | 3 +-- src/titiler/mosaic/titiler/mosaic/factory.py | 15 +++++++++++++-- src/titiler/xarray/titiler/xarray/dependencies.py | 3 +-- src/titiler/xarray/titiler/xarray/extensions.py | 4 ++-- src/titiler/xarray/titiler/xarray/factory.py | 3 +-- 20 files changed, 47 insertions(+), 36 deletions(-) diff --git a/docs/src/advanced/dependencies.md b/docs/src/advanced/dependencies.md index 094c7db90..555134a8a 100644 --- a/docs/src/advanced/dependencies.md +++ b/docs/src/advanced/dependencies.md @@ -5,10 +5,11 @@ In titiler `Factories`, we use the dependencies to define the inputs for each en Example: ```python +from typing import Annotated + from dataclasses import dataclass from fastapi import Depends, FastAPI, Query from titiler.core.dependencies import DefaultDependency -from typing_extensions import Annotated from rio_tiler.io import Reader @dataclass diff --git a/docs/src/examples/code/tiler_with_custom_colormap.md b/docs/src/examples/code/tiler_with_custom_colormap.md index fd88ecc7b..77ab08ef8 100644 --- a/docs/src/examples/code/tiler_with_custom_colormap.md +++ b/docs/src/examples/code/tiler_with_custom_colormap.md @@ -34,8 +34,7 @@ app/dependencies.py import json -from typing import Dict, Optional, Literal -from typing_extensions import Annotated +from typing import Annotated, Dict, Optional, Literal import numpy import matplotlib diff --git a/docs/src/examples/code/tiler_with_custom_stac+xarray.md b/docs/src/examples/code/tiler_with_custom_stac+xarray.md index 4b807091d..9dcd20934 100644 --- a/docs/src/examples/code/tiler_with_custom_stac+xarray.md +++ b/docs/src/examples/code/tiler_with_custom_stac+xarray.md @@ -167,8 +167,7 @@ Custom `MultiBaseTilerFactory` which removes some endpoints (`/preview`) and ada ```python title="factory.py" """Custom MultiBaseTilerFactory.""" from dataclasses import dataclass -from typing import Type, Union, Optional, List -from typing_extensions import Annotated +from typing import Annotated, Type, Union, Optional, List from attrs import define, field from geojson_pydantic.features import Feature, FeatureCollection from fastapi import Body, Depends, Query diff --git a/src/titiler/core/tests/test_CustomPath.py b/src/titiler/core/tests/test_CustomPath.py index dd308d630..91589fc9e 100644 --- a/src/titiler/core/tests/test_CustomPath.py +++ b/src/titiler/core/tests/test_CustomPath.py @@ -2,10 +2,10 @@ import os import re +from typing import Annotated from fastapi import FastAPI, HTTPException, Query from starlette.testclient import TestClient -from typing_extensions import Annotated from titiler.core.factory import TilerFactory diff --git a/src/titiler/core/tests/test_cache_middleware.py b/src/titiler/core/tests/test_cache_middleware.py index d6b17d095..1dfee53d8 100644 --- a/src/titiler/core/tests/test_cache_middleware.py +++ b/src/titiler/core/tests/test_cache_middleware.py @@ -1,9 +1,10 @@ """Test titiler.core.CacheControlMiddleware.""" +from typing import Annotated + from fastapi import FastAPI, Path from starlette.responses import Response from starlette.testclient import TestClient -from typing_extensions import Annotated from titiler.core.middleware import CacheControlMiddleware diff --git a/src/titiler/core/tests/test_case_middleware.py b/src/titiler/core/tests/test_case_middleware.py index 0a13abe7f..c59731126 100644 --- a/src/titiler/core/tests/test_case_middleware.py +++ b/src/titiler/core/tests/test_case_middleware.py @@ -1,10 +1,9 @@ """Test titiler.core.middleware.LowerCaseQueryStringMiddleware.""" -from typing import List +from typing import Annotated, List from fastapi import FastAPI, Query from starlette.testclient import TestClient -from typing_extensions import Annotated from titiler.core.middleware import LowerCaseQueryStringMiddleware diff --git a/src/titiler/core/tests/test_dependencies.py b/src/titiler/core/tests/test_dependencies.py index fbbb1d358..b1736156c 100644 --- a/src/titiler/core/tests/test_dependencies.py +++ b/src/titiler/core/tests/test_dependencies.py @@ -2,14 +2,13 @@ import json from dataclasses import dataclass -from typing import Literal, Optional +from typing import Annotated, Literal, Optional import pytest from fastapi import Depends, FastAPI, Path from morecantile import tms from rio_tiler.types import ColorMapType from starlette.testclient import TestClient -from typing_extensions import Annotated from titiler.core import dependencies, errors from titiler.core.resources.responses import JSONResponse diff --git a/src/titiler/core/titiler/core/algorithm/__init__.py b/src/titiler/core/titiler/core/algorithm/__init__.py index 67c5a022a..efc69f492 100644 --- a/src/titiler/core/titiler/core/algorithm/__init__.py +++ b/src/titiler/core/titiler/core/algorithm/__init__.py @@ -2,12 +2,11 @@ import json from copy import copy -from typing import Dict, List, Literal, Optional, Type +from typing import Annotated, Dict, List, Literal, Optional, Type import attr from fastapi import HTTPException, Query from pydantic import ValidationError -from typing_extensions import Annotated from titiler.core.algorithm.base import ( # noqa AlgorithmMetadata, diff --git a/src/titiler/core/titiler/core/dependencies.py b/src/titiler/core/titiler/core/dependencies.py index 28af6ccf8..ed9eb6ef1 100644 --- a/src/titiler/core/titiler/core/dependencies.py +++ b/src/titiler/core/titiler/core/dependencies.py @@ -3,7 +3,17 @@ import json import warnings from dataclasses import dataclass, field -from typing import Callable, Dict, List, Literal, Optional, Sequence, Tuple, Union +from typing import ( + Annotated, + Callable, + Dict, + List, + Literal, + Optional, + Sequence, + Tuple, + Union, +) import numpy from fastapi import HTTPException, Query @@ -15,7 +25,6 @@ from rio_tiler.errors import MissingAssets, MissingBands from rio_tiler.types import RIOResampling, WarpResampling from starlette.requests import Request -from typing_extensions import Annotated from titiler.core.resources.enums import ImageType, MediaType from titiler.core.utils import accept_media_type diff --git a/src/titiler/core/titiler/core/factory.py b/src/titiler/core/titiler/core/factory.py index 7f0724cb8..9ed4d4cc2 100644 --- a/src/titiler/core/titiler/core/factory.py +++ b/src/titiler/core/titiler/core/factory.py @@ -6,6 +6,7 @@ import os import warnings from typing import ( + Annotated, Any, Callable, Dict, @@ -46,7 +47,6 @@ from starlette.routing import Route as APIRoute from starlette.routing import compile_path, replace_params from starlette.templating import Jinja2Templates -from typing_extensions import Annotated from titiler.core.algorithm import ( AlgorithmMetadata, diff --git a/src/titiler/core/titiler/core/models/OGC.py b/src/titiler/core/titiler/core/models/OGC.py index 39f2032f0..4356f1d88 100644 --- a/src/titiler/core/titiler/core/models/OGC.py +++ b/src/titiler/core/titiler/core/models/OGC.py @@ -1,11 +1,10 @@ """OGC models.""" from datetime import datetime -from typing import Dict, List, Literal, Optional, Set, Union +from typing import Annotated, Dict, List, Literal, Optional, Set, Union from morecantile.models import CRSType from pydantic import AnyUrl, BaseModel, Field, RootModel -from typing_extensions import Annotated from titiler.core.models.common import Link diff --git a/src/titiler/core/titiler/core/telemetry.py b/src/titiler/core/titiler/core/telemetry.py index a3463bfa6..547596f84 100644 --- a/src/titiler/core/titiler/core/telemetry.py +++ b/src/titiler/core/titiler/core/telemetry.py @@ -3,9 +3,7 @@ import functools import inspect from contextlib import contextmanager -from typing import Any, Callable, Dict, Iterator, Optional, TypeVar - -from typing_extensions import ParamSpec +from typing import Any, Callable, Dict, Iterator, Optional, ParamSpec, TypeVar from titiler.core import __version__ diff --git a/src/titiler/extensions/titiler/extensions/cogeo.py b/src/titiler/extensions/titiler/extensions/cogeo.py index da1f90d11..2d598ed60 100644 --- a/src/titiler/extensions/titiler/extensions/cogeo.py +++ b/src/titiler/extensions/titiler/extensions/cogeo.py @@ -1,8 +1,9 @@ """rio-cogeo Extension.""" +from typing import Annotated + from attrs import define from fastapi import Depends, Query -from typing_extensions import Annotated from titiler.core.factory import FactoryExtension, TilerFactory from titiler.core.resources.responses import JSONResponse diff --git a/src/titiler/extensions/titiler/extensions/render.py b/src/titiler/extensions/titiler/extensions/render.py index 0435e6474..a3593f897 100644 --- a/src/titiler/extensions/titiler/extensions/render.py +++ b/src/titiler/extensions/titiler/extensions/render.py @@ -4,13 +4,12 @@ See: https://github.com/stac-extensions/render """ -from typing import Dict, List, Optional +from typing import Annotated, Dict, List, Optional from urllib.parse import urlencode from attrs import define from fastapi import Depends, HTTPException, Path, Request from pydantic import BaseModel -from typing_extensions import Annotated from titiler.core.factory import FactoryExtension, MultiBaseTilerFactory from titiler.core.models.OGC import Link diff --git a/src/titiler/extensions/titiler/extensions/stac.py b/src/titiler/extensions/titiler/extensions/stac.py index af2723368..300f0b935 100644 --- a/src/titiler/extensions/titiler/extensions/stac.py +++ b/src/titiler/extensions/titiler/extensions/stac.py @@ -1,10 +1,10 @@ """rio-stac Extension.""" -from typing import Any, Dict, List, Literal, Optional +from typing import Annotated, Any, Dict, List, Literal, Optional from attrs import define from fastapi import Depends, Query -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict from titiler.core.factory import FactoryExtension, TilerFactory diff --git a/src/titiler/mosaic/tests/test_factory.py b/src/titiler/mosaic/tests/test_factory.py index 32fe9c8cb..e8ad1b992 100644 --- a/src/titiler/mosaic/tests/test_factory.py +++ b/src/titiler/mosaic/tests/test_factory.py @@ -5,7 +5,7 @@ from contextlib import contextmanager from dataclasses import dataclass from io import BytesIO -from typing import List, Optional +from typing import Annotated, List, Optional from unittest.mock import patch import attr @@ -16,7 +16,6 @@ from fastapi import FastAPI, Query from rio_tiler.mosaic.methods import PixelSelectionMethod from starlette.testclient import TestClient -from typing_extensions import Annotated from titiler.core.dependencies import DefaultDependency from titiler.core.resources.enums import OptionalHeader diff --git a/src/titiler/mosaic/titiler/mosaic/factory.py b/src/titiler/mosaic/titiler/mosaic/factory.py index 93b916de2..e692a9d79 100644 --- a/src/titiler/mosaic/titiler/mosaic/factory.py +++ b/src/titiler/mosaic/titiler/mosaic/factory.py @@ -2,7 +2,19 @@ import logging import os -from typing import Any, Callable, Dict, List, Literal, Optional, Set, Tuple, Type, Union +from typing import ( + Annotated, + Any, + Callable, + Dict, + List, + Literal, + Optional, + Set, + Tuple, + Type, + Union, +) from urllib.parse import urlencode import rasterio @@ -25,7 +37,6 @@ from starlette.requests import Request from starlette.responses import HTMLResponse, Response from starlette.routing import NoMatchFound -from typing_extensions import Annotated from titiler.core.algorithm import BaseAlgorithm from titiler.core.algorithm import algorithms as available_algorithms diff --git a/src/titiler/xarray/titiler/xarray/dependencies.py b/src/titiler/xarray/titiler/xarray/dependencies.py index 71483bf0d..758a2ffb7 100644 --- a/src/titiler/xarray/titiler/xarray/dependencies.py +++ b/src/titiler/xarray/titiler/xarray/dependencies.py @@ -1,14 +1,13 @@ """titiler.xarray dependencies.""" from dataclasses import dataclass -from typing import List, Literal, Optional, Union +from typing import Annotated, List, Literal, Optional, Union import numpy from fastapi import Query from pydantic import Field from pydantic.types import StringConstraints from rio_tiler.types import RIOResampling, WarpResampling -from typing_extensions import Annotated from titiler.core.dependencies import DefaultDependency diff --git a/src/titiler/xarray/titiler/xarray/extensions.py b/src/titiler/xarray/titiler/xarray/extensions.py index 84357fb05..b01fda04e 100644 --- a/src/titiler/xarray/titiler/xarray/extensions.py +++ b/src/titiler/xarray/titiler/xarray/extensions.py @@ -1,14 +1,14 @@ """titiler.xarray Extensions.""" import warnings -from typing import Callable, Dict, List, Optional, Type +from typing import Annotated, Callable, Dict, List, Optional, Type import xarray from attrs import define from fastapi import Depends, Query from rio_tiler.constants import WGS84_CRS from starlette.responses import HTMLResponse -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict from titiler.core.dependencies import DefaultDependency from titiler.core.factory import FactoryExtension diff --git a/src/titiler/xarray/titiler/xarray/factory.py b/src/titiler/xarray/titiler/xarray/factory.py index e9adca8c1..bbe2510d3 100644 --- a/src/titiler/xarray/titiler/xarray/factory.py +++ b/src/titiler/xarray/titiler/xarray/factory.py @@ -2,7 +2,7 @@ import logging import warnings -from typing import Any, Callable, Optional, Type, Union +from typing import Annotated, Any, Callable, Optional, Type, Union import rasterio from attrs import define @@ -11,7 +11,6 @@ from rio_tiler.constants import WGS84_CRS from rio_tiler.io import XarrayReader from rio_tiler.models import Info -from typing_extensions import Annotated from titiler.core.dependencies import ( BidxParams,