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) numerals, details)
), else_=None) ), else_=None)
else: else:
interpol_sql = sa.literal(None) interpol_sql = sa.literal_column('NULL')
tiger_sql = sa.literal(None) tiger_sql = sa.literal_column('NULL')
unsort = sa.select(inner, place_sql.scalar_subquery().label('placex_hnr'), unsort = sa.select(inner, place_sql.scalar_subquery().label('placex_hnr'),
interpol_sql.label('interpol_hnr'), interpol_sql.label('interpol_hnr'),

View File

@@ -400,7 +400,8 @@ class SearchDetails(LookupDetails):
) )
""" Highest address rank to return. """ 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 """ Filter which kind of data to include. When 'None' (the default) then
filtering by layers is disabled. filtering by layers is disabled.
""" """
@@ -427,7 +428,8 @@ class SearchDetails(LookupDetails):
metadata={'transform': Point.from_param}) metadata={'transform': Point.from_param})
""" Order results by distance to the given point. """ 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 """ Use near point as a filter and drop results outside the given
radius. Radius is given in degrees WSG84. 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)) 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], def extend_query_parts(queryparts: Dict[str, Any], details: Dict[str, Any],
feature_type: Optional[str], feature_type: Optional[str],
namedetails: bool, extratags: bool, 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) parsed = SearchDetails.from_kwargs(details)
if parsed.geometry_output != GeometryFormat.NONE: if parsed.geometry_output != GeometryFormat.NONE:
for flag in parsed.geometry_output: if parsed.geometry_output & GeometryFormat.GEOJSON:
assert flag.name queryparts['polygon_geojson'] = '1'
queryparts[f'polygon_{flag.name.lower()}'] = '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: if parsed.address_details:
queryparts['addressdetails'] = '1' queryparts['addressdetails'] = '1'
if namedetails: if namedetails: