Coverage for src/wiktextract/extractor/sv/pos.py: 90%
28 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-15 05:18 +0000
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-15 05:18 +0000
1from wikitextprocessor import LevelNode, NodeKind, WikiNode
3from ...page import clean_node
4from ...wxr_context import WiktextractContext
5from .models import Sense, WordEntry
6from .section_titles import POS_DATA
9def extract_pos_section(
10 wxr: WiktextractContext,
11 page_data: list[WordEntry],
12 base_data: WordEntry,
13 level_node: LevelNode,
14 pos_title: str,
15) -> None:
16 page_data.append(base_data.model_copy(deep=True))
17 page_data[-1].pos_title = pos_title
18 pos_data = POS_DATA[pos_title]
19 page_data[-1].pos = pos_data["pos"]
20 page_data[-1].tags.extend(pos_data.get("tags", []))
22 gloss_list_index = len(level_node.children)
23 for index, list_node in level_node.find_child(NodeKind.LIST, True):
24 for list_item in list_node.find_child(NodeKind.LIST_ITEM):
25 if list_node.sarg.startswith("#") and list_node.sarg.endswith("#"): 25 ↛ 24line 25 didn't jump to line 24 because the condition on line 25 was always true
26 extract_gloss_list_item(wxr, page_data[-1], list_item)
27 if index < gloss_list_index: 27 ↛ 24line 27 didn't jump to line 24 because the condition on line 27 was always true
28 gloss_list_index = index
31def extract_gloss_list_item(
32 wxr: WiktextractContext, word_entry: WordEntry, list_item: WikiNode
33) -> None:
34 sense = Sense()
35 gloss_nodes = []
36 for node in list_item.children:
37 if not (isinstance(node, WikiNode) and node.kind == NodeKind.LIST): 37 ↛ 36line 37 didn't jump to line 36 because the condition on line 37 was always true
38 gloss_nodes.append(node)
39 gloss_str = clean_node(wxr, sense, gloss_nodes)
40 if gloss_str != "": 40 ↛ exitline 40 didn't return from function 'extract_gloss_list_item' because the condition on line 40 was always true
41 sense.glosses.append(gloss_str)
42 word_entry.senses.append(sense)