From: Sarah Hoffmann Date: Fri, 29 Dec 2023 19:55:33 +0000 (+0100) Subject: update typing for latest changes in SQLAlchemy X-Git-Tag: v4.4.0~36 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/93afe5a7c3674a48fff4593634506514deb7ab72 update typing for latest changes in SQLAlchemy --- diff --git a/nominatim/api/results.py b/nominatim/api/results.py index 829008fb..9b67c51a 100644 --- a/nominatim/api/results.py +++ b/nominatim/api/results.py @@ -590,7 +590,7 @@ async def complete_address_details(conn: SearchConnection, results: List[BaseRes return ltab = sa.func.JsonArrayEach(sa.type_coerce(lookup_ids, sa.JSON))\ - .table_valued(sa.column('value', type_=sa.JSON)) # type: ignore[no-untyped-call] + .table_valued(sa.column('value', type_=sa.JSON)) t = conn.t.placex taddr = conn.t.addressline @@ -653,7 +653,7 @@ async def complete_address_details(conn: SearchConnection, results: List[BaseRes parent_lookup_ids = list(filter(lambda e: e['pid'] != e['lid'], lookup_ids)) if parent_lookup_ids: ltab = sa.func.JsonArrayEach(sa.type_coerce(parent_lookup_ids, sa.JSON))\ - .table_valued(sa.column('value', type_=sa.JSON)) # type: ignore[no-untyped-call] + .table_valued(sa.column('value', type_=sa.JSON)) sql = sa.select(ltab.c.value['pid'].as_integer().label('src_place_id'), t.c.place_id, t.c.osm_type, t.c.osm_id, t.c.name, t.c.class_, t.c.type, t.c.extratags, diff --git a/nominatim/api/search/db_searches.py b/nominatim/api/search/db_searches.py index ee98100c..cc352134 100644 --- a/nominatim/api/search/db_searches.py +++ b/nominatim/api/search/db_searches.py @@ -7,7 +7,7 @@ """ Implementation of the acutal database accesses for forward search. """ -from typing import List, Tuple, AsyncIterator, Dict, Any, Callable +from typing import List, Tuple, AsyncIterator, Dict, Any, Callable, cast import abc import sqlalchemy as sa @@ -190,7 +190,7 @@ def _int_list_to_subquery(inp: List[int]) -> 'sa.Subquery': as rows in the column 'nr'. """ vtab = sa.func.JsonArrayEach(sa.type_coerce(inp, sa.JSON))\ - .table_valued(sa.column('value', type_=sa.JSON)) # type: ignore[no-untyped-call] + .table_valued(sa.column('value', type_=sa.JSON)) return sa.select(sa.cast(sa.cast(vtab.c.value, sa.Text), sa.Integer).label('nr')).subquery() @@ -656,7 +656,7 @@ class PlaceSearch(AbstractSearch): .where(tpc.c.postcode.in_(pcs))\ .scalar_subquery() penalty += sa.case((t.c.postcode.in_(pcs), 0.0), - else_=sa.func.coalesce(pc_near, 2.0)) + else_=sa.func.coalesce(pc_near, cast(SaColumn, 2.0))) if details.viewbox is not None: if details.bounded_viewbox: diff --git a/nominatim/db/sqlalchemy_functions.py b/nominatim/db/sqlalchemy_functions.py index e2437dd2..f576d32f 100644 --- a/nominatim/db/sqlalchemy_functions.py +++ b/nominatim/db/sqlalchemy_functions.py @@ -55,7 +55,7 @@ class IntersectsReverseDistance(sa.sql.functions.GenericFunction[Any]): inherit_cache = True def __init__(self, table: sa.Table, geom: SaColumn) -> None: - super().__init__(table.c.geometry, # type: ignore[no-untyped-call] + super().__init__(table.c.geometry, table.c.rank_search, geom) self.tablename = table.name @@ -122,7 +122,7 @@ class IsAddressPoint(sa.sql.functions.GenericFunction[Any]): inherit_cache = True def __init__(self, table: sa.Table) -> None: - super().__init__(table.c.rank_address, # type: ignore[no-untyped-call] + super().__init__(table.c.rank_address, table.c.housenumber, table.c.name)