5
5
import pathlib
6
6
import warnings
7
7
import xml .etree .ElementTree as ET
8
- from dataclasses import dataclass
9
8
from enum import Enum
10
9
from io import BytesIO
11
10
from typing import Dict , Optional , Type
12
11
from unittest .mock import patch
13
12
from urllib .parse import urlencode
14
13
15
- import attr
16
14
import httpx
17
15
import morecantile
18
16
import numpy
19
17
import pytest
18
+ from attrs import define , field
20
19
from fastapi import Depends , FastAPI , HTTPException , Path , Query , security , status
21
20
from morecantile .defaults import TileMatrixSets
22
21
from rasterio .crs import CRS
31
30
from titiler .core .errors import DEFAULT_STATUS_CODES , add_exception_handlers
32
31
from titiler .core .factory import (
33
32
AlgorithmFactory ,
34
- BaseTilerFactory ,
33
+ BaseFactory ,
35
34
ColorMapFactory ,
36
35
MultiBandTilerFactory ,
37
36
MultiBaseTilerFactory ,
49
48
def test_TilerFactory ():
50
49
"""Test TilerFactory class."""
51
50
cog = TilerFactory ()
52
- assert len (cog .router .routes ) == 27
51
+ assert len (cog .router .routes ) == 20
53
52
assert len (cog .supported_tms .list ()) == NB_DEFAULT_TMS
54
53
55
54
cog = TilerFactory (router_prefix = "something" , supported_tms = WEB_TMS )
@@ -76,7 +75,7 @@ def test_TilerFactory():
76
75
assert response .status_code == 422
77
76
78
77
cog = TilerFactory (add_preview = False , add_part = False , add_viewer = False )
79
- assert len (cog .router .routes ) == 18
78
+ assert len (cog .router .routes ) == 12
80
79
81
80
app = FastAPI ()
82
81
cog = TilerFactory ()
@@ -723,7 +722,7 @@ def test_MultiBaseTilerFactory(rio):
723
722
rio .open = mock_rasterio_open
724
723
725
724
stac = MultiBaseTilerFactory (reader = STACReader )
726
- assert len (stac .router .routes ) == 29
725
+ assert len (stac .router .routes ) == 22
727
726
728
727
app = FastAPI ()
729
728
app .include_router (stac .router )
@@ -1045,20 +1044,20 @@ def test_MultiBaseTilerFactory(rio):
1045
1044
assert "(B09 - B01) / (B09 + B01)" in props
1046
1045
1047
1046
1048
- @attr . s
1047
+ @define
1049
1048
class BandFileReader (MultiBandReader ):
1050
1049
"""Test MultiBand"""
1051
1050
1052
- input : str = attr . ib ()
1053
- tms : morecantile .TileMatrixSet = attr . ib (
1051
+ input : str = field ()
1052
+ tms : morecantile .TileMatrixSet = field (
1054
1053
default = morecantile .tms .get ("WebMercatorQuad" )
1055
1054
)
1056
- reader_options : Dict = attr . ib (factory = dict )
1055
+ reader_options : Dict = field (factory = dict )
1057
1056
1058
- reader : Type [BaseReader ] = attr . ib (default = Reader )
1057
+ reader : Type [BaseReader ] = field (default = Reader )
1059
1058
1060
- minzoom : int = attr . ib ()
1061
- maxzoom : int = attr . ib ()
1059
+ minzoom : int = field ()
1060
+ maxzoom : int = field ()
1062
1061
1063
1062
@minzoom .default
1064
1063
def _minzoom (self ):
@@ -1093,7 +1092,7 @@ def test_MultiBandTilerFactory():
1093
1092
bands = MultiBandTilerFactory (
1094
1093
reader = BandFileReader , path_dependency = CustomPathParams
1095
1094
)
1096
- assert len (bands .router .routes ) == 28
1095
+ assert len (bands .router .routes ) == 21
1097
1096
1098
1097
app = FastAPI ()
1099
1098
app .include_router (bands .router )
@@ -1465,7 +1464,7 @@ def must_be_bob(credentials: security.HTTPBasicCredentials = Depends(http_basic)
1465
1464
],
1466
1465
router_prefix = "something" ,
1467
1466
)
1468
- assert len (cog .router .routes ) == 27
1467
+ assert len (cog .router .routes ) == 20
1469
1468
1470
1469
app = FastAPI ()
1471
1470
app .include_router (cog .router , prefix = "/something" )
@@ -1614,8 +1613,8 @@ def test_algorithm():
1614
1613
def test_path_param_in_prefix ():
1615
1614
"""Test path params in prefix."""
1616
1615
1617
- @dataclass
1618
- class EndpointFactory (BaseTilerFactory ):
1616
+ @define
1617
+ class EndpointFactory (BaseFactory ):
1619
1618
def register_routes (self ):
1620
1619
"""register endpoints."""
1621
1620
@@ -1632,7 +1631,7 @@ def route1(param1: int = Path(...), param2: str = Path(...)):
1632
1631
return {"value" : param2 }
1633
1632
1634
1633
app = FastAPI ()
1635
- endpoints = EndpointFactory (reader = Reader , router_prefix = "/prefixed/{param1}" )
1634
+ endpoints = EndpointFactory (router_prefix = "/prefixed/{param1}" )
1636
1635
app .include_router (endpoints .router , prefix = "/prefixed/{param1}" )
1637
1636
client = TestClient (app )
1638
1637
0 commit comments