Source code for ahbicht.expressions

"""
instantiates a "global" logger for all parsing related stuff
"""

import logging
from typing import Optional

parsing_logger = logging.getLogger("ahbicht.expressions")
parsing_logger.setLevel(logging.DEBUG)


[docs] class InvalidExpressionError(BaseException): """ Is raised when an expression is well-formed but invalid. A syntactical error leads to a SyntaxError during parsing with lark whereas this exception occurs during evaluation. """ def __init__(self, error_message: str, invalid_expression: Optional[str] = None) -> None: """ initialize the exception :param invalid_expression: the expression which is invalid (if known) :param error_message: an explanation why it is invalid """ # often we don't know the invalid expression itself because we only work with the tree that after the parsing self.invalid_expression = invalid_expression self.error_message = error_message def __str__(self) -> str: if self.invalid_expression is None: return f"{self.__class__}: Invalid expression because: {self.error_message}" return f"{self.__class__}: The expression '{self.invalid_expression}' in invalid because: {self.error_message}"