ó
    †ñ:i/  ã                   ó*   • S SK Jr  / SQrS rS rS rg)é   )Úsafe_isinstance)ztransformers.MarianTokenizerztransformers.T5Tokenizerztransformers.XLNetTokenizerztransformers.AlbertTokenizerc                 óÖ   • [        U S5      (       d  [        U S5      (       aG  SSKJnJn  [	        U 5      UR                  5       ;   =(       d    [	        U 5      UR                  5       ;   $ g)zMCheck if the given model object is a huggingface transformers language model.ztransformers.PreTrainedModelztransformers.TFPreTrainedModelé    )ÚMODEL_FOR_CAUSAL_LM_MAPPINGÚ&MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPINGF)r   Útransformersr   r   ÚtypeÚvalues)Úmodelr   r   s      ÚZ/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/utils/transformers.pyÚis_transformers_lmr      sg   € ä�uÐ<×=Ñ=ÄØÐ/÷Bñ B÷	
ô �‹KÐA×HÑHÓJÑJ÷ CÜ�E‹{Ð9×@Ñ@ÓBÑBð	
ð ó    c                 óâ  • U " S5      S   nSu  p#[        U5      S:X  a—  US   n[        U S5      (       av  [        U S5      (       ae  U R                  nSU;   d  S	U;   d   S
5       eSU;   a  U R                  U5      US   :X  a  SnSnOcS	U;   a  U R                  U5      US	   :X  a  SnSnO@[	        S5      e[        U5      S-  S:X  d   S5       e[        U5      S-  n[        U5      S-  nUUUS.$ )zòSet prefix and suffix tokens based on null tokens.

Example for distillgpt2: null_tokens=[], for BART: null_tokens = [0,2] and for MarianMT: null_tokens=[0]
used to slice tokens belonging to sentence after passing through tokenizer.encode().
Ú Ú	input_ids)NNr   r   Úspecial_tokens_mapÚdecodeÚ	eos_tokenÚ	bos_tokenz-No eos token or bos token found in tokenizer!zóThe given tokenizer produces one token when applied to the empty string, but does not have a .special_tokens_map['eos_token'] or .special_tokens_map['bos_token'] property (and .decode) to specify if it is an eos (end) of bos (beginning) token!é   z>An odd number of boundary tokens are added to the null string!)Úkeep_prefixÚkeep_suffixÚnull_tokens)ÚlenÚhasattrr   r   Ú	Exception)Ú	tokenizerr   r   r   Ú
null_tokenÚst_maps         r   Ú!parse_prefix_suffix_for_tokenizerr       s1  € ñ ˜B“- Ñ,€KØ)Ñ€Kä
ˆ;Ó˜1ÓØ  ‘^ˆ
Ü�9Ð2×3Ñ3¼À	È8×8TÑ8TØ×1Ñ1ˆFØ 6Ó)¨{¸fÓ/DÐvÐGvÓvÐEØ˜vÓ%¨I×,<Ñ,<¸ZÓ,HÈFÐS^ÑL_Ó,_Ø�Ø‘ð  Ó'¨i×.>Ñ.>¸zÓ.JÈfÐU`ÑNaÓ.aØ�Ø�øô ðdóð ô �;Ó !Ñ# qÓ(ÐjÐ*jÓjÐ(Ü˜+Ó&¨!Ñ+ˆÜ˜+Ó&¨!Ñ+ˆð
 #Ø"ð #ñð r   c                 ó„   • Sn[        U SS5      (       a	  SnSU l        [        XS5      nU(       a  SU l        US:X  a  SnU$ )zÄThis turns of verbose logging of missing attributes for huggingface transformers.

This is motivated by huggingface transformers objects that print error warnings
when we access unset properties.
FÚverboseTNÚNone)Úgetattrr"   )ÚobjÚattrÚreset_verboseÚvals       r   Úgetattr_silentr)   J   sM   € ð €MÜˆs�I˜u×%Ñ%ØˆØˆŒä
�#˜TÓ
"€CæØˆŒð ˆfƒ}Øˆà€Jr   N)Ú_generalr   ÚSENTENCEPIECE_TOKENIZERSr   r    r)   © r   r   Ú<module>r-      s    ðÝ %òÐ òò"+ó\r   