"""Benchmark-specific constants, perturbation ranges, and data generation."""

# --- Nonsense generator ranges ---
NONSENSE_N_PAIRS = 50
NONSENSE_CHAR_LEN_MIN = 20
NONSENSE_CHAR_LEN_MAX = 50
NONSENSE_WORD_FILTER_MAX_LEN = 15
NONSENSE_REPETITION_MIN = 10
NONSENSE_REPETITION_MAX = 30
NONSENSE_WORD_SALAD_MIN = 3
NONSENSE_WORD_SALAD_MAX = 10
NONSENSE_MIXED_COMPONENTS_MIN = 2
NONSENSE_MIXED_COMPONENTS_MAX = 4
NONSENSE_MIXED_CHAR_LEN_MIN = 5
NONSENSE_MIXED_CHAR_LEN_MAX = 15
NONSENSE_MIXED_REPS_MIN = 3
NONSENSE_MIXED_REPS_MAX = 6
NONSENSE_MIXED_WORDS_MIN = 3
NONSENSE_MIXED_WORDS_MAX = 6
NONSENSE_MAX_WORD_LENGTH = 20
NONSENSE_MAX_TOKENS = 25
# --- Gibberish generation ranges ---
GIBBERISH_WORD_COUNT_MIN = 10
GIBBERISH_WORD_COUNT_MAX = 30
GIBBERISH_WORD_LEN_MIN = 3
GIBBERISH_WORD_LEN_MAX = 12
GIBBERISH_LINE_COUNT_MIN = 3
GIBBERISH_LINE_COUNT_MAX = 8
# --- Perturbation ranges ---
PERTURB_UP_MIN = 1.1
PERTURB_UP_MAX = 1.5
PERTURB_DOWN_MIN = 0.5
PERTURB_DOWN_MAX = 0.9
YEAR_SHIFT_MIN = -50
YEAR_SHIFT_MAX = 50
YEAR_SHIFT_DEFAULT = 10
SMALL_NUM_INCREMENT_MIN = 1
SMALL_NUM_INCREMENT_MAX = 5
NUM_PERTURB_SCALE_MIN = 0.5
NUM_PERTURB_SCALE_MAX = 1.5
YEAR_PERTURB_LARGE = 10
YEAR_PERTURB_SMALL = 5
MATH_NUMBER_PERTURBATION_OFFSET = 0.25
# --- ChartQA perturbation ---
CHARTQA_PCT_DELTAS = (-30, -20, -10, 10, 20, 30)
CHARTQA_INT_DELTAS = (-5, -3, -2, -1, 1, 2, 3, 5)
CHARTQA_DECIMAL_DELTAS = (-0.2, -0.15, -0.1, -0.05, 0.05, 0.1, 0.15, 0.2)
# --- GSM8K extractor ---
GSM8K_DEFAULT_LIMIT = 500
GSM8K_PERTURBATION_MIN = 1
GSM8K_PERTURBATION_MAX = 10
# --- Distractor generation ---
DISTRACTOR_NEARBY_MIN = 2
DISTRACTOR_NEARBY_MAX = 10
DISTRACTOR_MAX_COUNT = 3
# --- Frames extractor ---
FRAMES_NUMERIC_DELTA_LARGE = 100
FRAMES_NUMERIC_DELTA_MEDIUM = 50
FRAMES_NUMERIC_DELTA_SMALL = 10
FRAMES_NUMERIC_DELTA_TINY = 5
FRAMES_SHORT_ANSWER_THRESHOLD = 100
FRAMES_ALT_ANSWER_LENGTH = 20
# --- HaluLens content thresholds ---
HALULENS_MIN_CONTENT_LENGTH = 200
HALULENS_SENT_LEN_MIN = 30
HALULENS_SENT_LEN_MAX = 300
# --- STSB score ---
STSB_SCORE_NEUTRAL = 0.1
# --- SimpleQA thresholds ---
SIMPLEQA_MIN_CHAR_LENGTH = 3
SIMPLEQA_MAX_ANSWER_LENGTH = 50
# --- C4 text thresholds ---
C4_MIN_TEXT_LENGTH = 50
# --- Paloma text chunking ---
PALOMA_DOCS_DIVISOR = 4
PALOMA_MIN_TEXT_LENGTH = 200
PALOMA_CHUNK_SIZE_WORDS = 200
PALOMA_TARGET_PAIRS_PER_DOC = 4
PALOMA_MIN_CHUNK_WORDS = 50
PALOMA_MAX_WORDS = 200
PALOMA_MAX_CHARS = 1000
PALOMA_MIN_WORDS = 10
# --- Codeforces dataset defaults ---
CODEFORCES_DEFAULT_TIME_LIMIT = 1.0
CODEFORCES_DEFAULT_MEMORY_LIMIT = 256.0
# --- Mercury runtime sentinel ---
MERCURY_RUNTIME_SENTINEL = 999
MERCURY_RUNTIME_SENTINEL_STR = "999ms"
# --- Translation ---
TRANSLATION_MAX_SHUFFLE_ATTEMPTS = 10
# --- Math parsing/evaluation ---
MATH_SHORT_VAR_MAX_LEN = 2
MATH_EVAL_N_CHECKS = 5
# --- Bias detection ---
BIAS_LIBERAL_THRESHOLD = 3
BIAS_NEUTRAL_MIDPOINT = 2
# --- Gemma BOS features ---
GEMMA_2B_BOS_FEATURES_PAPER = (11087, 3220, 11752, 12160, 11498)
GEMMA_2B_BOS_FEATURES_DETECTED = (
    1041, 7507, 11087, 3220, 11767, 11752,
    14669, 6889, 12160, 13700, 2747, 11498,
)
GEMMA_9B_BOS_FEATURES_DETECTED = (
    8032, 11906, 7768, 14845, 14483, 10562,
    8892, 9151, 5721, 15738, 5285, 13895,
)
# --- Paper-derived defaults ---
DPO_DEFAULT_BETA = 0.1
# --- Polymath evaluation ---
POLYMATH_DEFAULT_TOTAL = 125
# --- Role play tokens ---
ROLE_PLAY_TOKENS = (
    "I", "Well", "The", "Sure", "Let",
    "That", "It", "This", "My", "To",
)
