Does Py_BuildValue("(OiiO)", tagobj, childStart, childPosition, childResults); create a valid tuple? Do you have a simple test case you can post that demonstrates the problem? -- Skip Montanaro skip at pobox.com consulting: http://manatee.mojam.com/~skip/resume.html