Skip to content

Commit 50e977e

Browse files
bugfix
1 parent cb8b780 commit 50e977e

2 files changed

Lines changed: 20 additions & 14 deletions

File tree

energyml-utils/src/energyml/utils/introspection.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -368,20 +368,25 @@ def get_matching_class_attribute_name(
368368
return name
369369
else:
370370
class_fields = get_class_fields(cls)
371-
372-
# a search with the exact value
373-
for name, cf in class_fields.items():
374-
if snake_case(name) == snake_case(attribute_name) or (
375-
"name" in cf.metadata and cf.metadata["name"] == attribute_name
376-
):
377-
return name
378-
379-
# search regex after to avoid shadowing perfect match
380-
pattern = re.compile(attribute_name, flags=re_flags)
381-
for name, cf in class_fields.items():
382-
# logging.error(f"\t->{name} : {attribute_name} {pattern.match(name)} {('name' in cf.metadata and pattern.match(cf.metadata['name']))}")
383-
if pattern.match(name) or ("name" in cf.metadata and pattern.match(cf.metadata["name"])):
384-
return name
371+
try:
372+
# a search with the exact value
373+
for name, cf in class_fields.items():
374+
if snake_case(name) == snake_case(attribute_name) or (
375+
hasattr(cf, "metadata") and "name" in cf.metadata and cf.metadata["name"] == attribute_name
376+
):
377+
return name
378+
379+
# search regex after to avoid shadowing perfect match
380+
pattern = re.compile(attribute_name, flags=re_flags)
381+
for name, cf in class_fields.items():
382+
# logging.error(f"\t->{name} : {attribute_name} {pattern.match(name)} {('name' in cf.metadata and pattern.match(cf.metadata['name']))}")
383+
if pattern.match(name) or (
384+
hasattr(cf, "metadata") and "name" in cf.metadata and pattern.match(cf.metadata["name"])
385+
):
386+
return name
387+
except Exception as e:
388+
logging.error(f"Failed to get attribute {attribute_name} from class {cls}")
389+
logging.error(e)
385390

386391
return None
387392

energyml-utils/tests/test_introspection.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323

2424
def test_is_primitive():
25+
assert is_primitive(1)
2526
assert is_primitive(int)
2627
assert is_primitive(float)
2728
assert is_primitive(str)

0 commit comments

Comments
 (0)