1919from .generator_dialog import GeneratorDialog
2020from .morpheme import Morpheme , MorphOccurrence
2121from .morphemizer import Morphemizer , SpacyMorphemizer
22+ from .table_utils import QTableWidgetIntegerItem , QTableWidgetPercentItem
2223from .ui .readability_report_generator_ui import Ui_ReadabilityReportGeneratorDialog
2324
2425
@@ -36,7 +37,7 @@ def __init__(self) -> None:
3637 self ._unknowns_column = 4
3738 self ._number_of_columns = 5
3839 self ._setup_absolute_table ()
39- self ._setup_perecentages_table ()
40+ self ._setup_percentages_table ()
4041 self ._setup_buttons ()
4142 self .show ()
4243
@@ -63,7 +64,7 @@ def _setup_absolute_table(self) -> None:
6364 QAbstractItemView .EditTrigger .NoEditTriggers
6465 )
6566
66- def _setup_perecentages_table (self ) -> None :
67+ def _setup_percentages_table (self ) -> None :
6768 assert isinstance (self .ui , Ui_ReadabilityReportGeneratorDialog )
6869
6970 self .ui .percentTableWidget .setAlternatingRowColors (True )
@@ -169,17 +170,15 @@ def _background_generate_report( # pylint:disable=too-many-locals
169170 am_config , am_db , file_morphs
170171 )
171172
172- self ._populate_absolute_table (
173+ self ._populate_numerical_table (
173174 _input_file ,
174- file_morphs ,
175175 _row ,
176176 known_morphs ,
177177 learning_morphs ,
178178 unknown_morphs ,
179179 )
180180 self ._populate_percentage_table (
181181 _input_file ,
182- file_morphs ,
183182 _row ,
184183 known_morphs ,
185184 learning_morphs ,
@@ -196,7 +195,7 @@ def _create_file_morphs_dict(self, file: TextIO, morphemizer, nlp) -> dict[str,
196195
197196 file_morphs : dict [str , MorphOccurrence ] = {}
198197 for line in file :
199- morphs : set [Morpheme ] = self ._get_morphs_from_line (morphemizer , nlp , line )
198+ morphs : list [Morpheme ] = self ._get_morphs_from_line (morphemizer , nlp , line )
200199 for morph in morphs :
201200 key = morph .lemma + morph .inflection
202201 if key in file_morphs :
@@ -217,28 +216,28 @@ def _get_morph_statuses(
217216
218217 for morph_occurrence_object in file_morphs .values ():
219218 morph = morph_occurrence_object .morph
219+ occurrence = morph_occurrence_object .occurrence
220220
221221 highest_learning_interval : Optional [
222222 int
223223 ] = am_db .get_highest_learning_interval (morph .lemma , morph .inflection )
224224
225225 if highest_learning_interval is None :
226- unknown_morphs += 1
226+ unknown_morphs += occurrence
227227 continue
228228
229229 if highest_learning_interval == 0 :
230- unknown_morphs += 1
230+ unknown_morphs += occurrence
231231 elif highest_learning_interval < am_config .recalc_interval_for_known :
232- learning_morphs += 1
232+ learning_morphs += occurrence
233233 else :
234- known_morphs += 1
234+ known_morphs += occurrence
235235
236236 return known_morphs , learning_morphs , unknown_morphs
237237
238- def _populate_absolute_table (
238+ def _populate_numerical_table (
239239 self ,
240240 _input_file : Path ,
241- file_morphs : dict [str , MorphOccurrence ],
242241 _row : int ,
243242 known_morphs : int ,
244243 learning_morphs : int ,
@@ -248,11 +247,13 @@ def _populate_absolute_table(
248247
249248 relative_path = _input_file .relative_to (self ._input_dir_root )
250249
250+ total_morphs : int = known_morphs + learning_morphs + unknown_morphs
251+
251252 file_name_item = QTableWidgetItem (str (relative_path ))
252- total_morphs_item = QTableWidgetItem ( str ( len ( file_morphs )) )
253- known_item = QTableWidgetItem ( str ( known_morphs ) )
254- learning_item = QTableWidgetItem ( str ( learning_morphs ) )
255- unknowns_item = QTableWidgetItem ( str ( unknown_morphs ) )
253+ total_morphs_item = QTableWidgetIntegerItem ( total_morphs )
254+ known_item = QTableWidgetIntegerItem ( known_morphs )
255+ learning_item = QTableWidgetIntegerItem ( learning_morphs )
256+ unknowns_item = QTableWidgetIntegerItem ( unknown_morphs )
256257
257258 total_morphs_item .setTextAlignment (Qt .AlignmentFlag .AlignCenter )
258259 known_item .setTextAlignment (Qt .AlignmentFlag .AlignCenter )
@@ -272,26 +273,30 @@ def _populate_absolute_table(
272273 def _populate_percentage_table (
273274 self ,
274275 _input_file : Path ,
275- file_morphs : dict [str , MorphOccurrence ],
276276 _row : int ,
277277 known_morphs : int ,
278278 learning_morphs : int ,
279279 unknown_morphs : int ,
280280 ) -> None :
281281 assert isinstance (self .ui , Ui_ReadabilityReportGeneratorDialog )
282282
283- total_morphs = len (file_morphs )
284- known_morphs_percent = (known_morphs / total_morphs ) * 100
285- learning_morphs_percent = (learning_morphs / total_morphs ) * 100
286- unknown_morphs_percent = (unknown_morphs / total_morphs ) * 100
283+ total_morphs : int = known_morphs + learning_morphs + unknown_morphs
284+ known_morphs_percent : float = 0
285+ learning_morphs_percent : float = 0
286+ unknown_morphs_percent : float = 0
287+
288+ if total_morphs != 0 :
289+ known_morphs_percent = (known_morphs / total_morphs ) * 100
290+ learning_morphs_percent = (learning_morphs / total_morphs ) * 100
291+ unknown_morphs_percent = (unknown_morphs / total_morphs ) * 100
287292
288293 relative_path = _input_file .relative_to (self ._input_dir_root )
289294
290295 file_name_item = QTableWidgetItem (str (relative_path ))
291- total_morphs_item = QTableWidgetItem ( str ( len ( file_morphs )) )
292- known_item = QTableWidgetItem ( f" { round (known_morphs_percent , 1 )} %" )
293- learning_item = QTableWidgetItem ( f" { round (learning_morphs_percent , 1 )} %" )
294- unknowns_item = QTableWidgetItem ( f" { round (unknown_morphs_percent , 1 )} %" )
296+ total_morphs_item = QTableWidgetIntegerItem ( total_morphs )
297+ known_item = QTableWidgetPercentItem ( round (known_morphs_percent , 1 ))
298+ learning_item = QTableWidgetPercentItem ( round (learning_morphs_percent , 1 ))
299+ unknowns_item = QTableWidgetPercentItem ( round (unknown_morphs_percent , 1 ))
295300
296301 total_morphs_item .setTextAlignment (Qt .AlignmentFlag .AlignCenter )
297302 known_item .setTextAlignment (Qt .AlignmentFlag .AlignCenter )
0 commit comments