Exemplo n.º 1
0
 def _debug_tags(self):
     nos = [i + 1 for i in range(len(self.tags))]
     closes = ['{}'.format(tag.Close) for tag in self.tags]
     names = ['"{}"'.format(tag.name) for tag in self.tags]
     types = ['"{}"'.format(tag.type_) for tag in self.tags]
     texts = ['"{}"'.format(tag.text) for tag in self.tags]
     urls = ['"{}"'.format(tag.url) for tag in self.tags]
     dicfs = ['"{}"'.format(tag.dicf) for tag in self.tags]
     rownos = ['{}'.format(tag.rowno) for tag in self.tags]
     cellnos = ['{}'.format(tag.cellno) for tag in self.tags]
     inherent = []
     for tag in self.tags:
         subtags = []
         for subtag in tag.inherent:
             subtags.append(subtag.name)
         subtags = ', '.join(subtags)
         inherent.append(subtags)
     iterable = [
         nos, closes, names, types, texts, urls, dicfs, inherent, rownos,
         cellnos
     ]
     headers = (_('#'), _('CLOSING'), _('NAME'), _('TYPE'), _('TEXT'),
                'URL', 'DICF', _('OPEN'), _('ROW'), _('CELL'))
     # 10'' monitor: 13 symbols per a column
     # 23'' monitor: 30 symbols per a column
     mes = sh.FastTable(iterable=iterable,
                        headers=headers,
                        maxrow=13,
                        maxrows=self.maxrows).run()
     return _('Tags:') + '\n' + mes
Exemplo n.º 2
0
 def _debug_wanted(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.compile.Missing._debug_wanted'
     nos = [i + 1 for i in range(len(self.lst_wanted))]
     headers = (_('#'), _('TEXT'))
     iterable = [nos, self.lst_wanted]
     mes = sh.FastTable(headers=headers, iterable=iterable, maxrow=50).run()
     return f + ':\n' + mes
Exemplo n.º 3
0
 def get_upage_glue(self):
     f = '[MClient] plugins.multitrandem.tests.Tests.get_upage_glue'
     upage = UPage(gt.objs.get_files().iwalker.get_glue1())
     upage.get_parts()
     part1 = list(upage.part1)
     part2 = list(upage.part2)
     part1l = []
     for i in range(len(part1)):
         if part1[i]:
             unpacked = struct.unpack('<b', part1[i])[0]
             unpacked = '"{}"'.format(unpacked)
             part1l.append(unpacked)
         else:
             part1l.append('""')
     part2l = []
     for i in range(len(part2)):
         if part2[i]:
             unpacked = struct.unpack('<h', part2[i])[0]
             unpacked = '"{}"'.format(unpacked)
             part2l.append(unpacked)
         else:
             part2l.append('""')
     header = ('CHUNK1', '<b', 'CHUNK2', '<h')
     data = [part1, part1l, part2, part2l]
     mes = sh.FastTable(headers=header, iterable=data, sep=3 * ' ').run()
     sh.com.run_fast_debug(f, mes)
Exemplo n.º 4
0
 def report(self):
     f = '[CompressMedia] tests.Compression.report'
     if self.Success:
         nos = [i + 1 for i in range(len(self.ifiles))]
         '''
         old_sizes = [sh.com.get_human_size(ifile.old_size) \
                      for ifile in self.ifiles
                     ]
         '''
         new_sizes = [sh.com.get_human_size(ifile.new_size) \
                      for ifile in self.ifiles
                     ]
         compression = ['{}%'.format(ifile.compression) \
                        for ifile in self.ifiles
                       ]
         files = [ifile.file for ifile in self.ifiles]
         filesw = [ifile.filew for ifile in self.ifiles]
         iterable = [nos,files,filesw,new_sizes,compression]
         headers = (_('#'),_('INPUT FILE'),_('OUTPUT FILE')
                   ,_('NEW SIZE'),_('COMPRESSION')
                   )
         mes = sh.FastTable (iterable = iterable
                            ,headers = headers
                            ).run()
         sh.com.run_fast_debug(f,mes)
     else:
         sh.com.cancel(f)
Exemplo n.º 5
0
 def _debug_rows(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.extract.EndPage._debug_rows'
     # 'self.rows' contains blocks of certain types
     count = 0
     for row in self.rows:
         for block in row:
             count += 1
     nos = [i + 1 for i in range(count)]
     rownos = []
     types = []
     texts = []
     dic = []
     dicf = []
     for row in self.rows:
         for block in row:
             rownos.append(block.rowno)
             types.append(block.type_)
             texts.append(block.text)
             dic.append(block.dic)
             dicf.append(block.dicf)
     headers = (_('#'), _('ROW #'), 'DIC', 'DICF', _('TYPE'), _('TEXT'))
     iterable = [nos, rownos, dic, dicf, types, texts]
     # 10'' screen: 30 symbols
     mes = sh.FastTable(headers=headers, iterable=iterable, maxrow=30).run()
     return f + ':\n' + mes
Exemplo n.º 6
0
 def debug(self,maxrow=20,maxrows=1000):
     f = '[MClient] plugins.dsl.elems.Elems.debug'
     if self.Debug and self.blocks:
         headers = ('NO','DIC','DICF','WFORM'
                   ,'SPEECH','TRANSC','TYPE'
                   ,'TEXT','SAME','SELECT'
                   )
         rows = []
         for i in range(len(self.blocks)):
             rows.append ([i + 1
                          ,self.blocks[i].dic
                          ,self.blocks[i].dicf
                          ,self.blocks[i].wform
                          ,self.blocks[i].speech
                          ,self.blocks[i].transc
                          ,self.blocks[i].type_
                          ,self.blocks[i].text
                          ,self.blocks[i].same
                          ,self.blocks[i].select
                          ]
                         )
         mes = sh.FastTable (headers = headers
                            ,iterable = rows
                            ,maxrow = maxrow
                            ,maxrows = maxrows
                            ,Transpose = True
                            ).run()
         mes = _('Non-DB blocks:') + '\n\n' + mes
         sh.com.run_fast_debug(f,mes)
     else:
         sh.com.rep_lazy(f)
Exemplo n.º 7
0
 def _debug_tagged(self):
     nos = [i + 1 for i in range(len(self.tagged))]
     texts = [item.text for item in self.tagged]
     tags = [', '.join(item.tags) for item in self.tagged]
     iterable = [nos, tags, texts]
     headers = (_('#'), _('TAGS'), _('TEXT'))
     mes = sh.FastTable(iterable=iterable,
                        headers=headers,
                        maxrow=50,
                        maxrows=self.maxrows).run()
     return _('Tags:') + '\n' + mes
Exemplo n.º 8
0
 def _debug_blocks(self):
     nos = [i + 1 for i in range(len(self.blocks))]
     texts = [block.text for block in self.blocks]
     types = [block.type_ for block in self.blocks]
     iterable = [nos, types, texts]
     headers = (_('#'), _('TYPES'), _('TEXT'))
     mes = sh.FastTable(iterable=iterable,
                        headers=headers,
                        maxrow=50,
                        maxrows=self.maxrows).run()
     return _('Blocks:') + '\n' + mes
Exemplo n.º 9
0
 def _debug_full2abbr(self):
     f = '[MClient] logic.SpeechPrior._debug_full2abbr'
     full2abbr = self.get_full2abbr()
     if full2abbr:
         full = sorted(full2abbr.keys())
         abbr = [full2abbr.get(item) for item in full]
         headers = (_('NAME'),_('ABBREVIATION'))
         iterable = [full,abbr]
         mes = sh.FastTable(iterable,headers).run()
         sh.com.run_fast_debug(f,mes)
     else:
         sh.com.rep_empty(f)
Exemplo n.º 10
0
 def _debug_abbr2full(self):
     f = '[MClient] logic.SpeechPrior._debug_abbr2full'
     abbr2full = self.get_abbr2full()
     if abbr2full:
         abbr = sorted(abbr2full.keys())
         full = [abbr2full.get(item) for item in abbr]
         headers = (_('ABBREVIATION'),_('NAME'))
         iterable = [abbr,full]
         mes = sh.FastTable(iterable,headers).run()
         sh.com.run_fast_debug(f,mes)
     else:
         sh.com.rep_empty(f)
Exemplo n.º 11
0
 def debug(self):
     f = '[MClient] plugins.multitrandem.tests.Subject.debug'
     if self.Success:
         headers = ('#', 'FULL (1)', 'ABBR (1)', 'FULL (2)', 'ABBR (2)')
         iterable = (self.dic_nos, self.en_dicf, self.en_dic, self.ru_dicf,
                     self.ru_dic)
         mes = sh.FastTable(headers=headers, iterable=iterable).run()
         sub = _('File: "{}"').format(self.file)
         mes = sub + '\n\n' + mes
         sh.com.run_fast_debug(f, mes)
     else:
         sh.com.cancel(f)
Exemplo n.º 12
0
 def debug_blocks(self):
     f = '[MClient] plugins.multitrandem.tags.Tags.debug_blocks'
     headers = ('NO', 'TYPE', 'TEXT')
     rows = []
     for i in range(len(self.blocks)):
         rows.append([i + 1, self.blocks[i].type_, self.blocks[i].text])
     mes = sh.FastTable(headers=headers,
                        iterable=rows,
                        maxrow=self.maxrow,
                        maxrows=self.maxrows,
                        Transpose=True).run()
     sh.com.run_fast_debug(f, mes)
Exemplo n.º 13
0
 def debug(self):
     f = '[MClient] plugins.multitrandem.tests.Ending.debug'
     if self.Success:
         ends = list(self.ends)
         ends = [str(end) for end in ends]
         headers = ('#', 'ENDINGS')
         iterable = (self.nos, ends)
         mes = sh.FastTable(iterable=iterable, headers=headers).run()
         sub = _('File: "{}"').format(self.file)
         mes = sub + '\n\n' + mes
         sh.com.run_fast_debug(f, mes)
     else:
         sh.com.cancel(f)
Exemplo n.º 14
0
 def _debug_missing(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.compile.Missing._debug_missing'
     rows = []
     for i in range(len(self.missing)):
         row = list(self.missing[i])
         row.insert(0, i + 1)
         rows.append(row)
     headers = (_('#'), 'EN', 'RU', 'DE', 'ES', 'UK')
     mes = sh.FastTable(iterable=rows,
                        headers=headers,
                        maxrow=20,
                        Transpose=True).run()
     return f + ':\n' + mes
Exemplo n.º 15
0
 def _debug_blocks(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.extract.StartPage._debug_blocks'
     nos = [i + 1 for i in range(len(self.blocks))]
     types = []
     texts = []
     urls = []
     for block in self.blocks:
         types.append(block.type_)
         texts.append(block.text)
         urls.append(block.url)
     headers = (_('#'), _('TYPE'), _('TEXT'), 'URL')
     iterable = [nos, types, texts, urls]
     # 10'' monitor: 40 symbols per row
     mes = sh.FastTable(headers=headers, iterable=iterable, maxrow=40).run()
     return f + '\n' + mes
Exemplo n.º 16
0
 def debug_all2prior(self):
     f = '[MClient] logic.SpeechPrior.debug_all2prior'
     if self.Success:
         all2prior = self.get_all2prior()
         if all2prior:
             all_ = all2prior.keys()
             prior = [all2prior.get(key) for key in all2prior.keys()]
             headers = (_('NAME'),_('PRIORITY'))
             iterable = [all_,prior]
             mes = sh.FastTable(iterable,headers).run()
             sh.com.run_fast_debug(f,mes)
         else:
             sh.com.rep_empty(f)
     else:
         sh.com.cancel(f)
Exemplo n.º 17
0
 def _debug_blocks(self):
     f = '[MClient] cells.BlockPrioritize._debug_blocks'
     headers = ('NO', 'TYPE', 'TEXT', 'BLOCK', 'DIC', 'DICPR', 'SPEECH',
                'SPEECHPR')
     rows = []
     for block in self.blocks:
         rows.append([
             block.no, block.type_, block.text, block.block, block.dic,
             block.dprior, block.speech, block.sprior
         ])
     mes = sh.FastTable(headers=headers,
                        iterable=rows,
                        maxrow=20,
                        maxrows=self.maxrows,
                        Transpose=True).run()
     return f + ':\n' + mes
Exemplo n.º 18
0
 def get_majors_en(self):
     f = '[MClient] tests.Commands.get_majors_en'
     import plugins.multitrancom.subjects as sj
     groups = []
     shorts = []
     titles = []
     for key in sj.SUBJECTS.keys():
         if sj.SUBJECTS[key]['Major']:
             groups.append(sj.SUBJECTS[key]['major_en'])
             shorts.append(sj.SUBJECTS[key]['en']['short'])
             titles.append(sj.SUBJECTS[key]['en']['title'])
     nos = [i + 1 for i in range(len(groups))]
     headers = (_('#'), _('MAJOR (EN)'), _('SHORT'), _('TITLE'))
     iterable = [nos, groups, shorts, titles]
     mes = sh.FastTable(iterable=iterable, headers=headers, maxrow=30).run()
     sh.com.run_fast_debug(f, mes)
Exemplo n.º 19
0
 def debug(self):
     f = '[MClient] cells.Pos.debug'
     if self.Debug:
         headers = ('NO', 'TYPE', 'TEXT', 'POS1', 'POS2')
         rows = []
         for block in self.blocks:
             rows.append([
                 block.no, block.type_, block.text, block.first, block.last
             ])
         mes = sh.FastTable(headers=headers,
                            iterable=rows,
                            maxrow=70,
                            maxrows=self.maxrows,
                            Transpose=True).run()
         mes = f + '\n' + mes
         sh.com.run_fast_debug(f, mes)
Exemplo n.º 20
0
 def _debug_subjects(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.extract.EndPage._debug_subjects'
     nos = [i + 1 for i in range(len(self.subjects.keys()))]
     dic = []
     dicf = []
     keys = []
     for key in self.subjects.keys():
         keys.append(key)
         dic.append(self.subjects[key]['dic'])
         dicf.append(self.subjects[key]['dicf'])
     headers = (_('#'), _('DIC'), _('DICF'), _('KEY'))
     iterable = [nos, dic, dicf, keys]
     # 10'' screen: 40 symbols
     mes = sh.FastTable(headers=headers,
                        iterable=iterable,
                        maxrow=40,
                        encloser='"').run()
     return f + ':\n' + mes
Exemplo n.º 21
0
 def debug(self):
     f = '[MClient] cells.Cells.debug'
     if self.Debug:
         headers = ('NO', 'TYPE', 'FIXED', 'TEXT', 'DIC', 'WFORM', 'SPEECH',
                    'SPEECHPR', 'ROWNO', 'COLNO', 'CELLNO', 'SAME')
         rows = []
         for block in self.blocks:
             rows.append([
                 block.no, block.type_, block.Fixed, block.text, block.dic,
                 block.wform, block.speech, block.sprior, block.i, block.j,
                 block.cellno, block.same
             ])
         mes = sh.FastTable(headers=headers,
                            iterable=rows,
                            maxrow=15,
                            maxrows=self.maxrows,
                            Transpose=True).run()
         mes = f + '\n' + mes
         sh.com.run_fast_debug(f, mes)
Exemplo n.º 22
0
 def _debug_blocks(self):
     nos = [i + 1 for i in range(len(self.blocks))]
     types = [block.type_ for block in self.blocks]
     texts = ['"{}"'.format(block.text) for block in self.blocks]
     urls = ['"{}"'.format(block.url) for block in self.blocks]
     dics = ['"{}"'.format(block.dic) for block in self.blocks]
     dicfs = ['"{}"'.format(block.dicf) for block in self.blocks]
     rownos = [block.rowno for block in self.blocks]
     cellnos = [block.cellno for block in self.blocks]
     iterable = [nos, types, texts, urls, dics, dicfs, rownos, cellnos]
     headers = (_('#'), _('TYPE'), _('TEXT'), 'URL', 'DIC', 'DICF',
                _('ROW #'), _('CELL #'))
     # 10'' monitor: 20 symbols per a column
     # 23'' monitor: 50 symbols per a column
     mes = sh.FastTable(iterable=iterable,
                        headers=headers,
                        maxrow=20,
                        maxrows=self.maxrows).run()
     return _('Blocks:') + '\n' + mes
Exemplo n.º 23
0
 def debug(self):
     f = '[MClient] mkhtml.Fonts.debug'
     if not self.Success:
         sh.com.cancel(f)
         return
     if not self.Debug:
         sh.com.rep_lazy(f)
         return
     nos = [i + 1 for i in range(len(self.fonts))]
     texts = []
     families = []
     colors = []
     sizes = []
     bolds = []
     italics = []
     rownos = []
     colnos = []
     col_widths = []
     for ifont in self.fonts:
         texts.append(ifont.text)
         families.append(ifont.family)
         colors.append(ifont.color)
         sizes.append(ifont.size)
         bolds.append(ifont.Bold)
         italics.append(ifont.Italic)
         rownos.append(ifont.rowno)
         colnos.append(ifont.colno)
         col_widths.append(ifont.col_width)
     headers = (_('#'),_('ROW #'),_('COLUMN #'),_('COLUMN WIDTH (%)')
               ,_('TEXT'),_('COLOR'),_('FAMILY'),_('SIZE'),_('BOLD')
               ,_('ITALIC')
               )
     iterable = [nos,rownos,colnos,col_widths,texts,colors,families
                ,sizes,bolds,italics
                ]
     # 10'' screen: 20 symbols
     mes = sh.FastTable (headers = headers
                        ,iterable = iterable
                        ,maxrow = 20
                        ,maxrows = self.maxrows
                        ).run()
     sh.com.run_fast_debug(f,mes)
Exemplo n.º 24
0
 def debug_blocks (self):
     f = '[MClient] plugins.stardict.tags.Tags.debug_blocks'
     headers = ('NO','TYPE','TEXT','URL','SAMECELL')
     rows = []
     for i in range(len(self.blocks)):
         rows.append ([i + 1
                      ,self.blocks[i].type_
                      ,self.blocks[i].text
                      ,self.blocks[i].url
                      ,self.blocks[i].same
                      ]
                     )
     mes = sh.FastTable (headers = headers
                        ,iterable = rows
                        ,maxrow = self.maxrow
                        ,maxrows = self.maxrows
                        ,Transpose = True
                        ).run()
     mes = _('Non-DB blocks:') + '\n\n' + mes
     sh.com.run_fast_debug(f,mes)
Exemplo n.º 25
0
 def _debug_attrs(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.compile.Compile._debug_attrs'
     nos = [i + 1 for i in range(len(self.subjects.keys()))]
     keys = []
     single = []
     en = []
     majors = []
     groups = []
     for key in self.subjects:
         keys.append(key)
         en.append(self.subjects[key]['en']['title'])
         single.append(self.subjects[key]['Single'])
         majors.append(self.subjects[key]['Major'])
         groups.append(self.subjects[key]['major_en'])
     headers = (_('#'), _('KEY'), 'EN', _('SINGLE'), _('MAJOR'),
                _('MAJOR (EN)'))
     iterable = [nos, keys, en, single, majors, groups]
     # 10'' monitor: 25 symbols per column
     mes = sh.FastTable(iterable=iterable, headers=headers, maxrow=25).run()
     return f + '\n' + mes
Exemplo n.º 26
0
 def _debug_subjects(self):
     f = '[MClient] subjects.subjects.ArticleSubjects._debug_subjects'
     nos = [i + 1 for i in range(len(self.subjects.keys()))]
     keys = []
     shorts = []
     titles = []
     blocked = []
     priorities = []
     for key in self.subjects.keys():
         keys.append(key)
         shorts.append(self.subjects[key]['short'])
         titles.append(self.subjects[key]['title'])
         blocked.append(self.subjects[key]['block'])
         priorities.append(self.subjects[key]['priority'])
     headers = (_('#'), _('KEY'), _('SHORT'), _('TITLE'), _('BLOCKED'),
                _('PRIORITY'))
     iterable = [nos, keys, shorts, titles, blocked, priorities]
     # 10'' monitor: 30 symbols per column
     mes = sh.FastTable(iterable=iterable, headers=headers, maxrow=30).run()
     return f + ':\n' + mes
Exemplo n.º 27
0
 def debug(self):
     f = 'plugins.multitrandem.elems.Elems.debug'
     if self.Debug:
         mes = _('Debug table:')
         sh.objs.get_mes(f, mes, True).show_debug()
         headers = ('NO', 'TYPE', 'TEXT', 'SAME', 'CELLNO', 'ROWNO',
                    'COLNO', 'POS1', 'POS2')
         rows = []
         for i in range(len(self.blocks)):
             rows.append([
                 i + 1, self.blocks[i].type_, self.blocks[i].text,
                 self.blocks[i].same, self.blocks[i].cellno,
                 self.blocks[i].i, self.blocks[i].j, self.blocks[i].first,
                 self.blocks[i].last
             ])
         mes = sh.FastTable(headers=headers,
                            iterable=rows,
                            maxrow=self.maxrow,
                            maxrows=self.maxrows,
                            Transpose=True).run()
         sh.com.run_fast_debug(f, mes)
Exemplo n.º 28
0
 def _debug_langs(self):
     f = '[MClient] plugins.multitrancom.utils.subjects.compile.Compile._debug_langs'
     nos = [i + 1 for i in range(len(self.subjects.keys()))]
     keys = []
     single = []
     en_short = []
     en = []
     ru_short = []
     ru = []
     de_short = []
     de = []
     sp_short = []
     sp = []
     uk_short = []
     uk = []
     for key in self.subjects:
         keys.append(key)
         single.append(self.subjects[key]['Single'])
         en_short.append(self.subjects[key]['en']['short'])
         en.append(self.subjects[key]['en']['title'])
         ru_short.append(self.subjects[key]['ru']['short'])
         ru.append(self.subjects[key]['ru']['title'])
         de_short.append(self.subjects[key]['de']['short'])
         de.append(self.subjects[key]['de']['title'])
         sp_short.append(self.subjects[key]['es']['short'])
         sp.append(self.subjects[key]['es']['title'])
         uk_short.append(self.subjects[key]['uk']['short'])
         uk.append(self.subjects[key]['uk']['title'])
     headers = (_('#'), _('KEY'), _('SINGLE'), 'ENS', 'EN', 'RUS', 'RU',
                'DES', 'DE', 'SPS', 'SP', 'UKS', 'UK')
     iterable = [
         nos, keys, single, en_short, en, ru_short, ru, de_short, de,
         sp_short, sp, uk_short, uk
     ]
     # 10'' monitor: 8 symbols per column
     mes = sh.FastTable(iterable=iterable,
                        headers=headers,
                        maxrow=8,
                        ShowGap=False).run()
     return f + '\n' + mes
Exemplo n.º 29
0
 def debug_stems(self):
     f = '[MClient] plugins.multitrandem.tests.UPage.debug_stems'
     if self.Success:
         if self.part2:
             part1 = [chunk.decode(gt.CODING,'ignore') \
                      for chunk in self.part1
                     ]
             part2 = [struct.unpack('<h',chunk)[0] \
                      for chunk in self.part2
                     ]
             mes = sh.FastTable(headers=('STEM', 'PAGEREF'),
                                iterable=(part1, part2),
                                sep=3 * ' ').run()
             if mes:
                 mes = _('File: {}').format(self.file) + '\n\n' + mes
                 sh.com.run_fast_debug(f, mes)
             else:
                 sh.com.rep_empty(f)
         else:
             sh.com.rep_empty(f)
     else:
         sh.com.cancel(f)
Exemplo n.º 30
0
 def debug(self):
     f = 'plugins.multitrancom.elems.Elems.debug'
     if self.Debug:
         headers = ('NO', 'TYPE', 'TEXT', 'URL', 'SAME', 'SEMINO', 'ROWNO',
                    'CELLNO', 'SELECT', 'DIC', 'DICF', 'TERM')
         rows = []
         for i in range(len(self.blocks)):
             rows.append([
                 i + 1, self.blocks[i].type_,
                 '"{}"'.format(self.blocks[i].text),
                 '"{}"'.format(self.blocks[i].url), self.blocks[i].same,
                 self.blocks[i].semino, self.blocks[i].rowno,
                 self.blocks[i].cellno, self.blocks[i].select,
                 self.blocks[i].dic, self.blocks[i].dicf,
                 self.blocks[i].term
             ])
         # 10'' monitor: 12 symbols per a column
         # 23'' monitor: 20 symbols per a column
         mes = sh.FastTable(headers=headers,
                            iterable=rows,
                            maxrow=12,
                            maxrows=self.maxrows,
                            Transpose=True).run()
         sh.com.run_fast_debug(f, mes)