make code backwards-compatible with older Python versions

This commit is contained in:
Sarah Hoffmann
2023-05-26 18:09:03 +02:00
parent 41bf162306
commit 317cc5c544
3 changed files with 15 additions and 8 deletions

View File

@@ -639,8 +639,8 @@ class PlaceSearch(AbstractSearch):
numerals, details)
), else_=None)
else:
interpol_sql = sa.literal(None)
tiger_sql = sa.literal(None)
interpol_sql = sa.literal_column('NULL')
tiger_sql = sa.literal_column('NULL')
unsort = sa.select(inner, place_sql.scalar_subquery().label('placex_hnr'),
interpol_sql.label('interpol_hnr'),

View File

@@ -400,7 +400,8 @@ class SearchDetails(LookupDetails):
)
""" Highest address rank to return.
"""
layers: Optional[DataLayer] = None
layers: Optional[DataLayer] = dataclasses.field(default=None,
metadata={'transform': lambda r : r})
""" Filter which kind of data to include. When 'None' (the default) then
filtering by layers is disabled.
"""
@@ -427,7 +428,8 @@ class SearchDetails(LookupDetails):
metadata={'transform': Point.from_param})
""" Order results by distance to the given point.
"""
near_radius: Optional[float] = None
near_radius: Optional[float] = dataclasses.field(default=None,
metadata={'transform': lambda r : r})
""" Use near point as a filter and drop results outside the given
radius. Radius is given in degrees WSG84.
"""

View File

@@ -52,7 +52,7 @@ def feature_type_to_rank(feature_type: Optional[str]) -> Tuple[int, int]:
return FEATURE_TYPE_TO_RANK.get(feature_type, (0, 30))
#pylint: disable=too-many-arguments
#pylint: disable=too-many-arguments,too-many-branches
def extend_query_parts(queryparts: Dict[str, Any], details: Dict[str, Any],
feature_type: Optional[str],
namedetails: bool, extratags: bool,
@@ -62,9 +62,14 @@ def extend_query_parts(queryparts: Dict[str, Any], details: Dict[str, Any],
"""
parsed = SearchDetails.from_kwargs(details)
if parsed.geometry_output != GeometryFormat.NONE:
for flag in parsed.geometry_output:
assert flag.name
queryparts[f'polygon_{flag.name.lower()}'] = '1'
if parsed.geometry_output & GeometryFormat.GEOJSON:
queryparts['polygon_geojson'] = '1'
if parsed.geometry_output & GeometryFormat.KML:
queryparts['polygon_kml'] = '1'
if parsed.geometry_output & GeometryFormat.SVG:
queryparts['polygon_svg'] = '1'
if parsed.geometry_output & GeometryFormat.TEXT:
queryparts['polygon_text'] = '1'
if parsed.address_details:
queryparts['addressdetails'] = '1'
if namedetails: