jchanvfx / NodeGraphQt

Node graph framework that can be re-implemented into applications that supports PySide2
http://chantonic.com/NodeGraphQt/
MIT License
1.24k stars 251 forks source link

Wayland: Node Graph Panel is transparent and causes rendering artifacts/flickering in auto_nodes example #207

Closed mara004 closed 3 years ago

mara004 commented 3 years ago

Steps to reproduce:

Workaround: set QT_QPA_PLATFORM=xcb to run as an XWayland instance. The problems described were not reproducable with example.py, only with auto_nodes

Note: This is something I have been experiencing with many applications under Wayland. I initially filed an issue with kde, but the devs say those are definitely problems that need to be addressed in the client apps, and that it would be a common problem they can help fixing.

davidedmundson commented 3 years ago

Please attach output of WAYLAND_DEBUG=1 example.py.

mara004 commented 3 years ago

@davidedmundson You mean example_auto_nodes.py, right? nodegraphqt_wayland.txt

Thank you for looking into this.

davidedmundson commented 3 years ago

[3451683,422] -> wl_subcompositor@15.get_subsurface(new id wl_subsurface@125, wl_surface@122, wl_surface@121)

Thought so.

We've seen this quite a few times.

What typically happens is you have a QWidget. You promote this widget to an indepdenent toplevel window (by errronously someWidget->wID() or something) But you never call some someWidget->show() so it never appears as a separate window it's in a half bodged state - which happens to have no effect on X11.

If you can run this in gdb and breaking on QPlatformWindow::QPlatformWindow then tracking back to where in your client code you're doing this. You should only have this once per actual window, if you get more, trace it back and find where we have the bug in the client / used library.

mara004 commented 3 years ago

If you can run this in gdb and breaking on QPlatformWindow::QPlatformWindow then tracking back to where in your client code you're doing this. You should only have this once per actual window, if you get more, trace it back and find where we have the bug in the client / used library.

The approach will need to be a bit different since this is Python and not C++ code, but maybe we can use pdb or something similar to find the problematic calls.

davidedmundson commented 3 years ago

We certainly need the breakpoint on the C++ side so we can break QPlatformWindow does something.

https://askubuntu.com/questions/175412/how-can-i-get-python-stack-trace-information-using-gdb implies it's possible to get the python backtrace from within GDB.

If you do find something, please paste here and I can try and help out

mara004 commented 3 years ago

Hmm, interesting. I'd not known that. I tried to run the script in gdb with gdb --args python3 example_auto_nodes.py but py-bt seems not to work, output only says unable to locate python frame, although I followed the instructions from the askubuntu answers

mara004 commented 3 years ago

Ah, it suddenly worked. I can now get python backtraces that look like this:

Thread 1 "python3" hit Breakpoint 1, 0x00007fffd2f13a50 in QPlatformWindow::QPlatformWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
(gdb) py-bt
Traceback (most recent call first):
  <built-in method setWidget of NodeLineEdit object at remote 0x7fffc0785a80>
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py", line 188, in set_custom_widget
    self.setWidget(group)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py", line 303, in __init__
    self.set_custom_widget(ledit)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/node.py", line 962, in add_text_input
    Delete output port.
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/viewer_nodes.py", line 11, in __init__
    self.add_text_input('data', 'Data Viewer', multi_line=True)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1279, in _deserialize
    node = NodeCls()
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py", line 126, in create_from_file
    children = self.graph._deserialize(children_data, set_parent=False)
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py", line 96, in set_graph
    self.create_from_file()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1209, in add_node
    root_node = self.root_node()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1292, in _deserialize
    self.add_node(node, n_data.get('pos'), unique_name=set_parent)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1442, in import_session
    self._deserialize(layout_data)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1418, in load_session
    self.import_session(file_path)
  File "example_auto_nodes.py", line 82, in <module>
    graph.load_session(r'example_auto_nodes/networks/example_SubGraph.json')
mara004 commented 3 years ago

@davidedmundson Could you please explain more detailed how I should run the program and navigate in gdb? I'd barely used it so far.

davidedmundson commented 3 years ago

Sure, some of these backtraces will show something legit happening, we're looking for the one that isn't, so we'll need to collect them all.

You've clearly run and got one trace.

Next steps are to type "continue" (the program will freeze again) and then again do "py-bit" Then we keep doing that until we've reproduced the bug.

Can you include "bt" as well, for the c++ backtrace

One trick is you can run "set logging on" in gdb before run and it will save everything to a single file, which will save trying to scroll through a terminal.

davidedmundson commented 3 years ago

This backtrace shows that void QGraphicsProxyWidget::setWidget(QWidget *widget) ended up creating a complete new window, that is unexpected.

Hopefully the C++ side of the trace will tell us something

mara004 commented 3 years ago

Next steps are to type "continue" (the program will freeze again) and then again do "py-bit" Then we keep doing that until we've reproduced the bug.

Okay, that's basically what I started to do, but this will be very tedious. There are about 200 such breakpoints. Could we automate repeatedly running continue and py-bt somehow? If it was for X I'd probably use something like AutoKeyQt, but that doesn't work for Wayland I think.

davidedmundson commented 3 years ago

This should really only happen once when you open the window, and then again if you open a menu or something.

Lets get the C++ side of this one trace that we do have and try to sort that out - hopefully the rest will be the same root cause.

mara004 commented 3 years ago

Since I don't find the example I posted above anymore, I'm now just pasting the very first breakpoint with py-bt and bt:

Thread 1 "python3" hit Breakpoint 1, 0x00007fffcc9c5bd0 in QPlatformWindow::QPlatformWindow(QWindow*)@plt ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
(gdb) py-bt
Traceback (most recent call first):
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/viewer.py", line 1145, in use_OpenGL
    self.setViewport(QtOpenGL.QGLWidget(format))
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1777, in use_OpenGL
    self._viewer.use_OpenGL()
  File "example_auto_nodes.py", line 55, in <module>
    graph.use_OpenGL()
(gdb) bt
#0  0x00007fffcc9c5bd0 in QPlatformWindow::QPlatformWindow(QWindow*)@plt ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#1  0x00007fffcc9ddcb4 in QtWaylandClient::QWaylandWindow::QWaylandWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#2  0x00007fffc9b71c3c in QtWaylandClient::QWaylandEglWindow::QWaylandEglWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#3  0x00007fffc9b70277 in QtWaylandClient::QWaylandEglClientBufferIntegration::createEglWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#4  0x00007fffcc9c7ff3 in QtWaylandClient::QWaylandIntegration::createPlatformWindow(QWindow*) const ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#5  0x00007fffd2f2dd8e in QWindowPrivate::create(bool, unsigned long long) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
#6  0x00007fffcf46daf7 in QGLContext::chooseContext(QGLContext const*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#7  0x00007fffcf46c9ea in QGLContext::create(QGLContext const*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#8  0x00007fffcf469e27 in QGLWidget::setContext(QGLContext*, QGLContext const*, bool) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#9  0x00007fffcf46b905 in QGLWidgetPrivate::initContext(QGLContext*, QGLWidget const*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#10 0x00007fffcf6e7a71 in Sbk_QGLWidget_Init () from /usr/local/lib/python3.8/dist-packages/PySide2/QtOpenGL.abi3.so
#11 0x00000000005f33af in type_call (kwds=0x0, args=(<PySide2.QtOpenGL.QGLFormat at remote 0x7fffcceccd00>,), type=<optimized out>)
    at ../Objects/typeobject.c:994
#12 _PyObject_MakeTpCall (
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated), args=<optimized out>, 
    nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#13 0x000000000056f600 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffd8002398, 
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated)) at ../Include/cpython/abstract.h:125
#14 _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffd8002398, 
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated)) at ../Include/cpython/abstract.h:115
#15 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#16 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#17 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7fffd8002200, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/viewer.py, line 1145, in use_OpenGL (self=<NodeViewer(moved_nodes=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22870>, search_triggered=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22890>, connection_sliced=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228b0>, connection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228d0>, insert_node=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228f0>, need_show_tab_search=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22910>, node_name_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22930>, node_backdrop_updated=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22950>, node_selected=<PySide2.Q--Type <RET> for more, q to quit, c to continue without paging--c
tCore.SignalInstance at remote 0x7fffccf22970>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22990>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf229b0>, data_dropped=<PySide2.QtCore.SignalInstance...(truncated)) at ../Python/ceval.c:741
#18 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#19 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffccf8b1b8, func=<function at remote 0x7fffccf254c0>) at ../Objects/call.c:410
#20 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffccf8b1b8, callable=<function at remote 0x7fffccf254c0>) at ../Include/cpython/abstract.h:127
#21 method_vectorcall (method=<optimized out>, args=0x7fffccf8b1c0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#22 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffccf8b1c0, callable=<method at remote 0x7ffff743a040>) at ../Include/cpython/abstract.h:127
#23 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#24 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#25 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffccf8b040, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1777, in use_OpenGL (self=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={}, session='', acyclic=True, _NodeGraphModel__common_node_props={}) at remote ...(truncated)) at ../Python/ceval.c:741
#26 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#27 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7ffff74f79b0, func=<function at remote 0x7fffccf27820>) at ../Objects/call.c:410
#28 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff74f79b0, callable=<function at remote 0x7fffccf27820>) at ../Include/cpython/abstract.h:127
#29 method_vectorcall (method=<optimized out>, args=0x7ffff74f79b8, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#30 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff74f79b8, callable=<method at remote 0x7fffda44ecc0>) at ../Include/cpython/abstract.h:127
#31 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#32 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#33 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff74f7840, for file example_auto_nodes.py, line 55, in <module> ()) at ../Python/ceval.c:741
#34 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4298
#35 0x000000000068c1e7 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4327
#36 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:718
#37 0x000000000067d5a1 in run_eval_code_obj (co=0x7ffff73f7f50, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated)) at ../Python/pythonrun.c:1125
#38 0x000000000067d61f in run_mod (mod=<optimized out>, filename=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1147
#39 0x000000000067d6db in PyRun_FileExFlags (fp=0x960e40, filename_str=<optimized out>, start=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:1063
#40 0x000000000067da6e in PyRun_SimpleFileExFlags (fp=0x960e40, filename=<optimized out>, closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:428
#41 0x00000000006b6132 in pymain_run_file (cf=0x7fffffffdb78, config=0x961670) at ../Modules/main.c:381
#42 pymain_run_python (exitcode=0x7fffffffdb70) at ../Modules/main.c:606
#43 Py_RunMain () at ../Modules/main.c:685
#44 0x00000000006b64bd in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:739
#45 0x00007ffff7dd00b3 in __libc_start_main (main=0x4eec80 <main>, argc=2, argv=0x7fffffffdd58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd48) at ../csu/libc-start.c:308
#46 0x00000000005f927e in _start () at ../Objects/bytesobject.c:2560
mara004 commented 3 years ago

And the next breakpoint looks like this:

Thread 1 "python3" hit Breakpoint 1, 0x00007fffd2f13a50 in QPlatformWindow::QPlatformWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
(gdb) py-bt
Traceback (most recent call first):
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/viewer.py", line 1145, in use_OpenGL
    self.setViewport(QtOpenGL.QGLWidget(format))
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1777, in use_OpenGL
    self._viewer.use_OpenGL()
  File "example_auto_nodes.py", line 55, in <module>
    graph.use_OpenGL()
(gdb) bt
#0  0x00007fffd2f13a50 in QPlatformWindow::QPlatformWindow(QWindow*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
#1  0x00007fffcc9ddcb4 in QtWaylandClient::QWaylandWindow::QWaylandWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#2  0x00007fffc9b71c3c in QtWaylandClient::QWaylandEglWindow::QWaylandEglWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#3  0x00007fffc9b70277 in QtWaylandClient::QWaylandEglClientBufferIntegration::createEglWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#4  0x00007fffcc9c7ff3 in QtWaylandClient::QWaylandIntegration::createPlatformWindow(QWindow*) const ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#5  0x00007fffd2f2dd8e in QWindowPrivate::create(bool, unsigned long long) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
#6  0x00007fffcf46daf7 in QGLContext::chooseContext(QGLContext const*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#7  0x00007fffcf46c9ea in QGLContext::create(QGLContext const*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#8  0x00007fffcf469e27 in QGLWidget::setContext(QGLContext*, QGLContext const*, bool) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#9  0x00007fffcf46b905 in QGLWidgetPrivate::initContext(QGLContext*, QGLWidget const*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5OpenGL.so.5
#10 0x00007fffcf6e7a71 in Sbk_QGLWidget_Init () from /usr/local/lib/python3.8/dist-packages/PySide2/QtOpenGL.abi3.so
#11 0x00000000005f33af in type_call (kwds=0x0, args=(<PySide2.QtOpenGL.QGLFormat at remote 0x7fffcceccd00>,), type=<optimized out>)
    at ../Objects/typeobject.c:994
#12 _PyObject_MakeTpCall (
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated), args=<optimized out>, 
    nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#13 0x000000000056f600 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffd8002398, 
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated)) at ../Include/cpython/abstract.h:125
#14 _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffd8002398, 
    callable=<Shiboken.ObjectType(__setattr__=<wrapper_descriptor at remote 0x7fffcf947e50>, __delattr__=<wrapper_descriptor at remote 0x7fffcf947f40>, __init__=<wrapper_descriptor at remote 0x7fffcf947f90>, __new__=<built-in method __new__ of Shiboken.ObjectType object at remote 0x1362e60>, autoBufferSwap=<method_descriptor at remote 0x7fffcf948090>, bindTexture=<method_descriptor at remote 0x7fffcf9480e0>, colormap=<method_descriptor at remote 0x7fffcf948130>, context=<method_descriptor at remote 0x7fffcf948180>, convertToGLFormat=<staticmethod at remote 0x7fffcf93ebe0>, deleteTexture=<method_descriptor at remote 0x7fffcf948270>, doneCurrent=<method_descriptor at remote 0x7fffcf9482c0>, doubleBuffer=<method_descriptor at remote 0x7fffcf948310>, drawTexture=<method_descriptor at remote 0x7fffcf948360>, event=<method_descriptor at remote 0x7fffcf9483b0>, format=<method_descriptor at remote 0x7fffcf948400>, glDraw=<method_descriptor at remote 0x7fffcf948450>, glInit=<method_descriptor at remote 0x7fffcf9484a0>, grabFrameBu...(truncated)) at ../Include/cpython/abstract.h:115
#15 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#16 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#17 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7fffd8002200, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/viewer.py, line 1145, in use_OpenGL (self=<NodeViewer(moved_nodes=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22870>, search_triggered=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22890>, connection_sliced=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228b0>, connection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228d0>, insert_node=<PySide2.QtCore.SignalInstance at remote 0x7fffccf228f0>, need_show_tab_search=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22910>, node_name_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22930>, node_backdrop_updated=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22950>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22970>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22990>, node_double_clicked=<PySide--Type <RET> for more, q to quit, c to continue without paging--c
2.QtCore.SignalInstance at remote 0x7fffccf229b0>, data_dropped=<PySide2.QtCore.SignalInstance...(truncated)) at ../Python/ceval.c:741
#18 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#19 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffccf8b1b8, func=<function at remote 0x7fffccf254c0>) at ../Objects/call.c:410
#20 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffccf8b1b8, callable=<function at remote 0x7fffccf254c0>) at ../Include/cpython/abstract.h:127
#21 method_vectorcall (method=<optimized out>, args=0x7fffccf8b1c0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#22 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffccf8b1c0, callable=<method at remote 0x7ffff743a040>) at ../Include/cpython/abstract.h:127
#23 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#24 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#25 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffccf8b040, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1777, in use_OpenGL (self=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={}, session='', acyclic=True, _NodeGraphModel__common_node_props={}) at remote ...(truncated)) at ../Python/ceval.c:741
#26 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#27 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7ffff74f79b0, func=<function at remote 0x7fffccf27820>) at ../Objects/call.c:410
#28 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff74f79b0, callable=<function at remote 0x7fffccf27820>) at ../Include/cpython/abstract.h:127
#29 method_vectorcall (method=<optimized out>, args=0x7ffff74f79b8, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#30 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff74f79b8, callable=<method at remote 0x7fffda44ecc0>) at ../Include/cpython/abstract.h:127
#31 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#32 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#33 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff74f7840, for file example_auto_nodes.py, line 55, in <module> ()) at ../Python/ceval.c:741
#34 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4298
#35 0x000000000068c1e7 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4327
#36 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:718
#37 0x000000000067d5a1 in run_eval_code_obj (co=0x7ffff73f7f50, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated)) at ../Python/pythonrun.c:1125
#38 0x000000000067d61f in run_mod (mod=<optimized out>, filename=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1147
#39 0x000000000067d6db in PyRun_FileExFlags (fp=0x960e40, filename_str=<optimized out>, start=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:1063
#40 0x000000000067da6e in PyRun_SimpleFileExFlags (fp=0x960e40, filename=<optimized out>, closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:428
#41 0x00000000006b6132 in pymain_run_file (cf=0x7fffffffdb78, config=0x961670) at ../Modules/main.c:381
#42 pymain_run_python (exitcode=0x7fffffffdb70) at ../Modules/main.c:606
#43 Py_RunMain () at ../Modules/main.c:685
#44 0x00000000006b64bd in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:739
#45 0x00007ffff7dd00b3 in __libc_start_main (main=0x4eec80 <main>, argc=2, argv=0x7fffffffdd58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd48) at ../csu/libc-start.c:308
#46 0x00000000005f927e in _start () at ../Objects/bytesobject.c:2560
mara004 commented 3 years ago

Another breakpoint from somewhere in the middle:

Thread 1 "python3" hit Breakpoint 1, 0x00007fffd2f13a50 in QPlatformWindow::QPlatformWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
(gdb) py-bt
Traceback (most recent call first):
  <built-in method setWidget of NodeIntEdit object at remote 0x7fffc0829800>
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py", line 188, in set_custom_widget
    self.setWidget(group)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py", line 344, in __init__
    self.set_custom_widget(val_ledit)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py", line 378, in __init__
    super(NodeIntEdit, self).__init__(parent, name, label)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/node.py", line 1031, in add_int_input

  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/node_base/subgraph_node.py", line 367, in __init__
    self.add_int_input('input index', 'input index', value=0)
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py", line 51, in __init__
    super(SubGraphInput, self).__init__()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1279, in _deserialize
    node = NodeCls()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1297, in _deserialize
    children = self._deserialize(sub_graph, relative_pos, pos, False)
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py", line 126, in create_from_file
    children = self.graph._deserialize(children_data, set_parent=False)
  File "/home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py", line 96, in set_graph
    self.create_from_file()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1209, in add_node
    root_node = self.root_node()
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1292, in _deserialize
    self.add_node(node, n_data.get('pos'), unique_name=set_parent)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1442, in import_session
    self._deserialize(layout_data)
  File "/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py", line 1418, in load_session
    self.import_session(file_path)
  File "example_auto_nodes.py", line 82, in <module>
    graph.load_session(r'example_auto_nodes/networks/example_SubGraph.json')
(gdb) bt
#0  0x00007fffd2f13a50 in QPlatformWindow::QPlatformWindow(QWindow*) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
#1  0x00007fffcc9ddcb4 in QtWaylandClient::QWaylandWindow::QWaylandWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#2  0x00007fffc9b71c3c in QtWaylandClient::QWaylandEglWindow::QWaylandEglWindow(QWindow*, QtWaylandClient::QWaylandDisplay*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#3  0x00007fffc9b70277 in QtWaylandClient::QWaylandEglClientBufferIntegration::createEglWindow(QWindow*) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/wayland-graphics-integration-client/libqt-plugin-wayland-egl.so
#4  0x00007fffcc9c7ff3 in QtWaylandClient::QWaylandIntegration::createPlatformWindow(QWindow*) const ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/plugins/platforms/../../lib/libQt5WaylandClient.so.5
#5  0x00007fffd2f2dd8e in QWindowPrivate::create(bool, unsigned long long) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Gui.so.5
#6  0x00007fffd1d44899 in QWidgetPrivate::create() () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#7  0x00007fffd1d44e96 in QWidget::create(unsigned long long, bool, bool) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#8  0x00007fffd1d50164 in QWidgetPrivate::setVisible(bool) () from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#9  0x00007fffd1182631 in QGroupBoxWrapper::setVisible(bool) () from /usr/local/lib/python3.8/dist-packages/PySide2/QtWidgets.abi3.so
#10 0x00007fffd1ffb4f4 in QGraphicsProxyWidgetPrivate::setWidget_helper(QWidget*, bool) ()
   from /usr/local/lib/python3.8/dist-packages/PySide2/Qt/lib/libQt5Widgets.so.5
#11 0x00007fffd110ee77 in Sbk_QGraphicsProxyWidgetFunc_setWidget () from /usr/local/lib/python3.8/dist-packages/PySide2/QtWidgets.abi3.so
#12 0x00000000005c3a40 in cfunction_vectorcall_O (func=<built-in method setWidget of NodeIntEdit object at remote 0x7fffc0829800>, args=<optimized out>, 
    nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/methodobject.c:482
#13 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc0863380, 
    callable=<built-in method setWidget of NodeIntEdit object at remote 0x7fffc0829800>) at ../Include/cpython/abstract.h:127
#14 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#15 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#16 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7fffc08631f0, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py, line 188, in set_custom_widget (self=<NodeIntEdit(_name='input index', _label='input index', _node=None, __METAOBJECT__=<PyCapsule at remote 0x7fffc083f8d0>) at remote 0x7fffc0829800>, widget=<_ValueEdit(valueChanged=<PySide2.QtCore.SignalInstance at remote 0x7fffc082a410>, mid_state=False, _data_type=<type at remote 0x908b40>, pre_x=None, pre_val=None, _step=1, _speed=<float at remote 0x7fffccf32530>, __METAOBJECT__=<PyCapsule at remote 0x7fffc083f750>, menu=<_ValueMenu(mouseMove=<PySide2.QtCore.SignalInstance at remote 0x7fffc082a490>, mouseRelease=<PySide2.QtCore.SignalInstance at remote 0x7fffc082a3b0>, stepChange=<PySide2.QtCore.SignalInstance at remote 0x7fffc082a4d0>, step=1, last_action=None, steps=[<float at remote 0x7fffccf32490>, <float at remote 0x7fffccf323d0>, <float at remote 0x7fffccf32530>, 1, 10, 100, 1000]) at remote 0x7fffc0824500>) at remote 0x7fffc0829e00>, group=<_NodeGroupBox a...(truncated)) at ../Python/ceval.c:741
#17 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#18 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc09fed28, func=<function at remote 0x7fffccf04e50>)
    at ../Objects/call.c:410
#19 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc09fed28, callable=<function at remote 0x7fffccf04e50>)
    at ../Include/cpython/abstract.h:127
#20 method_vectorcall (method=<optimized out>, args=0x7fffc09fed30, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#21 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc09fed30, callable=<method at remote 0x7fffc0889c80>)
    at ../Include/cpython/abstract.h:127
#22 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#23 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#24 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, 
    f=Frame 0x7fffc09feb80, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py, line 344, in __init__ (self=<NodeIntEdit(_name='input index', _label='input index', _node=None, __METAOBJECT__=<PyCapsule at remote 0x7fffc083f8d0>) at remote 0x7fffc0829800>, parent=<NodeItem(_properties={'id': '0x7fffc083f550', 'name': 'SubGraphInput', 'color': (40, 50, 66, 255), 'border_color': (46, 57, 66, 255), 'text_color': (255, 255, 255, 180), 'type_': 'Utility.SubGraphInput', 'selected': False, 'disabled': False, 'visible': False, 'icon': '/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/icons/node_base.png'}, _width=170, _height=80, _icon_item=<PySide2.QtWidgets.QGraphicsPixmapItem at remote 0x7fffc08282c0>, _text_item=<NodeTextItem at remote 0x7fffc08284c0>, _x_item=<XDisabledItem(color=(0, 0, 0, 255), text='DISABLED') at remote 0x7fffc0828c80>, _input_items={}, _output_items={<PortItem(_pipes=[], _width=<float at remote 0x7fffcda68a10>, _height=<float at remote 0x7fffcda68a10>...(truncated)) at ../Python/ceval.c:741
#25 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, 
    kwnames=<optimized out>, kwargs=0x7fffc09feb60, kwcount=<optimized out>, kwstep=1, defs=0x7fffccf56b98, defcount=4, kwdefs=0x0, 
    closure=(<cell at remote 0x7fffccf61d30>,), name='__init__', qualname='NodeFloatEdit.__init__') at ../Python/ceval.c:4298
#26 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc09feb40, 
--Type <RET> for more, q to quit, c to continue without paging--c
    func=<function at remote 0x7fffccef8790>) at ../Objects/call.c:435
#27 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc09feb40, callable=<function at remote 0x7fffccef8790>) at ../Include/cpython/abstract.h:127
#28 method_vectorcall (method=<optimized out>, args=0x7fffc09feb48, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#29 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc09feb48, callable=<method at remote 0x7fffc0859bc0>) at ../Include/cpython/abstract.h:127
#30 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#31 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#32 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc09fe9a0, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/node_widgets.py, line 378, in __init__ (self=<NodeIntEdit(_name='input index', _label='input index', _node=None, __METAOBJECT__=<PyCapsule at remote 0x7fffc083f8d0>) at remote 0x7fffc0829800>, parent=<NodeItem(_properties={'id': '0x7fffc083f550', 'name': 'SubGraphInput', 'color': (40, 50, 66, 255), 'border_color': (46, 57, 66, 255), 'text_color': (255, 255, 255, 180), 'type_': 'Utility.SubGraphInput', 'selected': False, 'disabled': False, 'visible': False, 'icon': '/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/icons/node_base.png'}, _width=170, _height=80, _icon_item=<PySide2.QtWidgets.QGraphicsPixmapItem at remote 0x7fffc08282c0>, _text_item=<NodeTextItem at remote 0x7fffc08284c0>, _x_item=<XDisabledItem(color=(0, 0, 0, 255), text='DISABLED') at remote 0x7fffc0828c80>, _input_items={}, _output_items={<PortItem(_pipes=[], _width=<float at remote 0x7fffcda68a10>, _height=<float at remote 0x7fffcda68a10>...(truncated)) at ../Python/ceval.c:741
#33 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffffffb8c8, kwcount=<optimized out>, kwstep=1, defs=0x7fffccf56d78, defcount=4, kwdefs=0x0, closure=(<cell at remote 0x7fffccf6b850>,), name='__init__', qualname='NodeIntEdit.__init__') at ../Python/ceval.c:4298
#34 0x00000000005f6033 in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7fffffffb8a0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#35 0x000000000059ba6e in _PyObject_FastCallDict (kwargs=0x0, nargsf=5, args=0x7fffffffb8a0, callable=<function at remote 0x7fffccef89d0>) at ../Objects/call.c:96
#36 _PyObject_Call_Prepend (kwargs=0x0, args=<function at remote 0x7fffccef89d0>, obj=<unknown at remote 0x5>, callable=<function at remote 0x7fffccef89d0>) at ../Objects/call.c:887
#37 slot_tp_init (self=self@entry=<NodeIntEdit(_name='input index', _label='input index', _node=None, __METAOBJECT__=<PyCapsule at remote 0x7fffc083f8d0>) at remote 0x7fffc0829800>, args=args@entry=(<NodeItem(_properties={'id': '0x7fffc083f550', 'name': 'SubGraphInput', 'color': (40, 50, 66, 255), 'border_color': (46, 57, 66, 255), 'text_color': (255, 255, 255, 180), 'type_': 'Utility.SubGraphInput', 'selected': False, 'disabled': False, 'visible': False, 'icon': '/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/icons/node_base.png'}, _width=170, _height=80, _icon_item=<PySide2.QtWidgets.QGraphicsPixmapItem at remote 0x7fffc08282c0>, _text_item=<NodeTextItem at remote 0x7fffc08284c0>, _x_item=<XDisabledItem(color=(0, 0, 0, 255), text='DISABLED') at remote 0x7fffc0828c80>, _input_items={}, _output_items={<PortItem(_pipes=[], _width=<float at remote 0x7fffcda68a10>, _height=<float at remote 0x7fffcda68a10>, _hovered=False, _name='out', _display_name=True, _color=(160, 199, 183, 255), _border_color=(...), _border_size=1, _port_type='out', _multi_connection=True, _locked=None) at remote 0x7fffc0828f80>: <PySide2.QtWidgets.QGraphicsTextItem(linkHovered=<PySide2.QtCore.SignalInstance at remote 0x...(truncated), kwds=kwds@entry=0x0) at ../Objects/typeobject.c:6787
#38 0x00000000005f33af in type_call (kwds=0x0, args=(<NodeItem(_properties={'id': '0x7fffc083f550', 'name': 'SubGraphInput', 'color': (40, 50, 66, 255), 'border_color': (46, 57, 66, 255), 'text_color': (255, 255, 255, 180), 'type_': 'Utility.SubGraphInput', 'selected': False, 'disabled': False, 'visible': False, 'icon': '/home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/widgets/icons/node_base.png'}, _width=170, _height=80, _icon_item=<PySide2.QtWidgets.QGraphicsPixmapItem at remote 0x7fffc08282c0>, _text_item=<NodeTextItem at remote 0x7fffc08284c0>, _x_item=<XDisabledItem(color=(0, 0, 0, 255), text='DISABLED') at remote 0x7fffc0828c80>, _input_items={}, _output_items={<PortItem(_pipes=[], _width=<float at remote 0x7fffcda68a10>, _height=<float at remote 0x7fffcda68a10>, _hovered=False, _name='out', _display_name=True, _color=(160, 199, 183, 255), _border_color=(...), _border_size=1, _port_type='out', _multi_connection=True, _locked=None) at remote 0x7fffc0828f80>: <PySide2.QtWidgets.QGraphicsTextItem(linkHovered=<PySide2.QtCore.SignalInstance at remote 0x...(truncated), type=<optimized out>) at ../Objects/typeobject.c:994
#39 _PyObject_MakeTpCall (callable=<Shiboken.ObjectType(__module__='NodeGraphQt.widgets.node_widgets', __doc__='\n    Displays as a ``QLineEdit`` in a node.\n\n    **Inherited from:** :class:`NodeBaseWidget`\n\n    .. note::\n        `To embed a` ``QLineEdit`` `in a node see func:`\n        :meth:`NodeGraphQt.BaseNode.add_int_input`\n    ', __init__=<function at remote 0x7fffccef89d0>, type_=<property at remote 0x7fffccefb680>, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffcceeeb00>) at remote 0x106a660>, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#40 0x000000000056f1ca in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc80231f0, callable=<Shiboken.ObjectType(__module__='NodeGraphQt.widgets.node_widgets', __doc__='\n    Displays as a ``QLineEdit`` in a node.\n\n    **Inherited from:** :class:`NodeBaseWidget`\n\n    .. note::\n        `To embed a` ``QLineEdit`` `in a node see func:`\n        :meth:`NodeGraphQt.BaseNode.add_int_input`\n    ', __init__=<function at remote 0x7fffccef89d0>, type_=<property at remote 0x7fffccefb680>, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffcceeeb00>) at remote 0x106a660>) at ../Include/cpython/abstract.h:125
#41 _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc80231f0, callable=<Shiboken.ObjectType(__module__='NodeGraphQt.widgets.node_widgets', __doc__='\n    Displays as a ``QLineEdit`` in a node.\n\n    **Inherited from:** :class:`NodeBaseWidget`\n\n    .. note::\n        `To embed a` ``QLineEdit`` `in a node see func:`\n        :meth:`NodeGraphQt.BaseNode.add_int_input`\n    ', __init__=<function at remote 0x7fffccef89d0>, type_=<property at remote 0x7fffccefb680>, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffcceeeb00>) at remote 0x106a660>) at ../Include/cpython/abstract.h:115
#42 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#43 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#44 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc8023040, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/node.py, line 1031, in add_int_input (name='input index', label='input index', value=0, range=None, tab=None)) at ../Python/ceval.c:741
#45 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc08881e0, kwcount=<optimized out>, kwstep=1, defs=0x7fffccf8ea58, defcount=4, kwdefs=0x0, closure=0x0, name='add_int_input', qualname='BaseNode.add_int_input') at ../Python/ceval.c:4298
#46 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc08881c8, func=<function at remote 0x7fffccf05b80>) at ../Objects/call.c:435
#47 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc08881c8, callable=<function at remote 0x7fffccf05b80>) at ../Include/cpython/abstract.h:127
#48 method_vectorcall (method=<optimized out>, args=0x7fffc08881d0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#49 0x000000000056b115 in _PyObject_Vectorcall (kwnames=('value',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7fffc0859b80>) at ../Include/cpython/abstract.h:127
#50 call_function (kwnames=('value',), oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=<optimized out>) at ../Python/ceval.c:4963
#51 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#52 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc0888040, for file /home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/node_base/subgraph_node.py, line 367, in __init__ (self=<SubGraphInput(_graph=None, _model=<NodeModel(type_='Utility.SubGraphInput', id='0x7fffc083f550', icon=None, name='SubGraphInput', color=(40, 50, 66, 255), border_color=(74, 84, 85, 255), text_color=(255, 255, 255, 180), disabled=False, selected=False, visible=True, dynamic_port=False, width=<float at remote 0x7ffff71a8af0>, height=<float at remote 0x7ffff71a8dd0>, pos=[<float at remote 0x7ffff71a8a10>, <float at remote 0x7ffff71a8a10>], inputs={}, outputs={'out': <PortModel(node=<...>, type_='out', name='out', display_name=True, multi_connection=True, visible=True, locked=None, connected_ports={}, data_type='NoneType') at remote 0x7fffc083f6d0>}, _custom_prop={'auto_cook': True, 'input index': 0}, _graph_model=None, _TEMP_property_attrs={'auto_cook': {'tab': 'Properties'}, 'input index': {'tab': 'Properties'}}, _TEMP_property_widget_types={'type_': 2, 'id': 2, 'i...(truncated)) at ../Python/ceval.c:741
#53 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc0873888, kwcount=<optimized out>, kwstep=1, defs=0x7fffccec1918, defcount=2, kwdefs=0x0, closure=(<cell at remote 0x7fffccebcee0>,), name='__init__', qualname='SubGraphInputNode.__init__') at ../Python/ceval.c:4298
#54 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc0873880, func=<function at remote 0x7fffccec7160>) at ../Objects/call.c:435
#55 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc0873880, callable=<function at remote 0x7fffccec7160>) at ../Include/cpython/abstract.h:127
#56 method_vectorcall (method=<optimized out>, args=0x7fffc0873888, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#57 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc0873888, callable=<method at remote 0x7fffc08599c0>) at ../Include/cpython/abstract.h:127
#58 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#59 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#60 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc0873700, for file /home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py, line 51, in __init__ (self=<SubGraphInput(_graph=None, _model=<NodeModel(type_='Utility.SubGraphInput', id='0x7fffc083f550', icon=None, name='SubGraphInput', color=(40, 50, 66, 255), border_color=(74, 84, 85, 255), text_color=(255, 255, 255, 180), disabled=False, selected=False, visible=True, dynamic_port=False, width=<float at remote 0x7ffff71a8af0>, height=<float at remote 0x7ffff71a8dd0>, pos=[<float at remote 0x7ffff71a8a10>, <float at remote 0x7ffff71a8a10>], inputs={}, outputs={'out': <PortModel(node=<...>, type_='out', name='out', display_name=True, multi_connection=True, visible=True, locked=None, connected_ports={}, data_type='NoneType') at remote 0x7fffc083f6d0>}, _custom_prop={'auto_cook': True, 'input index': 0}, _graph_model=None, _TEMP_property_attrs={'auto_cook': {'tab': 'Properties'}, 'input index': {'tab': 'Properties'}}, _TEMP_property_widget_types={'type_': 2, 'id': 2, 'icon': 0, '...(truncated)) at ../Python/ceval.c:741
#61 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffffffc208, kwcount=<optimized out>, kwstep=1, defs=0x0, defcount=0, kwdefs=0x0, closure=(<cell at remote 0x7fffccec8430>,), name='__init__', qualname='SubGraphInput.__init__') at ../Python/ceval.c:4298
#62 0x00000000005f6033 in _PyFunction_Vectorcall (func=<optimized out>, stack=0x7fffffffc200, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/call.c:435
#63 0x000000000059ba6e in _PyObject_FastCallDict (kwargs=0x0, nargsf=1, args=0x7fffffffc200, callable=<function at remote 0x7fffccec7a60>) at ../Objects/call.c:96
#64 _PyObject_Call_Prepend (kwargs=0x0, args=<function at remote 0x7fffccec7a60>, obj=<unknown at remote 0x1>, callable=<function at remote 0x7fffccec7a60>) at ../Objects/call.c:887
#65 slot_tp_init (self=self@entry=<SubGraphInput(_graph=None, _model=<NodeModel(type_='Utility.SubGraphInput', id='0x7fffc083f550', icon=None, name='SubGraphInput', color=(40, 50, 66, 255), border_color=(74, 84, 85, 255), text_color=(255, 255, 255, 180), disabled=False, selected=False, visible=True, dynamic_port=False, width=<float at remote 0x7ffff71a8af0>, height=<float at remote 0x7ffff71a8dd0>, pos=[<float at remote 0x7ffff71a8a10>, <float at remote 0x7ffff71a8a10>], inputs={}, outputs={'out': <PortModel(node=<...>, type_='out', name='out', display_name=True, multi_connection=True, visible=True, locked=None, connected_ports={}, data_type='NoneType') at remote 0x7fffc083f6d0>}, _custom_prop={'auto_cook': True, 'input index': 0}, _graph_model=None, _TEMP_property_attrs={'auto_cook': {'tab': 'Properties'}, 'input index': {'tab': 'Properties'}}, _TEMP_property_widget_types={'type_': 2, 'id': 2, 'icon': 0, 'name': 3, 'color': 8, 'border_color': 0, 'text_color': 8, 'disabled': 6, 'selected': 0, 'width': 0, 'height': 0, 'pos': 0, 'inputs': 0, 'o...(truncated), args=args@entry=(), kwds=kwds@entry=0x0) at ../Objects/typeobject.c:6787
#66 0x00000000005f33af in type_call (kwds=0x0, args=(), type=<optimized out>) at ../Objects/typeobject.c:994
#67 _PyObject_MakeTpCall (callable=<Shiboken.ObjectType(__module__='example_auto_nodes.subgraph_nodes', __identifier__='Utility', NODE_NAME='SubGraphInput', __init__=<function at remote 0x7fffccec7a60>, __doc__=None, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffccec9940>) at remote 0x1416f90>, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at ../Objects/call.c:159
#68 0x000000000056f1ca in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x1bf0d08, callable=<Shiboken.ObjectType(__module__='example_auto_nodes.subgraph_nodes', __identifier__='Utility', NODE_NAME='SubGraphInput', __init__=<function at remote 0x7fffccec7a60>, __doc__=None, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffccec9940>) at remote 0x1416f90>) at ../Include/cpython/abstract.h:125
#69 _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x1bf0d08, callable=<Shiboken.ObjectType(__module__='example_auto_nodes.subgraph_nodes', __identifier__='Utility', NODE_NAME='SubGraphInput', __init__=<function at remote 0x7fffccec7a60>, __doc__=None, staticMetaObject=<PySide2.QtCore.QMetaObject at remote 0x7fffccec9940>) at remote 0x1416f90>) at ../Include/cpython/abstract.h:115
#70 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#71 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3500
#72 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x1bf0ac0, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1279, in _deserialize (data={'nodes': {'0x1e4d2ff2288': {'type_': 'Module.MathModuleNode', 'icon': None, 'name': 'math module 1', 'color': [13, 18, 23, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': False, 'dynamic_port': False, 'width': <float at remote 0x7fffc0853890>, 'height': <float at remote 0x7fffc08539f0>, 'pos': [<float at remote 0x7fffc0853a10>, <float at remote 0x7fffc08539d0>], 'custom': {'funcs': 'sub', 'output': <float at remote 0x7fffc0853970>}}, '0x1e4e49c6d88': {'type_': 'Module.MathModuleNode', 'icon': None, 'name': 'math module', 'color': [13, 18, 23, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': False, 'dynamic_port': False, 'width': <float at remote 0x7fffc08538d0>, 'height': <float at remote 0x7fffc08538f0>, 'pos': [<float at remote 0x...(truncated)) at ../Python/ceval.c:741
#73 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x1bf0aa0, kwcount=<optimized out>, kwstep=1, defs=0x7fffcda92658, defcount=3, kwdefs=0x0, closure=0x0, name='_deserialize', qualname='NodeGraph._deserialize') at ../Python/ceval.c:4298
#74 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x1bf0a78, func=<function at remote 0x7fffccf26dc0>) at ../Objects/call.c:435
#75 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x1bf0a78, callable=<function at remote 0x7fffccf26dc0>) at ../Include/cpython/abstract.h:127
#76 method_vectorcall (method=<optimized out>, args=0x1bf0a80, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#77 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x1bf0a80, callable=<method at remote 0x7fffc0859080>) at ../Include/cpython/abstract.h:127
#78 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#79 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#80 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x1bf0830, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1297, in _deserialize (data={'nodes': {'0x1e4d2dfb248': {'type_': 'Utility.SubGraphInput', 'icon': None, 'name': 'SubGraphInput', 'color': [40, 50, 66, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': False, 'dynamic_port': False, 'width': <float at remote 0x7fffc0853dd0>, 'height': <float at remote 0x7fffc0853db0>, 'pos': [<float at remote 0x7fffc0853610>, <float at remote 0x7fffc08535f0>], 'custom': {'input index': 0}}, '0x1e4d2dfbd48': {'type_': 'Utility.SubGraphOutput', 'icon': None, 'name': 'SubGraphOutput', 'color': [40, 50, 66, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': False, 'dynamic_port': False, 'width': 170, 'height': <float at remote 0x7fffc08534f0>, 'pos': [<float at remote 0x7fffc0853410>, <float at remote 0x7fffc0853290>], 'custom': {'outpu...(truncated)) at ../Python/ceval.c:741
#81 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc80d71f8, kwcount=<optimized out>, kwstep=1, defs=0x7fffcda92658, defcount=3, kwdefs=0x0, closure=0x0, name='_deserialize', qualname='NodeGraph._deserialize') at ../Python/ceval.c:4298
#82 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc80d71e8, func=<function at remote 0x7fffccf26dc0>) at ../Objects/call.c:435
#83 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc80d71e8, callable=<function at remote 0x7fffccf26dc0>) at ../Include/cpython/abstract.h:127
#84 method_vectorcall (method=<optimized out>, args=0x7fffc80d71f0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#85 0x000000000056b115 in _PyObject_Vectorcall (kwnames=('set_parent',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7fffc0857d80>) at ../Include/cpython/abstract.h:127
#86 call_function (kwnames=('set_parent',), oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=<optimized out>) at ../Python/ceval.c:4963
#87 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#88 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc80d7040, for file /home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py, line 126, in create_from_file (data={'node': {'icon': None, 'name': 'Cross Product', 'color': [36, 97, 100, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': True, 'dynamic_port': True, 'width': <float at remote 0x7fffc0853cb0>, 'height': <float at remote 0x7fffc089ceb0>, 'pos': [<float at remote 0x7fffc089cef0>, <float at remote 0x7fffc0853ed0>], 'input_ports': [{'name': 'input0', 'multi_connection': False, 'display_name': True, 'data_type': 'None'}, {'name': 'input1', 'multi_connection': False, 'display_name': True, 'data_type': 'None'}], 'output_ports': [{'name': 'output0', 'multi_connection': True, 'display_name': True, 'data_type': 'None'}], 'custom': {'graph_rect': [<float at remote 0x7fffc0853d70>, <float at remote 0x7fffc0853c50>, <float at remote 0x7fffc0853cd0>, <float at remote 0x7fffc0853c90>], 'input count': 2, 'o...(truncated)) at ../Python/ceval.c:741
#89 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc08736e0, kwcount=<optimized out>, kwstep=1, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name='create_from_file', qualname='Publish.create_from_file') at ../Python/ceval.c:4298
#90 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc08736d8, func=<function at remote 0x7fffccec7d30>) at ../Objects/call.c:435
#91 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc08736d8, callable=<function at remote 0x7fffccec7d30>) at ../Include/cpython/abstract.h:127
#92 method_vectorcall (method=<optimized out>, args=0x7fffc08736e0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#93 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc08736e0, callable=<method at remote 0x7fffc0857e00>) at ../Include/cpython/abstract.h:127
#94 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#95 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#96 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc0873550, for file /home/manuel/Downloads/builds/NodeGraphQt/example_auto_nodes/subgraph_nodes.py, line 96, in set_graph (self=<Cross_Product(_graph=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={'0000000000000': <RootNode(_graph=<...>, _model=...(truncated)) at ../Python/ceval.c:741
#97 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc0b4fe08, kwcount=<optimized out>, kwstep=1, defs=0x0, defcount=0, kwdefs=0x0, closure=(<cell at remote 0x7fffccec85b0>,), name='set_graph', qualname='Publish.set_graph') at ../Python/ceval.c:4298
#98 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc0b4fdf8, func=<function at remote 0x7fffccec7ca0>) at ../Objects/call.c:435
#99 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc0b4fdf8, callable=<function at remote 0x7fffccec7ca0>) at ../Include/cpython/abstract.h:127
#100 method_vectorcall (method=<optimized out>, args=0x7fffc0b4fe00, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#101 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc0b4fe00, callable=<method at remote 0x7fffc0857e40>) at ../Include/cpython/abstract.h:127
#102 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#103 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#104 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc0b4fc40, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1209, in add_node (self=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={'0000000000000': <RootNode(_graph=<...>, _model=<NodeModel(type_='__None.RootNod...(truncated)) at ../Python/ceval.c:741
#105 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x1b3e188, kwcount=<optimized out>, kwstep=1, defs=0x7fffcda92618, defcount=2, kwdefs=0x0, closure=0x0, name='add_node', qualname='NodeGraph.add_node') at ../Python/ceval.c:4298
#106 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x1b3e170, func=<function at remote 0x7fffccf263a0>) at ../Objects/call.c:435
#107 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x1b3e170, callable=<function at remote 0x7fffccf263a0>) at ../Include/cpython/abstract.h:127
#108 method_vectorcall (method=<optimized out>, args=0x1b3e178, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#109 0x000000000056b115 in _PyObject_Vectorcall (kwnames=('unique_name',), nargsf=<optimized out>, args=<optimized out>, callable=<method at remote 0x7fffc0857f80>) at ../Include/cpython/abstract.h:127
#110 call_function (kwnames=('unique_name',), oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=<optimized out>) at ../Python/ceval.c:4963
#111 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3515
#112 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x1b3df30, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1292, in _deserialize (data={'nodes': {'0x17f3e2d7b08': {'type_': 'Inputs.Vector3InputNode', 'icon': None, 'name': 'Vector 6', 'color': [13, 18, 23, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': True, 'dynamic_port': False, 'width': 170, 'height': 80, 'pos': [<float at remote 0x7fffc085cf30>, <float at remote 0x7fffc085cf50>], 'custom': {'auto_cook': True, 'out': [<float at remote 0x7fffc085cfb0>, <float at remote 0x7fffc085ce30>, <float at remote 0x7fffc085ce10>]}}, '0x17f3e2db648': {'type_': 'Inputs.Vector3InputNode', 'icon': None, 'name': 'Vector 1', 'color': [13, 18, 23, 255], 'border_color': [74, 84, 85, 255], 'text_color': [255, 255, 255, 180], 'disabled': False, 'selected': True, 'visible': True, 'dynamic_port': False, 'width': 170, 'height': 80, 'pos': [<float at remote 0x7fffc085cd90>, <float at remote 0x7fffc085c5f0>], 'cus...(truncated)) at ../Python/ceval.c:741
#113 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x7fffc08cc1e8, kwcount=<optimized out>, kwstep=1, defs=0x7fffcda92658, defcount=3, kwdefs=0x0, closure=0x0, name='_deserialize', qualname='NodeGraph._deserialize') at ../Python/ceval.c:4298
#114 0x000000000050a3b0 in _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc08cc1d8, func=<function at remote 0x7fffccf26dc0>) at ../Objects/call.c:435
#115 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc08cc1d8, callable=<function at remote 0x7fffccf26dc0>) at ../Include/cpython/abstract.h:127
#116 method_vectorcall (method=<optimized out>, args=0x7fffc08cc1e0, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#117 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc08cc1e0, callable=<method at remote 0x7ffff743a040>) at ../Include/cpython/abstract.h:127
#118 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#119 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#120 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc08cc040, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1442, in import_session (self=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={'0000000000000': <RootNode(_graph=<...>, _model=<NodeModel(type_='__None.R...(truncated)) at ../Python/ceval.c:741
#121 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#122 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7fffc086ca30, func=<function at remote 0x7fffccf270d0>) at ../Objects/call.c:410
#123 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7fffc086ca30, callable=<function at remote 0x7fffccf270d0>) at ../Include/cpython/abstract.h:127
#124 method_vectorcall (method=<optimized out>, args=0x7fffc086ca38, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#125 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffc086ca38, callable=<method at remote 0x7fffc8083d40>) at ../Include/cpython/abstract.h:127
#126 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#127 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#128 0x000000000050a23e in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7fffc086c8b0, for file /home/manuel/Downloads/builds/NodeGraphQt/NodeGraphQt/base/graph.py, line 1418, in load_session (self=<NodeGraph(node_created=<PySide2.QtCore.SignalInstance at remote 0x7fffccf224b0>, nodes_deleted=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22670>, node_selected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22350>, node_selection_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf226b0>, node_double_clicked=<PySide2.QtCore.SignalInstance at remote 0x7fffccf222b0>, port_connected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227d0>, port_disconnected=<PySide2.QtCore.SignalInstance at remote 0x7fffccf227f0>, property_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22810>, data_dropped=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22830>, session_changed=<PySide2.QtCore.SignalInstance at remote 0x7fffccf22850>, _widget=None, _undo_view=None, _model=<NodeGraphModel(nodes={'0000000000000': <RootNode(_graph=<...>, _model=<NodeModel(type_='__None.Roo...(truncated)) at ../Python/ceval.c:741
#129 function_code_fastcall (globals=<optimized out>, nargs=<optimized out>, args=<optimized out>, co=<optimized out>) at ../Objects/call.c:283
#130 _PyFunction_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, stack=0x7ffff74f79b0, func=<function at remote 0x7fffccf27040>) at ../Objects/call.c:410
#131 _PyObject_Vectorcall (kwnames=<optimized out>, nargsf=<optimized out>, args=0x7ffff74f79b0, callable=<function at remote 0x7fffccf27040>) at ../Include/cpython/abstract.h:127
#132 method_vectorcall (method=<optimized out>, args=0x7ffff74f79b8, nargsf=<optimized out>, kwnames=<optimized out>) at ../Objects/classobject.c:60
#133 0x000000000056ef97 in _PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7ffff74f79b8, callable=<method at remote 0x7ffff6ac5b40>) at ../Include/cpython/abstract.h:127
#134 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetischer Zeiger>, tstate=0x962430) at ../Python/ceval.c:4963
#135 _PyEval_EvalFrameDefault (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3469
#136 0x000000000056822a in PyEval_EvalFrameEx (throwflag=0, f=Frame 0x7ffff74f7840, for file example_auto_nodes.py, line 82, in <module> ()) at ../Python/ceval.c:741
#137 _PyEval_EvalCodeWithName (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>, kwargs=0x0, kwcount=<optimized out>, kwstep=2, defs=0x0, defcount=0, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4298
#138 0x000000000068c1e7 in PyEval_EvalCodeEx (closure=0x0, kwdefs=0x0, defcount=0, defs=0x0, kwcount=0, kws=0x0, argcount=0, args=0x0, locals=<optimized out>, globals=<optimized out>, _co=<optimized out>) at ../Python/ceval.c:4327
#139 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:718
#140 0x000000000067d5a1 in run_eval_code_obj (co=0x7ffff73f7f50, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated)) at ../Python/pythonrun.c:1125
#141 0x000000000067d61f in run_mod (mod=<optimized out>, filename=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), flags=<optimized out>, arena=<optimized out>) at ../Python/pythonrun.c:1147
#142 0x000000000067d6db in PyRun_FileExFlags (fp=0x960e40, filename_str=<optimized out>, start=<optimized out>, globals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), locals={'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <SourceFileLoader(name='__main__', path='example_auto_nodes.py') at remote 0x7ffff74dec40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module at remote 0x7ffff75090e0>, '__file__': 'example_auto_nodes.py', '__cached__': None, 'NodeGraph': <Shiboken.ObjectType(__module__='NodeGraphQt.base.graph', __doc__='\n    The ``NodeGraph`` class is the main controller for managing all nodes\n    and the node graph.\n\n    Inherited from: :class:`PySide2.QtCore.QObject`\n\n    .. image:: _images/graph.png\n        :width: 60%\n    ', node_created=<PySide2.QtCore.Signal at remote 0x7ffff7405f50>, nodes_deleted=<PySide2.QtCore.Signal at remote 0x7fffccf22110>, node_selected=<PySide2.QtCore.Signal at remote 0x7fffccf22130>, node_selection_changed=<PySide2.QtCore.Signal at remote 0x7fffccf22150>, node_double_clicked=<PySide2.QtCore.Signal at remote 0x7fffccf22170>, port_connected=<PySide2.QtCore.Signal at remote 0x7fffccf22190>, port_d...(truncated), closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:1063
#143 0x000000000067da6e in PyRun_SimpleFileExFlags (fp=0x960e40, filename=<optimized out>, closeit=1, flags=0x7fffffffdb78) at ../Python/pythonrun.c:428
#144 0x00000000006b6132 in pymain_run_file (cf=0x7fffffffdb78, config=0x961670) at ../Modules/main.c:381
#145 pymain_run_python (exitcode=0x7fffffffdb70) at ../Modules/main.c:606
#146 Py_RunMain () at ../Modules/main.c:685
#147 0x00000000006b64bd in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:739
#148 0x00007ffff7dd00b3 in __libc_start_main (main=0x4eec80 <main>, argc=2, argv=0x7fffffffdd58, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd48) at ../csu/libc-start.c:308
#149 0x00000000005f927e in _start () at ../Objects/bytesobject.c:2560
mara004 commented 3 years ago

I now quickly looked at the code because I was wondering why the issue is only present for example_auto_nodes.py and not for the other two examples. I saw that the most notable difference compared to the others was line 55 graph.use_OpenGL(). When commenting out this line, the problem is gone.

mara004 commented 3 years ago

So this code passage points us to

    def use_OpenGL(self):
        format = QtOpenGL.QGLFormat(QtOpenGL.QGL.SampleBuffers)
        format.setSamples(4)
        self.setViewport(QtOpenGL.QGLWidget(format))

where we can see that the deprecated QGLWidget is used, which likely causes these problems, as it was for Gwenview

Sometimes just looking at the code is better than investigating 200 backtraces ;)

mara004 commented 3 years ago

@jchanvfx Would you please take a look whether you could replace QGLWidget with QOpenGLWidget? I think this should fix the Wayland issues, and QGLWidget is deprecated in any case.

mara004 commented 3 years ago

I'd never done anything with Qt/OpenGL yet so I don't know whether this is okay, but simply replacing the old method with

    def use_OpenGL(self):
        self.setViewport(QOpenGLWidget())

and adding the import

from PySide2.QtWidgets import QOpenGLWidget

fixed the issue for me.

The import has the implication that it only covers PySide2, but the generic Qt.py module doesn't seem to have QOpenGLWidget.

It doesn't throw an Exception and rendering looks correct, but can we check somehow that OpenGL is really used for rendering now? Do we maybe need to call a method to create some context before? Do we need to pass any arguments to QOpenGLWidget that I might have missed?