Bonsai - fix missing Bonsai Fatal Error UI

Since we added more data to debug info in fcf5614 Fatal Error itself started to fail and was never displayed due some props being inaccessible during load, should be fixed now.

Possible error that were fixed:
```
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 328, in <module>
    print(format_debug_info(get_debug_info()))
                            ~~~~~~~~~~~~~~^^
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 117, in get_debug_info
    if bpy.data.is_saved:
       ^^^^^^^^^^^^^^^^^
AttributeError: '_RestrictData' object has no attribute 'is_saved'

Traceback (most recent call last):
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 366, in draw
    info = get_debug_info()
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 152, in get_debug_info
    bim_props = tool.Blender.get_bim_props()
                ^^^^
NameError: name 'tool' is not defined. Did you mean: 'bool'?

Traceback (most recent call last):
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 366, in draw
    info = get_debug_info()
  File "\Blender\5.1\extensions\raw_githubusercontent_com\bonsai\__init__.py", line 141, in get_debug_info
    import bonsai.tool as tool
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\__init__.py", line 355, in <module>
    print(format_debug_info(get_debug_info()))
                            ~~~~~~~~~~~~~~^^
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\__init__.py", line 141, in get_debug_info
    import bonsai.tool as tool
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\tool\__init__.py", line 23, in <module>
    from bonsai.tool.attribute import Attribute
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\tool\attribute.py", line 31, in <module>
    import bonsai.bim.helper as helper
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\bim\__init__.py", line 28, in <module>
    from . import handler, operator, prop, ui
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\bim\handler.py", line 36, in <module>
    from bonsai.bim.module.aggregate.decorator import AggregateDecorator
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\bim\module\aggregate\__init__.py", line 21, in <module>
    from . import operator, prop, ui
  File "\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\bim\module\aggregate\operator.py", line 32, in <module>
    class BIM_OT_aggregate_assign_object(bpy.types.Operator, tool.Ifc.Operator):
                                                             ^^^^^^^^
AttributeError: partially initialized module 'bonsai.tool' from '\Blender\5.1\extensions\.local\lib\python3.13\site-packages\bonsai\tool\__init__.py' has no attribute 'Ifc' (most likely due to a circular import)
```
This commit is contained in:
Andrej730
2026-03-13 13:30:02 +05:00
parent 298beacef6
commit 9ed8f3e244
3 changed files with 59 additions and 14 deletions
+23
View File
@@ -24,6 +24,7 @@ import bpy
import ifcopenshell
import pytest
import bonsai
import bonsai.core.tool
import bonsai.tool as tool
from bonsai.tool.blender import Blender as subject
@@ -144,3 +145,25 @@ class TestGetSelectedFiles(NewFile):
assert subject.get_selected_files(Path(g.name).parent, [file], use_relative_path=True) == [
Path(g.name).name
]
class TestGetDebugInfo(NewFile):
# Only keys that are safe to set if Bonsai fails to load.
EXPECTED_KEYS = {
"os",
"os_version",
"python_version",
"architecture",
"machine",
"processor",
"blender_version",
"bonsai_version",
"bonsai_commit_hash",
"bonsai_commit_date",
"last_actions",
"last_error",
}
def test_failed_to_load_returns_only_base_keys(self):
info = bonsai.get_debug_info(bonsai_failed_to_load=True)
assert set(info.keys()) == self.EXPECTED_KEYS