Skip to content

Commit a9d440b

Browse files
committed
Extract shared list_kg_classes/set_error_handling helpers to reduce code duplication
1 parent cd69c9b commit a9d440b

File tree

13 files changed

+118
-145
lines changed

13 files changed

+118
-145
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ htmlcov
77
*.pyc
88
doc/_build
99
*.py.orig
10-
builder/expanded
10+
builder/expanded
11+
build/lib

builder/init_template.py.txt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11

22
def list_kg_classes():
33
"""List all KG classes defined in this module"""
4-
return [obj for name, obj in inspect.getmembers(sys.modules[__name__])
5-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)]
4+
return _lkgc(sys.modules[__name__])
65

76

87
def list_embedded_metadata_classes():
98
"""List all embedded metadata classes defined in this module"""
10-
return [obj for name, obj in inspect.getmembers(sys.modules[__name__])
11-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)]
9+
return _lemc(sys.modules[__name__])
1210

1311

1412
def set_error_handling(value):
@@ -20,5 +18,4 @@ def set_error_handling(value):
2018
(e.g. if a required property is not provided).
2119
Possible values: "error", "warning", "log", None
2220
"""
23-
for cls in list_kg_classes() + list_embedded_metadata_classes():
24-
cls.set_error_handling(value)
21+
_seh(value, sys.modules[__name__])

builder/update_openminds.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -915,9 +915,11 @@ def main(openminds_root, ignore=[]):
915915
with open(init_file_path, "w") as fp:
916916
om_module_header = [
917917
"import sys\n",
918-
"import inspect\n",
919-
"from fairgraph.kgobject import KGObject\n",
920-
"from fairgraph.embedded import KGEmbedded\n\n",
918+
"from fairgraph.openminds import (\n",
919+
" list_kg_classes as _lkgc,\n",
920+
" list_embedded_metadata_classes as _lemc,\n",
921+
" set_error_handling as _seh,\n",
922+
")\n\n",
921923
]
922924
fp.writelines(om_module_header)
923925
fp.write(content)

fairgraph/openminds/__init__.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,37 @@
1+
import sys
2+
import inspect
3+
from fairgraph.kgobject import KGObject
4+
from fairgraph.embedded import KGEmbedded
5+
6+
7+
def list_kg_classes(module=None):
8+
"""List all KG classes defined in the given module (defaults to this module)"""
9+
if module is None:
10+
module = sys.modules[__name__]
11+
return [obj for name, obj in inspect.getmembers(module)
12+
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(module.__name__)]
13+
14+
15+
def list_embedded_metadata_classes(module=None):
16+
"""List all embedded metadata classes defined in the given module (defaults to this module)"""
17+
if module is None:
18+
module = sys.modules[__name__]
19+
return [obj for name, obj in inspect.getmembers(module)
20+
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(module.__name__)]
21+
22+
23+
def set_error_handling(value, module=None):
24+
"""
25+
Control validation for all classes in the given module (defaults to this module).
26+
27+
Args:
28+
value (str): action to follow when there is a validation failure.
29+
(e.g. if a required property is not provided).
30+
Possible values: "error", "warning", "log", None
31+
module: the module whose classes should be updated. Defaults to this module.
32+
"""
33+
for cls in list_kg_classes(module) + list_embedded_metadata_classes(module):
34+
cls.set_error_handling(value)
35+
36+
137
from . import chemicals, computation, controlled_terms, core, ephys, publications, sands, specimen_prep, stimulation
Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .amount_of_chemical import AmountOfChemical
79
from .chemical_mixture import ChemicalMixture
@@ -11,20 +13,12 @@
1113

1214
def list_kg_classes():
1315
"""List all KG classes defined in this module"""
14-
return [
15-
obj
16-
for name, obj in inspect.getmembers(sys.modules[__name__])
17-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
18-
]
16+
return _lkgc(sys.modules[__name__])
1917

2018

2119
def list_embedded_metadata_classes():
2220
"""List all embedded metadata classes defined in this module"""
23-
return [
24-
obj
25-
for name, obj in inspect.getmembers(sys.modules[__name__])
26-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
27-
]
21+
return _lemc(sys.modules[__name__])
2822

2923

3024
def set_error_handling(value):
@@ -36,5 +30,4 @@ def set_error_handling(value):
3630
(e.g. if a required property is not provided).
3731
Possible values: "error", "warning", "log", None
3832
"""
39-
for cls in list_kg_classes() + list_embedded_metadata_classes():
40-
cls.set_error_handling(value)
33+
_seh(value, sys.modules[__name__])

fairgraph/openminds/computation/__init__.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .data_analysis import DataAnalysis
79
from .data_copy import DataCopy
@@ -24,20 +26,12 @@
2426

2527
def list_kg_classes():
2628
"""List all KG classes defined in this module"""
27-
return [
28-
obj
29-
for name, obj in inspect.getmembers(sys.modules[__name__])
30-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
31-
]
29+
return _lkgc(sys.modules[__name__])
3230

3331

3432
def list_embedded_metadata_classes():
3533
"""List all embedded metadata classes defined in this module"""
36-
return [
37-
obj
38-
for name, obj in inspect.getmembers(sys.modules[__name__])
39-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
40-
]
34+
return _lemc(sys.modules[__name__])
4135

4236

4337
def set_error_handling(value):
@@ -49,5 +43,4 @@ def set_error_handling(value):
4943
(e.g. if a required property is not provided).
5044
Possible values: "error", "warning", "log", None
5145
"""
52-
for cls in list_kg_classes() + list_embedded_metadata_classes():
53-
cls.set_error_handling(value)
46+
_seh(value, sys.modules[__name__])

fairgraph/openminds/controlled_terms/__init__.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .action_status_type import ActionStatusType
79
from .age_category import AgeCategory
@@ -87,20 +89,12 @@
8789

8890
def list_kg_classes():
8991
"""List all KG classes defined in this module"""
90-
return [
91-
obj
92-
for name, obj in inspect.getmembers(sys.modules[__name__])
93-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
94-
]
92+
return _lkgc(sys.modules[__name__])
9593

9694

9795
def list_embedded_metadata_classes():
9896
"""List all embedded metadata classes defined in this module"""
99-
return [
100-
obj
101-
for name, obj in inspect.getmembers(sys.modules[__name__])
102-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
103-
]
97+
return _lemc(sys.modules[__name__])
10498

10599

106100
def set_error_handling(value):
@@ -112,5 +106,4 @@ def set_error_handling(value):
112106
(e.g. if a required property is not provided).
113107
Possible values: "error", "warning", "log", None
114108
"""
115-
for cls in list_kg_classes() + list_embedded_metadata_classes():
116-
cls.set_error_handling(value)
109+
_seh(value, sys.modules[__name__])

fairgraph/openminds/core/__init__.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .research import (
79
ProtocolExecution,
@@ -78,20 +80,12 @@
7880

7981
def list_kg_classes():
8082
"""List all KG classes defined in this module"""
81-
return [
82-
obj
83-
for name, obj in inspect.getmembers(sys.modules[__name__])
84-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
85-
]
83+
return _lkgc(sys.modules[__name__])
8684

8785

8886
def list_embedded_metadata_classes():
8987
"""List all embedded metadata classes defined in this module"""
90-
return [
91-
obj
92-
for name, obj in inspect.getmembers(sys.modules[__name__])
93-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
94-
]
88+
return _lemc(sys.modules[__name__])
9589

9690

9791
def set_error_handling(value):
@@ -103,5 +97,4 @@ def set_error_handling(value):
10397
(e.g. if a required property is not provided).
10498
Possible values: "error", "warning", "log", None
10599
"""
106-
for cls in list_kg_classes() + list_embedded_metadata_classes():
107-
cls.set_error_handling(value)
100+
_seh(value, sys.modules[__name__])
Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .activity import RecordingActivity, ElectrodePlacement, CellPatching
79
from .entity import Channel, Recording
@@ -10,20 +12,12 @@
1012

1113
def list_kg_classes():
1214
"""List all KG classes defined in this module"""
13-
return [
14-
obj
15-
for name, obj in inspect.getmembers(sys.modules[__name__])
16-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
17-
]
15+
return _lkgc(sys.modules[__name__])
1816

1917

2018
def list_embedded_metadata_classes():
2119
"""List all embedded metadata classes defined in this module"""
22-
return [
23-
obj
24-
for name, obj in inspect.getmembers(sys.modules[__name__])
25-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
26-
]
20+
return _lemc(sys.modules[__name__])
2721

2822

2923
def set_error_handling(value):
@@ -35,5 +29,4 @@ def set_error_handling(value):
3529
(e.g. if a required property is not provided).
3630
Possible values: "error", "warning", "log", None
3731
"""
38-
for cls in list_kg_classes() + list_embedded_metadata_classes():
39-
cls.set_error_handling(value)
32+
_seh(value, sys.modules[__name__])
Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
2-
import inspect
3-
from fairgraph.kgobject import KGObject
4-
from fairgraph.embedded import KGEmbedded
2+
from fairgraph.openminds import (
3+
list_kg_classes as _lkgc,
4+
list_embedded_metadata_classes as _lemc,
5+
set_error_handling as _seh,
6+
)
57

68
from .book import Book
79
from .chapter import Chapter
@@ -18,20 +20,12 @@
1820

1921
def list_kg_classes():
2022
"""List all KG classes defined in this module"""
21-
return [
22-
obj
23-
for name, obj in inspect.getmembers(sys.modules[__name__])
24-
if inspect.isclass(obj) and issubclass(obj, KGObject) and obj.__module__.startswith(__name__)
25-
]
23+
return _lkgc(sys.modules[__name__])
2624

2725

2826
def list_embedded_metadata_classes():
2927
"""List all embedded metadata classes defined in this module"""
30-
return [
31-
obj
32-
for name, obj in inspect.getmembers(sys.modules[__name__])
33-
if inspect.isclass(obj) and issubclass(obj, KGEmbedded) and obj.__module__.startswith(__name__)
34-
]
28+
return _lemc(sys.modules[__name__])
3529

3630

3731
def set_error_handling(value):
@@ -43,5 +37,4 @@ def set_error_handling(value):
4337
(e.g. if a required property is not provided).
4438
Possible values: "error", "warning", "log", None
4539
"""
46-
for cls in list_kg_classes() + list_embedded_metadata_classes():
47-
cls.set_error_handling(value)
40+
_seh(value, sys.modules[__name__])

0 commit comments

Comments
 (0)