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

1from wikitextprocessor import LevelNode, NodeKind, WikiNode 

2 

3from ...page import clean_node 

4from ...wxr_context import WiktextractContext 

5from .models import Sense, WordEntry 

6from .section_titles import POS_DATA 

7 

8 

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", [])) 

21 

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 

29 

30 

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)