Skip to content

Commit dccdc1f

Browse files
Merge pull request #479 from linkml/schemaview_fix_permissible_value_parent_plurality
schemaview.py: deprecate `permissible_value_parent`, replace with `permissible_value_parents`
2 parents 4c4bbc9 + 82624a2 commit dccdc1f

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

linkml_runtime/utils/schemaview.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,9 @@ def _parents(self, e: Element, imports: bool = True, mixins: bool = True, is_a:
899899
def class_parents(
900900
self, class_name: CLASS_NAME, imports: bool = True, mixins: bool = True, is_a: bool = True
901901
) -> list[ClassDefinitionName]:
902-
""":param class_name: child class name
902+
"""Get the parents of a class.
903+
904+
:param class_name: child class name
903905
:param imports: include import closure
904906
:param mixins: include mixins (default is True)
905907
:return: all direct parent class names (is_a and mixins)
@@ -1167,7 +1169,9 @@ def type_roots(self, imports: bool = True) -> list[TypeDefinitionName]:
11671169
def enum_parents(
11681170
self, enum_name: ENUM_NAME, imports: bool = False, mixins: bool = False, is_a: bool = True
11691171
) -> list[EnumDefinitionName]:
1170-
""":param enum_name: child enum name
1172+
"""Get the parents of an enum.
1173+
1174+
:param enum_name: child enum name
11711175
:param imports: include import closure (False)
11721176
:param mixins: include mixins (default is False)
11731177
:return: all direct parent enum names (is_a and mixins)
@@ -1204,12 +1208,20 @@ def enum_ancestors(
12041208
**kwargs,
12051209
)
12061210

1207-
@lru_cache(None)
1211+
@deprecated("Use `permissible_value_parents` instead")
12081212
def permissible_value_parent(
12091213
self, permissible_value: str, enum_name: ENUM_NAME
12101214
) -> list[str | PermissibleValueText]:
1211-
""":param enum_name: child enum name
1215+
return self.permissible_value_parents(permissible_value, enum_name)
1216+
1217+
@lru_cache(None)
1218+
def permissible_value_parents(
1219+
self, permissible_value: str, enum_name: ENUM_NAME
1220+
) -> list[str | PermissibleValueText]:
1221+
"""Get the parents of a permissible value.
1222+
12121223
:param permissible_value: permissible value
1224+
:param enum_name: enum for which this is a permissible value
12131225
:return: all direct parent enum names (is_a)
12141226
"""
12151227
enum = self.get_enum(enum_name, strict=True)
@@ -1223,8 +1235,10 @@ def permissible_value_parent(
12231235
def permissible_value_children(
12241236
self, permissible_value: str, enum_name: ENUM_NAME
12251237
) -> list[str | PermissibleValueText]:
1226-
""":param enum_name: parent enum name
1238+
"""Get the children of a permissible value.
1239+
12271240
:param permissible_value: permissible value
1241+
:param enum_name: enum for which this is a permissible value
12281242
:return: all direct child permissible values (is_a)
12291243
"""
12301244
enum = self.get_enum(enum_name, strict=True)
@@ -1262,7 +1276,7 @@ def permissible_value_ancestors(
12621276
:rtype: list[str]
12631277
"""
12641278
return _closure(
1265-
lambda x: self.permissible_value_parent(x, enum_name),
1279+
lambda x: self.permissible_value_parents(x, enum_name),
12661280
permissible_value_text,
12671281
reflexive=reflexive,
12681282
depth_first=depth_first,

tests/test_utils/test_schemaview.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ def test_metamodel_in_schemaview() -> None:
718718
for tn in ["uriorcurie", "string", "float"]:
719719
assert tn in view.all_types()
720720
assert tn not in view.all_types(imports=False)
721-
for cn, c in view.all_classes().items():
721+
for cn in view.all_classes():
722722
uri = view.get_uri(cn, expand=True)
723723
assert uri is not None
724724
if cn not in ["structured_alias", "UnitOfMeasure", "ValidationReport", "ValidationResult"]:
@@ -1598,7 +1598,7 @@ def test_type_roots(schema: str, type_roots: set[str]) -> None:
15981598

15991599

16001600
def test_all_enums(schema_view_with_imports: SchemaView) -> None:
1601-
"""Test all_enums"""
1601+
"""Test all_enums."""
16021602
view = schema_view_with_imports
16031603

16041604
for en, e in view.all_enums().items():
@@ -1809,6 +1809,7 @@ def gen_schema_name(range_tuple: tuple[str, str | None, str | None]) -> str | No
18091809

18101810
def gen_range_file_with_default(range_id: str, tmp_path_factory: pytest.TempPathFactory) -> Path:
18111811
"""Generate a copy of the range file with a default_range added and return the path.
1812+
18121813
Obviates the need for maintaining a copy with a default_range tagged to the end.
18131814
18141815
:param range_id: the range file to use; must be one of RL, RI
@@ -2232,28 +2233,28 @@ def test_permissible_value_relationships(schema_view_no_imports: SchemaView) ->
22322233
pv_cat = animal_enum.permissible_values["CAT"]
22332234
assert pv_cat.text == "CAT"
22342235
assert pv_cat.is_a is None
2235-
assert view.permissible_value_parent("CAT", animals) == []
2236+
assert view.permissible_value_parents("CAT", animals) == []
22362237
assert view.permissible_value_ancestors("CAT", animals) == ["CAT"]
22372238
assert set(view.permissible_value_children("CAT", animals)) == {"LION", "TABBY"}
22382239
assert set(view.permissible_value_descendants("CAT", animals)) == {"CAT", "LION", "ANGRY_LION", "TABBY"}
22392240

22402241
pv_tabby = animal_enum.permissible_values["TABBY"]
22412242
assert pv_tabby.is_a == "CAT"
2242-
assert view.permissible_value_parent("TABBY", animals) == ["CAT"]
2243+
assert view.permissible_value_parents("TABBY", animals) == ["CAT"]
22432244
assert view.permissible_value_ancestors("TABBY", animals) == ["TABBY", "CAT"]
22442245
assert view.permissible_value_children("TABBY", animals) == []
22452246
assert view.permissible_value_descendants("TABBY", animals) == ["TABBY"]
22462247

22472248
pv_lion = animal_enum.permissible_values["LION"]
22482249
assert pv_lion.is_a == "CAT"
2249-
assert view.permissible_value_parent("LION", animals) == ["CAT"]
2250+
assert view.permissible_value_parents("LION", animals) == ["CAT"]
22502251
assert view.permissible_value_ancestors("LION", animals) == ["LION", "CAT"]
22512252
assert view.permissible_value_children("LION", animals) == ["ANGRY_LION"]
22522253
assert view.permissible_value_descendants("LION", animals) == ["LION", "ANGRY_LION"]
22532254

22542255
pv_angry_lion = animal_enum.permissible_values["ANGRY_LION"]
22552256
assert pv_angry_lion.is_a == "LION"
2256-
assert view.permissible_value_parent("ANGRY_LION", animals) == ["LION"]
2257+
assert view.permissible_value_parents("ANGRY_LION", animals) == ["LION"]
22572258
assert view.permissible_value_ancestors("ANGRY_LION", animals) == ["ANGRY_LION", "LION", "CAT"]
22582259
assert view.permissible_value_children("ANGRY_LION", animals) == []
22592260
assert view.permissible_value_descendants("ANGRY_LION", animals) == ["ANGRY_LION"]

0 commit comments

Comments
 (0)