def printstuff(newtags, prevelement, ii, level, goto, pre): if level > goto + 2: return None, None basetag = newtags[ii] tab = " " baseelement = prevelement.find(basetag) lowertags = pybecc.get_tags_childrens_tags(prevelement, basetag) tags = lowertags tagsinbase = [pybecc.get_tags_childrens_tags(baseelement, tag) for tag in tags] inbase = [ (i, tag, pybecc.get_tags_childrens_tags(baseelement, tag)) for (i, tag) in enumerate(tags) ] printthis = f"{pre}/{basetag}" length = len(printthis.split("/")) - 1 print(tab * level, f"{level}.{ii:03d}", printthis, length) for i, tag, childtags in inbase: printthis = f"{pre}/{basetag}/{tag}" length = len(printthis.split("/")) - 1 print(tab * (level + 1), f"{level+1}.{i:03d}", printthis, length) for k, childtag in enumerate(childtags): printstuff( childtags, baseelement.find(tag), k, level + 2, goto, f"{pre}/{basetag}/{tag}", ) return lowertags, baseelement
def test_get_tags_childrens_tags(): """py.test for get_tags_childrens_tags""" data = ( (Tree().treetxt1, "country", ["rank", "year", "gdppc", "neighbor", "capital"]), # treetxt, tag, expected (Tree().treetxt2, "country", ["rank", "year", "gdppc", "neighbor", "capital"]), # treetxt, tag, expected ) for treetxt, tag, expected in data: tree = ET.ElementTree(ET.fromstring(treetxt)) root = tree.getroot() element = root result = pybecc.get_tags_childrens_tags(element, tag) assert result == expected data = ( (Tree().treetxt1, "data", ["country"]), # treetxt, tag, expected # (Tree().treetxt2, 'country', # ['rank', 'year', 'gdppc', 'neighbor', 'capital']), # # treetxt, tag, expected ) for treetxt, tag, expected in data: tree = ET.ElementTree(ET.fromstring(treetxt)) root = tree.getroot() element = root result = pybecc.get_tags_childrens_tags(element, tag) print(result) print(expected) print("=" * 13)
def printfilteredstuff(newtags, prevelement, ii, level, goto=500, tagfrom=None): if level > goto + 2: return None, None basetag = newtags[ii] tab = " " baseelement = prevelement.find(basetag) lowertags = pybecc.get_tags_childrens_tags(prevelement, basetag) tags = lowertags tagsinbase = [ pybecc.get_tags_childrens_tags(baseelement, tag) for tag in tags ] inbase = [(i, tag, pybecc.get_tags_childrens_tags(baseelement, tag)) for (i, tag) in enumerate(tags)] if not tagfrom: print(tab * level, f"{level}.{ii:03d}", basetag) elif tagfrom == basetag: print(tab * level, f"{level}.{ii:03d}", basetag) for i, tag, childtags in inbase: ntagfrom = tagfrom if not tagfrom: print(tab * (level + 1), f"{level+1}.{i:03d}", tag) elif tagfrom == basetag: print(tab * (level + 1), f"{level+1}.{i:03d}", tag) ntagfrom = None for k, childtag in enumerate(childtags): printfilteredstuff( childtags, baseelement.find(tag), k, level + 2, goto=goto, tagfrom=ntagfrom, ) return lowertags, baseelement
for i, tag, childtags in inbase: print(tab * (level + 1), f"{level+1}.{i:03d}", tag) for k, childtag in enumerate(childtags): printstuff(childtags, baseelement.find(tag), k, level + 2, goto) return lowertags, baseelement fname1 = "/Users/santosh/Documents/coolshadow/github/pybecc/resources/010012-SchSml-CECStd.xml" # fname1 = "/Users/santosh/Dropbox/temp/190715_T24_00-post_open.xml" fname1 = "/Users/santosh/Documents/coolshadow/HOK_O_Street/simulation/O_street_working/T_24_models/cbecc_models/Abe/190729_T24_05_mech.cibd16x" tree = ET.parse(fname1) root = tree.getroot() l1_tags = pybecc.getchildtags(root) tab = " " level = 0 prevelement = root basetag = l1_tags[1] # -- baseelement = prevelement.find(basetag) lowertags = pybecc.get_tags_childrens_tags(prevelement, basetag) tags = lowertags tagsinbase = [pybecc.get_tags_childrens_tags(baseelement, tag) for tag in tags] inbase = [(i, tag, pybecc.get_tags_childrens_tags(baseelement, tag)) for (i, tag) in enumerate(tags)] print(tab * level, f"{level}.{0}", basetag) for i, tag, childtags in inbase: print(tab * (level + 1), f"{level+1}.{i}", tag) for k, childtag in enumerate(childtags): printstuff(childtags, baseelement.find(tag), k, level + 2, 1)
l1_tags = pybecc.getchildtags(root) tab = " " level = 0 # prevelement = root # maintag = l1_tags[1] # # # -- # baseelement = prevelement.find(basetag) baseelement = root # baseelement = root.find(maintag) basetag = baseelement.tag # lowertags = pybecc.get_tags_childrens_tags(prevelement, basetag) lowertags = pybecc.getchildtags(baseelement) tags = lowertags # tagsinbase = [pybecc.get_tags_childrens_tags(baseelement, tag) for tag in tags] inbase = [ (i, tag, pybecc.get_tags_childrens_tags(baseelement, tag)) for (i, tag) in enumerate(tags) ] print(tab * level, f"{level}.{0}", basetag) for i, tag, childtags in inbase: pre = f"{basetag}/{tag}" pre = f"./{tag}" # print(pre, "\n", end="") printthis = pre length = len(printthis.split("/")) - 1 print(tab * (level + 1), f"{level+1}.{i}", printthis, length) for k, childtag in enumerate(childtags): printstuff(childtags, baseelement.find(tag), k, level + 2, 10, pre)
# fname1 = "/Users/santosh/Dropbox/temp/190715_T24_00-post_open.xml" fname1 = "/Users/santosh/Documents/coolshadow/HOK_O_Street/simulation/O_street_working/T_24_models/cbecc_models/Abe/190729_T24_05_mech.cibd16x" fname1 = "/Users/santoshphilip/Dropbox/coolshadow_dropbox/doe2eppystuff/eplusfiles/190729_T24_05_mech_process12_upprocess4.cibd16x" # fname1 = "./resources/tree1.xml" tree = ET.parse(fname1) root = tree.getroot() l1_tags = pybecc.getchildtags(root) tab = " " level = 0 prevelement = root print(l1_tags) basetag = l1_tags[1] # # -- baseelement = prevelement.find(basetag) basetag = baseelement.tag lowertags = pybecc.get_tags_childrens_tags(prevelement, basetag) tags = lowertags # tagsinbase = [pybecc.get_tags_childrens_tags(baseelement, tag) for tag in tags] inbase = [(i, tag, pybecc.get_tags_childrens_tags(baseelement, tag)) for (i, tag) in enumerate(tags)] print(tab * level, f"{level}.{0}", basetag) for i, tag, childtags in inbase: pre = f"{basetag}/{tag}" # print(pre, "\n", end="") printthis = pre length = len(printthis.split("/")) - 1 print(tab * (level + 1), f"{level+1}.{i}", printthis, length) for k, childtag in enumerate(childtags): printstuff(childtags, baseelement.find(tag), k, level + 2, 10, pre)