mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 02:02:22 +00:00
Preserve the real cause when the ifcopenshell wrapper fails to load (#8785)
* Keep real cause in wrapper ImportError When the compiled wrapper exists for the current interpreter but fails to load (for example a glibc version mismatch, as on AWS Lambda in issue 5927), the bare except rewrote the error into the misleading "IfcOpenShell not built for '<platform>'" message. Environments such as AWS Lambda or the Blender add-on dialog only surface the final exception message, so the actual cause was invisible and undiagnosable. Keep the "not built for" message only when no matching binary is present, and otherwise include the original loader error, chaining the cause in both branches. This change was AI-generated. Fixes #5927 * Simplify wrapper import failure to a single message Per review feedback, drop the filesystem scan and the two message variants. Always raise the classic "IfcOpenShell not built for '<platform>'" message with the original exception appended in parentheses, still chained as the cause. Environments that only show the final exception message (AWS Lambda, the Blender add-on dialog) now surface the real loader error, such as the glibc version mismatch in issue 5927, without any extra logic. This change was AI-generated.
This commit is contained in:
@@ -85,8 +85,8 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "lib", p
|
||||
|
||||
try:
|
||||
from . import ifcopenshell_wrapper
|
||||
except Exception:
|
||||
raise ImportError("IfcOpenShell not built for '%s'" % python_distribution)
|
||||
except Exception as e:
|
||||
raise ImportError("IfcOpenShell not built for '%s' (%s)" % (python_distribution, e)) from e
|
||||
|
||||
# `_file`, `_stream` is used only for annotations inside this file,
|
||||
# see https://github.com/microsoft/pyright/discussions/9065.
|
||||
|
||||
Reference in New Issue
Block a user