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.
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()
@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:
@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.
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.
+ """