It’s great that factory method API ambiguities can be finally resolved (the problem was that after returning a simple pointer the user must remember to delete manually or take over ownership; when returning vtkSmartPointer, user may assign it to a regular pointer, resulting in a dangling pointer). I guess a returned vtkNew can only be assigned to a vtkNew, so it cannot be misused.
Does Python-wrapping work well with vtkNew<> return value?