Ë
    S^(hë  ã                   óÄ   — d dl Z d dlmZmZmZ d dlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZ ddlmZmZ ddlmZ  G d	„ d
e«      Z G d„ ded¬«      Z G d„ de«      ZdgZy)é    N)ÚListÚOptionalÚUnioné   )ÚBatchFeature)Ú
ImageInputÚmake_nested_list_of_images)ÚImagesKwargsÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Ú	to_py_objc                   ó^   — e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   y)ÚGemma3ImagesKwargsÚdo_pan_and_scanÚpan_and_scan_min_crop_sizeÚpan_and_scan_max_num_cropsÚ"pan_and_scan_min_ratio_to_activateÚdo_convert_rgbN)Ú__name__Ú
__module__Ú__qualname__r   ÚboolÚ__annotations__ÚintÚfloat© ó    új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s4   … Ø˜d‘^Ó#Ø (¨¡Ó-Ø (¨¡Ó-Ø(0°©Ó7Ø˜T‘NÔ"r    r   c                   ó0   — e Zd ZU eed<   ddidddddœdœZy	)
ÚGemma3ProcessorKwargsÚimages_kwargsÚpaddingFé   é   g333333ó?)r   r   r   r   )Útext_kwargsr$   N)r   r   r   r   r   Ú	_defaultsr   r    r!   r#   r#   $   s.   … Ø%Ó%ð �uð
ð  %Ø*-Ø*+Ø25ñ	
ñ	
�Ir    r#   F)Útotalc            
       ó    ‡ — e Zd ZddgZddgZdZdZ	 	 ddefˆ fd„Z	 	 	 	 dde	d	e
eeee   ee   f   d
ee   defd„Zd„ Zd„ Zed„ «       Zˆ xZS )ÚGemma3ProcessorÚimage_processorÚ	tokenizerÚchat_templateÚimage_seq_lengthÚAutoImageProcessorÚAutoTokenizerc                 ó$  •— || _         |j                  | _        |j                  | _        |j                  | _        dj	                  |j                  g|z  «      }d|j                  › |› |j
                  › d�| _        t        ‰| �   d|||dœ|¤Ž y )NÚ z

)r-   r.   r/   r   )	r0   Úimage_token_idÚ	boi_tokenÚimage_tokenÚjoinÚ	eoi_tokenÚfull_image_sequenceÚsuperÚ__init__)Úselfr-   r.   r/   r0   ÚkwargsÚimage_tokens_expandedÚ	__class__s          €r!   r<   zGemma3Processor.__init__9   s¤   ø€ ð !1ˆÔØ'×6Ñ6ˆÔØ"×,Ñ,ˆŒØ$×.Ñ.ˆÔØ "§¡¨×)>Ñ)>Ð(?ÐBRÑ(RÓ SÐØ%)¨)×*=Ñ*=Ð)>Ð?TÐ>UÐV_×ViÑViÐUjÐjnÐ#oˆÔ ä‰Ñð 	
Ø+ØØ'ñ	
ð ó		
r    ÚimagesÚtextr>   Úreturnc           
      ó(  — |€|€t        d«      ‚ | j                  t        fd| j                  j                  i|¤Ž}t        |t        «      r|g}n.t        |t        «      st        |d   t        «      st        d«      ‚i }|��<t        |«      } | j                  |fi |d   ¤Ž}|s5|D �cg c]*  }dj                  | j                  gt        |«      z  «      ‘Œ, }}t        |«      t        |«      k7  r$t        dt        |«      › dt        |«      › d	�«      ‚t        |j                  d
«      «      }	|D ��
cg c]3  }t        t        |«      «      D �
cg c]  }
|	j                  d«      ‘Œ c}
‘Œ5 }}}
t!        t#        |||«      «      D �]  \  }\  }}}	t%        j&                  | j                  |«      D �cg c]  }|j)                  «       ‘Œ }}t        |«      t        |«      k7  r$t        dt        |«      › dt        |«      › d�«      ‚t+        t        t#        |	|«      «      «      D ]a  \  }}|sŒ	d| j                  › d�dj                  | j                  g|z  «      z   }|d | |z   ||t        | j                  «      z   d  z   }|||<   Œc �Œ |D �cg c](  }|j-                  | j                  | j.                  «      ‘Œ* }}|d   j                  dd «      } | j                  dd|i|d   ¤ddi¤Ž}|d   }t1        j2                  |d   «      }d||| j4                  k(  <   |j7                  «       D ��ci c]  \  }}||j9                  «       “Œ }}}|j9                  «       |d<   t;        i |¥|¥|¬«      S c c}w c c}
w c c}
}w c c}w c c}w c c}}w )Nz+Provide at least one of `text` or `images`.Útokenizer_init_kwargsr   zAInvalid input text. Please provide a string, or a list of stringsr$   ú z1Received inconsistently sized batches of images (z) and text (z).Ú	num_cropszPrompt contained z image tokens but received z images.zHere is the original image z0 and here are some crops to help you see better r(   Úreturn_tensorsrB   ÚnpÚ	input_idsé   Útoken_type_ids)ÚdataÚtensor_typer   )Ú
ValueErrorÚ_merge_kwargsr#   r.   Úinit_kwargsÚ
isinstanceÚstrÚlistr	   r-   r8   r6   Úlenr   ÚpopÚrangeÚ	enumerateÚzipÚreÚfinditerÚstartÚreversedÚreplacer:   rI   Ú
zeros_liker5   ÚitemsÚtolistr   )r=   rA   rB   ÚvideosÚaudior>   Úoutput_kwargsÚimage_inputsÚbatched_imagesrG   Ú_Úbatch_num_cropsÚ	batch_idxÚpromptÚmÚimage_indexesÚnumÚidxÚformatted_image_textrH   Útext_inputsÚ	array_idsÚmm_token_type_idsÚkÚvs                            r!   Ú__call__zGemma3Processor.__call__O   s©  € ð ˆ<˜F˜NÜÐJÓKÐKà*˜×*Ñ*Ü!ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆô �dœCÔ Ø�6‰DÜ˜D¤$Ô'´
¸4À¹7ÄCÔ0HÜÐ`ÓaÐaàˆØÑÜ7¸Ó?ˆNØ/˜4×/Ñ/°ÑaÀ-ÐP_ÑB`ÑaˆLñ ØO]Ö^ÀV˜Ÿ™ $§.¡.Ð!1´C¸³KÑ!?Õ@Ð^�Ð^ä�>Ó"¤c¨$£iÒ/Ü ØGÌÈNÓH[ÐG\Ð\hÔilÐmqÓirÐhsÐsuÐvóð ô
 " ,×"2Ñ"2°;Ó"?Ó@ˆIØ\j×kÐRX¼%ÄÀFÃÓ:LÖM°Q 	§¡¨aÕ 0ÔMÐkˆOÑkÜ:CÄCÈÈnÐ^mÓDnÓ:oó 1Ñ6�	Ñ6˜F F¨IÜ46·K±KÀÇÁÐPVÓ4WÖ X¨q §¡¥Ð X�Ð Xä�v“;¤# mÓ"4Ò4Ü$Ø+¬C°Ó,>Ð+?Ð?ZÔ[^Ð_eÓ[fÐZgÐgoÐpóð ô
 !)¬¬c°)¸]Ó.KÓ)LÓ Mò 1‘H�C˜Úà9¸$¿.¹.Ð9IÐIyÐzØ!Ÿh™h¨¯©Ð'7¸#Ñ'=Ó>ñ?ð -ð "(¨¨ Ð0DÑ!DÀvÈcÔTWÐX\×XfÑXfÓTgÑNgÐNiÐGjÑ!j˜Ø*0˜˜Yšò1ð1ð& \`Ö`ÐQW�F—N‘N 4§>¡>°4×3KÑ3KÕLÐ`ˆDÐ`à& }Ñ5×9Ñ9Ð:JÈDÓQˆØ$�d—n‘nÑd¨$Ðd°-ÀÑ2NÑdÐ_cÒdˆð   Ñ,ˆ	ÜŸM™M¨+°kÑ*BÓCÐØ>?Ð˜) t×':Ñ':Ñ:Ñ;Ø1<×1BÑ1BÓ1D×E©¨¨A�q˜!Ÿ(™(›*‘}ÐEˆÑEØ(9×(@Ñ(@Ó(BˆÐ$Ñ%ÜÐ!@ KÐ!@°<Ð!@ÈnÔ]Ð]ùòQ _ùò  NùÓkùâ Xùò$ aùó Fs0   Â+/M4Ä6M>ÅM9Å)M>Æ4NÊ-N	Ì2NÍ9M>c                 ó:   —  | j                   j                  |i |¤ŽS )zÂ
        This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
        refer to the docstring of this method for more information.
        )r.   Úbatch_decode©r=   Úargsr>   s      r!   rw   zGemma3Processor.batch_decode—   s    € ð
 +ˆt�~‰~×*Ñ*¨DÐ;°FÑ;Ð;r    c                 ó:   —  | j                   j                  |i |¤ŽS )z¼
        This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
        the docstring of this method for more information.
        )r.   Údecoderx   s      r!   r{   zGemma3Processor.decodeŸ   s    € ð
 %ˆt�~‰~×$Ñ$ dÐ5¨fÑ5Ð5r    c                 ó¤   — | j                   j                  dgz   }| j                  j                  }t        t        j                  ||z   «      «      S )NrL   )r.   Úmodel_input_namesr-   rT   ÚdictÚfromkeys)r=   Útokenizer_input_namesÚimage_processor_input_namess      r!   r}   z!Gemma3Processor.model_input_names¦   sH   € à $§¡× @Ñ @ÐDTÐCUÑ UÐØ&*×&:Ñ&:×&LÑ&LÐ#Ü”D—M‘MÐ"7Ð:UÑ"UÓVÓWÐWr    )Nr&   )NNNN)r   r   r   Ú
attributesÚvalid_kwargsÚimage_processor_classÚtokenizer_classr   r<   r   r   r   r   r   r   r#   r   ru   rw   r{   Úpropertyr}   Ú__classcell__)r@   s   @r!   r,   r,   3   s½   ø„ Ø# [Ð1€JØ#Ð%7Ð8€LØ0ÐØ%€Oð Ø #ñ
ð
 õ
ð0 "Ø^bØØñE^àðE^ð �IÐ0°$°y±/À4ÐHYÑCZÐZÑ[ðE^ð Ð.Ñ/ðE^ð 
óE^òP<ò6ð ñXó ôXr    r,   )rZ   Útypingr   r   r   ÚnumpyrI   Úfeature_extraction_utilsr   Úimage_utilsr   r	   Úprocessing_utilsr
   r   r   r   Útokenization_utils_baser   r   Úutilsr   r   r#   r,   Ú__all__r   r    r!   ú<module>r�      s[   ðó  
ß (Ñ (ã å 4ß Aß VÓ Vß CÝ ô#˜ô #ôÐ,°Eõ ôwX�nô wXðt Ð
�r    