Skip to content

Commit c60689c

Browse files
authored
Improve Term string formatting and obsoleted-term messaging (#53)
1 parent 3df8f86 commit c60689c

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

pandasaurus/resources/term.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,12 @@ def __eq__(self, other):
102102
return False
103103

104104
def __str__(self):
105-
msg = f"IRI: {self.__iri}, Label: {self.__label}, Valid: {self.__is_valid}"
105+
label = self.__label or "Unknown label"
106+
msg = f"IRI: {self.__iri}, Label: {label}, Valid: {self.__is_valid}"
106107
if self.__is_valid:
107108
msg += f", Obsoleted: {self.__is_obsolete}"
108109
if self.__is_obsolete:
109-
msg += f", New term label: {self.__new_label}, New term IRI: {self.__new_iri}"
110+
new_label = self.__new_label or "Unknown label"
111+
new_iri = self.__new_iri or "Unknown IRI"
112+
msg += f", New term label: {new_label}, New term IRI: {new_iri}"
110113
return msg

pandasaurus/utils/pandasaurus_exceptions.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,16 @@ def __init__(self, term_list: List[Term]):
2323
Args:
2424
term_list (List[Term]): A list of obsoleted Term objects.
2525
"""
26+
obsolete_ids = [term.get_iri() for term in term_list]
27+
replacement_descriptions = []
28+
for term in term_list:
29+
replacement = term.get_new_iri() or "unknown replacement"
30+
replacement_descriptions.append(f"{term.get_iri()} -> {replacement}")
31+
32+
replacement_message = ", ".join(replacement_descriptions)
2633
self.message = (
27-
f"The following terms are obsoleted: {', '.join([term.get_iri() for term in term_list])}, "
28-
f"and replaced by following terms: {', '.join([term.get_new_iri() for term in term_list])}. "
34+
f"The following terms are obsoleted: {', '.join(obsolete_ids)}. "
35+
f"Replacement suggestions: {replacement_message}. "
2936
f"Please consider using the new terms"
3037
)
3138
super().__init__(self.message)

test/test_curie_validator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ def test_get_validation_report():
126126
CurieValidator.get_validation_report(term_list)
127127

128128
expected_message = (
129-
"The following terms are obsoleted: CL:0011107, and replaced by following terms: CL:0000636. "
129+
"The following terms are obsoleted: CL:0011107. "
130+
"Replacement suggestions: CL:0011107 -> CL:0000636. "
130131
"Please consider using the new terms"
131132
)
132133
assert str(exc_info.value) == expected_message

test/utils/test_pandasaurus_exceptions.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,21 @@ def test_obsoleted_term_exception():
2323
raise ObsoletedTerm(term_list)
2424

2525
expected_message = (
26-
"The following terms are obsoleted: CL:0011107, and replaced by following terms: CL:0000636. "
26+
"The following terms are obsoleted: CL:0011107. "
27+
"Replacement suggestions: CL:0011107 -> CL:0000636. "
28+
"Please consider using the new terms"
29+
)
30+
assert str(exc_info.value) == expected_message
31+
32+
33+
def test_obsoleted_term_exception_with_missing_replacement():
34+
term_list = [Term("obsolete Muller cell", "CL:0011107", True, None, None)]
35+
with pytest.raises(ObsoletedTerm) as exc_info:
36+
raise ObsoletedTerm(term_list)
37+
38+
expected_message = (
39+
"The following terms are obsoleted: CL:0011107. "
40+
"Replacement suggestions: CL:0011107 -> unknown replacement. "
2741
"Please consider using the new terms"
2842
)
2943
assert str(exc_info.value) == expected_message

0 commit comments

Comments
 (0)