o
    6ti                  
   @   sl   d dl Z d dlZd dlZG dd dZdd Zdededed	ed
df
ddZdddZe	dkr4e  dS dS )    Nc                   @   s   e Zd Zdd ZdS )FunctionTagc                 C   s
   || _ d S )N)value)selfr    r   Z/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/tasks/afrobench/salt/gen_utils.py__init__   s   
zFunctionTag.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s    r   c                 C   s   | d}||  d| dd||  dd||  d||  d| dd	||  d
||  dd||  d||  d||  d| d	d||  d||  d||  dd}||  S )N_textz sentence: {{z}} 
English sentence: z'English sentence: {{eng_source_text}} 
z sentence: z6You are a translation expert. Translate the following z sentences to English 
z}}
English sentence: zKYou are a translation expert. Translate the following English sentences to z) 
English sentence: {{eng_source_text}} 
zAs a z/ and English linguist, translate the following z sentences to English. 
zD and English linguist, translate the following English sentences to z*. 
English sentence: {{eng_source_text}} 
)prompt_1prompt_1_reverseprompt_2prompt_2_reverseprompt_3prompt_3_reverser   )modelang	lang_dictlanguage_column_name
prompt_mapr   r   r   prompt_func   s6   
r   
output_dir	overwriter   reversereturnc              	   C   s  g }ddddddddd	}|  D ]}z|d
kr|ssd| d}d| d| }d}	|	|ddt|||d}
tj|  d| dd t|  d| d| |rPdnddd}|d tj|
|dd W d   n1 smw   Y  n^d| d}d| d| }d}	|	|d| dt| d ||d}
tj|  d| dd t|  d| d| |rdnddd}|d tj|
|dd W d   n1 sw   Y  W q ty   |	| Y qw t
|d!krtd"d#| dS )$z
    Generate a yaml file for each language.

    :param output_dir: The directory to output the files to.
    :param overwrite: Whether to overwrite files if they already exist.
    EnglishLugandaAcholiLugbaraAteso
RunyankoleSwahiliIgbo)englugachlggteonynswaibor$   salt_z	-eng.yamlz-eng_saltztext-alleng_target_text)includetaskdataset_namedoc_to_targetdoc_to_text/T)exist_okwxutf8)encodingz# Generated by utils.py
)allow_unicodeNz	salt_eng-z.yaml_r   _reverser   zJFiles were not created because they already exist (use --overwrite flag): z, )keysr   osmakedirsopenwriteyamldumpFileExistsErrorappendlenjoin)r   r   r   r   err	languagesr   	file_name	task_nameyaml_templateyaml_detailsfr   r   r   gen_lang_yamls"   s   




rO   c                  C   sz   t  } | jddddd | jdddd	 | jd
dg ddd | jddddgdd |  }t|j|j|j|jd dS )z9Parse CLI args and generate language-specific yaml files.z--overwriteT
store_truez%Overwrite files if they already exist)defaultactionhelpz--output-dirz./z Directory to write yaml files to)rQ   rS   z--moder   )r   r   r   zPrompt number)rQ   choicesrS   z	--reverseFz!Reverse the translation direction)r   r   r   r   N)	argparseArgumentParseradd_argument
parse_argsrO   r   r   r   r   )parserargsr   r   r   mainp   s>   
r[   __main__)r   N)
rU   r>   rB   r   r   strboolrO   r[   r   r   r   r   r   <module>   s    
N$
