Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use singular for enums #258

Merged
merged 3 commits into from
Mar 5, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
* update FastAPI requirements
* update minimal python version to 3.6

**breaking change**

* renamed `OptionalHeader`, `MimeTypes` and `ImageDrivers` to the singular form.
vincentsarago marked this conversation as resolved.
Show resolved Hide resolved

## 0.1.0 (2021-02-17)

* update FastAPI requirements
Expand Down
6 changes: 3 additions & 3 deletions tests/test_factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from titiler.dependencies import TMSParams, WebMercatorTMSParams
from titiler.endpoints import factory
from titiler.resources.enums import OptionalHeaders
from titiler.resources.enums import OptionalHeader

from .conftest import DATA_DIR

Expand All @@ -30,7 +30,7 @@ def test_TilerFactory():
assert len(cog.router.routes) == 17

app = FastAPI()
cog = factory.TilerFactory(optional_headers=[OptionalHeaders.server_timing])
cog = factory.TilerFactory(optional_headers=[OptionalHeader.server_timing])
app.include_router(cog.router)
client = TestClient(app)

Expand Down Expand Up @@ -87,7 +87,7 @@ def tmpmosaic():
def test_MosaicTilerFactory():
"""Test MosaicTilerFactory class."""
mosaic = factory.MosaicTilerFactory(
optional_headers=[OptionalHeaders.server_timing, OptionalHeaders.x_assets],
optional_headers=[OptionalHeader.server_timing, OptionalHeader.x_assets],
router_prefix="mosaic",
)
assert len(mosaic.router.routes) == 19
Expand Down
27 changes: 11 additions & 16 deletions titiler/endpoints/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,7 @@
)
from ..models.mapbox import TileJSON
from ..models.OGC import TileMatrixSetList
from ..resources.enums import (
ImageType,
MimeTypes,
OptionalHeaders,
PixelSelectionMethod,
)
from ..resources.enums import ImageType, MimeType, OptionalHeader, PixelSelectionMethod
from ..resources.responses import GeoJSONResponse, XMLResponse
from ..templates import templates

Expand Down Expand Up @@ -106,7 +101,7 @@ class BaseTilerFactory(metaclass=abc.ABCMeta):
gdal_config: Dict = field(default_factory=dict)

# add additional headers in response
optional_headers: List[OptionalHeaders] = field(default_factory=list)
optional_headers: List[OptionalHeader] = field(default_factory=list)

def __post_init__(self):
"""Post Init: register route and configure specific options."""
Expand Down Expand Up @@ -349,7 +344,7 @@ def tile(
)
timings.append(("format", round(t.elapsed * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)
Expand Down Expand Up @@ -516,7 +511,7 @@ def wmts(
"layer_name": "cogeo",
"media_type": tile_format.mimetype,
},
media_type=MimeTypes.xml.value,
media_type=MimeType.xml.value,
)

############################################################################
Expand Down Expand Up @@ -553,7 +548,7 @@ def point(
)
timings.append(("dataread", round(t.elapsed * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
response.headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)
Expand Down Expand Up @@ -616,7 +611,7 @@ def preview(
)
timings.append(("format", round(t.elapsed * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)
Expand Down Expand Up @@ -684,7 +679,7 @@ def part(
)
timings.append(("format", round(t.elapsed * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)
Expand Down Expand Up @@ -1140,12 +1135,12 @@ def tile(
)
timings.append(("format", round(t.elapsed * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)

if OptionalHeaders.x_assets in self.optional_headers:
if OptionalHeader.x_assets in self.optional_headers:
headers["X-Assets"] = ",".join(data.assets)

return Response(content, media_type=format.mimetype, headers=headers)
Expand Down Expand Up @@ -1308,7 +1303,7 @@ def wmts(
"layer_name": "cogeo",
"media_type": tile_format.mimetype,
},
media_type=MimeTypes.xml.value,
media_type=MimeType.xml.value,
)

############################################################################
Expand Down Expand Up @@ -1354,7 +1349,7 @@ def point(
)
timings.append(("dataread", round((t.elapsed - mosaic_read) * 1000, 2)))

if OptionalHeaders.server_timing in self.optional_headers:
if OptionalHeader.server_timing in self.optional_headers:
response.headers["Server-Timing"] = ", ".join(
[f"{name};dur={time}" for (name, time) in timings]
)
Expand Down
4 changes: 2 additions & 2 deletions titiler/models/OGC.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from pydantic import AnyHttpUrl, BaseModel

from ..resources.enums import MimeTypes
from ..resources.enums import MimeType


class TileMatrixSetLink(BaseModel):
Expand All @@ -18,7 +18,7 @@ class TileMatrixSetLink(BaseModel):

href: AnyHttpUrl
rel: str = "item"
type: MimeTypes = MimeTypes.json
type: MimeType = MimeType.json

class Config:
"""Config for model."""
Expand Down
18 changes: 9 additions & 9 deletions titiler/resources/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
from rio_tiler.profiles import img_profiles


class MimeTypes(str, Enum):
"""Responses MineTypes."""
class MimeType(str, Enum):
"""Responses MineType."""

tif = "image/tiff; application=geotiff"
jp2 = "image/jp2"
Expand All @@ -24,8 +24,8 @@ class MimeTypes(str, Enum):
text = "text/plain"


class ImageDrivers(str, Enum):
"""Rio-tiler supported output drivers."""
class ImageDriver(str, Enum):
"""Supported output GDAL drivers."""

jpeg = "JPEG"
png = "PNG"
Expand Down Expand Up @@ -55,16 +55,16 @@ def profile(self):
@DynamicClassAttribute
def driver(self):
"""Return rio-tiler image default profile."""
return ImageDrivers[self._name_].value
return ImageDriver[self._name_].value

@DynamicClassAttribute
def mimetype(self):
"""Return image mimetype."""
return MimeTypes[self._name_].value
return MimeType[self._name_].value


class PixelSelectionMethod(str, Enum):
"""rio-tiler-mosaic pixel selection methods"""
"""rio-tiler.mosaic pixel selection methods"""

first = "first"
highest = "highest"
Expand All @@ -79,8 +79,8 @@ def method(self):
return getattr(defaults, f"{self._value_.title()}Method")


class OptionalHeaders(str, Enum):
"""Optional Headers in responses."""
class OptionalHeader(str, Enum):
"""Optional Header to add in responses."""

server_timing = "Server-Timing"
x_assets = "X-Assets"