> If the graph has been garbage collected and nodes sill exist it will
> obviously crash
> if someone tries to use functions of the node related to the graph.
> But that's perfectly ok with my understanding of python.

In C++, it is common that iterators etc. get invalidated when the 
underlying data structures change. If this were the only use case for 
these classes I wouldn't insist. But Python absolutely must not crash 
under any circumstances. Thus, if the pointer holds a Python-managed 
graph object, it is absolutely necessary to use a mechanism like 
custodian-and-ward to ensure that the graph cannot be garbage collected 
while item holders still exist.