X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/300612c5a8ebfa9eff99b7f88cfcf4e0ed2fbbfc..18b16e06ca9e89136cb8445b00d7471840fd22e2:/nominatim/tokenizer/base.py diff --git a/nominatim/tokenizer/base.py b/nominatim/tokenizer/base.py index 70a54bfd..afcb0864 100644 --- a/nominatim/tokenizer/base.py +++ b/nominatim/tokenizer/base.py @@ -9,13 +9,14 @@ Abstract class defintions for tokenizers. These base classes are here mainly for documentation purposes. """ from abc import ABC, abstractmethod -from typing import List, Tuple, Dict, Any +from typing import List, Tuple, Dict, Any, Optional +from pathlib import Path + +from typing_extensions import Protocol from nominatim.config import Configuration from nominatim.data.place_info import PlaceInfo -# pylint: disable=unnecessary-pass - class AbstractAnalyzer(ABC): """ The analyzer provides the functions for analysing names and building the token database. @@ -28,7 +29,7 @@ class AbstractAnalyzer(ABC): return self - def __exit__(self, exc_type, exc_value, traceback) -> None: + def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None: self.close() @@ -95,7 +96,7 @@ class AbstractAnalyzer(ABC): @abstractmethod - def add_country_names(self, country_code: str, names: Dict[str, str]): + def add_country_names(self, country_code: str, names: Dict[str, str]) -> None: """ Add the given names to the tokenizer's list of country tokens. Arguments: @@ -186,7 +187,7 @@ class AbstractTokenizer(ABC): @abstractmethod - def check_database(self, config: Configuration) -> str: + def check_database(self, config: Configuration) -> Optional[str]: """ Check that the database is set up correctly and ready for being queried. @@ -230,3 +231,13 @@ class AbstractTokenizer(ABC): When used outside the with construct, the caller must ensure to call the close() function before destructing the analyzer. """ + + +class TokenizerModule(Protocol): + """ Interface that must be exported by modules that implement their + own tokenizer. + """ + + def create(self, dsn: str, data_dir: Path) -> AbstractTokenizer: + """ Factory for new tokenizers. + """