Source code for omi.dialects.base.parser

from typing import TypeVar

from omi.structure import OEPMetadata

T = TypeVar("T")


class ParserException(Exception):
    pass


[docs]class Parser: """ A parser is used to transform to read a specific metadata format and transform it into the internal metadata representation. """
[docs] def parse(self, structure: T, *args, **kwargs) -> OEPMetadata: """ Transforms the input structure into metadata as used by the OpenEnergyPlatform Parameters ---------- inp: str The input string that should be parsed into OEP metadata Returns ------- OEPMetadata OEP metadata represented by `inp` """ raise NotImplementedError
[docs] def load_string(self, string: str, *args, **kwargs): """ Load a string into the structure represented by the dialect Parameters ---------- string: str Returns ------- Translates the passed string into the format used as input for this parser """ raise NotImplementedError
[docs] def parse_from_string( self, string: str, load_args=None, parse_args=None, load_kwargs=None, parse_kwargs=None, ) -> OEPMetadata: """ Parse a string into :class:`~omi.structure.OEPMetadata` Parameters ---------- string Returns ------- """ return self.parse( self.load_string(string, *(load_args or []), **(load_kwargs or {})), *(parse_args or []), **(parse_kwargs or {}) )
@staticmethod def __unpack_file(file, **kwargs): """ Parameters ---------- Returns ------- """ with open(file, **kwargs) as inp: return inp.read() def parse_from_file(self, file_path, *args, **kwargs): return self.parse_from_string(self.__unpack_file(file_path), *args, **kwargs)
[docs] def is_valid(self, inp: str) -> bool: """ Verify whether `inp` is a sting representation that is parsable by this parser Parameters ---------- inp: str String to verify Returns ------- bool: Indicated whether this object is parsable or not """ raise NotImplementedError
[docs] def is_file_valid(self, file: str, **kwargs): """ Verify whether the contents of the file under `file` is parsable by this parser Parameters ---------- file: str Path to the file to validate **kwargs: Returns ------- bool: Returns `True` iff the file's content is parsable """ return self.is_valid(self.__unpack_file(file, **kwargs))