%PDF- %PDF-
Direktori : /usr/lib/calibre/calibre/ebooks/oeb/polish/check/ |
Current File : //usr/lib/calibre/calibre/ebooks/oeb/polish/check/base.py |
#!/usr/bin/env python3 __license__ = 'GPL v3' __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>' from multiprocessing.pool import ThreadPool from functools import partial from contextlib import closing from calibre import detect_ncpus as cpu_count DEBUG, INFO, WARN, ERROR, CRITICAL = range(5) class BaseError: HELP = '' INDIVIDUAL_FIX = '' level = ERROR has_multiple_locations = False def __init__(self, msg, name, line=None, col=None): self.msg, self.line, self.col = msg, line, col self.name = name # A list with entries of the form: (name, lnum, col) self.all_locations = None def __str__(self): return f'{self.__class__.__name__}:{self.name} ({self.line}, {self.col}):{self.msg}' __repr__ = __str__ def worker(func, args): try: result = func(*args) tb = None except: result = None import traceback tb = traceback.format_exc() return result, tb def run_checkers(func, args_list): num = cpu_count() pool = ThreadPool(num) ans = [] with closing(pool): for result, tb in pool.map(partial(worker, func), args_list): if tb is not None: raise Exception('Failed to run worker: \n%s' % tb) ans.extend(result) return ans