X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/004883bdb1cfdfea053cb59fe32792c4e368e88c..f335e78d1eb54737202aa7a1bafaece19b6659a6:/nominatim/api/logging.py diff --git a/nominatim/api/logging.py b/nominatim/api/logging.py index fdff73be..351da9a1 100644 --- a/nominatim/api/logging.py +++ b/nominatim/api/logging.py @@ -7,7 +7,7 @@ """ Functions for specialised logging with HTML output. """ -from typing import Any, Iterator, Optional, List, cast +from typing import Any, Iterator, Optional, List, Tuple, cast from contextvars import ContextVar import textwrap import io @@ -24,6 +24,13 @@ except ModuleNotFoundError: CODE_HIGHLIGHT = False +def _debug_name(res: Any) -> str: + if res.names: + return cast(str, res.names.get('name', next(iter(res.names.values())))) + + return f"Hnr {res.housenumber}" if res.housenumber is not None else '[NONE]' + + class BaseLogger: """ Interface for logging function. @@ -61,6 +68,11 @@ class BaseLogger: """ + def result_dump(self, heading: str, results: Iterator[Tuple[Any, Any]]) -> None: + """ Print a list of search results generated by the generator function. + """ + + def sql(self, conn: AsyncConnection, statement: 'sa.Executable') -> None: """ Print the SQL for the given statement. """ @@ -128,6 +140,38 @@ class HTMLLogger(BaseLogger): self._write('') + def result_dump(self, heading: str, results: Iterator[Tuple[Any, Any]]) -> None: + """ Print a list of search results generated by the generator function. + """ + def format_osm(osm_object: Optional[Tuple[str, int]]) -> str: + if not osm_object: + return '-' + + t, i = osm_object + if t == 'N': + fullt = 'node' + elif t == 'W': + fullt = 'way' + elif t == 'R': + fullt = 'relation' + else: + return f'{t}{i}' + + return f'{t}{i}' + + self._write(f'