Ë
    ÜÓ^j¾  ã                   ó”   — d Z ddlmZmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ  ej                  e«      ZddiZ G d	„ d
e«      Zd
gZy)zTokenization classes for XGLM.é    )ÚRegexÚ	TokenizerÚdecodersÚnormalizersÚpre_tokenizersÚ
processors)ÚUnigramé   )ÚTokenizersBackend)ÚloggingÚtokenizer_fileztokenizer.jsonc                   óŽ   ‡ — e Zd ZdZeZddgZeZ	 	 	 	 	 	 	 	 	 dde	e
ee	ef      z  dz  de	de	de	d	e	d
e	de	de	dz  defˆ fd„Zˆ xZS )ÚXGLMTokenizeraW  
    Construct a XGLM tokenizer (backed by HuggingFace's tokenizers library). Based on BPE.

    This tokenizer inherits from [`TokenizersBackend`] which contains most of the main methods. Users should
    refer to this superclass for more information regarding those methods.

    Args:
        tokenizer_file (`str`, *optional*):
            Path to a tokenizers JSON file containing the serialization of a tokenizer.
        bos_token (`str`, *optional*, defaults to `"<s>"`):
            The beginning of sequence token that was used during pretraining. Can be used a sequence classifier token.
        eos_token (`str`, *optional*, defaults to `"</s>"`):
            The end of sequence token.
        sep_token (`str`, *optional*, defaults to `"</s>"`):
            The separator token, which is used when building a sequence from multiple sequences.
        cls_token (`str`, *optional*, defaults to `"<s>"`):
            The classifier token which is used when doing sequence classification.
        unk_token (`str`, *optional*, defaults to `"<unk>"`):
            The unknown token.
        pad_token (`str`, *optional*, defaults to `"<pad>"`):
            The token used for padding.
        vocab (`str`, `dict` or `list`, *optional*):
            Custom vocabulary dictionary. If not provided, a minimal vocabulary is created.
        merges (`list[tuple[str, str]]`, *optional*):
            Custom merge rules for BPE. If not provided, merges are generated from the vocabulary.
        add_prefix_space (`bool`, *optional*, defaults to `True`):
            Whether to add a prefix space before encoding.
    Ú	input_idsÚattention_maskNÚvocabÚ	bos_tokenÚ	eos_tokenÚ	sep_tokenÚ	cls_tokenÚ	unk_tokenÚ	pad_tokenÚ_spm_precompiled_charsmapÚadd_prefix_spacec
                 ó‚  •— d| _         t        | j                   «      D �cg c]  }d|› d�‘Œ
 }}|
j                  dg «      xs g |
d<   |
dxx   |D �cg c]  }||
d   vsŒ|‘Œ c}z  cc<   |	| _        |�|| _        n7t        |«      dft        |«      dft        |«      dft        |«      dfg| _        t        t        | j                  dd¬«      «      | _        t        j                  t        d	«      d
«      g}|�%|j                  dt        j                  |«      «       t        j                  |«      | j                  _        |	rdnd}t!        j"                  d|¬«      | j                  _        t'        j"                  d|¬«      | j                  _        t+        ‰| �X  d|||||||	dœ|
¤Ž t/        j0                  | j2                  › d�| j2                  › d| j2                  › d
| j2                  › d�| j4                  | j6                  f| j2                  | j8                  fg¬«      | j                  _        y c c}w c c}w )Né   z<madeupwordú>Úadditional_special_tokensg        r
   F)r   Úunk_idÚbyte_fallbackz {2,}ú r   ÚalwaysÚneveru   â–�)ÚreplacementÚprepend_scheme)r   r   r   r   r   r   r   z $Az $A z $B)ÚsingleÚpairÚspecial_tokens© )Únum_madeup_wordsÚrangeÚgetr   Ú_vocabÚstrr   r	   Ú
_tokenizerr   ÚReplacer   ÚinsertÚPrecompiledÚSequenceÚ
normalizerr   Ú	MetaspaceÚpre_tokenizerr   ÚdecoderÚsuperÚ__init__r   ÚTemplateProcessingr   r   Úbos_token_idÚeos_token_idÚpost_processor)Úselfr   r   r   r   r   r   r   r   r   ÚkwargsÚiÚmadeup_wordsÚwordÚnormalizers_r%   Ú	__class__s                   €úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/xglm/tokenization_xglm.pyr9   zXGLMTokenizer.__init__>   s5  ø€ ð !"ˆÔÜ49¸$×:OÑ:OÓ4PÖQ¨q˜+ a S¨Ò*ÐQˆÐQØ.4¯j©jÐ9TÐVXÓ.YÒ._Ð]_ˆÐ*Ñ+ØÐ*Ó+Ø)ö0
Ø¨T¸Ð@[Ñ9\Ò-\ŠDò0
ñ 	
Ó+ð !1ˆÔàÐØˆD�Kô �Y“ Ð%Ü�Y“ Ð%Ü�Y“ Ð%Ü�Y“ Ð%ð	ˆDŒKô $¤G°$·+±+ÀaÐW\Ô$]Ó^ˆŒô $×+Ñ+¬E°(«O¸SÓAÐBˆà$Ð0Ø×Ñ ¤;×#:Ñ#:Ð;TÓ#UÔVä%0×%9Ñ%9¸,Ó%Gˆ�‰Ô"á%5™¸7ˆÜ(6×(@Ñ(@ÈUÐcqÔ(rˆ�‰Ô%Ü"*×"4Ñ"4ÀÐWeÔ"fˆ�‰ÔÜ‰Ñð 		
ØØØØØØØ-ñ		
ð ò		
ô *4×)FÑ)FØ—n‘nÐ% SÐ)Ø—N‘NÐ# 4¨¯©Ð'7°q¸¿¹Ð8HÈÐLà—‘ ×!2Ñ!2Ð3Ø—‘ ×!2Ñ!2Ð3ðô*
ˆ�‰Õ&ùòU Rùò0
s    H7ÁH<
ÁH<
)	Nú<s>ú</s>rG   rF   z<unk>z<pad>NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesÚmodel_input_namesr	   Úmodelr.   ÚlistÚtupleÚfloatÚboolr9   Ú__classcell__)rD   s   @rE   r   r      s¼   ø„ ñð: *ÐØ$Ð&6Ð7ÐØ€Eð 7;ØØØØØ Ø Ø04Ø!%ñ?
à�T˜%  U 
Ñ+Ñ,Ñ,¨tÑ3ð?
ð ð?
ð ð	?
ð
 ð?
ð ð?
ð ð?
ð ð?
ð $'¨¡:ð?
ð ÷?
ñ ?
ó    r   N)rK   Ú
tokenizersr   r   r   r   r   r   Útokenizers.modelsr	   Útokenization_utils_tokenizersr   Úutilsr   Ú
get_loggerrH   ÚloggerrL   r   Ú__all__r)   rU   rE   ú<module>r]      sS   ðñ %ç Z× ZÝ %å >Ý ð 
ˆ×	Ñ	˜HÓ	%€à%Ð'7Ð8Ð ôa
Ð%ô a
ðH Ð
�rU   