from typing import Optional, List, Dict, Any, Sequence, Tuple
import argparse
import logging
-from functools import reduce
from pathlib import Path
-from nominatim_core.errors import UsageError
-from nominatim_core.config import Configuration
-from nominatim_core.typing import Protocol
-import nominatim_api as napi
+from ..errors import UsageError
+from ..config import Configuration
+from ..typing import Protocol
+
LOG = logging.getLogger()
+
class Subcommand(Protocol):
"""
Interface to be implemented by classes implementing a CLI subcommand.
# Arguments to all query functions
format: str
+ list_formats: bool
addressdetails: bool
extratags: bool
namedetails: bool
polygon_geojson: bool
group_hierarchy: bool
-
def osm2pgsql_options(self, default_cache: int,
default_threads: int) -> Dict[str, Any]:
""" Return the standard osm2pgsql options that can be derived
slim_index=self.config.TABLESPACE_OSM_INDEX,
main_data=self.config.TABLESPACE_PLACE_DATA,
main_index=self.config.TABLESPACE_PLACE_INDEX
- )
- )
-
+ )
+ )
def get_osm_file_list(self) -> Optional[List[Path]]:
""" Return the --osm-file argument as a list of Paths or None
raise UsageError('Cannot access file.')
return files
-
-
- def get_geometry_output(self) -> napi.GeometryFormat:
- """ Get the requested geometry output format in a API-compatible
- format.
- """
- if not self.polygon_output:
- return napi.GeometryFormat.NONE
- if self.polygon_output == 'geojson':
- return napi.GeometryFormat.GEOJSON
- if self.polygon_output == 'kml':
- return napi.GeometryFormat.KML
- if self.polygon_output == 'svg':
- return napi.GeometryFormat.SVG
- if self.polygon_output == 'text':
- return napi.GeometryFormat.TEXT
-
- try:
- return napi.GeometryFormat[self.polygon_output.upper()]
- except KeyError as exp:
- raise UsageError(f"Unknown polygon output format '{self.polygon_output}'.") from exp
-
-
- def get_locales(self, default: Optional[str]) -> napi.Locales:
- """ Get the locales from the language parameter.
- """
- if self.lang:
- return napi.Locales.from_accept_languages(self.lang)
- if default:
- return napi.Locales.from_accept_languages(default)
-
- return napi.Locales()
-
-
- def get_layers(self, default: napi.DataLayer) -> Optional[napi.DataLayer]:
- """ Get the list of selected layers as a DataLayer enum.
- """
- if not self.layers:
- return default
-
- return reduce(napi.DataLayer.__or__,
- (napi.DataLayer[s.upper()] for s in self.layers))