Ë
    ÛÓ^j�  ã                   ó˜   — 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y)é    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y)ÚGemma3nProcessorKwargsÚtext_kwargsÚpaddingFN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úy/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/gemma3n/processing_gemma3n.pyr   r      s   „ à˜	 5Ð)ð�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	                  |j                  g|z  «      }d|j                  › |› |j
                  › d�| _        || _        |j                  | _        |j                  | _	        |j                  | _
        dj	                  |j                  g|z  «      }	d|j                  › |	› |j                  › d�| _        t        ‰
| �8  d||||dœ|¤Ž y)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   r/   zGemma3nProcessor.__init__!   s!  ø€ ð  !1ˆÔØ'×6Ñ6ˆÔØ"×,Ñ,ˆŒØ$×0Ñ0ˆÔØ "§¡¨×)>Ñ)>Ð(?ÐBRÑ(RÓ SÐØ%)¨)×*=Ñ*=Ð)>Ð?TÐ>UÐV_×ViÑViÐUjÐjnÐ#oˆÔ à 0ˆÔØ'×6Ñ6ˆÔØ"×,Ñ,ˆŒØ$×0Ñ0ˆÔØ "§¡¨×)>Ñ)>Ð(?ÐBRÑ(RÓ SÐØ%)¨)×*=Ñ*=Ð)>Ð?TÐ>UÐV_×ViÑViÐUjÐjnÐ#oˆÔ ä‰Ñð 	
Ø/Ø+ØØ'ñ		
ð
 ó	
r   ÚimagesÚtextÚaudior1   Úreturnc           	      óˆ  — |€|€|€t        d«      ‚ | j                  t        fd| j                  j                  i|¤Ž}t        |t        «      r|g}n.t        |t        «      st        |d   t        «      st        d«      ‚|�e | j                  |fi |d   ¤Ž}|s|D �cg c]  }| j                  ‘Œ }}|D �cg c](  }|j                  | j                  | j                  «      ‘Œ* }}ni }|�â| j                  j                  |«      }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
�«      ‚|D �cg c](  }|j                  | j"                  | j&                  «      ‘Œ* }}ni }
|d   j)                  dd «      } | j                  dd|i|d   ¤ddi¤Ž}| j+                  ||dg¬«       |d   }t-        j.                  |«      }d||| j0                  k(  <   d||| j2                  k(  <   |j5                  «       D ��ci c]  \  }}||j7                  «       “Œ }}}|j7                  «       |d<   t9        i |¥|
¥|¥|¬«      S c c}w c c}w c c}w c c}w c c}}w )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_kwargsÚimages_kwargsú z1Received inconsistently sized batches of images (z) and text (z).r   Úreturn_tensorsr6   ÚnpÚimage)Ú
modalitiesÚ	input_idsé   r   Útoken_type_ids)ÚdataÚtensor_typer   )Ú
ValueErrorÚ_merge_kwargsr   r!   Úinit_kwargsÚ
isinstanceÚstrÚlistÚ	TypeErrorr   r%   Úreplacer(   r    Úfetch_imagesr   r&   r+   Úlenr-   ÚpopÚ_check_special_mm_tokensr?   Ú
zeros_liker)   r#   ÚitemsÚtolistr   )r0   r5   r6   r7   r1   Úoutput_kwargsÚaudio_inputsÚ_ÚpromptÚbatched_imagesÚimage_inputsr>   Útext_inputsÚ	array_idsrD   ÚkÚvs                    r   Ú__call__zGemma3nProcessor.__call__G   sð  € ð ˆ<˜F˜N¨u¨}ÜÐTÓUÐUà*˜×*Ñ*Ü"ñ
à"&§.¡.×"<Ñ"<ð
ð ñ
ˆô �dœCÔ Ø�6‰DÜ˜D¤$Ô'´
¸4À¹7ÄCÔ0HÜÐ_Ó`Ð`àÐØ1˜4×1Ñ1°%ÑY¸=ÈÑ;XÑYˆLáØ27Ö8¨Q˜×(Ó(Ð8�Ð8ð ^bÖbÐSY�F—N‘N 4×#3Ñ#3°T×5MÑ5MÕNÐbˆDÑbàˆLàÐØ×)Ñ)×6Ñ6°vÓ>ˆFÜ7¸Ó?ˆNØ/˜4×/Ñ/°ÑaÀ-ÐP_ÑB`ÑaˆLñ ØQ_Ö`Àv˜Ÿ™ $×"2Ñ"2Ð!3´c¸&³kÑ!AÕBÐ`�Ð`ä�>Ó"¤c¨$£iÒ/Ü ØGÌÈNÓH[ÐG\Ð\hÔilÐmqÓirÐhsÐsuÐvóð ð
 ^bÖbÐSY�F—N‘N 4×#3Ñ#3°T×5MÑ5MÕNÐbˆDÑbàˆLà& }Ñ5×9Ñ9Ð:JÈDÓQˆØ$�d—n‘nÑd¨$Ðd°-ÀÑ2NÑdÐ_cÒdˆØ×%Ñ% d¨KÀWÀIÐ%ÔNð   Ñ,ˆ	ÜŸ™ yÓ1ˆØ;<ˆ�y D×$7Ñ$7Ñ7Ñ8Ø;<ˆ�y D×$7Ñ$7Ñ7Ñ8Ø1<×1BÑ1BÓ1D×E©¨¨A�q˜!Ÿ(™(›*‘}ÐEˆÑEØ(6×(=Ñ(=Ó(?ˆÐ$Ñ%ÜÐ!P KÐ!P°<Ð!PÀ<Ð!PÐ^lÔmÐmùòK 9ùò cùò aùò cùó Fs   ÂJ*Â8-J/Ä./J4Æ-J9É&J>c                 óä   — | j                   j                  dgz   }| j                  j                  }| j                  j                  }|D �cg c]
  }|dk7  sŒ	|‘Œ }}t	        ||z   |z   «      S c c}w )NrD   Ú	num_crops)r!   Úmodel_input_namesr    r   rL   )r0   Útokenizer_input_namesÚimage_processor_input_namesÚaudio_processor_input_namesÚnames        r   rc   z"Gemma3nProcessor.model_input_namesˆ   sz   € à $§¡× @Ñ @ÐDTÐCUÑ UÐØ&*×&:Ñ&:×&LÑ&LÐ#Ø&*×&<Ñ&<×&NÑ&NÐ#Ø8SÖ&k°ÐW[Ð_jÓWj¢tÐ&kÐ#Ð&kÜÐ)Ð,GÑGÐJeÑeÓfÐfùò 'ls   Á
A-ÁA-)Né¼   é   )NNN)r   r   r   Úintr/   r   r   r   r
   rL   r?   ÚndarrayÚfloatr	   r   r   r`   Úpropertyrc   Ú__classcell__)r4   s   @r   r   r      sé   ø„ ð Ø #Ø #ñ$
ð ð$
ð õ$
ðL ð %)ØZ^ØX\ñ	>nà˜TÑ!ð>nð Ð+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWð>nð �z‰z˜D ™KÑ'¨$¨r¯z©zÑ*:Ñ:¸TÀ$ÀuÁ+Ñ=NÑNÐQUÑUð	>nð
 Ð/Ñ0ð>nð 
ò>nó ð>nð@ ñgó ôgr   r   )Únumpyr?   Úfeature_extraction_utilsr   Úimage_utilsr   r   Úprocessing_utilsr   r   r	   Útokenization_utils_baser
   r   Úutilsr   r   r   Ú__all__r   r   r   ú<module>rv      sW   ðó  å 4ß Aß HÑ Hß CÝ #ôÐ-°Uõ ð ông�~ó ngó ðngðb Ð
�r   