§
    ‚Štj�  ã                   ó¬   — 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
 ddlmZmZ ddlmZ  G d„ d	ed
¬¦  «        Ze G d„ de	¦  «        ¦   «         ZdgZdS )é    Né   )ÚBatchFeature)Ú
ImageInputÚmake_nested_list_of_images)ÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringc                   ó   — e Zd ZdddiiZdS )ÚGemma3nProcessorKwargsÚtext_kwargsÚpaddingFN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/gemma3n/processing_gemma3n.pyr   r      s   € € € € € à˜	 5Ð)ð€I€I€Ir   r   F)Útotalc                   ó  ‡ — e Zd Z	 	 	 ddedefˆ fd„Ze	 	 	 ddedz  deez  e	e         z  e	e         z  d	e
j        e	e         z  e	e
j                 z  e	e	e                  z  dz  d
ee         def
d„¦   «         Zed„ ¦   «         Zˆ xZS )ÚGemma3nProcessorNé¼   é   Úaudio_seq_lengthÚimage_seq_lengthc                 óÌ  •— || _         |j        | _        |j        | _        |j        | _        d                     |j        g|z  ¦  «        }d|j        › |› |j        › d�| _        || _        |j        | _        |j	        | _	        |j
        | _
        d                     |j
        g|z  ¦  «        }	d|j	        › |	› |j        › d�| _         t          ¦   «         j        d||||dœ|¤Ž dS )a  
        audio_seq_length (int, *optional*, defaults to 188):
            The number of audio soft tokens that will be added to the text prompt
        image_seq_length (int, *optional*, defaults to 256):
            The number of image soft tokens that should be added to
        Ú z

)Úfeature_extractorÚimage_processorÚ	tokenizerÚchat_templateNr   )r   Úaudio_token_idÚ	boa_tokenÚaudio_tokenÚjoinÚ	eoa_tokenÚfull_audio_sequencer   Úimage_token_idÚ	boi_tokenÚimage_tokenÚ	eoi_tokenÚfull_image_sequenceÚsuperÚ__init__)Úselfr!   r"   r#   r$   r   r   ÚkwargsÚaudio_tokens_expandedÚimage_tokens_expandedÚ	__class__s             €r   r1   zGemma3nProcessor.__init__!   s   ø€ ð  !1ˆÔØ'Ô6ˆÔØ"Ô,ˆŒØ$Ô0ˆÔØ "§¢¨Ô)>Ð(?ÐBRÑ(RÑ SÔ SÐØ#o¨)Ô*=Ð#oÐ?TÐ#oÐV_ÔViÐ#oÐ#oÐ#oˆÔ à 0ˆÔØ'Ô6ˆÔØ"Ô,ˆŒØ$Ô0ˆÔØ "§¢¨Ô)>Ð(?ÐBRÑ(RÑ SÔ SÐØ#o¨)Ô*=Ð#oÐ?TÐ#oÐV_ÔViÐ#oÐ#oÐ#oˆÔ à�‰ŒÔð 	
Ø/Ø+ØØ'ð		
ð 	
ð
 ð	
ð 	
ð 	
ð 	
ð 	
r   ÚimagesÚtextÚaudior3   Úreturnc                 óŽ  ‡ — |€|€|€t          d¦  «        ‚ ‰ j        t          fd‰ j        j        i|¤Ž}t          |t          ¦  «        r|g}n?t          |t          ¦  «        s*t          |d         t          ¦  «        st          d¦  «        ‚|�3 ‰ j	        |fi |d         ¤Ž}|sˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }ni }|�¬‰ j
                             |¦  «        }t          |¦  «        } ‰ j
        |fi |d         ¤Ž}|sˆ fd	„|D ¦   «         }t          |¦  «        t          |¦  «        k    r0t          d
t          |¦  «        › dt          |¦  «        › d�¦  «        ‚ˆ fd„|D ¦   «         }ni }|d                              dd ¦  «        }	 ‰ j        dd|i|d         ¤ddi¤Ž}
‰                      ||
dg¬¦  «         |
d         }t!          j        |¦  «        }d||‰ j        k    <   d||‰ j        k    <   d„ |
                     ¦   «         D ¦   «         }
|                     ¦   «         |
d<   t-          i |
¥|¥|¥|	¬¦  «        S )Nz5Provide at least one of `text`, `images`, or `audio`.Útokenizer_init_kwargsr   zAInvalid input text. Please provide a string, or a list of stringsÚaudio_kwargsc                 ó   •— g | ]	}‰j         ‘Œ
S r   )r'   )Ú.0Ú_r2   s     €r   ú
<listcomp>z-Gemma3nProcessor.__call__.<locals>.<listcomp>a   s   ø€ Ð8Ð8Ð8¨Q˜Ô(Ð8Ð8Ð8r   c                 óP   •— g | ]"}|                      ‰j        ‰j        ¦  «        ‘Œ#S r   )Úreplacer'   r*   ©r?   Úpromptr2   s     €r   rA   z-Gemma3nProcessor.__call__.<locals>.<listcomp>d   ó.   ø€ ÐbÐbÐbÐSY�F—N’N 4Ô#3°TÔ5MÑNÔNÐbÐbÐbr   Úimages_kwargsc                 óf   •— g | ]-}d                       ‰j        gt          |¦  «        z  ¦  «        ‘Œ.S )ú )r(   r-   Úlen)r?   r7   r2   s     €r   rA   z-Gemma3nProcessor.__call__.<locals>.<listcomp>o   s6   ø€ Ð`Ð`Ð`Àv˜Ÿš $Ô"2Ð!3µc¸&±k´kÑ!AÑBÔBÐ`Ð`Ð`r   z1Received inconsistently sized batches of images (z) and text (z).c                 óP   •— g | ]"}|                      ‰j        ‰j        ¦  «        ‘Œ#S r   )rC   r-   r/   rD   s     €r   rA   z-Gemma3nProcessor.__call__.<locals>.<listcomp>w   rF   r   r   Úreturn_tensorsr8   ÚnpÚimage)Ú
modalitiesÚ	input_idsé   r   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r   )Útolist)r?   ÚkÚvs      r   ú
<dictcomp>z-Gemma3nProcessor.__call__.<locals>.<dictcomp>„   s&   € ÐEÐEÐE©¨¨A�q˜!Ÿ(š(™*œ*ÐEÐEÐEr   Útoken_type_ids)ÚdataÚtensor_typer   )Ú
ValueErrorÚ_merge_kwargsr   r#   Úinit_kwargsÚ
isinstanceÚstrÚlistÚ	TypeErrorr!   r"   Úfetch_imagesr   rJ   ÚpopÚ_check_special_mm_tokensrM   Ú
zeros_liker+   r%   ÚitemsrS   r   )r2   r7   r8   r9   r3   Úoutput_kwargsÚaudio_inputsÚbatched_imagesÚimage_inputsrL   Útext_inputsÚ	array_idsrW   s   `            r   Ú__call__zGemma3nProcessor.__call__G   s÷  ø€ ð ˆ<˜F˜N¨u¨}ÝÐTÑUÔUÐUà*˜Ô*Ý"ð
ð 
à"&¤.Ô"<ð
ð ð
ð 
ˆõ �d�CÑ Ô ð 	aØ�6ˆDˆDÝ˜D¥$Ñ'Ô'ð 	aµ
¸4À¼7ÅCÑ0HÔ0Hð 	aÝÐ_Ñ`Ô`Ð`àÐØ1˜4Ô1°%ÐYÐY¸=ÈÔ;XÐYÐYˆLàð 9Ø8Ð8Ð8Ð8°%Ð8Ñ8Ô8�ð cÐbÐbÐbÐ]aÐbÑbÔbˆDˆDàˆLàÐØÔ)×6Ò6°vÑ>Ô>ˆFÝ7¸Ñ?Ô?ˆNØ/˜4Ô/°ÐaÐaÀ-ÐP_ÔB`ÐaÐaˆLð ð aØ`Ð`Ð`Ð`ÐQ_Ð`Ñ`Ô`�å�>Ñ"Ô"¥c¨$¡i¤iÒ/Ð/Ý ØvÍÈNÑH[ÔH[ÐvÐvÕilÐmqÑirÔirÐvÐvÐvñô ð ð
 cÐbÐbÐbÐ]aÐbÑbÔbˆDˆDàˆLà& }Ô5×9Ò9Ð:JÈDÑQÔQˆØ$�d”nÐdÐd¨$Ðd°-ÀÔ2NÐdÐdÐ_cÐdÐdÐdˆØ×%Ò% d¨KÀWÀIÐ%ÑNÔNÐNð   Ô,ˆ	Ýœ yÑ1Ô1ˆØ;<ˆ�y DÔ$7Ò7Ñ8Ø;<ˆ�y DÔ$7Ò7Ñ8ØEÐE°×1BÒ1BÑ1DÔ1DÐEÑEÔEˆØ(6×(=Ò(=Ñ(?Ô(?ˆÐ$Ñ%ÝÐ!P KÐ!P°<Ð!PÀ<Ð!PÐ^lÐmÑmÔmÐmr   c                 ó”   — | j         j        dgz   }| j        j        }| j        j        }d„ |D ¦   «         }t	          ||z   |z   ¦  «        S )NrW   c                 ó   — g | ]
}|d k    ¯|‘ŒS )Ú	num_cropsr   )r?   Únames     r   rA   z6Gemma3nProcessor.model_input_names.<locals>.<listcomp>�   s$   € Ð&kÐ&kÐ&k°ÐW[Ð_jÒWjÐWj tÐWjÐWjÐWjr   )r#   Úmodel_input_namesr"   r!   r_   )r2   Útokenizer_input_namesÚimage_processor_input_namesÚaudio_processor_input_namess       r   rq   z"Gemma3nProcessor.model_input_namesˆ   s^   € à $¤Ô @ÐDTÐCUÑ UÐØ&*Ô&:Ô&LÐ#Ø&*Ô&<Ô&NÐ#Ø&kÐ&kÐ8SÐ&kÑ&kÔ&kÐ#ÝÐ)Ð,GÑGÐJeÑeÑfÔfÐfr   )Nr   r   )NNN)r   r   r   Úintr1   r   r   r   r
   r_   rM   ÚndarrayÚfloatr	   r   r   rl   Úpropertyrq   Ú__classcell__)r6   s   @r   r   r      s?  ø€ € € € € ð Ø #Ø #ð$
ð $
ð ð$
ð ð$
ð $
ð $
ð $
ð $
ð $
ðL ð %)ØZ^ØX\ð	>nð >nà˜TÑ!ð>nð Ð+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWð>nð Œz˜D œKÑ'¨$¨r¬zÔ*:Ñ:¸TÀ$ÀuÄ+Ô=NÑNÐQUÑUð	>nð
 Ð/Ô0ð>nð 
ð>nð >nð >nñ „^ð>nð@ ðgð gñ „Xðgð gð gð gð gr   r   )ÚnumpyrM   Úfeature_extraction_utilsr   Úimage_utilsr   r   Úprocessing_utilsr   r   r	   Útokenization_utils_baser
   r   Úutilsr   r   r   Ú__all__r   r   r   ú<module>r�      s  ðð  Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð Ð-°Uð ñ ô ð ð ðngð ngð ngð ngð ng�~ñ ngô ngñ „ðngðb Ð
€€€r   