def _collect_secret(self): try: username = config.get('user.name') password = config.get('user.password') except ConfigError: dialog = SecretDialog(f"Sign to {Urls.portal()}") username, password = dialog.collect() return (username, password)
def run_cases_to_table(self): result_by_case = [] for i, case in enumerate(self.nontest_cases): case_row = [] for f in self.solutions: output, duration = self._run_solution(f, case.args, case.kwargs) r = ResultUnit(case_num=i, func_name=f.__name__, func_object=f, args=case.args, kwargs=case.kwargs, output=output, duration=duration) case_row.append(r) result_by_case.append(case_row) # draw table if not result_by_case: return table_settings = config.get('table') table = Table(**table_settings) header = [''] header.extend([func.__name__ for func in self.solutions]) table.add_header(header) for case_num, case_row in enumerate(result_by_case): row = [f'case {case_num}'] row.extend(case_row) table.add_row(row) print(table)
def ensure_login(self): if not session_token.is_existed() or session_token.is_expired(): if not session_token.is_existed(): Debug('Session token is not found.') else: Debug('Session has expired.') # login() will update session_token Login(self, config.get('core.zone')).login() self.sess.cookies.update(session_token.get_token())
def raise_for_status(response, description): try: response.raise_for_status() except requests.exceptions.HTTPError as e: Debug(response.text) Debug("\nrequst headers:\n" + str(response.request.headers)) if e.response.status_code == 403: # avoid loop forever during import-time from leezy.config import config zone = config.get('core.zone') assert zone == 'cn' or zone == 'us' config.delete("session." + zone) raise FetchError( "Account authentication failed, you might try again and sign in" ) raise FetchError(description, e)
def __init__(self, id_, context=None, provider=None): # id_ is frontend_id of a problem self.query_id = id_ self.context = context self.provider = provider or ProblemProvider() _info = self.provider.info_by_id(id_) self.basic_info = _info # eliminate all invalid characters before making new files or folders # loc means local self.loc_id = str(id_).rjust(ID_WIDTH, '0') self.loc_title = NAME_BLACKLIST_RE.sub('', _info.title).strip() self.loc_slug = NAME_BLACKLIST_RE.sub('', _info.title_slug).strip() workdir = Path(config.get('core.workdir')) self.folder_path = workdir / Path(f'{self.loc_id} - {self.loc_title}') self.html_path = self.folder_path / f'{self.loc_id}.html' self.py_path = self.folder_path / f'{self.loc_id}_{self.loc_slug}.py' self.content = None self.similar_problem = None self.code_snippet = None self.sample_testcase = None
parser.print_help() else: if args.zone is not None: config.patch('core.zone', args.zone) if args.v is not None: if args.v == 1: config.patch('log.level', 'info') else: config.patch('log.level', 'debug') if args.dir is not None: config.patch('core.workdir', args.dir) session_token.init() Urls.init(config) log_lv = getattr(logging, config.get('log.level').upper()) def reject_modules(modules, lv=logging.INFO): def _reject_filter(record): mod_name = record.name mod_lv = record.levelno for mod in modules: if mod_name.startswith(mod) and mod_lv <= lv: return False return True return _reject_filter logging.basicConfig(level=log_lv) root = logging.getLogger() rej_mat = reject_modules(['matplotlib'])