|
"""Base parser and config class.""" |
|
|
|
from abc import abstractmethod |
|
from pathlib import Path |
|
from typing import Dict, List, Optional, Union |
|
|
|
|
|
class BaseParser: |
|
"""Base class for all parsers.""" |
|
|
|
def __init__(self, parser_config: Optional[Dict] = None): |
|
"""Init params.""" |
|
self._parser_config = parser_config |
|
|
|
def init_parser(self) -> None: |
|
"""Init parser and store it.""" |
|
parser_config = self._init_parser() |
|
self._parser_config = parser_config |
|
|
|
@property |
|
def parser_config_set(self) -> bool: |
|
"""Check if parser config is set.""" |
|
return self._parser_config is not None |
|
|
|
@property |
|
def parser_config(self) -> Dict: |
|
"""Check if parser config is set.""" |
|
if self._parser_config is None: |
|
raise ValueError("Parser config not set.") |
|
return self._parser_config |
|
|
|
@abstractmethod |
|
def _init_parser(self) -> Dict: |
|
"""Initialize the parser with the config.""" |
|
|
|
@abstractmethod |
|
def parse_file(self, file: Path, errors: str = "ignore") -> Union[str, List[str]]: |
|
"""Parse file.""" |
|
|