o
    5tip	                     @   sN   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ G dd dZ	dS )    N)List)Run)Validatec                   @   s<   e Zd ZdZdd ZdejfddZdejddfd	d
ZdS )
HarnessCLIz-Main CLI parser that manages all subcommands.c                    sn   t jddtdt jd _ jj fddd  jjdd	d
d _t	
 j t
 j t
 j d S )Nzlm-evalz!Language Model Evaluation Harnessa%  
                quick start:
                  # Basic evaluation
                  lm-eval run --model hf --model_args pretrained=gpt2 --tasks hellaswag

                  # List available tasks
                  lm-eval ls tasks

                  # Validate task configurations
                  lm-eval validate --tasks hellaswag,arc_easy

                legacy compatibility:
                  The harness maintains backward compatibility with the original interface.
                  If no command is specified, 'run' is automatically inserted:

                  lm-eval --model hf --tasks hellaswag  # Equivalent to 'lm-eval run --model hf --tasks hellaswag'

                For documentation, visit: https://github.com/EleutherAI/lm-evaluation-harness/blob/main/docs/interface.md
            )progdescriptionepilogformatter_classc                    s
    j  S )N)_parser
print_help)argsself H/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/_cli/harness.py<lambda>&   s   
 z%HarnessCLI.__init__.<locals>.<lambda>funccommandzAvailable commandsCOMMAND)desthelpmetavar)argparseArgumentParsertextwrapdedentRawDescriptionHelpFormatterr
   set_defaultsadd_subparsers_subparsersr   creater   r   r   r   r   r   __init__   s   zHarnessCLI.__init__returnc                 C   sl   t tjdkrtjd | jjvrtjdd nt tjdkr1dtjv r1| jjd   td | j	 S )z&Parse arguments using the main parser.      runr   )
lensysargvr    choicesinsertr   exitr
   
parse_argsr   r   r   r   r-   .   s    

zHarnessCLI.parse_argsr   Nc                 C   s   | | dS )zBMain execution method that handles subcommands and legacy support.Nr   )r   r   r   r   r   execute:   s   zHarnessCLI.execute)	__name__
__module____qualname____doc__r"   r   	Namespacer-   r.   r   r   r   r   r   
   s
    !r   )
r   r(   r   lm_eval._cli.lsr   lm_eval._cli.runr   lm_eval._cli.validater   r   r   r   r   r   <module>   s    