"""LM-eval extractor manifest - Part 1 (A-O tasks)."""

base_import: str = "wisent.extractors.lm_eval."

LM_EXTRACTORS_PART1: dict[str, str] = {
    # key → "module_path:ClassName" (supports dotted attr path after ':')
    "arithmetic": f"{base_import}arithmetic:ArithmeticExtractor",
    "asdiv": f"{base_import}asdiv:ASDivExtractor",
    "boolq": f"{base_import}boolq:BoolQExtractor",
    "boolq-seq2seq": f"{base_import}boolq_seq2seq:BoolQSeq2SeqExtractor",
    "cb": f"{base_import}cb:CBExtractor",
    "coqa": f"{base_import}coqa:CoQAExtractor",
    "drop": f"{base_import}drop:DropExtractor",
    "gsm8k": f"{base_import}gsm8k:GSM8KExtractor",
    "gsm8k_cot_self_consistency": f"{base_import}gsm8k:GSM8KExtractor",
    "gsm8k_platinum_cot_self_consistency": f"{base_import}gsm8k:GSM8KExtractor",
    "gsm_plus": f"{base_import}gsm:GsmExtractor",
    "gsm_plus_mini": f"{base_import}gsm:GsmExtractor",
    "headqa": f"{base_import}headqa:HeadQAExtractor",
    "logieval": f"{base_import}logieval:LogievalExtractor",
    "logiqa": f"{base_import}logiqa:LogiQAExtractor",
    "logiqa2": f"{base_import}logiqa2:LogiQA2Extractor",
    "mc_taco": f"{base_import}mc-taco:MCTACOExtractor",
    "medqa": f"{base_import}medqa:MedQAExtractor",
    "mmlu": f"{base_import}mmlu:MMLUExtractor",
    "mmmlu": f"{base_import}mmlu:MMLUExtractor",
    "mrpc": f"{base_import}mrpc:MRPCExtractor",
    "multirc": f"{base_import}multirc:MultiRCExtractor",
    "mutual": f"{base_import}mutual:MutualExtractor",
    "noticia": f"{base_import}noticia:NoticiaExtractor",
    "openbookqa": f"{base_import}openbookqa:OpenBookQAExtractor",
    "pawsx": f"{base_import}pawsx:PawsXExtractor",
    "paws_de": f"{base_import}pawsx:PawsXExtractor",
    "paws_en": f"{base_import}pawsx:PawsXExtractor",
    "paws_es": f"{base_import}pawsx:PawsXExtractor",
    "paws_fr": f"{base_import}pawsx:PawsXExtractor",
    "paws_ja": f"{base_import}pawsx:PawsXExtractor",
    "paws_ko": f"{base_import}pawsx:PawsXExtractor",
    "paws_zh": f"{base_import}pawsx:PawsXExtractor",
    "phrases_ca-va": f"{base_import}phrases_ca_va:PhrasesCaVaExtractor",
    "piqa": f"{base_import}piqa:PIQAExtractor",
    "prost": f"{base_import}prost:ProstExtractor",
    "pubmedqa": f"{base_import}pubmedqa:PubMedQAExtractor",
    "qa4mre": f"{base_import}qa4mre:QA4MREExtractor",
    "qasper": f"{base_import}qasper:QasperExtractor",
    "qnli": f"{base_import}qnli:QNLIExtractor",
    "qqp": f"{base_import}qqp:QQPExtractor",
    "race": f"{base_import}race:RACEExtractor",
    "record": f"{base_import}record:RecordExtractor",
    "rte": f"{base_import}rte:RTEExtractor",
    "sciq": f"{base_import}sciq:SciQExtractor",
    "social_iqa": f"{base_import}social_iqa:SocialIQAExtractor",
    "squadv2": f"{base_import}squad2:SQuAD2Extractor",
    "sst2": f"{base_import}sst2:SST2Extractor",
    "swag": f"{base_import}swag:SwagExtractor",
    "triviaqa": f"{base_import}triviaqa:TriviaQAExtractor",
    "webqs": f"{base_import}webqs:WebQSExtractor",
    "nq_open": f"{base_import}nq_open:NQOpenExtractor",
    "wic": f"{base_import}wic:WiCExtractor",
    "winogrande": f"{base_import}winogrande:WinograndeExtractor",
    "wnli": f"{base_import}wnli:WNLIExtractor",
    "wsc": f"{base_import}wsc:WSCExtractor",
    "xnli": f"{base_import}xnli:XNLIExtractor",
    "xstorycloze": f"{base_import}xstorycloze:XStoryClozeExtractor",
    "xwinograd": f"{base_import}xwinograd:XWinogradExtractor",
    "livecodebench": "wisent.extractors.hf.livecodebench:LivecodebenchExtractor",
    # Perplexity/Language Modeling tasks
    "wikitext": f"{base_import}wikitext:WikitextExtractor",
    "wikitext103": f"{base_import}wikitext:WikitextExtractor",
    # Word prediction tasks
    # NEW: BC branch extractors
    "ai2_arc": f"{base_import}ai2_arc:AI2ARCExtractor",
    "anli": f"{base_import}anli:ANLIExtractor",
    "anli_r1": f"{base_import}anli:ANLIExtractor",
    "anli_r2": f"{base_import}anli:ANLIExtractor",
    "anli_r3": f"{base_import}anli:ANLIExtractor",
    "bigbench": f"{base_import}bigbench:BigBenchExtractor",
    "bbh": f"{base_import}bbh:BBHExtractor",
    "gpqa": f"{base_import}gpqa:GPQAExtractor",
    "hle": f"{base_import}hle:HLEExtractor",
    "mathqa": f"{base_import}mathqa:MathQAExtractor",
    # Hendrycks Math and all subtasks
    "hendrycks_math": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_algebra": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_counting_and_prob": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_geometry": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_intermediate_algebra": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_num_theory": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_prealgebra": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "hendrycks_math_precalc": f"{base_import}hendrycks_math:HendrycksMathExtractor",
    "quac": f"{base_import}quac:QuACExtractor",
    "superglue": f"{base_import}superglue:SuperGLUEExtractor",
    "supergpqa": f"{base_import}supergpqa:SuperGPQAExtractor",
    "multilingual": f"{base_import}multilingual:MultilingualExtractor",
    "glue": f"{base_import}glue:GLUEExtractor",
    # Task 1/142: AraDiCE - group task with 28 subtasks
    # AraDiCE subtasks are named like AraDiCE_boolq_egy, AraDiCE_winogrande_lev, etc.
    # The AradiceExtractor routes to appropriate base extractors
    "aradice": f"{base_import}aradice:AradiceExtractor",
    "AraDiCE": f"{base_import}aradice:AradiceExtractor",  # Capital alias
    # Task 2/142: ArabCulture
    "arabculture": f"{base_import}arabculture:ArabcultureExtractor",
    "ArabCulture": f"{base_import}arabculture:ArabcultureExtractor",  # Capital alias
    # Task 3/142: aclue
    "aclue": f"{base_import}aclue:AclueExtractor",
    # Remaining tasks - auto-registered
    # acp_bench subtasks (bool and mcq use log_likelihoods)
    # acp_bench_hard _gen subtasks (use generation evaluator)
    "aexams": f"{base_import}aexams:AexamsExtractor",
    # AfroBench multiple-choice benchmarks
    "afrobench": f"{base_import}afrobench_mc:AfroBenchMultipleChoiceExtractor",
    "afridiacritics": f"{base_import}afrobench_mc:AfroBenchMultipleChoiceExtractor",
    "arabic_exams": f"{base_import}arabic_exams:ArabicExamsExtractor",
    "arabic_leaderboard_complete": f"{base_import}arabic_leaderboard_complete:ArabicLeaderboardCompleteExtractor",
    "arabic_leaderboard_light": f"{base_import}arabic_leaderboard_light:ArabicLeaderboardLightExtractor",
    "arabicmmlu": f"{base_import}arabicmmlu:ArabicmmluExtractor",
    "argument_topic": f"{base_import}unitxt:UnitxtExtractor",
    "babi": f"{base_import}babi:BabiExtractor",
    "banking77": f"{base_import}unitxt:UnitxtExtractor",
    "basque_bench": f"{base_import}basque_bench:BasqueBenchExtractor",
    "bbq": f"{base_import}bbq:BbqExtractor",
    "belebele": f"{base_import}belebele:BelebeleExtractor",
    "benchmarks": f"{base_import}benchmarks:BenchmarksExtractor",
    "bertaqa": f"{base_import}bertaqa:BertaqaExtractor",
    "bhs": f"{base_import}bhs:BhsExtractor",
    "blimp": f"{base_import}blimp:BlimpExtractor",
    "blimp_nl": f"{base_import}blimp_nl:BlimpNlExtractor",
    "c4": f"{base_import}c4:C4Extractor",
    "cabbq": f"{base_import}cabbq:CabbqExtractor",
    "careqa": f"{base_import}careqa:CareqaExtractor",
    "catalan_bench": f"{base_import}catalan_bench:CatalanBenchExtractor",
    "ceval": f"{base_import}ceval:CevalExtractor",
    "chartqa": f"{base_import}chartqa:ChartqaExtractor",
    "click": f"{base_import}click:ClickExtractor",
    "cmmlu": f"{base_import}cmmlu:CmmluExtractor",
    "commonsense_qa": f"{base_import}commonsense_qa:CommonsenseQAExtractor",
    "copa": f"{base_import}copa:COPAExtractor",
    "copal_id": f"{base_import}copal_id:CopalIdExtractor",
    "cycle_letters": f"{base_import}cycle_letters:CycleLettersExtractor",
    "csatqa": f"{base_import}csatqa:CsatqaExtractor",
    "darijahellaswag": f"{base_import}darijahellaswag:DarijahellaswagExtractor",
    "darijammlu": f"{base_import}darijammlu:DarijammluExtractor",
    "discrim_eval": f"{base_import}discrim_eval:DiscrimEvalExtractor",
    "egyhellaswag": f"{base_import}egyhellaswag:EgyHellaSwagExtractor",
    "egymmlu": f"{base_import}egymmlu:EgyMMLUExtractor",
    "eq_bench": f"{base_import}eq_bench:EqBenchExtractor",
    "eq_bench_ca": f"{base_import}eq_bench_ca:EqBenchCaExtractor",
    "eq_bench_es": f"{base_import}eq_bench_es:EqBenchEsExtractor",
    "esbbq": f"{base_import}esbbq:EsbbqExtractor",
    "evalita_llm": f"{base_import}evalita_llm:EvalitaLlmExtractor",
    "evalita-sp": f"{base_import}evalita_sp:EvalitaSpExtractor",
    "evalita-sp_sum_task_fp-small_p1": f"{base_import}evalita_sp:EvalitaSpExtractor",
    "evalita-sp_sum_task_fp-small_p2": f"{base_import}evalita_sp:EvalitaSpExtractor",
    "evalita-sp_sum_task_fp_p1": f"{base_import}evalita_sp:EvalitaSpExtractor",
    "evalita-sp_sum_task_fp_p2": f"{base_import}evalita_sp:EvalitaSpExtractor",
    "fda": f"{base_import}fda:FdaExtractor",
    "fld": f"{base_import}fld:FldExtractor",
    "freebase": f"{base_import}webqs:WebQSExtractor",
    "french_bench": f"{base_import}french_bench:FrenchBenchExtractor",
    "galician_bench": f"{base_import}galician_bench:GalicianBenchExtractor",
    "global_mmlu": f"{base_import}global_mmlu:GlobalMmluExtractor",
    "groundcocoa": f"{base_import}groundcocoa:GroundcocoaExtractor",
    "haerae": f"{base_import}haerae:HaeraeExtractor",
    "hendrycks_ethics": f"{base_import}hendrycks_ethics:HendrycksEthicsExtractor",
    "histoires_morales": f"{base_import}histoires_morales:HistoiresMoralesExtractor",
    "hrm8k": f"{base_import}hrm8k:Hrm8kExtractor",
    "humaneval": f"{base_import}humaneval:HumanEvalExtractor",
    "humaneval_infilling": f"{base_import}humaneval_infilling:HumanevalInfillingExtractor",
    "icelandic_winogrande": f"{base_import}icelandic_winogrande:IcelandicWinograndeExtractor",
    "ifeval": f"{base_import}ifeval:IFEvalExtractor",
    "japanese_leaderboard": f"{base_import}japanese_leaderboard:JapaneseLeaderboardExtractor",
    "jsonschema_bench": f"{base_import}jsonschema_bench:JsonschemaBenchExtractor",
    "jsonschema_bench_easy": f"{base_import}jsonschema_bench:JsonschemaBenchExtractor",
    "jsonschema_bench_medium": f"{base_import}jsonschema_bench:JsonschemaBenchExtractor",
    "jsonschema_bench_hard": f"{base_import}jsonschema_bench:JsonschemaBenchExtractor",
    "kmmlu": f"{base_import}kmmlu:KmmluExtractor",
    "kobest": f"{base_import}kobest:KobestExtractor",
    "kormedmcqa": f"{base_import}kormedmcqa:KormedmcqaExtractor",
    "kormedmcqa_dentist": f"{base_import}kormedmcqa:KormedmcqaExtractor",
    "kormedmcqa_doctor": f"{base_import}kormedmcqa:KormedmcqaExtractor",
    "kormedmcqa_nurse": f"{base_import}kormedmcqa:KormedmcqaExtractor",
    "kormedmcqa_pharm": f"{base_import}kormedmcqa:KormedmcqaExtractor",
    # Note: "lambada_multilingual_stablelm" is not a loadable task in lm-eval 0.4.9.1 - only individual language tasks work
    "leaderboard": f"{base_import}leaderboard:LeaderboardExtractor",
    "libra": f"{base_import}libra:LibraExtractor",
    "librusec_history": f"{base_import}libra:LibraExtractor",
    "librusec_mhqa": f"{base_import}libra:LibraExtractor",
    "long_context_multiq": f"{base_import}libra:LibraExtractor",
    "matreshka_names": f"{base_import}libra:LibraExtractor",
    "matreshka_yes_no": f"{base_import}libra:LibraExtractor",
    "passkey": f"{base_import}libra:LibraExtractor",
    "passkey_with_librusec": f"{base_import}libra:LibraExtractor",
    "lingoly": f"{base_import}lingoly:LingolyExtractor",
    "llama3": f"{base_import}llama3:Llama3Extractor",
    "lm_syneval": f"{base_import}lm_syneval:LmSynevalExtractor",
    "longbench": f"{base_import}longbench:LongbenchExtractor",
    "longbenchv2": f"{base_import}longbenchv2:Longbenchv2Extractor",
    "mastermind": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_24_easy": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_24_hard": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_35_easy": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_35_hard": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_46_easy": f"{base_import}mastermind:MastermindExtractor",
    "mastermind_46_hard": f"{base_import}mastermind:MastermindExtractor",
    "mbpp": f"{base_import}mbpp:MBPPExtractor",
    "mbpp_instruct": f"{base_import}mbpp:MBPPExtractor",
    "mbpp_plus": f"{base_import}mbpp:MBPPExtractor",
    "mbpp_plus_instruct": f"{base_import}mbpp:MBPPExtractor",
    "mc-taco": f"{base_import}mc-taco:MCTACOExtractor",
    "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",
    "mediqa_qa2019": f"{base_import}mediqa_qa2019:MediqaQa2019Extractor",
    "medmcqa": f"{base_import}medmcqa:MedmcqaExtractor",
    "medtext": f"{base_import}medtext:MedtextExtractor",
    "meqsum": f"{base_import}meqsum:MeqsumExtractor",
    "metabench": f"{base_import}metabench:MetabenchExtractor",
    "mimic_repsum": f"{base_import}mimic_repsum:MimicRepsumExtractor",
    "minerva_math": f"{base_import}minerva_math:MinervaMathExtractor",
    # Arabic context
    # German context
    # Vietnamese context
    # Chinese context
    # English context
    # Spanish context
    # Hindi context
    "mmlusr": f"{base_import}mmlusr:MmlusrExtractor",
    "model_written_evals": f"{base_import}model_written_evals:ModelWrittenEvalsExtractor",
    "moral_stories": f"{base_import}moral_stories:MoralStoriesExtractor",
    "mts_dialog": f"{base_import}mts_dialog:MtsDialogExtractor",
    "multiblimp": f"{base_import}multiblimp:MultiblimpExtractor",
    "noreval": f"{base_import}noreval:NorevalExtractor",
    "okapi_arc_multilingual": f"{base_import}okapi_arc_multilingual:OkapiArcMultilingualExtractor",
    "okapi_hellaswag_multilingual": f"{base_import}okapi_hellaswag_multilingual:OkapiHellaswagMultilingualExtractor",
    "okapi_mmlu_multilingual": f"{base_import}okapi_mmlu_multilingual:OkapiMmluMultilingualExtractor",
    "okapi_truthfulqa_multilingual": f"{base_import}okapi_truthfulqa_multilingual:OkapiTruthfulqaMultilingualExtractor",
    "olaph": f"{base_import}olaph:OlaphExtractor",
    "paloma": f"{base_import}paloma:PalomaExtractor",
}
