From a2bb015c790a0855a75bef97787e4c0c0249d794 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 30 Aug 2023 13:48:31 +0200 Subject: [PATCH] Update validate.py - catch some runtime errors --- src/ifcopenshell-python/ifcopenshell/validate.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/validate.py b/src/ifcopenshell-python/ifcopenshell/validate.py index dc2e67d4db..bd1b8cfd66 100644 --- a/src/ifcopenshell-python/ifcopenshell/validate.py +++ b/src/ifcopenshell-python/ifcopenshell/validate.py @@ -323,7 +323,8 @@ def validate(f, logger, express_rules=False): f = ifcopenshell.open(f) else: - raise e + logger.error(f'Unsupported schema: {schema_name}') + return log_internal_cpp_errors(filename, logger) @@ -406,7 +407,15 @@ def validate(f, logger, express_rules=False): ) for attr in entity.all_inverse_attributes(): - val = getattr(inst, attr.name()) + try: + val = getattr(inst, attr.name()) + except Exception as e: + if hasattr(logger, "set_state"): + logger.set_state('attribute', f"{entity.name()}.{attr.name()}") + logger.error(str(e)) + else: + logger.error("For instance:\n %s\n%s", inst, e) + continue try: assert_valid_inverse(attr, val, schema) except ValidationError as e: