mirror of
https://github.com/arc53/DocsGPT
synced 2024-11-16 00:12:46 +00:00
39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""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."""
|