§
    ‚ŠtjÓ  ã                   óz   — d Z ddlZddlmZ ddlmZ  ej        e¦  «        ZddiZ	d„ Z
 G d	„ d
e¦  «        Zd
gZdS )zTokenization classes for ESM.é    Né   )ÚPreTrainedTokenizer)ÚloggingÚ
vocab_fileú	vocab.txtc                 óº   — t          | d¦  «        5 }|                     ¦   «                              ¦   «         }d„ |D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NÚrc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Ústrip)Ú.0Úls     úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/esm/tokenization_esm.pyú
<listcomp>z#load_vocab_file.<locals>.<listcomp>   s    € Ð)Ð)Ð)˜a�—’‘	”	Ð)Ð)Ð)ó    )ÚopenÚreadÚ
splitlines)r   ÚfÚliness      r   Úload_vocab_filer      s�   € Ý	ˆj˜#Ñ	Ô	ð * !Ø—’‘”×#Ò#Ñ%Ô%ˆØ)Ð) 5Ð)Ñ)Ô)ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s   ‘2AÁAÁAc            
       ó  ‡ — e Zd ZdZeZddgZ	 	 	 	 	 dˆ fd	„	Zd
ede	fd„Z
de	defd„Zd„ Zd„ Zde	defd„Zd
ede	fd„Z	 ddee         dee         dz  dee         fd„Z	 ddededz  dedee         fd„Zd„ Zedefd„¦   «         Zˆ xZS )ÚEsmTokenizerz&
    Constructs an ESM tokenizer.
    Ú	input_idsÚattention_maskú<unk>ú<cls>ú<pad>ú<mask>ú<eos>c           	      óL  •— t          |¦  «        | _        t          t          | j        ¦  «        ¦  «        | _        d„ t          | j        ¦  «        D ¦   «         | _         t          ¦   «         j        d|||||dœ|¤Ž | j        | _        |  	                    | j        ¦  «         d S )Nc                 ó   — i | ]\  }}||“Œ	S r   r   )r   ÚindÚtoks      r   ú
<dictcomp>z)EsmTokenizer.__init__.<locals>.<dictcomp>5   s   € ÐQÐQÐQ©(¨#¨s˜S #ÐQÐQÐQr   )Ú	unk_tokenÚ	cls_tokenÚ	pad_tokenÚ
mask_tokenÚ	eos_tokenr   )
r   Ú
all_tokensÚdictÚ	enumerateÚ_id_to_tokenÚ_token_to_idÚsuperÚ__init__Úunique_no_split_tokensÚ_update_trie)	Úselfr   r&   r'   r(   r)   r*   ÚkwargsÚ	__class__s	           €r   r1   zEsmTokenizer.__init__)   sµ   ø€ õ *¨*Ñ5Ô5ˆŒÝ ¥¨4¬?Ñ!;Ô!;Ñ<Ô<ˆÔØQÐQµiÀÄÑ6PÔ6PÐQÑQÔQˆÔØ�‰ŒÔð 	
ØØØØ!Øð	
ð 	
ð ð	
ð 	
ð 	
ð '+¤oˆÔ#Ø×Ò˜$Ô5Ñ6Ô6Ð6Ð6Ð6r   ÚindexÚreturnc                 óB   — | j                              || j        ¦  «        S ©N©r.   Úgetr&   ©r4   r7   s     r   Ú_convert_id_to_tokenz!EsmTokenizer._convert_id_to_tokenE   ó   € ØÔ ×$Ò$ U¨D¬NÑ;Ô;Ð;r   Útokenc                 ór   — | j                              || j                              | j        ¦  «        ¦  «        S r:   ©r/   r<   r&   ©r4   r@   s     r   Ú_convert_token_to_idz!EsmTokenizer._convert_token_to_idH   ó.   € ØÔ ×$Ò$ U¨DÔ,=×,AÒ,AÀ$Ä.Ñ,QÔ,QÑRÔRÐRr   c                 ó*   — |                      ¦   «         S r:   )Úsplit)r4   Útextr5   s      r   Ú	_tokenizezEsmTokenizer._tokenizeK   s   € Ø�zŠz‰|Œ|Ðr   c                 ól   — | j                              ¦   «         }|                     | j        ¦  «         |S r:   )r/   ÚcopyÚupdateÚadded_tokens_encoder)r4   Ú
base_vocabs     r   Ú	get_vocabzEsmTokenizer.get_vocabN   s3   € ØÔ&×+Ò+Ñ-Ô-ˆ
Ø×Ò˜$Ô3Ñ4Ô4Ð4ØÐr   c                 ór   — | j                              || j                              | j        ¦  «        ¦  «        S r:   rB   rC   s     r   Útoken_to_idzEsmTokenizer.token_to_idS   rE   r   c                 óB   — | j                              || j        ¦  «        S r:   r;   r=   s     r   Úid_to_tokenzEsmTokenizer.id_to_tokenV   r?   r   NÚtoken_ids_0Útoken_ids_1c                 ó–   — | j         g}| j        g}|€| j        €||z   S ||z   |z   S | j        €t          d¦  «        ‚||z   |z   |z   |z   S )Nz=Cannot tokenize multiple sequences when EOS token is not set!)Úcls_token_idÚeos_token_idÚ
ValueError)r4   rT   rU   ÚclsÚseps        r   Ú build_inputs_with_special_tokensz-EsmTokenizer.build_inputs_with_special_tokensY   sv   € ð Ô Ð!ˆØÔ Ð!ˆØÐØÔ Ð(Ø˜[Ñ(Ð(à˜[Ñ(¨3Ñ.Ð.ØÔÐ&ÝÐ\Ñ]Ô]Ð]Ø�[Ñ  3Ñ&¨Ñ4°sÑ:Ð:r   FÚalready_has_special_tokensc                 ó¸   ‡ — |r|�t          d¦  «        ‚ˆ fd„|D ¦   «         S dgdgt          |¦  «        z  z   dgz   }|�|dgt          |¦  «        z  dgz   z  }|S )aÔ  
        Retrieves sequence ids from a token list that has no special tokens added. This method is called when adding
        special tokens using the tokenizer `prepare_for_model` or `encode_plus` methods.

        Args:
            token_ids_0 (`list[int]`):
                List of ids of the first sequence.
            token_ids_1 (`list[int]`, *optional*):
                List of ids of the second sequence.
            already_has_special_tokens (`bool`, *optional*, defaults to `False`):
                Whether or not the token list is already formatted with special tokens for the model.

        Returns:
            A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token.
        NzYou should not supply a second sequence if the provided sequence of ids is already formatted with special tokens for the model.c                 ó*   •— g | ]}|‰j         v rd nd‘ŒS )é   r   )Úall_special_ids)r   r@   r4   s     €r   r   z8EsmTokenizer.get_special_tokens_mask.<locals>.<listcomp>€   s*   ø€ ÐWÐWÐWÀ%˜ $Ô"6Ð6Ð6�A�A¸AÐWÐWÐWr   r`   r   )rY   Úlen)r4   rT   rU   r]   Úmasks   `    r   Úget_special_tokens_maskz$EsmTokenizer.get_special_tokens_maskg   s–   ø€ ð$ &ð 	XØÐ&Ý ðRñô ð ð
 XÐWÐWÐWÈ;ÐWÑWÔWÐWØˆs�q�c�C Ñ,Ô,Ñ,Ñ-°°Ñ3ˆØÐ"Ø�Q�C�#˜kÑ*Ô*Ñ*¨a¨SÑ0Ñ0ˆDØˆr   c                 ó  — t           j                             ||r|dz   nddz   ¦  «        }t          |d¦  «        5 }|                     d                     | j        ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |fS )Nú-Ú r   Úwú
)ÚosÚpathÚjoinr   Úwriter+   )r4   Úsave_directoryÚfilename_prefixr   r   s        r   Úsave_vocabularyzEsmTokenizer.save_vocabulary†   s·   € Ý”W—\’\ .ÈOÐ3c°?ÀSÑ3HÐ3HÐacÐgrÑ2rÑsÔsˆ
Ý�*˜cÑ"Ô"ð 	0 aØ�GŠG�D—I’I˜dœoÑ.Ô.Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0àˆ}Ðs   ».A5Á5A9Á<A9c                 ó*   — t          | j        ¦  «        S r:   )rb   r+   )r4   s    r   Ú
vocab_sizezEsmTokenizer.vocab_sizeŒ   s   € å�4”?Ñ#Ô#Ð#r   )r   r   r   r   r    r:   )NF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesÚmodel_input_namesr1   ÚintÚstrr>   rD   rI   rO   rQ   rS   Úlistr\   Úboolrd   rp   Úpropertyrr   Ú__classcell__)r6   s   @r   r   r   !   så  ø€ € € € € ðð ð *ÐØ$Ð&6Ð7Ðð
 ØØØØð7ð 7ð 7ð 7ð 7ð 7ð8<¨#ð <°#ð <ð <ð <ð <ðS¨#ð S°#ð Sð Sð Sð Sðð ð ðð ð ð
S ð S¨ð Sð Sð Sð Sð< ð <¨ð <ð <ð <ð <ð GKð;ð ;Ø œ9ð;Ø37¸´9¸tÑ3Cð;à	ˆcŒð;ð ;ð ;ð ;ð fkðð ØðØ.2°T©kðØ^bðà	ˆcŒðð ð ð ð>ð ð ð ð$˜Cð $ð $ð $ñ „Xð$ð $ð $ð $ð $r   r   )rv   rj   Útokenization_pythonr   Úutilsr   Ú
get_loggerrs   Úloggerrw   r   r   Ú__all__r   r   r   ú<module>r…      sª   ðð $Ð #à 	€	€	€	à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø Ð Ð Ð Ð Ð ð 
ˆÔ	˜HÑ	%Ô	%€à! ;Ð/Ð ð*ð *ð *ðm$ð m$ð m$ð m$ð m$Ð&ñ m$ô m$ð m$ð` Ð
€€€r   