Coverage for src/wiktextract/extractor/es/etymology.py: 96%
29 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-07 00:55 +0000
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-07 00:55 +0000
1from wikitextprocessor import LevelNode, NodeKind, TemplateNode, WikiNode
3from ...page import clean_node
4from ...wxr_context import WiktextractContext
5from .models import Attestation, WordEntry
8def extract_etymology_section(
9 wxr: WiktextractContext, base_data: WordEntry, level_node: LevelNode
10):
11 missing_etymology = "Si puedes, incorpórala: ver cómo"
12 e_nodes = []
13 for node in level_node.children:
14 if isinstance(node, LevelNode):
15 break
16 elif isinstance(node, WikiNode) and node.kind == NodeKind.LIST:
17 for list_item in node.find_child(NodeKind.LIST_ITEM):
18 links: list[tuple[str, str]] = []
19 e_text = clean_node(
20 wxr, base_data, list_item.children, link_collector=links
21 )
22 if e_text != "" and not e_text.startswith(missing_etymology):
23 base_data.etymology_texts.append(e_text)
24 base_data.etymology_links.extend(links)
25 elif (
26 isinstance(node, TemplateNode) and node.template_name == "datación"
27 ):
28 date = clean_node(wxr, None, node.template_parameters.get(1, ""))
29 if date != "": 29 ↛ 31line 29 didn't jump to line 31 because the condition on line 29 was always true
30 base_data.attestations.append(Attestation(date=date))
31 e_nodes.append(node)
32 else:
33 e_nodes.append(node)
35 if len(e_nodes) > 0: 35 ↛ exitline 35 didn't return from function 'extract_etymology_section' because the condition on line 35 was always true
36 links = []
37 e_text = clean_node(wxr, base_data, e_nodes, link_collector=links)
38 if e_text != "" and not e_text.startswith(missing_etymology):
39 base_data.etymology_texts.append(e_text)
40 base_data.etymology_links.extend(links)