Skip to content

Commit 8b07588

Browse files
committed
fix tiles LinkType type (#2331)
1 parent 3f15542 commit 8b07588

6 files changed

Lines changed: 103 additions & 43 deletions

File tree

pygeoapi/models/provider/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,14 @@ class TwoDBoundingBoxType(BaseModel):
153153
class LinkType(BaseModel):
154154
href: str
155155
rel: Optional[str] = None
156-
type_: Optional[str] = None
156+
type_: Optional[str] = pydantic.Field(alias='type')
157157
hreflang: Optional[str] = None
158158
title: Optional[str] = None
159159
length: Optional[int] = None
160160

161+
class Config:
162+
populate_by_name = True
163+
161164

162165
class GeospatialDataType(BaseModel):
163166
id: Optional[str] = None

pygeoapi/provider/mvt_elastic.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# =================================================================
22
#
33
# Authors: Joana Simoes <jo@byteroad.net>
4+
# Tom Kralidis <tomkralidis@gmail.com>
45
#
56
# Copyright (c) 2023 Joana Simoes
7+
# Copyright (c) 2026 Tom Kralidis
68
#
79
# Permission is hereby granted, free of charge, to any person
810
# obtaining a copy of this software and associated documentation
@@ -237,10 +239,14 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
237239
tiling_scheme_url_type = "application/json"
238240
tiling_scheme_url_title = f'{schema.tileMatrixSet} tile matrix set definition' # noqa
239241

240-
tiling_scheme = LinkType(href=tiling_scheme_url,
241-
rel="http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme", # noqa
242-
type_=tiling_scheme_url_type,
243-
title=tiling_scheme_url_title)
242+
link = {
243+
'href': tiling_scheme_url,
244+
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme', # noqa
245+
'type': tiling_scheme_url_type,
246+
'title': tiling_scheme_url_title
247+
}
248+
249+
tiling_scheme = LinkType(**link)
244250

245251
if tiling_scheme is None:
246252
msg = f'Could not identify a valid tiling schema' # noqa
@@ -254,13 +260,19 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
254260
links = []
255261
service_url_link_type = "application/vnd.mapbox-vector-tile"
256262
service_url_link_title = f'{tileset} vector tiles for {layer}'
257-
service_url_link = LinkType(href=service_url, rel="item",
258-
type_=service_url_link_type,
259-
title=service_url_link_title)
263+
264+
link = {
265+
'href': service_url,
266+
'rel': 'item',
267+
'type': service_url_link_type,
268+
'title': service_url_link_title
269+
}
270+
271+
service_url_link = LinkType(**link)
260272

261273
links.append(tiling_scheme)
262274
links.append(service_url_link)
263275

264276
content.links = links
265277

266-
return content.model_dump(exclude_none=True)
278+
return content.model_dump(exclude_none=True, by_alias=True)

pygeoapi/provider/mvt_postgresql.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
# Tanvi Prasad <tanvi.prasad@cdpg.org.in>
55
# Bryan Robert <bryan.robert@cdpg.org.in>
66
# Benjamin Webb <bwebb@lincolninst.edu>
7+
# Tom Kralidis <tomkralidis@gmail.com>
78
#
89
# Copyright (c) 2025 Prajwal Amaravati
910
# Copyright (c) 2025 Tanvi Prasad
1011
# Copyright (c) 2025 Bryan Robert
1112
# Copyright (c) 2025 Benjamin Webb
13+
# Copyright (c) 2026 Tom Kralidis
1214
#
1315
# Permission is hereby granted, free of charge, to any person
1416
# obtaining a copy of this software and associated documentation
@@ -229,11 +231,14 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
229231
tiling_scheme_url_type = 'application/json'
230232
tiling_scheme_url_title = f'{schema.tileMatrixSet} tile matrix set definition' # noqa
231233

232-
tiling_scheme = LinkType(
233-
href=tiling_scheme_url,
234-
rel='http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme',
235-
type_=tiling_scheme_url_type,
236-
title=tiling_scheme_url_title)
234+
link = {
235+
'href': tiling_scheme_url,
236+
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme', # noqa
237+
'type': tiling_scheme_url_type,
238+
'title': tiling_scheme_url_title
239+
}
240+
241+
tiling_scheme = LinkType(**link)
237242

238243
if tiling_scheme is None:
239244
msg = 'Could not identify a valid tiling schema'
@@ -247,16 +252,22 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
247252
links = []
248253
service_url_link_type = 'application/vnd.mapbox-vector-tile'
249254
service_url_link_title = f'{tileset} vector tiles for {layer}'
250-
service_url_link = LinkType(href=service_url, rel='item',
251-
type_=service_url_link_type,
252-
title=service_url_link_title)
255+
256+
link = {
257+
'href': service_url,
258+
'rel': 'item',
259+
'type': service_url_link_type,
260+
'title': service_url_link_title
261+
}
262+
263+
service_url_link = LinkType(**link)
253264

254265
links.append(tiling_scheme)
255266
links.append(service_url_link)
256267

257268
content.links = links
258269

259-
return content.model_dump(exclude_none=True)
270+
return content.model_dump(exclude_none=True, by_alias=True)
260271

261272
@staticmethod
262273
def get_envelope(z, y, x, tileset):

pygeoapi/provider/mvt_proxy.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# =================================================================
22
#
33
# Authors: Antonio Cerciello <ant@byteroad.net>
4+
# Tom Kralidis <tomkralidis@gmail.com>
45
#
56
# Copyright (c) 2024 Antonio Cerciello
7+
# Copyright (c) 2026 Tom Kralidis
68
#
79
# Permission is hereby granted, free of charge, to any person
810
# obtaining a copy of this software and associated documentation
@@ -233,10 +235,14 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
233235
tiling_scheme_url_type = "application/json"
234236
tiling_scheme_url_title = f'{schema.tileMatrixSet} tile matrix set definition' # noqa
235237

236-
tiling_scheme = LinkType(href=tiling_scheme_url,
237-
rel="http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme", # noqa
238-
type_=tiling_scheme_url_type,
239-
title=tiling_scheme_url_title)
238+
link = {
239+
'href': tiling_scheme_url,
240+
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme', # noqa
241+
'type': tiling_scheme_url_type,
242+
'title': tiling_scheme_url_title
243+
}
244+
245+
tiling_scheme = LinkType(**link)
240246

241247
if tiling_scheme is None:
242248
msg = f'Could not identify a valid tiling schema' # noqa
@@ -250,13 +256,19 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
250256
links = []
251257
service_url_link_type = "application/vnd.mapbox-vector-tile"
252258
service_url_link_title = f'{tileset} vector tiles for {layer}'
253-
service_url_link = LinkType(href=service_url, rel="item",
254-
type_=service_url_link_type,
255-
title=service_url_link_title)
259+
260+
link = {
261+
'href': service_url,
262+
'rel': 'item',
263+
'type': service_url_link_type,
264+
'title': service_url_link_title
265+
}
266+
267+
service_url_link = LinkType(**link)
256268

257269
links.append(tiling_scheme)
258270
links.append(service_url_link)
259271

260272
content.links = links
261273

262-
return content.model_dump(exclude_none=True)
274+
return content.model_dump(exclude_none=True, by_alias=True)

pygeoapi/provider/mvt_tippecanoe.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22
#
33
# Authors: Joana Simoes <jo@byteroad.net>
44
# Francesco Bartoli <xbartolone@gmail.com>
5+
# Tom Kralidis <tomkralidis@gmail.com>
56
#
67
# Copyright (c) 2023 Joana Simoes
78
# Copyright (c) 2025 Francesco Bartoli
9+
# Copyright (c) 2026 Tom Kralidis
810
#
911
# Permission is hereby granted, free of charge, to any person
1012
# obtaining a copy of this software and associated documentation
@@ -338,10 +340,14 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
338340
tiling_scheme_url_type = "application/json"
339341
tiling_scheme_url_title = f'{schema.tileMatrixSet} tile matrix set definition' # noqa
340342

341-
tiling_scheme = LinkType(href=tiling_scheme_url,
342-
rel="http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme", # noqa
343-
type_=tiling_scheme_url_type,
344-
title=tiling_scheme_url_title)
343+
link = {
344+
'href': tiling_scheme_url,
345+
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme', # noqa
346+
'type': tiling_scheme_url_type,
347+
'title': tiling_scheme_url_title
348+
}
349+
350+
tiling_scheme = LinkType(**link)
345351

346352
if tiling_scheme is None:
347353
msg = "Could not identify a valid tiling schema"
@@ -356,16 +362,22 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
356362

357363
service_url_link_type = "application/vnd.mapbox-vector-tile"
358364
service_url_link_title = f'{tileset} vector tiles for {layer}'
359-
service_url_link = LinkType(href=service_url, rel="item",
360-
type_=service_url_link_type,
361-
title=service_url_link_title)
365+
366+
link = {
367+
'href': service_url,
368+
'rel': 'item',
369+
'title': service_url_link_title,
370+
'type': service_url_link_type
371+
}
372+
373+
service_url_link = LinkType(**link)
362374

363375
links.append(tiling_scheme)
364376
links.append(service_url_link)
365377

366378
content.links = links
367379

368-
return content.model_dump(exclude_none=True)
380+
return content.model_dump(exclude_none=True, by_alias=True)
369381

370382
def get_vendor_metadata(self, dataset, server_url, layer, tileset,
371383
title, description, keywords, **kwargs):

pygeoapi/provider/wmts_facade.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# Authors: Simon Seyock <simonseyock@gmail.com>
66
#
77
# Copyright (c) 2025 Francesco Bartoli
8-
# Copyright (c) 2023 Tom Kralidis
8+
# Copyright (c) 2026 Tom Kralidis
99
#
1010
# Permission is hereby granted, free of charge, to any person
1111
# obtaining a copy of this software and associated documentation
@@ -269,10 +269,14 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
269269
tiling_scheme_url_type = "application/json"
270270
tiling_scheme_url_title = f'{schema.tileMatrixSet} tile matrix set definition' # noqa
271271

272-
tiling_scheme = LinkType(href=tiling_scheme_url,
273-
rel="http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme", # noqa
274-
type_=tiling_scheme_url_type,
275-
title=tiling_scheme_url_title)
272+
link = {
273+
'href': tiling_scheme_url,
274+
'rel': 'http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme', # noqa
275+
'type': tiling_scheme_url_type,
276+
'title': tiling_scheme_url_title
277+
}
278+
279+
tiling_scheme = LinkType(**link)
276280

277281
if tiling_scheme is None:
278282
msg = f'Could not identify a valid tiling schema' # noqa
@@ -285,13 +289,19 @@ def get_default_metadata(self, dataset, server_url, layer, tileset,
285289

286290
links = []
287291
service_url_link_title = f'{tileset} raster tiles for {dataset}'
288-
service_url_link = LinkType(href=service_url, rel="item",
289-
type_=self.mimetype,
290-
title=service_url_link_title)
292+
293+
link = {
294+
'href': service_url,
295+
'rel': 'item',
296+
'type': self.mimetype,
297+
'title': service_url_link_title
298+
}
299+
300+
service_url_link = LinkType(**link)
291301

292302
links.append(tiling_scheme)
293303
links.append(service_url_link)
294304

295305
content.links = links
296306

297-
return content.model_dump(exclude_none=True)
307+
return content.model_dump(exclude_none=True, by_alias=True)

0 commit comments

Comments
 (0)