mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-14 01:47:57 +00:00
Switch to ast.literal_eval for dict parsing
Due to some test data in the BDD feature files includes Python raw strings and escape sequences that standard json.loads() cannot parse switching to safer Python literal evaluation for converting string representations of dictionaries.
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
"""
|
"""
|
||||||
Helper functions to compare expected values.
|
Helper functions to compare expected values.
|
||||||
"""
|
"""
|
||||||
|
import ast
|
||||||
import collections.abc
|
import collections.abc
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
@@ -58,7 +59,8 @@ COMPARISON_FUNCS = {
|
|||||||
None: lambda val, exp: str(val) == exp,
|
None: lambda val, exp: str(val) == exp,
|
||||||
'i': lambda val, exp: str(val).lower() == exp.lower(),
|
'i': lambda val, exp: str(val).lower() == exp.lower(),
|
||||||
'fm': lambda val, exp: re.fullmatch(exp, val) is not None,
|
'fm': lambda val, exp: re.fullmatch(exp, val) is not None,
|
||||||
'dict': lambda val, exp: val is None if exp == '-' else (val == json.loads('{' + exp + '}')),
|
'dict': lambda val, exp: (val is None if exp == '-'
|
||||||
|
else (val == ast.literal_eval('{' + exp + '}'))),
|
||||||
'in_box': within_box
|
'in_box': within_box
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"""
|
"""
|
||||||
Helper classes for filling the place table.
|
Helper classes for filling the place table.
|
||||||
"""
|
"""
|
||||||
import json
|
import ast
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ class PlaceColumn:
|
|||||||
elif key.startswith('addr+'):
|
elif key.startswith('addr+'):
|
||||||
self._add_hstore('address', key[5:], value)
|
self._add_hstore('address', key[5:], value)
|
||||||
elif key in ('name', 'address', 'extratags'):
|
elif key in ('name', 'address', 'extratags'):
|
||||||
self.columns[key] = json.loads('{' + value + '}')
|
self.columns[key] = ast.literal_eval('{' + value + '}')
|
||||||
else:
|
else:
|
||||||
assert key in ('class', 'type'), "Unknown column '{}'.".format(key)
|
assert key in ('class', 'type'), "Unknown column '{}'.".format(key)
|
||||||
self.columns[key] = None if value == '' else value
|
self.columns[key] = None if value == '' else value
|
||||||
|
|||||||
Reference in New Issue
Block a user