Coverage for src/wiktextract/extractor/ru/etymology.py: 95%
24 statements
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-24 00:49 +0000
« prev ^ index » next coverage.py v7.16.1, created at 2026-09-24 00:49 +0000
1from wikitextprocessor import LevelNode, NodeKind, TemplateNode, WikiNode
3from ...page import clean_node
4from ...wxr_context import WiktextractContext
5from .models import WordEntry
8def extract_etymology(
9 wxr: WiktextractContext, word_entry: WordEntry, level_node: LevelNode
10):
11 e_nodes = []
12 for node in level_node.children:
13 if isinstance(node, LevelNode):
14 break
15 elif isinstance(node, WikiNode) and node.kind == NodeKind.LIST:
16 for list_item in node.find_child(NodeKind.LIST_ITEM):
17 links: list[tuple[str, str]] = []
18 e_text = clean_node(
19 wxr, word_entry, list_item.children, link_collector=links
20 )
21 if e_text != "": 21 ↛ 16line 21 didn't jump to line 16 because the condition on line 21 was always true
22 word_entry.etymology_texts.append(e_text)
23 word_entry.etymology_links.extend(links)
24 elif not (
25 isinstance(node, TemplateNode) and node.template_name == "improve"
26 ):
27 e_nodes.append(node)
28 if len(e_nodes) > 0: 28 ↛ exitline 28 didn't return from function 'extract_etymology' because the condition on line 28 was always true
29 links = []
30 e_str = clean_node(wxr, word_entry, e_nodes, link_collector=links)
31 if e_str != "":
32 word_entry.etymology_texts.append(e_str)
33 word_entry.etymology_links.extend(links)