Skip to content

Commit 4f4b4c3

Browse files
committed
Improve & test handling for edtf parse error
1 parent 1cb41b0 commit 4f4b4c3

2 files changed

Lines changed: 11 additions & 3 deletions

File tree

src/undate/converters/edtf/converter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ def parse(self, value: str) -> Union[Undate, UndateInterval]:
4040
parsetree = edtf_parser.parse(value)
4141
return self.transformer.transform(parsetree)
4242
except UnexpectedCharacters as err:
43-
raise ValueError("Parsing failed due to UnexpectedCharacters: %s" % err)
43+
raise ValueError(
44+
"Parsing failed: '%s' is not a supported EDTF date format" % value
45+
)
4446

4547
def _convert_missing_digits(
4648
self, value: Optional[str], old_missing_digit: str

tests/test_converters/test_edtf.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,14 @@ def test_parse_singledate(self):
1212
# unknown dates are not strictly equal, but string comparison should match
1313
assert str(EDTFDateConverter().parse("201X")) == str(Undate("201X"))
1414
assert str(EDTFDateConverter().parse("2004-XX")) == str(Undate(2004, "XX"))
15-
# missing year but month/day known
16-
# assert EDTFDateConverter().parse("--05-03") == Undate(month=5, day=3)
15+
assert str(EDTFDateConverter().parse("XXXX-05-03")) == Undate(
16+
month=5, day=3
17+
).format("EDTF")
18+
19+
def test_parse_singledate_error(self):
20+
# missing year but month/day known - this format should cause an error
21+
with pytest.raises(ValueError):
22+
EDTFDateConverter().parse("--05-03")
1723

1824
def test_parse_singledate_unequal(self):
1925
assert EDTFDateConverter().parse("2002") != Undate(2003)

0 commit comments

Comments
 (0)