X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/6e89310a9285f1ad15d8002bf68f578eada367a0..0770eaa5d04200aec75653b1ec495ba1a214eaab:/src/nominatim_db/clicmd/admin.py diff --git a/src/nominatim_db/clicmd/admin.py b/src/nominatim_db/clicmd/admin.py index 66dbbe99..85482ea4 100644 --- a/src/nominatim_db/clicmd/admin.py +++ b/src/nominatim_db/clicmd/admin.py @@ -11,14 +11,10 @@ import logging import argparse import random -import nominatim_api as napi -from nominatim_core.db.connection import connect +from ..errors import UsageError +from ..db.connection import connect, table_exists from .args import NominatimArgs -# Do not repeat documentation of subcommand classes. -# pylint: disable=C0111 -# Using non-top-level imports to avoid eventually unused imports. -# pylint: disable=E0012,C0415 LOG = logging.getLogger() @@ -57,9 +53,7 @@ class AdminFuncs: mgroup.add_argument('--place-id', type=int, help='Analyse indexing of the given Nominatim object') - def run(self, args: NominatimArgs) -> int: - # pylint: disable=too-many-return-statements if args.warm: return self._warm(args) @@ -93,8 +87,12 @@ class AdminFuncs: return 1 - def _warm(self, args: NominatimArgs) -> int: + try: + import nominatim_api as napi + except ModuleNotFoundError as exp: + raise UsageError("Warming requires nominatim API. " + "Install with 'pip install nominatim-api'.") from exp LOG.warning('Warming database caches') api = napi.NominatimAPI(args.project_dir) @@ -110,7 +108,7 @@ class AdminFuncs: tokenizer = tokenizer_factory.get_tokenizer_for_db(args.config) with connect(args.config.get_libpq_dsn()) as conn: - if conn.table_exists('search_name'): + if table_exists(conn, 'search_name'): words = tokenizer.most_frequent_words(conn, 1000) else: words = []