get_parents will find the parent of nested nodes, but sections aren't one of the nodes.
When I'm concerned with the section, I usually iterate over them like below. You could also iterate all nodes in reverse from the node of interest until you find a Heading node.
for section in wikicode.get_sections(flat=True, include_lead=False):
... heading = section.filter_headings()[0].title.strip() ... for tpl in section.ifilter_templates(): ... if tpl.name.matches("Template:Foo"): ... this = tpl ...
this
'{{Template:Foo}}'
heading
'foo'
On Thu, Mar 23, 2023 at 9:03 AM Roy Smith roy@panix.com wrote:
To my surprise, wikicode.get_parent() does not get you the section a node is part of:
import mwparserfromhell as mwp
text = """==foo== {{Template:Foo}} """ wikicode = mwp.parse(text) print(wikicode.get_tree())
print('++++++++++')
node = wikicode.nodes[-2] print(f"{node=}") print(f"{wikicode.get_parent(node)=}")
prints:
== foo == \n {{ Template:Foo }} \n ++++++++++ node='{{Template:Foo}}' wikicode.get_parent(node)=None
Am I just doing this wrong? _______________________________________________ pywikibot mailing list -- pywikibot@lists.wikimedia.org Public archives at https://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/me... To unsubscribe send an email to pywikibot-leave@lists.wikimedia.org