Skip to content

Commit 64929e5

Browse files
committed
Fix typing issues
1 parent 689c160 commit 64929e5

File tree

5 files changed

+62
-64
lines changed

5 files changed

+62
-64
lines changed

api/false_positive_utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,7 @@ async def _get(
5656
)
5757
marker = await db.fetchrow(sql, status, uuid)
5858

59-
return (marker, columns)
59+
return (
60+
dict(marker) if marker is not None else None,
61+
columns,
62+
)

api/issues_tiles.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, List, Optional
1+
from typing import Any, Dict, List
22

33
from asyncpg import Connection
44
from fastapi import APIRouter, Depends, HTTPException, Request, Response
@@ -51,20 +51,15 @@ def _errors_geojson(
5151
return features_collection
5252

5353

54-
@router.get(
55-
"/0.3/issues/{z}/{x}/{y}.heat.mvt",
56-
response_class=MVTResponse,
57-
response_model=None,
58-
tags=["tiles"],
59-
)
54+
@router.get("/0.3/issues/{z}/{x}/{y}.heat.mvt", tags=["tiles"])
6055
async def heat(
6156
request: Request,
6257
z: int,
6358
x: int,
6459
y: int,
6560
db: Connection = Depends(database.db),
6661
params=Depends(commons_params.params),
67-
) -> Optional[Response]:
62+
) -> Response:
6863
COUNT = 32
6964

7065
lon1, lat2 = tiles.tile2lonlat(x, y, z)
@@ -76,9 +71,9 @@ async def heat(
7671
params.zoom = z
7772

7873
if params.zoom > 18:
79-
return None
74+
return Response(status_code=204)
8075

81-
limit = await db.fetchrow(
76+
limit = await db.fetchval(
8277
"""
8378
SELECT
8479
SUM((SELECT SUM(t) FROM UNNEST(number) t))
@@ -88,9 +83,7 @@ async def heat(
8883
"""
8984
+ items
9085
)
91-
if limit and limit[0]:
92-
limit = float(limit[0])
93-
else:
86+
if limit is None:
9487
raise HTTPException(status_code=404)
9588

9689
join, where, sql_params = query._build_param(
@@ -199,13 +192,13 @@ async def _issues(
199192
) -> List[Dict[str, Any]]:
200193
params = _issues_params(z, x, y, db, params)
201194

202-
if params.zoom > 18 or params.zoom < 7:
195+
if params.zoom is None or params.zoom > 18 or params.zoom < 7:
203196
return []
204197

205198
return await query._gets(db, params)
206199

207200

208-
@router.get("/0.3/issues/{z}/{x}/{y}.mvt", response_class=MVTResponse, tags=["tiles"])
201+
@router.get("/0.3/issues/{z}/{x}/{y}.mvt", tags=["tiles"])
209202
async def issues_mvt(
210203
z: int,
211204
x: int,
@@ -215,30 +208,28 @@ async def issues_mvt(
215208
) -> Response:
216209
params = _issues_params(z, x, y, db, params)
217210

218-
if params.zoom > 18 or params.zoom < 7:
211+
if params.zoom is None or params.zoom > 18 or params.zoom < 7:
219212
return Response(status_code=204)
220213

221-
results = await query._gets(db, params, mvt=True)
214+
results = await query._gets_mvt(db, params)
222215
if results is None or len(results) == 0:
223216
return Response(status_code=204)
224217
else:
225218
return MVTResponse(results)
226219

227220

228-
@router.get(
229-
"/0.3/issues/{z}/{x}/{y}.geojson", response_class=GeoJSONResponse, tags=["tiles"]
230-
)
221+
@router.get("/0.3/issues/{z}/{x}/{y}.geojson", tags=["tiles"])
231222
async def issues_geojson(
232223
z: int,
233224
x: int,
234225
y: int,
235226
db: Connection = Depends(database.db),
236227
params: commons_params.Params = Depends(commons_params.params),
237-
) -> GeoJSONFeatureCollection:
228+
) -> Response:
238229
params = _issues_params(z, x, y, db, params)
239230

240-
if params.zoom > 18 or params.zoom < 7:
231+
if params.zoom is None or params.zoom > 18 or params.zoom < 7:
241232
return Response(status_code=204)
242233

243234
results = await query._gets(db, params)
244-
return _errors_geojson(results, z, params.limit)
235+
return GeoJSONResponse(_errors_geojson(results, z, params.limit))

control/insight.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ async def updates(
2626
ORDER BY
2727
updates_last.timestamp DESC
2828
"""
29-
return dict(list=await db.fetch(sql))
29+
return dict(list=await db.fetch(sql)) # type: ignore
3030

3131

3232
@router.get("/update_matrix.json", tags=["insight"])
@@ -268,4 +268,4 @@ async def update(
268268
ORDER BY
269269
timestamp DESC
270270
"""
271-
return dict(list=await db.fetch(sql, source))
271+
return dict(list=await db.fetch(sql, source)) # type: ignore

modules/query.py

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime
2-
from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
2+
from typing import Any, Dict, Iterable, List, Optional, Tuple
33

44
from asyncpg import Connection
55

@@ -260,9 +260,7 @@ def fixes_default(fixes: List[List[Dict[str, Any]]]) -> List[List[Dict[str, Any]
260260
)
261261

262262

263-
async def _gets(
264-
db: Connection, params: Params, mvt: bool = False
265-
) -> Union[List[Dict[str, Any]], bytes]:
263+
def _get_sql(db: Connection, params: Params) -> Tuple[str, List[Any]]:
266264
sqlbase = """
267265
SELECT
268266
uuid_to_bigint(uuid) as id,
@@ -337,40 +335,46 @@ async def _gets(
337335
${len(sql_params)}"""
338336

339337
sql = sqlbase % (join, where)
338+
return (sql, sql_params)
339+
340+
341+
async def _gets_mvt(db: Connection, params: Params) -> bytes:
342+
sql, sql_params = _get_sql(db, params)
343+
sql_params.extend([params.limit, params.zoom, params.tilex, params.tiley])
344+
sql = f"""
345+
WITH
346+
query AS ({sql}),
347+
issues AS (
348+
SELECT
349+
(id >> 32)::integer AS id, uuid, coalesce(item, 0) AS item, coalesce(class, 0) AS class,
350+
ST_AsMVTGeom(
351+
ST_Transform(ST_SetSRID(ST_MakePoint(lon, lat), 4326), 3857),
352+
ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)}),
353+
4096, 0, false
354+
) AS geom
355+
FROM query
356+
),
357+
limit_ AS (
358+
SELECT
359+
ST_AsMVTGeom(
360+
ST_Centroid(ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)})),
361+
ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)}),
362+
4096, 0, false
363+
) AS geom
364+
WHERE (SELECT COUNT(*) FROM query) >= ${len(sql_params)-3}
365+
),
366+
layers AS (
367+
SELECT ST_AsMVT(issues, 'issues', 4096, 'geom', 'id') AS layer FROM issues
368+
UNION ALL
369+
SELECT ST_AsMVT(limit_, 'limit', 4096, 'geom') AS layer FROM limit_
370+
)
371+
SELECT string_agg(layer, ''::bytea) FROM layers
372+
"""
373+
return await db.fetchval(sql, *sql_params)
340374

341-
if mvt:
342-
sql_params.extend([params.limit, params.zoom, params.tilex, params.tiley])
343-
sql = f"""
344-
WITH
345-
query AS ({sql}),
346-
issues AS (
347-
SELECT
348-
(id >> 32)::integer AS id, uuid, coalesce(item, 0) AS item, coalesce(class, 0) AS class,
349-
ST_AsMVTGeom(
350-
ST_Transform(ST_SetSRID(ST_MakePoint(lon, lat), 4326), 3857),
351-
ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)}),
352-
4096, 0, false
353-
) AS geom
354-
FROM query
355-
),
356-
limit_ AS (
357-
SELECT
358-
ST_AsMVTGeom(
359-
ST_Centroid(ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)})),
360-
ST_TileEnvelope(${len(sql_params)-2}, ${len(sql_params)-1}, ${len(sql_params)}),
361-
4096, 0, false
362-
) AS geom
363-
WHERE (SELECT COUNT(*) FROM query) >= ${len(sql_params)-3}
364-
),
365-
layers AS (
366-
SELECT ST_AsMVT(issues, 'issues', 4096, 'geom', 'id') AS layer FROM issues
367-
UNION ALL
368-
SELECT ST_AsMVT(limit_, 'limit', 4096, 'geom') AS layer FROM limit_
369-
)
370-
SELECT string_agg(layer, ''::bytea) FROM layers
371-
"""
372-
return await db.fetchval(sql, *sql_params)
373375

376+
async def _gets(db: Connection, params: Params) -> List[Dict[str, Any]]:
377+
sql, sql_params = _get_sql(db, params)
374378
results = list(await db.fetch(sql, *sql_params))
375379
return list(
376380
map(

modules/query_meta.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ async def _items(
103103
items = await db.fetch(sql, *sql_params)
104104
items = list(
105105
map(
106-
lambda r: dict(
106+
lambda r: dict( # type: ignore
107107
r,
108108
title=i10n_select(r["title"], langs),
109109
levels=r["number"]
@@ -155,7 +155,7 @@ async def _items(
155155
classses = await db.fetch(sql, *sql_params)
156156
classses = list(
157157
map(
158-
lambda c: dict(
158+
lambda c: dict( # type: ignore
159159
dict(c),
160160
title=i10n_select(c["title"], langs),
161161
detail=i10n_select(c["detail"], langs),

0 commit comments

Comments
 (0)