Source code for pyexlatex.logic.output.errors.models.error_collection

from typing import List, Dict, Union
import warnings
from latex.exc import LatexBuildError
from pyexlatex.logic.output.errors.models.error import LatexError


[docs]class LatexErrorCollection:
[docs] def __init__(self, latex_build_error: LatexBuildError): self.exc = latex_build_error self.errors = self._parse_errors()
def __getitem__(self, index): return self.errors[index] def __iter__(self): return iter(self.errors) def _parse_errors(self) -> List[LatexError]: error_dict_list = get_errors_dict_list(self.exc) errors = [] for error_dict in error_dict_list: arg_dict = error_dict.copy() arg_dict.pop('error') errors.append(LatexError(**arg_dict)) # type: ignore if not errors: warnings.warn(f'got LatexBuildError with no errors attached: {self.exc}') return errors
[docs]def get_errors_dict_list(exc: LatexBuildError) -> List[Dict[str, Union[str, int, List[str]]]]: try: return exc.get_errors() except AttributeError as e: if "'NoneType' object has no attribute 'splitlines'" in str(e): return [] raise e