Autodesk / Autodesk/AutomaticComponentToolkit

Python binding: Avoid using globals in Base.__del__()

Đang mở
#226 5 bình luận 3 reaction 3 người được giao Được @martinweismann nhận Xem trên GitHub
Ngôn ngữ chính
Go
Star
53
Fork
26
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Running 'build123d' examples I saw errors like
```
Exception ignored in:
Traceback (most recent call last):
File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 57, in __del__
File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 6832, in Release
File "venv/lib/python3.13/site-packages/lib3mf/Lib3MF.py", line 6767, in checkError
AttributeError: 'NoneType' object has no attribute 'SUCCESS'
```
This is error from the "lib3mf" package, and the by "AutomaticComponentToolkit" generated file `lib3mf/Autogenerated/Bindings/Python/Lib3MF.py`.
```
This file has been generated by the Automatic Component Toolkit (ACT) version 1.8.0-alpha.
```
This seems to happen in some situations when the Python script terminates. The error message is most likely harmless, but it is confusing as a user to see this error message and not knowing if things went ok or not.

Looking at the code, the class Base `__del__()` method calls `_wrapper.Release() `that calls `checkError().` The problem seems to be that when Python cleans up, it might remove the class `ErrorCodes` before it try remove the class `Base`, i.e. `ErrorCodes` is no longer defined. This is likely what gives the error above. This problem is documented at

https://docs.python.org/3.9/reference/datamodel.html#object.__del__

Could the solution be to change the `__del__()` call to an `__exit__()` call ? It makes the error message go away but I don't know if it is the right thing to do.

As this happens when terminating, another solution might be to replace the line
```
if errorCode != ErrorCodes.SUCCESS.value:
```
with
```
if ErrorCodes and errorCode != ErrorCodes.SUCCESS.value:
```
This feels more like a hack and I haven't tested this.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.