Source code for bibpy.error
# -*- coding: utf-8 -*-
"""bibpy errors."""
[docs]class LexerException(Exception):
"""Raised on a lexer error."""
pass
[docs]class ParseException(Exception):
"""Raised on errors in parsing."""
pass
[docs]class RequiredFieldError(Exception):
"""Raised when an entry does not conform to a format's requirements."""
def __init__(self, entry, required, optional):
"""Format a message for an entry's missing fields."""
if not all(len(opt) == 2 for opt in optional):
raise ValueError("Fields with options should have only two "
"options")
s = "Entry '{0}' (type '{1}') is missing required field(s): "\
.format(entry.bibkey, entry.bibtype)
if required:
s += "{0}".format(", ".join(required))
if optional:
if required:
s += ", "
s += "{0}".format(", ".join("/".join(e) for e in optional))
super().__init__(s)
self._entry = entry
self._required = required
self._optional = optional
@property
def entry(self):
"""The offending entry."""
return self._entry
@property
def required(self):
"""Missing required fields."""
return self._required
@property
def optional(self):
"""Missing fields where one of several fields are required."""
return self._optional