Ë
    S^(h	  ã                   ó†   — d Z ddlZddlmZm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y)zTokenization classes for ESM.é    N)ÚListÚOptionalé   )ÚPreTrainedTokenizer)ÚloggingÚ
vocab_fileú	vocab.txtc                 óÈ   — t        | d«      5 }|j                  «       j                  «       }|D �cg c]  }|j                  «       ‘Œ c}cd d d «       S c c}w # 1 sw Y   y xY w)NÚr)ÚopenÚreadÚ
splitlinesÚstrip)r   ÚfÚlinesÚls       úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/esm/tokenization_esm.pyÚload_vocab_filer      sS   € Ü	ˆj˜#Ó	ð * !Ø—‘“×#Ñ#Ó%ˆØ#(Ö)˜a�—‘•	Ò)÷*ñ *ùâ)÷*ð *ús   �#A°AÁAÁ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e      dee   fd„Z	 ddedee   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_maskc           	      óV  •— t        |«      | _        t        t        | j                  «      «      | _        t        | j                  «      D ��	ci c]  \  }}	|	|“Œ
 c}	}| _        t        ‰
| �  d|||||dœ|¤Ž | j                  | _        | j                  | j                  «       y c c}	}w )N)Ú	unk_tokenÚ	cls_tokenÚ	pad_tokenÚ
mask_tokenÚ	eos_token© )
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ÚindÚtokÚ	__class__s             €r   r&   zEsmTokenizer.__init__+   sž   ø€ ô *¨*Ó5ˆŒÜ ¤¨4¯?©?Ó!;Ó<ˆÔÜ6?ÀÇÁÓ6P×Q©(¨#¨s˜S #™XÓQˆÔÜ‰Ñð 	
ØØØØ!Øñ	
ð ò	
ð '+§o¡oˆÔ#Ø×Ñ˜$×5Ñ5Õ6ùó Rs   ÁB%ÚindexÚreturnc                 óN   — | j                   j                  || j                  «      S ©N©r#   Úgetr   ©r)   r.   s     r   Ú_convert_id_to_tokenz!EsmTokenizer._convert_id_to_tokenG   ó   € Ø× Ñ ×$Ñ$ U¨D¯N©NÓ;Ð;ó    Útokenc                 ó€   — | j                   j                  || j                   j                  | j                  «      «      S r1   ©r$   r3   r   ©r)   r8   s     r   Ú_convert_token_to_idz!EsmTokenizer._convert_token_to_idJ   ó0   € Ø× Ñ ×$Ñ$ U¨D×,=Ñ,=×,AÑ,AÀ$Ç.Á.Ó,QÓRÐRr7   c                 ó"   — |j                  «       S r1   )Úsplit)r)   Útextr*   s      r   Ú	_tokenizezEsmTokenizer._tokenizeM   s   € Ø�z‰z‹|Ðr7   c                 óp   — | j                   j                  «       }|j                  | j                  «       |S r1   )r$   ÚcopyÚupdateÚadded_tokens_encoder)r)   Ú
base_vocabs     r   Ú	get_vocabzEsmTokenizer.get_vocabP   s0   € Ø×&Ñ&×+Ñ+Ó-ˆ
Ø×Ñ˜$×3Ñ3Ô4ØÐr7   c                 ó€   — | j                   j                  || j                   j                  | j                  «      «      S r1   r:   r;   s     r   Útoken_to_idzEsmTokenizer.token_to_idU   r=   r7   c                 óN   — | j                   j                  || j                  «      S r1   r2   r4   s     r   Úid_to_tokenzEsmTokenizer.id_to_tokenX   r6   r7   Ú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)r)   rL   rM   ÚclsÚseps        r   Ú build_inputs_with_special_tokensz-EsmTokenizer.build_inputs_with_special_tokens[   s   € ð × Ñ Ð!ˆØ× Ñ Ð!ˆØÐØ× Ñ Ð(Ø˜[Ñ(Ð(à˜[Ñ(¨3Ñ.Ð.Ø×ÑÐ&ÜÐ\Ó]Ð]Ø�[Ñ  3Ñ&¨Ñ4°sÑ:Ð:r7   Úalready_has_special_tokensc                 óÌ   — |r-|�t        d«      ‚|D �cg c]  }|| j                  v rdnd‘Œ c}S dgdgt        |«      z  z   dgz   }|�|dgt        |«      z  dgz   z  }|S c c}w )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.
        zYou should not supply a second sequence if the provided sequence of ids is already formatted with special tokens for the model.é   r   )rQ   Úall_special_idsÚlen)r)   rL   rM   rU   r8   Úmasks         r   Úget_special_tokens_maskz$EsmTokenizer.get_special_tokens_maski   s”   € ñ$ &ØÐ&Ü ðRóð ð
 LWÖWÀ%˜ $×"6Ñ"6Ñ6‘A¸AÑ=ÒWÐWØˆs�q�cœC Ó,Ñ,Ñ-°°Ñ3ˆØÐ"Ø�Q�Cœ#˜kÓ*Ñ*¨a¨SÑ0Ñ0ˆDØˆùò	 Xs   ”A!c                 óö   — t         j                  j                  ||r|dz   nddz   «      }t        |d«      5 }|j	                  dj                  | j
                  «      «       d d d «       |fS # 1 sw Y   |fS xY w)Nú-Ú r	   Úwú
)ÚosÚpathÚjoinr   Úwriter    )r)   Úsave_directoryÚfilename_prefixr   r   s        r   Úsave_vocabularyzEsmTokenizer.save_vocabularyˆ   sk   € Ü—W‘W—\‘\ .ÉO°?ÀSÒ3HÐacÐgrÑ2rÓsˆ
Ü�*˜cÓ"ð 	0 aØ�G‰G�D—I‘I˜dŸo™oÓ.Ô/÷	0àˆ}Ð÷	0àˆ}Ðús   ·+A-Á-A8c                 ó,   — t        | j                  «      S r1   )rY   r    )r)   s    r   Ú
vocab_sizezEsmTokenizer.vocab_sizeŽ   s   € ä�4—?‘?Ó#Ð#r7   )z<unk>z<cls>z<pad>z<mask>z<eos>r1   )NF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesÚmodel_input_namesr&   ÚintÚstrr5   r<   rA   rG   rI   rK   r   r   rT   Úboolr[   rg   Úpropertyri   Ú__classcell__)r-   s   @r   r   r   #   s  ø„ ñð *ÐØ$Ð&6Ð7Ðð
 ØØØØõ7ð8<¨#ð <°#ó <ðS¨#ð S°#ó Sòòð
S ð S¨ó Sð< ð <¨ó <ð JNñ;Ø ™9ð;Ø3;¸DÀ¹IÑ3Fð;à	ˆc‰ó;ð inñØðØ.6°t©nðØaeðà	ˆc‰óò>ð ð$˜Cò $ó ô$r7   r   )rm   ra   Útypingr   r   Útokenization_utilsr   Úutilsr   Ú
get_loggerrj   Úloggerrn   r   r   Ú__all__r   r7   r   ú<module>r|      sT   ðñ $ã 	ß !å 5Ý ð 
ˆ×	Ñ	˜HÓ	%€à! ;Ð/Ð ò*ôm$Ð&ô m$ð` Ð
�r7   