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(a)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(a)lists.wikimedia.org
Public archives at
https://lists.wikimedia.org/hyperkitty/list/pywikibot@lists.wikimedia.org/m…
To unsubscribe send an email to pywikibot-leave(a)lists.wikimedia.org