"""Baked, validated permanent model/GPU reject marks.""" import json from pathlib import Path from .config_params import GPU_ENUMS from .live_queue import model_key DATA = Path(__file__).parent / 'data/reject-marks.json' PERMANENT_PAIR_CODES = {60012, *range(60019, 60030)} REJECT_CODES = { 60006: 'CANNOT_CREATE_CONTEST_TASK_BECAUSE_NOT_IN_WHITE_LIST', 60007: 'MODEL_VERIFY_TASK_NUM_LIMIT', 60008: 'CREATE_CONTEST_TASK_REQUEST_EMPTY', 60009: 'CREATE_CONTEST_TASK_CONTRIBUTORS_EMPTY', 60010: 'CREATE_CONTEST_TASK_SUBMISSION_CONFIG_EMPTY', 60011: 'CREATE_CONTEST_TASK_GPU_TYPE_EMPTY', 60012: 'CREATE_CONTEST_TASK_MULTI_GPU_UNSUPPORTED', 60013: 'CREATE_CONTEST_TASK_MODEL_ID_EMPTY', 60014: 'CREATE_CONTEST_TASK_SCRIPT_SUBMIT_DISABLED', 60015: 'CREATE_CONTEST_TASK_TASK_TYPE_EMPTY', 60016: 'CREATE_CONTEST_TASK_FRAMEWORK_EMPTY', 60017: 'CREATE_CONTEST_TASK_DRIVER_IMAGE_NOT_FOUND', 60018: 'CREATE_CONTEST_TASK_CONTRIBUTOR_NOT_FOUND', 60019: 'CREATE_CONTEST_TASK_SUBMISSION_GPU_TYPE_MISMATCH', 60020: 'CREATE_CONTEST_TASK_MODEL_NOT_DOWNLOADED', 60021: 'CREATE_CONTEST_TASK_FRAMEWORK_UNRESOLVED', 60022: 'CREATE_CONTEST_TASK_GPU_CONFIG_UNSUPPORTED', 60023: 'CREATE_CONTEST_TASK_YAML_CONFIG_EMPTY', 60024: 'CREATE_CONTEST_TASK_YAML_CONFIG_INVALID', 60025: 'CREATE_CONTEST_TASK_GPU_TYPE_UNSUPPORTED', 60026: 'CREATE_CONTEST_TASK_MODEL_NOT_FOUND', 60027: 'CREATE_CONTEST_TASK_MODEL_ALREADY_VERIFIED', 60028: 'CREATE_CONTEST_TASK_MODEL_VERIFY_RUNNING', 60029: 'CREATE_CONTEST_TASK_TRANSFORMERS_REQUIRES_FAILED_BASELINE', 60030: 'CREATE_CONTEST_TASK_API_VERSION_UNSUPPORTED', } def load_marks(path=DATA): try: data = json.loads(Path(path).read_text()) if not isinstance(data, dict) or type(data.get('version')) is not int or data['version'] != 1 or not isinstance(data.get('marks'), list): raise ValueError marks = {} for row in data['marks']: if (not isinstance(row, dict) or not isinstance(row.get('model'), str) or not row['model'].strip() or row.get('gpu') not in set(GPU_ENUMS.values()) or type(row.get('code')) is not int): raise ValueError marks[model_key(row['model']), row['gpu']] = row['code'] return marks except (OSError, ValueError, TypeError, KeyError) as error: raise ValueError('Invalid reject marks') from error