o
    5tiJ                     @   s0   d dl Z d dlZd dlmZ G dd deZdS )    N)
SubCommandc                       sF   e Zd ZdZdejf fddZdddZd	ejddfd
dZ	  Z
S )Listz$Command for listing available tasks.
subparsersc                    sN   t  j|i | |jddddtdtjd| _|   | jj	| j
d d S )Nlsz/List available tasks, groups, subtasks, or tagszLList available tasks, groups, subtasks, or tags from the evaluation harness.z>lm-eval list [tasks|groups|subtasks|tags] [--include_path DIR]uI  
                examples:
                  # List all available tasks (includes groups, subtasks, and tags)
                  $ lm-eval ls tasks

                  # List only task groups (like 'mmlu', 'glue', 'superglue')
                  $ lm-eval ls groups

                  # List only individual subtasks (like 'mmlu_abstract_algebra')
                  $ lm-eval ls subtasks

                  # Include external task definitions
                  $ lm-eval ls tasks --include_path /path/to/external/tasks

                  # List tasks from multiple external paths
                  $ lm-eval ls tasks --include_path "/path/to/tasks1:/path/to/tasks2"

                organization:
                  • Groups: Collections of tasks with aggregated metric across subtasks (e.g., 'mmlu')
                  • Subtasks: Individual evaluation tasks (e.g., 'mmlu_anatomy', 'hellaswag')
                  • Tags: Similar to groups but no aggregate metric (e.g., 'reasoning', 'knowledge', 'language')
                  • External Tasks: Custom tasks defined in external directories

                evaluation usage:
                  After listing tasks, use them with the run command!

                For more information tasks configs are defined in https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks
            )helpdescriptionusageepilogformatter_class)func)super__init__
add_parsertextwrapdedentargparseRawDescriptionHelpFormatter_parser	_add_argsset_defaults_execute)selfr   argskwargs	__class__ C/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/_cli/ls.pyr   
   s   #zList.__init__returnNc                 C   s2   | j jdg dddd | j jdtd ddd	 d S )
Nwhat)tasksgroupssubtaskstags?z4What to list: tasks (all), groups, subtasks, or tags)choicesnargsr   z--include_pathDIRz7Additional path to include if there are external tasks.)typedefaultmetavarr   )r   add_argumentstr)r   r   r   r   r   3   s   
zList._add_argsr   c                 C   s   ddl m} ||jd}|jdkrt|  dS |jdkr)t|jddd dS |jdkr9t|jddd	 dS |jd
krIt|jddd dS |jdu rU| j  dS dS )zExecute the list command.r   )TaskManager)include_pathr    r!   F)list_subtasks	list_tagsr"   )list_groupsr0   r#   )r1   r/   N)lm_eval.tasksr-   r.   r   printlist_all_tasksr   
print_help)r   r   r-   task_managerr   r   r   r   B   s   




zList._execute)r   N)__name__
__module____qualname____doc__r   _SubParsersActionr   r   	Namespacer   __classcell__r   r   r   r   r      s
    
)r   )r   r   lm_eval._cli.subcommandr   r   r   r   r   r   <module>   s    