]> git.openstreetmap.org Git - nominatim.git/commitdiff
cli: import python modules for commands on demand
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 21 Jan 2021 09:19:38 +0000 (10:19 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 26 Jan 2021 21:50:54 +0000 (22:50 +0100)
Given that only one command will be executed in the end, it is
not necessary to import what amounts to the whole library. This
becomes in particular important for update functions that have
a dependency on pyosmium. The dependency can remain optional for
people not using updates.

nominatim/cli.py
test/python/test_cli.py

index 6c110ce72203feea60beb83571761def0ee2d036..c558eb849f77743f62e5a4758f0d229622cd2578 100644 (file)
@@ -11,8 +11,6 @@ from pathlib import Path
 from .config import Configuration
 from .tools.exec_utils import run_legacy_script, run_api_script
 
-from .indexer.indexer import Indexer
-
 def _num_system_cpus():
     try:
         cpus = len(os.sched_getaffinity(0))
@@ -320,6 +318,8 @@ class UpdateIndex:
 
     @staticmethod
     def run(args):
+        from .indexer.indexer import Indexer
+
         indexer = Indexer(args.config.get_libpq_dsn(),
                           args.threads or _num_system_cpus() or 1)
 
index 92b42372ca56cadc4ec4b7b60682a3ff050b93e7..9ac629731e6c0b41dc35d0b31f7c9f9e0b77a86f 100644 (file)
@@ -5,6 +5,7 @@ import psycopg2
 import pytest
 
 import nominatim.cli
+import nominatim.indexer.indexer
 
 def call_nominatim(*args):
     return nominatim.cli.nominatim(module_dir='build/module',
@@ -87,9 +88,9 @@ def test_index_command(monkeypatch, temp_db, params, do_bnds, do_ranks):
         with conn.cursor() as cur:
             cur.execute("CREATE TABLE import_status (indexed bool)")
     bnd_mock = MockParamCapture()
-    monkeypatch.setattr(nominatim.cli.Indexer, 'index_boundaries', bnd_mock)
+    monkeypatch.setattr(nominatim.indexer.indexer.Indexer, 'index_boundaries', bnd_mock)
     rank_mock = MockParamCapture()
-    monkeypatch.setattr(nominatim.cli.Indexer, 'index_by_rank', rank_mock)
+    monkeypatch.setattr(nominatim.indexer.indexer.Indexer, 'index_by_rank', rank_mock)
 
     assert 0 == call_nominatim('index', *params)