|
OOh something weird happened with the gist the actual code without duplicates is below:
def gatherXMLElementInfo(treeViewItems, root):
# Iterate backwards through the object listfor item in reversed(treeViewItems):# If the current item is the last item in the listif item == treeViewItems[0]:
# We need to iterate through the parent element children i.e. the list that our element is hiding inif not item in self.elemsToIgnore:if root.getchildren():for elem in root.getchildren():elemAttributes = elem.attribcorrectElement = [elemAttributes.get(i) for i in elemAttributes if elemAttributes.get(i) == item]if correctElement:print correctElement[0]breakreturnelse:returnelse:if item in self.elemsToIgnore:print "IGNORE", itemxmlElem = root.findall(item)[0]else:
for child in root.getchildren():#print child, rootelemAttributes = child.attribcorrectElement = [elemAttributes.get(i) for i in elemAttributes if elemAttributes.get(i) == item]if correctElement:print "FOUNDDDDDD IT", childxmlElem = childbreaklistMinusOne = [i for i in treeViewItems if not i == item]print " XML ELm", xmlElem
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/35125785-078f-498b-b796-19566479da4d%40googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/python_inside_maya/VDbwp3Nd9ec/unsubscribe.
To unsubscribe from this group and all its topics, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOAiNC3%2BLr_Ghf2XM1T0Htx6bmwSPkb2urvw4kExLhQ2zQ%40mail.gmail.com.
It looks like you have a bug in your recursion logic. Simply using a return statement during a recursive loop does not automatically stop the entire recursive process. It only returns from that current function, and control returns up to the previous frame on the stack. Control continues to flow from that point so you have to be sure that your recursive loop is set up to properly unwind.
From what I can see in your fixed example, the first thing you do is loop over the reversed tree item list. But I think what happens is at some point you completely filter down the list to empty. You don't check if the list is empty right away and so the for loop doesn't do anything and control reaches that last line which is another recursive call but with a variable that was never defined from the loop. I think if you have first checked if the input list was empty and returned early, you might have avoided the error.
A tip is that it usually helps to "bail early" instead of nested if statements, when possible. That makes it more clear to read the control flow and know when something isn't going to go any further.
Justin
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAM2ybkUXYZhhnNCORB_WBGBsq_K-uHJs1rTFZWJHDqhcJ5EpHA%40mail.gmail.com.