__all__ = [
    "EXTRACTORS",
    "HF_EXTRACTORS",
]

base_import: str = "wisent.core.contrastive_pairs.huggingface_pairs.hf_task_extractors."

EXTRACTORS: dict[str, str] = {
    # Math benchmarks
    "aime": f"{base_import}aime:AIMEExtractor",
    "aime2024": f"{base_import}aime:AIMEExtractor",
    "aime2025": f"{base_import}aime:AIMEExtractor",
    "asdiv_cot_llama": f"{base_import}math:MATHExtractor",
    "chain_of_thought": f"{base_import}math:MATHExtractor",
    "gsm8k_cot": f"{base_import}math:MATHExtractor",
    "gsm8k_cot_llama": f"{base_import}math:MATHExtractor",
    "gsm8k_cot_self_consistency": f"{base_import}math:MATHExtractor",
    "gsm8k_llama": f"{base_import}math:MATHExtractor",
    "gsm8k_platinum_cot": f"{base_import}math:MATHExtractor",
    "gsm8k_platinum_cot_llama": f"{base_import}math:MATHExtractor",
    "gsm8k_platinum_cot_self_consistency": f"{base_import}math:MATHExtractor",
    "hmmt": f"{base_import}hmmt:HMMTExtractor",
    "hmmt_feb_2025": f"{base_import}hmmt:HMMTExtractor",
    "livemathbench": f"{base_import}livemathbench:LiveMathBenchExtractor",
    "livemathbench_cnmo_en": f"{base_import}livemathbench_configs:LiveMathBenchCnmoEnExtractor",
    "livemathbench_cnmo_zh": f"{base_import}livemathbench_configs:LiveMathBenchCnmoZhExtractor",
    "math": f"{base_import}math:MATHExtractor",
    "math_500": f"{base_import}math:MATHExtractor",
    "math500": f"{base_import}math:MATHExtractor",
    "polymath": f"{base_import}polymath:PolyMathExtractor",
    "polymath_en_medium": f"{base_import}polymath_configs:PolyMathEnMediumExtractor",
    "polymath_zh_medium": f"{base_import}polymath_configs:PolyMathZhMediumExtractor",
    "polymath_en_high": f"{base_import}polymath_configs:PolyMathEnHighExtractor",
    "polymath_zh_high": f"{base_import}polymath_configs:PolyMathZhHighExtractor",

    # Coding benchmarks
    "humaneval": f"{base_import}humaneval:HumanEvalExtractor",
    "humaneval_plus": f"{base_import}humaneval:HumanEvalExtractor",
    "humaneval_64_instruct": f"{base_import}instructhumaneval:InstructHumanEvalExtractor",
    "humaneval_instruct": f"{base_import}instructhumaneval:InstructHumanEvalExtractor",
    "humanevalpack": f"{base_import}humaneval:HumanEvalExtractor",
    "instructhumaneval": f"{base_import}instructhumaneval:InstructHumanEvalExtractor",
    "mbpp": f"{base_import}mbpp:MBPPExtractor",
    "mbpp_plus": f"{base_import}mbpp:MBPPExtractor",
    "instruct_humaneval": f"{base_import}instructhumaneval:InstructHumanEvalExtractor",
    "apps": f"{base_import}apps:AppsExtractor",
    "conala": f"{base_import}conala:ConalaExtractor",
    "concode": f"{base_import}concode:ConcodeExtractor",
    "ds_1000": f"{base_import}ds_1000:Ds1000Extractor",
    "ds1000": f"{base_import}ds_1000:Ds1000Extractor",
    "mercury": f"{base_import}mercury:MercuryExtractor",
    "recode": f"{base_import}recode:RecodeExtractor",
    "multipl_e": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_py": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_js": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_java": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_cpp": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_rs": f"{base_import}multipl_e:MultiplEExtractor",
    "multiple_go": f"{base_import}multipl_e:MultiplEExtractor",
    "codexglue": f"{base_import}codexglue:CodexglueExtractor",
    "code_x_glue": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_python": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_go": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_ruby": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_java": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_javascript": f"{base_import}codexglue:CodexglueExtractor",
    "codexglue_code_to_text_php": f"{base_import}codexglue:CodexglueExtractor",
    "livecodebench": f"{base_import}livecodebench:LivecodebenchExtractor",

    # Reasoning benchmarks
    "super_gpqa": f"{base_import}super_gpqa:SuperGpqaExtractor",
    "supergpqa": f"{base_import}super_gpqa:SuperGpqaExtractor",
    "supergpqa_physics": f"{base_import}super_gpqa:SuperGpqaExtractor",
    "supergpqa_chemistry": f"{base_import}super_gpqa:SuperGpqaExtractor",
    "supergpqa_biology": f"{base_import}super_gpqa:SuperGpqaExtractor",
    "hle": f"{base_import}hle:HleExtractor",
    "hle_exact_match": f"{base_import}hle:HleExtractor",
    "hle_multiple_choice": f"{base_import}hle:HleExtractor",

    # Database/Table benchmarks
    "tag": f"{base_import}tag:TagExtractor",
    "Tag": f"{base_import}tag:TagExtractor",

    # Medical benchmarks
    "meddialog": f"{base_import}meddialog:MeddialogExtractor",
    "meddialog_qsumm": f"{base_import}meddialog:MeddialogExtractor",
    "meddialog_qsumm_perplexity": f"{base_import}meddialog:MeddialogExtractor",
    "meddialog_raw_dialogues": f"{base_import}meddialog:MeddialogExtractor",
    "meddialog_raw_perplexity": f"{base_import}meddialog:MeddialogExtractor",

    # MMLU-SR benchmarks (all variants use the same extractor)
    "mmlusr": f"{base_import}mmlusr:MMLUSRExtractor",
    "mmlusr_answer_only": f"{base_import}mmlusr:MMLUSRExtractor",
    "mmlusr_question_only": f"{base_import}mmlusr:MMLUSRExtractor",
    "mmlusr_question_and_answer": f"{base_import}mmlusr:MMLUSRExtractor",

    # Newly moved from lm_eval_pairs
    "atis": f"{base_import}atis:AtisExtractor",
    "babilong": f"{base_import}babilong:BabilongExtractor",
    "bangla_mmlu": f"{base_import}bangla_mmlu:BanglaMmluExtractor",
    "banking77": f"{base_import}banking77:Banking77Extractor",
    "basqueglue": f"{base_import}basqueglue:BasqueglueExtractor",
    "bec2016eu": f"{base_import}bec2016eu:Bec2016euExtractor",
    "boolq": f"{base_import}boolq:BoolQExtractor",
    "boolq_seq2seq": f"{base_import}boolq_seq2seq:BoolqSeq2seqExtractor",
    "cb": f"{base_import}cb:CBExtractor",
    "copa": f"{base_import}copa:COPAExtractor",
    "doc_vqa": f"{base_import}doc_vqa:DocVQAExtractor",
    "ds1000": f"{base_import}ds1000:Ds1000Extractor",
    "evalita_mp": f"{base_import}evalita_mp:EvalitaMpExtractor",
    "financial_tweets": f"{base_import}financial_tweets:FinancialTweetsExtractor",
    "flores": f"{base_import}flores:FloresExtractor",
    "freebase": f"{base_import}freebase:FreebaseExtractor",
    "glianorex": f"{base_import}glianorex:GlianorexExtractor",
    "gsm_plus": f"{base_import}gsm_plus:GSMPlusExtractor",
    "humanevalpack": f"{base_import}humanevalpack:HumanevalpackExtractor",
    "iwslt2017_ar_en": f"{base_import}iwslt2017_ar_en:Iwslt2017ArEnExtractor",
    "iwslt2017_en_ar": f"{base_import}iwslt2017_en_ar:Iwslt2017EnArExtractor",
    "law_stack_exchange": f"{base_import}law_stack_exchange:LawStackExchangeExtractor",
    "ledgar": f"{base_import}ledgar:LedgarExtractor",
    "llama": f"{base_import}llama:LlamaExtractor",
    "logieval": f"{base_import}logieval:LogievalExtractor",
    "m_mmlu": f"{base_import}m_mmlu:MMmluExtractor",
    "medical_abstracts": f"{base_import}medical_abstracts:MedicalAbstractsExtractor",
    "mela": f"{base_import}mela:MelaExtractor",
    "multimedqa": f"{base_import}multimedqa:MultimedqaExtractor",
    "multiple": f"{base_import}multiple:MultipleExtractor",
    "noticia": f"{base_import}noticia:NoticiaExtractor",
    "openllm": f"{base_import}openllm:OpenllmExtractor",
    "pythia": f"{base_import}pythia:PythiaExtractor",
    "record": f"{base_import}record:RecordExtractor",
    "squad2": f"{base_import}squad2:SQuAD2Extractor",
    "stsb": f"{base_import}stsb:StsbExtractor",
    "super_glue_lm_eval_v1": f"{base_import}super_glue_lm_eval_v1:SuperGlueLmEvalV1Extractor",
    "super_glue_lm_eval_v1_seq2seq": f"{base_import}super_glue_lm_eval_v1_seq2seq:SuperGlueLmEvalV1Seq2seqExtractor",
    "super_glue_t5_prompt": f"{base_import}super_glue_t5_prompt:SuperGlueT5PromptExtractor",
    "tmlu": f"{base_import}tmlu:TmluExtractor",
    "wiceu": f"{base_import}wiceu:WiceuExtractor",
    "wmt14_en_fr": f"{base_import}wmt14_en_fr:Wmt14EnFrExtractor",
    "wmt14_fr_en": f"{base_import}wmt14_fr_en:Wmt14FrEnExtractor",
    "wmt16_de_en": f"{base_import}wmt16_de_en:Wmt16DeEnExtractor",
    "wmt16_en_de": f"{base_import}wmt16_en_de:Wmt16EnDeExtractor",
    "wmt16_en_ro": f"{base_import}wmt16_en_ro:Wmt16EnRoExtractor",
    "wmt16_ro_en": f"{base_import}wmt16_ro_en:Wmt16RoEnExtractor",
    "wmt_ro_en_t5_prompt": f"{base_import}wmt_ro_en_t5_prompt:WmtRoEnT5PromptExtractor",
    "xsum": f"{base_import}xsum:XsumExtractor",

    # Newly created extractors
    "20_newsgroups": f"{base_import}twenty_newsgroups:TwentyNewsgroupsExtractor",
    "afrimgsm_direct_amh": f"{base_import}afrimgsm_direct_amh:AfrimgsmDirectAmhExtractor",
    "afrimmlu_direct_amh": f"{base_import}afrimmlu_direct_amh:AfrimmluDirectAmhExtractor",
    "afrixnli_en_direct_amh": f"{base_import}afrixnli_en_direct_amh:AfrixnliEnDirectAmhExtractor",
    "ag_news": f"{base_import}ag_news:AgNewsExtractor",
    "arabic_exams": f"{base_import}arabic_exams:ArabicExamsExtractor",
    "argument_topic": f"{base_import}argument_topic:ArgumentTopicExtractor",
    "bhtc_v2": f"{base_import}bhtc_v2:BhtcV2Extractor",
    "basque-glue": f"{base_import}basqueglue:BasqueglueExtractor",
    "cnn_dailymail": f"{base_import}cnn_dailymail:CnnDailymailExtractor",
    "dbpedia_14": f"{base_import}dbpedia_14:Dbpedia14Extractor",
    "ethos_binary": f"{base_import}ethos_binary:EthosBinaryExtractor",
    "evalita-sp_sum_task_fp-small_p1": f"{base_import}evalita_sp_sum_task_fp_small_p1:EvalitaSpSumTaskFpSmallP1Extractor",
    "flan_held_in": f"{base_import}flan_held_in:FlanHeldInExtractor",
    "global_mmlu_ar": f"{base_import}global_mmlu_ar:GlobalMmluArExtractor",
    "gpt3_translation_benchmarks": f"{base_import}gpt3_translation_benchmarks:Gpt3TranslationBenchmarksExtractor",
    "multiple_choice": f"{base_import}multiple_choice:MultipleChoiceExtractor",
    "non_greedy_robustness_agieval_aqua_rat": f"{base_import}non_greedy_robustness_agieval_aqua_rat:NonGreedyRobustnessAgievalAquaRatExtractor",
    "option_order_robustness_agieval_aqua_rat": f"{base_import}option_order_robustness_agieval_aqua_rat:OptionOrderRobustnessAgievalAquaRatExtractor",
    "penn_treebank": f"{base_import}penn_treebank:PennTreebankExtractor",
    "ptb": f"{base_import}penn_treebank:PennTreebankExtractor",
    "phrases_ca-va": f"{base_import}phrases_ca_va:PhrasesCaVaExtractor",
    "prompt_robustness_agieval_aqua_rat": f"{base_import}prompt_robustness_agieval_aqua_rat:PromptRobustnessAgievalAquaRatExtractor",
    "self_consistency": f"{base_import}self_consistency:SelfConsistencyExtractor",
    "sglue_rte": f"{base_import}sglue_rte:SglueRteExtractor",
    "t0_eval": f"{base_import}t0_eval:T0EvalExtractor",
    "unfair_tos": f"{base_import}unfair_tos:UnfairTosExtractor",
    "vaxx_stance": f"{base_import}vaxx_stance:VaxxStanceExtractor",
    "wikitext103": f"{base_import}wikitext103:Wikitext103Extractor",
    "yahoo_answers_topics": f"{base_import}yahoo_answers_topics:YahooAnswersTopicsExtractor",

    # TruthfulQA generation (semantic similarity evaluation, NOT lm-eval)
    "truthfulqa_generation": f"{base_import}truthfulqa_generation:TruthfulQAGenerationExtractor",
    "truthfulqa_gen": f"{base_import}truthfulqa_generation:TruthfulQAGenerationExtractor",
}

# Alias for backwards compatibility
HF_EXTRACTORS = EXTRACTORS

