§
    ‚Štj¾  ã                   ó˜   — 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dS )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ú<s>ú</s>ú<unk>ú<pad>TÚvocabÚ	bos_tokenÚ	eos_tokenÚ	sep_tokenÚ	cls_tokenÚ	unk_tokenÚ	pad_tokenÚ_spm_precompiled_charsmapÚadd_prefix_spacec
                 ó  •‡
— d| _         d„ t          | j         ¦  «        D ¦   «         }‰
                     dg ¦  «        pg ‰
d<   ‰
dxx         ˆ
fd„|D ¦   «         z  cc<   |	| _        |�|| _        nGt          |¦  «        dft          |¦  «        dft          |¦  «        dft          |¦  «        dfg| _        t          t          | j        dd¬¦  «        ¦  «        | _        t          j
        t          d	¦  «        d
¦  «        g}|�(|                     dt          j        |¦  «        ¦  «         t          j        |¦  «        | j        _        |	rdnd}t!          j        d|¬¦  «        | j        _        t'          j        d|¬¦  «        | j        _         t+          ¦   «         j        d|||||||	dœ‰
¤Ž t/          j        | j        › d�| j        › d| j        › d
| j        › d�| j        | j        f| j        | j        fg¬¦  «        | j        _        d S )Né   c                 ó   — g | ]}d |› d�‘Œ	S )z<madeupwordú>© )Ú.0Úis     úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/xglm/tokenization_xglm.pyú
<listcomp>z*XGLMTokenizer.__init__.<locals>.<listcomp>L   s$   € ÐQÐQÐQ¨qÐ* aÐ*Ð*Ð*ÐQÐQÐQó    Úadditional_special_tokensc                 ó(   •— g | ]}|‰d          v¯|‘ŒS )r)   r#   )r$   ÚwordÚkwargss     €r&   r'   z*XGLMTokenizer.__init__.<locals>.<listcomp>N   s0   ø€ ð 0
ð 0
ð 0
Ø¨T¸Ð@[Ô9\Ð-\Ð-\ˆDÐ-\Ð-\Ð-\r(   g        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_tokensr#   )Ú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   r,   Úmadeup_wordsÚnormalizers_r3   Ú	__class__s             `   €r&   rF   zXGLMTokenizer.__init__>   sd  øø€ ð !"ˆÔØQÐQµE¸$Ô:OÑ4PÔ4PÐQÑQÔQˆØ.4¯jªjÐ9TÐVXÑ.YÔ.YÐ._Ð]_ˆÐ*Ñ+ØÐ*Ð+Ð+Ô+ð 0
ð 0
ð 0
ð 0
Ø)ð0
ñ 0
ô 0
ñ 	
Ð+Ð+Ñ+ð !1ˆÔàÐØˆDŒKˆKõ �Y‘” Ð%Ý�Y‘” Ð%Ý�Y‘” Ð%Ý�Y‘” Ð%ð	ˆDŒKõ $¥G°$´+ÀaÐW\Ð$]Ñ$]Ô$]Ñ^Ô^ˆŒõ $Ô+­E°(©O¬O¸SÑAÔAÐBˆà$Ð0Ø×Ò ¥;Ô#:Ð;TÑ#UÔ#UÑVÔVÐVå%0Ô%9¸,Ñ%GÔ%GˆŒÔ"à%5ÐB˜˜¸7ˆÝ(6Ô(@ÈUÐcqÐ(rÑ(rÔ(rˆŒÔ%Ý"*Ô"4ÀÐWeÐ"fÑ"fÔ"fˆŒÔØ�‰ŒÔð 		
ØØØØØØØ-ð		
ð 		
ð ð		
ð 		
ð 		
õ *4Ô)FØ”nÐ)Ð)Ð)Ø”NÐLÐL¨¬ÐLÐL¸¼ÐLÐLÐLà” Ô!2Ð3Ø” Ô!2Ð3ðð*
ñ *
ô *
ˆŒÔ&Ð&Ð&r(   )	Nr   r   r   r   r   r   NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesÚmodel_input_namesr	   Úmodelr;   ÚlistÚtupleÚfloatÚboolrF   Ú__classcell__)rN   s   @r&   r   r      sö   ø€ € € € € ðð ð: *ÐØ$Ð&6Ð7ÐØ€Eð 7;ØØØØØ Ø Ø04Ø!%ð?
ð ?
à�T˜%  U 
Ô+Ô,Ñ,¨tÑ3ð?
ð ð?
ð ð	?
ð
 ð?
ð ð?
ð ð?
ð ð?
ð $'¨¡:ð?
ð ð?
ð ?
ð ?
ð ?
ð ?
ð ?
ð ?
ð ?
ð ?
ð ?
r(   r   N)rR   Ú
tokenizersr   r   r   r   r   r   Útokenizers.modelsr	   Útokenization_utils_tokenizersr   Úutilsr   Ú
get_loggerrO   ÚloggerrS   r   Ú__all__r#   r(   r&   ú<module>rc      sÕ   ðð %Ð $à ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ %Ð %Ð %Ð %Ð %Ð %à >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð ð 
ˆÔ	˜HÑ	%Ô	%€à%Ð'7Ð8Ð ða
ð a
ð a
ð a
ð a
Ð%ñ a
ô a
ð a
ðH Ð
€€€r(   