make types compatible with older Python versions

This commit is contained in:
Sarah Hoffmann
2023-07-02 23:05:15 +02:00
parent cc7646665c
commit 17a65d82bb
2 changed files with 9 additions and 4 deletions

View File

@@ -12,6 +12,7 @@ from contextvars import ContextVar
import datetime as dt
import textwrap
import io
import re
import sqlalchemy as sa
from sqlalchemy.ext.asyncio import AsyncConnection
@@ -103,6 +104,9 @@ class BaseLogger:
except TypeError:
return sqlstr
# Fixes an odd issue with Python 3.7 where percentages are not
# quoted correctly.
sqlstr = re.sub(r'%(?!\()', '%%', sqlstr)
return sqlstr % params

View File

@@ -7,7 +7,8 @@
"""
Custom types for SQLAlchemy.
"""
from typing import Callable, Any
from typing import Callable, Any, cast
import sys
import sqlalchemy as sa
from sqlalchemy import types
@@ -16,7 +17,7 @@ from nominatim.typing import SaColumn, SaBind
#pylint: disable=all
class Geometry(types.UserDefinedType[Any]):
class Geometry(types.UserDefinedType): # type: ignore[type-arg]
""" Simplified type decorator for PostGIS geometry. This type
only supports geometries in 4326 projection.
"""
@@ -35,7 +36,7 @@ class Geometry(types.UserDefinedType[Any]):
if isinstance(value, str):
return 'SRID=4326;' + value
return 'SRID=4326;' + value.to_wkt()
return 'SRID=4326;' + cast(str, value.to_wkt())
return process
@@ -50,7 +51,7 @@ class Geometry(types.UserDefinedType[Any]):
return sa.func.ST_GeomFromText(bindvalue, type_=self)
class comparator_factory(types.UserDefinedType.Comparator):
class comparator_factory(types.UserDefinedType.Comparator): # type: ignore[type-arg]
def intersects(self, other: SaColumn) -> 'sa.Operators':
return self.op('&&')(other)