Coverage for src/wiktextract/extractor/pl/note.py: 93%

34 statements  

« prev     ^ index     » next       coverage.py v7.9.0, created at 2025-06-13 07:43 +0000

1import re 

2from typing import Optional 

3 

4from wikitextprocessor import NodeKind, WikiNode 

5 

6from ...page import clean_node 

7from ...wxr_context import WiktextractContext 

8from .models import Note, WordEntry 

9 

10 

11def extract_note_section( 

12 wxr: WiktextractContext, 

13 page_data: list[WordEntry], 

14 base_data: WordEntry, 

15 level_node: WikiNode, 

16) -> None: 

17 from .page import match_sense_index 

18 

19 notes = [] 

20 for list_item in level_node.find_child_recursively(NodeKind.LIST_ITEM): 

21 note = process_note_list_item(wxr, list_item) 

22 if note is not None: 22 ↛ 20line 22 didn't jump to line 20 because the condition on line 22 was always true

23 notes.append(note) 

24 for data in page_data: 

25 if data.lang_code == base_data.lang_code: 25 ↛ 24line 25 didn't jump to line 24 because the condition on line 25 was always true

26 for sense in data.senses: 

27 for note in notes: 

28 if note.sense_index == "" or match_sense_index( 

29 note.sense_index, sense 

30 ): 

31 sense.notes.append(note.text) 

32 

33 

34def process_note_list_item( 

35 wxr: WiktextractContext, list_item: WikiNode 

36) -> Optional[Note]: 

37 sense_index = "" 

38 note_nodes = [] 

39 for node in list_item.children: 

40 if isinstance(node, str): 

41 m = re.search(r"\([\d\s,-.]+\)", node) 

42 if m is not None: 

43 sense_index = m.group(0).strip("()") 

44 note_nodes.append(node[m.end() :]) 

45 else: 

46 note_nodes.append(node) 

47 else: 

48 note_nodes.append(node) 

49 note_text = clean_node(wxr, None, note_nodes) 

50 if len(note_text) > 0: 50 ↛ 52line 50 didn't jump to line 52 because the condition on line 50 was always true

51 return Note(sense_index=sense_index, text=note_text) 

52 return None