]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/api/types.py
Merge pull request #3067 from lonvia/python-search-api
[nominatim.git] / nominatim / api / types.py
index 9042e707db920ac46b2139156b3e53fcb5b6006e..c7e15843b551da95579b67f1389488d8b18d396e 100644 (file)
@@ -296,13 +296,13 @@ def format_excluded(ids: Any) -> List[int]:
     """
     plist: Sequence[str]
     if isinstance(ids, str):
-        plist = ids.split(',')
+        plist = [s.strip() for s in ids.split(',')]
     elif isinstance(ids, abc.Sequence):
         plist = ids
     else:
         raise UsageError("Parameter 'excluded' needs to be a comma-separated list "
                          "or a Python list of numbers.")
-    if any(not isinstance(i, int) or (isinstance(i, str) and not i.isdigit()) for i in plist):
+    if not all(isinstance(i, int) or (isinstance(i, str) and i.isdigit()) for i in plist):
         raise UsageError("Parameter 'excluded' only takes place IDs.")
 
     return [int(id) for id in plist if id]
@@ -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.
     """