Ë
    ÛÓ^j�  ã                   ó  — d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZmZ ddlmZmZmZ dd	lmZmZ dd
lmZmZ erddlmZ  ej0                  e«      Zdefd„Zd„ Z G d„ ded¬«      Ze G d„ de«      «       ZdgZ y)z
Processor class for IDEFICS2.
é    N)Ú
accumulate)ÚTYPE_CHECKINGÚUnioné   )ÚBatchFeature)Ú
ImageInputÚis_valid_imageÚ
load_image)ÚProcessingKwargsÚProcessorMixinÚUnpack)Ú
AddedTokenÚ	TextInput)Úauto_docstringÚlogging)ÚPreTokenizedInputÚreturnc                 óH   — t        | t        «      xr | j                  d«      S )NÚhttp)Ú
isinstanceÚstrÚ
startswith)Úvals    ú{/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/idefics2/processing_idefics2.pyÚis_urlr   (   s   € Ü�cœ3ÓÒ: C§N¡N°6Ó$:Ð:ó    c                 ó2   — t        | «      xs t        | «      S ©N)r   r	   )Úelems    r   Úis_image_or_image_urlr    ,   s   € Ü�$‹<Ò/œ>¨$Ó/Ð/r   c                   ó   — e Zd ZdddddœiZy)ÚIdefics2ProcessorKwargsÚtext_kwargsTF)Úadd_special_tokensÚpaddingÚis_split_into_wordsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© r   r   r"   r"   0   s   „ àØ"&ØØ#(ñ
ð�Ir   r"   F)Útotalc                   óž   ‡ — e Zd Z	 ddededz  fˆ fd„Zd„ Ze	 	 ddee	e   z  e	e	e      z  de
ede	e   e	d   f   d	ee   d
efd„«       Zˆ xZS )ÚIdefics2ProcessorNÚimage_seq_lenÚchat_templatec                 ó$  •— t        |d«      s†t        ddd¬«      j                  | _        t        ddd¬«      j                  | _        d| j                  | j                  gi}|j                  |«       |j                  | j                  «      | _        n3|j                  | _        |j                  | _        |j                  | _        t        ddd¬«      | _	        |j                  d| j                  gi«       || _
        t        ‰| �1  |||¬	«       y
)ap  
        image_seq_len (`int`, *optional*, defaults to 64):
            The length of the image sequence i.e. the number of <image> tokens per image in the input.
            This parameter is used to build the string from the input prompt and image tokens and should match the
            config.perceiver_config.resampler_n_latents value for the model used.
        Úimage_tokenz<fake_token_around_image>FT)Ú
normalizedÚspecialz<image>Úadditional_special_tokensz<end_of_utterance>)r0   N)Úhasattrr   ÚcontentÚfake_image_tokenr2   r$   Úconvert_tokens_to_idsÚimage_token_idÚimage_boundary_tokenÚend_of_utterance_tokenr/   ÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerr/   r0   ÚkwargsÚtokens_to_addÚ	__class__s          €r   r>   zIdefics2Processor.__init__<   sú   ø€ ô �y -Ô0Ü$.Ð/JÐW\ÐfjÔ$k×$sÑ$sˆDÔ!Ü)¨)ÀÈtÔT×\Ñ\ˆDÔØ8¸4×;PÑ;PÐRV×RbÑRbÐ:cÐdˆMØ×(Ñ(¨Ô7Ø"+×"AÑ"AÀ$×BRÑBRÓ"SˆDÕà$-×$BÑ$BˆDÔ!Ø(×4Ñ4ˆDÔØ"+×":Ñ":ˆDÔä&0Ð1EÐRWÐaeÔ&fˆÔ#Ø×$Ñ$Ð&AÀD×D_ÑD_ÐC`Ð%aÔbØ*ˆÔä‰Ñ˜¨)À=ÐÕQr   c                 óÒ   — g }|D ]_  }g }|D ]E  }t        |«      r|j                  |«       Œ t        |«      sŒ,|j                  t        |«      «       ŒG |j                  |«       Œa |S r   )r	   Úappendr   r
   )r?   ÚpromptsÚprompt_imagesÚpromptÚimagesr   s         r   Ú_extract_images_from_promptsz.Idefics2Processor._extract_images_from_promptsV   sn   € ØˆØò 	)ˆFØˆFØò 4�Ü! $Ô'Ø—M‘M $Õ'Ü˜D•\Ø—M‘M¤*¨TÓ"2Õ3ð	4ð
 × Ñ  Õ(ð	)ð Ðr   rJ   Útextr   rB   r   c                 óæ  — |€|€t        d«      ‚ | j                  t        fd| j                  j                  i|¤Ž}|d   j                  dd «      }g }i }|��it        |t        «      r|g}n.t        |t        «      st        |d   t        «      st        d«      ‚| j                  }| j                  }	|› |	| j                  z  › |› �}
| j                  j                  r|
dz  }
g }t        j                  t        j                   |«      › d�«      }|D ]q  }|j#                  |j%                  |	«      «       |j'                  |	|
«      }|j'                  |› |› �|› «      }|j)                  |› d	�|«      }|j#                  |«       Œs  | j                  |fi |d   ¤Ž}| j+                  ||d
g¬«       |j-                  |«       |��Œt/        |«      r|gg}nüt        |t        t0        f«      r›t/        |d   «      r�|�‡t3        |«      t5        |«      k7  r*t        d	› dt3        |«      › d	|	› dt5        |«      › d�	«      ‚dgt        t7        |«      «      z   }t9        t5        |«      «      D �cg c]  }|||   ||dz       ‘Œ }}nO|g}nKt        |t        t0        f«      s5t        |d   t        t0        f«      st/        |d   d   «      st        d«      ‚|D �cg c]  }t5        |«      ‘Œ }}|�||k(  st        d|› d|› d�«      ‚|D ��cg c]  }|D �cg c]  }t;        |«      ‘Œ c}‘Œ }}} | j                  |fi |d   ¤Ž}|j-                  |«       t=        ||¬«      S c c}w c c}w c c}w c c}}w )Nz+You must provide either `text` or `images`.Útokenizer_init_kwargsr#   Úreturn_tensorsr   zAInvalid input text. Please provide a string, or a list of stringsé   z
(?=[^\s<])ú Úimage)Ú
modalitieszThe total number of zP tokens in the prompts should be the same as the number of images passed. Found z tokens and z images.é   zdInvalid input images. Please provide a single image or a list of images or a list of list of images.z!The number of images in the text z and images  z should be the same.Úimages_kwargs)Útensor_type)Ú
ValueErrorÚ_merge_kwargsr"   rA   Úinit_kwargsÚpopr   r   Úlistr8   r2   r/   r@   Údo_image_splittingÚreÚcompileÚescaperF   ÚcountÚreplaceÚsubÚ_check_special_mm_tokensÚupdater    ÚtupleÚsumÚlenr   Úranger
   r   )r?   rJ   rL   rB   Úoutput_kwargsrO   Ún_images_in_textÚinputsr8   r2   Ú	image_strÚprompt_stringsÚclosing_fake_patternÚsampleÚtext_inputsÚcumsum_images_in_textÚiÚn_images_in_imagesÚimÚimage_inputss                       r   Ú__call__zIdefics2Processor.__call__b   sÔ  € ð ˆ<˜F˜NÜÐJÓKÐKà*˜×*Ñ*Ü#ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆð
 ' }Ñ5×9Ñ9Ð:JÈDÓQˆàÐØˆàÑÜ˜$¤Ô$Ø�v‘Ü ¤dÔ+´J¸tÀA¹wÌÔ4LÜ Ð!dÓeÐeð  $×4Ñ4ÐØ×*Ñ*ˆKØ+Ð,¨[¸4×;MÑ;MÑ-MÐ,NÐO_ÐN`ÐaˆIà×#Ñ#×6Ò6à%¨™M�	àˆNÜ#%§:¡:´"·)±)Ð<LÓ2MÐ1NÈjÐ.YÓ#ZÐ Øò .�Ø ×'Ñ'¨¯©°[Ó(AÔBØŸ™¨°YÓ?�àŸ™Ð+;Ð*<Ð=MÐ<NÐ(OÐTdÐSeÓg�à-×1Ñ1Ð5EÐ4FÀaÐ2HÈ&ÓQ�Ø×%Ñ% fÕ-ð.ð )˜$Ÿ.™.¨ÑX¸=ÈÑ;WÑXˆKØ×)Ñ)¨.¸+ÐSZÐR[Ð)Ô\Ø�M‰M˜+Ô&àÑÜ$ VÔ,Ø!˜(˜‘Ü˜F¤T¬5 MÔ2Ô7LÈVÐTUÉYÔ7WØÐ#ÜÐ+Ó,´°F³Ò;Ü(Ø2°;°-ð @&Ü&)Ð*:Ó&;Ð%<¸A¸k¸]È,ÔWZÐ[aÓWbÐVcÐckðmóð ð
 ./¨C´$´zÐBRÓ7SÓ2TÑ,TÐ)ô "'¤sÐ+;Ó'<Ó!=öàð Ð4°QÑ7Ð:OÐPQÐTUÑPUÑ:VÒWð�Fñ ð
 %˜X‘Fô ˜v¬¬e }Ô5Ü" 6¨!¡9¬t´U¨mÔ<Ü-¨f°Q©i¸©lÔ;ä Øzóð ð =CÖ!C°&¤# f¥+Ð!CÐÐ!CØÐÐ(:Ð>NÒ(NÜ Ø7Ð8HÐ7IÈÐWiÐVjÐj~Ðóð ð
 GM×M¸F°Ö7¨"”z "•~Ô7ÐMˆFÑMØ/˜4×/Ñ/°ÑY¸-ÈÑ:XÑYˆLØ�M‰M˜,Ô'ä˜F°Ô?Ð?ùò7ùò  "Dùò 8ùÓMs$   É*MËM#Ì	M-ÌM(Ì"M-Í(M-)Né@   N)NN)r'   r(   r)   Úintr   r>   rK   r   r   r[   r   r   r   r"   r   rv   Ú__classcell__)rD   s   @r   r.   r.   :   sµ   ø„ ð eiñRØ>AðRØWZÐ]aÑWaõRò4
ð ð JNØbfñX@à˜T *Ñ-Ñ-°°T¸*Ñ5EÑ0FÑFðX@ð �IÐ2°D¸±OÀTÐJ]ÑE^Ð^Ñ_ðX@ð Ð0Ñ1ð	X@ð
 
òX@ó ôX@r   r.   )!Ú__doc__r]   Ú	itertoolsr   Útypingr   r   Úfeature_extraction_utilsr   Úimage_utilsr   r	   r
   Úprocessing_utilsr   r   r   Útokenization_utils_baser   r   Úutilsr   r   r   Ú
get_loggerr'   ÚloggerÚboolr   r    r"   r.   Ú__all__r+   r   r   ú<module>r†      s˜   ðñó 
Ý  ß 'å 4ß AÑ A÷ñ ÷
 =ß ,ñ Ý<ð 
ˆ×	Ñ	˜HÓ	%€ð;�4ó ;ò0ôÐ.°eõ ð ô@@˜ó @@ó ð@@ðF Ð
�r   