+
    œ°³jÎ  ã                   ó–   € ^RI Ht ^RIHtHt ^RIHtHtHtH	t	 ^RI
HtHt ^RIHt  ! R R]RR	7      t] ! R
 R]4      4       tR.tR# )é   )ÚBatchFeature)Ú
ImageInputÚmake_nested_list_of_images)ÚMultiModalDataÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringc                   ó>   € ] tR t^tRRRRR/RRRRRR	R
R^RR//tRtR# )ÚGemma3ProcessorKwargsÚtext_kwargsÚpaddingFÚreturn_mm_token_type_idsTÚimages_kwargsÚdo_convert_rgbÚdo_pan_and_scanÚpan_and_scan_min_crop_sizeé   Úpan_and_scan_max_num_cropsÚ"pan_and_scan_min_ratio_to_activateg333333ó?© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	_defaultsÚ__static_attributes__r   ó    Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s>   † àØ�uØ&¨ð
ð 	Ø˜dØ˜uØ(¨#Ø(¨!Ø0°#ð
ð„Ir    r   F)Útotalc                   ó   a a€ ] tR t^'t o]tRV3R lV 3R lllt]RV3R lV 3R lll4       tRV 3R llt	RV3R lV 3R lllt
V3R lR	 ltRR
 lt]V3R lR l4       t]V3R lV 3R ll4       t]V3R lR l4       tV3R lR ltRtVtV ;t# )ÚGemma3Processorc                ó    <€ V ^8„  d   QhRS[ /# )é   Úimage_seq_length)Úint)ÚformatÚ__classdict__s   "€r!   Ú__annotate__ÚGemma3Processor.__annotate__+   s   ø€ ÷ 
ñ 
ñ
 ñ
r    c           	     ó2  <€ W@n         VP                  V n        VP                  V n        VP                  V n        R P                  VP                  .V,          4      pRVP                   V VP                   R2V n        \        SV `$  ! RRVRVRV/VB  R# )Ú z

Úimage_processorÚ	tokenizerÚchat_templateNr   )
r'   Úboi_token_idÚimage_token_idÚ	boi_tokenÚimage_tokenÚjoinÚ	eoi_tokenÚfull_image_sequenceÚsuperÚ__init__)Úselfr/   r0   r1   r'   ÚkwargsÚimage_tokens_expandedÚ	__class__s   &&&&&, €r!   r:   ÚGemma3Processor.__init__+   s®   ø€ ð !1ÔØ'×4Ñ4ˆÔØ"×,Ñ,ˆŒØ$×.Ñ.ˆÔØ "§¡¨×)>Ñ)>Ð(?ÐBRÕ(RÓ SÐØ%)¨)×*=Ñ*=Ð)>Ð?TÐ>UÐV_×ViÑViÐUjÐjnÐ#oˆÔ ä‰Òñ 	
Ø+ð	
àð	
ð (ð	
ð ô		
r    c                ó    <€ V ^8„  d   QhRS[ R,          RS[S[,          S[S[,          ,          S[S[,          ,          RS[S[,          RS[/# )r&   ÚimagesNÚtextr<   Úreturn)r   r   r
   Úlistr	   r   r   )r)   r*   s   "€r!   r+   r,   B   sX   ø€ ÷ ñ á˜TÕ!ðñ Ñ+Õ+©d±9­oÕ=ÁÑEVÕ@WÕWðñ Ñ.Õ/ð	ñ
 
ñr    c                ó  <€ VeU   \        V\        4      '       g?   \        V\        4      '       d   \        V^ ,          \        4      '       g   \        R4      h\        SV `  ! RRVRV/VB pRV9   d   VP                  R4      VR&   V# )NzAInvalid input text. Please provide a string, or a list of stringsrA   rB   Úmm_token_type_idsÚtoken_type_idsr   )Ú
isinstanceÚstrrD   Ú	TypeErrorr9   Ú__call__Úpop)r;   rA   rB   r<   Úmodel_inputsr>   s   &&&, €r!   rK   ÚGemma3Processor.__call__A   s�   ø€ ð Ò¤J¨t´S×$9Ò$9Ü˜d¤D×)Ò)´¸DÀ½GÄS×1IÒ1IÜÐ cÓdÐdä‘wÒ'ÑK¨vÐK¸DÐKÀFÑKˆØ ,Ô.Ø-9×-=Ñ-=Ð>QÓ-RˆLÐ)Ñ*ØÐr    c           	     óè   <€ \         SV `  ! RR VRV/VB vrpVeO   \        V4      pV'       g<   V Uu. uF/  pRP                  V P                  .\        V4      ,          4      NK1  	  ppWRR3# u upi )rA   rB   NÚ r   )r9   Úprepare_inputs_layoutr   r6   r4   Úlen)r;   rA   rB   r<   Ú_Ú
image_listr>   s   &&&,  €r!   rQ   Ú%Gemma3Processor.prepare_inputs_layoutQ   sz   ø€ Ü ™7Ò8Ñ\ÀÐ\ÈTÐ\ÐU[Ñ\Ðˆ�qØÒÜ/°Ó7ˆFçÙW]Ó^ÑW]È˜Ÿ™ $§.¡.Ð!1´C¸
³OÕ!CÖDÑW]�Ð^Ø˜T 4Ð'Ð'ùò _s   ³5A/c                ó¨   <€ V ^8„  d   QhRS[ R,          RS[S[,          S[S[,          ,          S[S[,          ,          R,          RS[S[,          /# )r&   rA   NrB   r<   )r   r   r
   rD   r	   r   )r)   r*   s   "€r!   r+   r,   Z   sT   ø€ ÷ ñ á˜TÕ!ðñ Ñ+Õ+©d±9­oÕ=ÁÑEVÕ@WÕWÐZ^Õ^ðñ Ñ)Õ*ñ	r    c           	     ó¤  <€ \         SV `  ! R	R VRV/VB  Ve·   Ve±   \        V4      \        V4      8w  d%   \        R\        V4       R\        V4       R24      h\	        W!4       Fb  w  rA\        V4      VP                  V P                  4      8w  g   K0  \        RVP                  V P                  4       R\        V4       R24      h	  R# R# R# )
rA   rB   Nz1Received inconsistently sized batches of images (z) and text (z).zPrompt contained z image tokens but received z images.r   )r9   Úvalidate_inputsrR   Ú
ValueErrorÚzipÚcountr4   )r;   rA   rB   r<   Úpromptr>   s   &&&, €r!   rX   ÚGemma3Processor.validate_inputsZ   sÒ   ø€ ô 	‰ÒÑC vÐC°DÐC¸FÒCàÒ $Ò"2Ü�6‹{œc $›iÔ'Ü ØGÌÈFËÀ}ÐT`ÔadÐeiÓajÐ`kÐkmÐnóð ô #& dÖ"3‘�Ü�v“; &§,¡,¨t¯~©~Ó">Ö>Ü$Ø+¨F¯L©L¸¿¹Ó,HÐ+IÐIdÔehÐioÓepÐdqÐqyÐzóð ó #4ñ #3Ñr    c                óJ   <€ V ^8„  d   QhRS[ S[,          RRRS[ S[,          /# )r&   rB   Útext_inputsr   Ú
modalities©rD   rI   )r)   r*   s   "€r!   r+   r,   n   s-   ø€ ÷ ñ ©T±#­Yð À^ð ÑaeÑfiÕajñ r    c                óR  € V P                   P                  pV P                   P                  pVeT   VeP   VR,           Uu. uF  p\        V4      P	                  V4      NK  	  ppV Uu. uF  qˆP	                  V4      NK  	  p	pXX	8w  d   \        RV RV	 R24      hR# u upi u upi )zþ
Checks that number of special tokens in text and processed text is same. The count can be different
if tokenized text was truncated, leading to issues in model code.

Gemma3 uses a different token as placeholder in input text than in the expanded text.
NÚ	input_idszFMismatch in `image` token count between text and `input_ids`. Got ids=z
 and text=z^. Likely due to `truncation='max_length'`. Please disable truncation or increase `max_length`.)r0   r5   r3   rD   r[   rY   )
r;   rB   r_   r`   Ú	token_strÚtoken_idÚidsÚ	ids_countÚsampleÚ
text_counts
   &&&&      r!   Ú_check_special_mm_tokensÚ(Gemma3Processor._check_special_mm_tokensn   s²   € ð —N‘N×.Ñ.ˆ	Ø—>‘>×0Ñ0ˆØÒ  XÒ%9Ø>IÈ+Ö>VÓWÑ>V°sœ˜c›Ÿ™¨Ö2Ñ>VˆIÐWÙ@DÓEÁ°fŸ,™, yÖ1ÁˆJÐEà˜
Ô"ÜØXÐYbÐXcÐcmÐnxÐmyð zoð oóð ñ #ùò XùÚEs   Á #BÁ)B$c                ó®   € / pVeF   V P                   .\        V4      ,          p^.\        V4      ,          pVP                  RVRV/4       \        R/ VB # )a{  
Computes the number of placeholder tokens needed for multimodal inputs with the given sizes.

Args:
    image_sizes (`list[list[int]]`, *optional*):
        The input sizes formatted as (height, width) per each image.

Returns:
    `MultiModalData`: A `MultiModalData` object holding number of tokens per each of the provided
    input modalities, along with other useful data.
Únum_image_tokensÚnum_image_patchesr   )r'   rR   Úupdater   )r;   Úimage_sizesr<   Úvision_datarm   rn   s   &&,   r!   Ú_get_num_multimodal_tokensÚ*Gemma3Processor._get_num_multimodal_tokens�   sc   € ð ˆØÒ"à $× 5Ñ 5Ð6¼¸[Ó9IÕIÐØ!" ¤c¨+Ó&6Õ 6Ðà×ÑÐ 2Ð4DÐFYÐ[lÐmÔnäÑ, Ñ,Ð,r    c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©r&   rC   )rD   r(   )r)   r*   s   "€r!   r+   r,   ™   s   ø€ ÷ /ñ /¡¡c¥ñ /r    c                ó0   € V P                   P                  .# ©N)r0   r3   ©r;   s   &r!   Úimage_token_idsÚGemma3Processor.image_token_ids˜   s   € à—‘×-Ñ-Ð.Ð.r    c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ru   ra   )r)   r*   s   "€r!   r+   r,   �   s   ø€ ÷ >ñ >¡4©¥9ñ >r    c                ó(   <€ \         SV `  R .,           # )rG   )r9   Úmodel_input_names)r;   r>   s   &€r!   r}   Ú!Gemma3Processor.model_input_namesœ   s   ø€ ä‰wÑ(Ð,<Ð+=Õ=Ð=r    c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ru   ra   )r)   r*   s   "€r!   r+   r,   ¡   s   ø€ ÷ ñ ¡D©¥Iñ r    c                ó   € R .# )Ú	num_cropsr   rx   s   &r!   Úunused_input_namesÚ"Gemma3Processor.unused_input_names    s
   € àˆ}Ðr    c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r&   Úimage_inputsÚ	image_idxrC   )Údictr(   rI   )r)   r*   s   "€r!   r+   r,   ¤   s#   ø€ ÷ 	
ñ 	
±ð 	
Áð 	
ÑSVñ 	
r    c                óº   € VR ,          V,          pV'       g   V P                   # RV P                    R2RP                  V P                   .V,          4      ,           # )r�   zHere is the original image z0 and here are some crops to help you see better rP   )r8   r6   )r;   r…   r†   r<   r�   s   &&&, r!   Úreplace_image_tokenÚ#Gemma3Processor.replace_image_token¤   sZ   € Ø  Õ-¨iÕ8ˆ	ßØ×+Ñ+Ð+ð *¨$×*BÑ*BÐ)CÐCsÐtØ�h‰h˜×0Ñ0Ð1°IÕ=Ó>õ?ð	
r    )r4   r8   r'   r5   r3   )Nr   )NNrw   )r   r   r   r   r   Úvalid_processor_kwargsr:   r   rK   rQ   rX   rj   rr   Úpropertyry   r}   r‚   r‰   r   Ú__classdictcell__Ú__classcell__)r>   r*   s   @@r!   r$   r$   '   sœ   ù‡ € à2Ð÷
õ 
ð, ÷ô ó ð÷(÷õ ÷(ð ô&-ð. ÷/ó ð/ð ÷>ò >ó ð>ð ÷ó ð÷	
÷ 	
ð 	
r    r$   N)Úfeature_extraction_utilsr   Úimage_utilsr   r   Úprocessing_utilsr   r   r   r	   Útokenization_utils_baser
   r   Úutilsr   r   r$   Ú__all__r   r    r!   Ú<module>r•      sQ   ðõ  5ß Aß XÓ Xß CÝ #ôÐ,°Eõ ð  ôE
�nó E
ó ðE
ðP Ð
‚r    