
    fTh<                         S SK r S SKJrJrJr  S SKrSSKJr  SSK	J
r
Jr  SSKJrJrJrJr  SSKJrJr  SSKJr   " S	 S
\5      r " S S\SS9r " S S\5      rS/rg)    N)ListOptionalUnion   )BatchFeature)
ImageInputmake_nested_list_of_images)ImagesKwargsProcessingKwargsProcessorMixinUnpack)PreTokenizedInput	TextInput)	to_py_objc                   f    \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\   \S'   \\   \S'   Sr	g)	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_rgb N)
__name__
__module____qualname____firstlineno__r   bool__annotations__intfloat__static_attributes__r       d/var/www/auris/envauris/lib/python3.13/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s4    d^# (- (-(07TN"r#   r   c                   8    \ rS rSr% \\S'   SS0SSSSS.S	.rS
rg)Gemma3ProcessorKwargs$   images_kwargspaddingF      g333333?)r   r   r   r   )text_kwargsr(   r   N)r   r   r   r   r   r   	_defaultsr"   r   r#   r$   r&   r&   $   s.    %% u
  %*-*+25	
	
Ir#   r&   F)totalc            
          ^  \ rS rSrSS/rSS/rSrSr  SS\4U 4S jjjr	    SS	\
S
\\\\\   \\   4   S\\   S\4S jjrS rS r\S 5       rSrU =r$ )Gemma3Processor3   image_processor	tokenizerchat_templateimage_seq_lengthAutoImageProcessorAutoTokenizerc                 $  > X@l         UR                  U l        UR                  U l        UR                  U l        SR	                  UR                  /U-  5      nSUR                   U UR
                   S3U l        [        TU ]   " SUUUS.UD6  g )N z

)r2   r3   r4   r   )	r5   image_token_id	boi_tokenimage_tokenjoin	eoi_tokenfull_image_sequencesuper__init__)selfr2   r3   r4   r5   kwargsimage_tokens_expanded	__class__s          r$   rA   Gemma3Processor.__init__9   s     !1'66",,$00 ")>)>(?BR(R S%))*=*=)>?T>UV_ViViUjjn#o  	
+'	
 		
r#   imagestextrC   returnc           
         Uc  Uc  [        S5      eU R                  " [        4SU R                  R                  0UD6n[        U[        5      (       a  U/nO8[        U[        5      (       d#  [        US   [        5      (       d  [        S5      e0 nUGbV  [        U5      nU R                  " U40 US   D6nU(       d8  U Vs/ s H+  nSR                  U R                  /[        U5      -  5      PM-     nn[        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S	35      e[        UR                  S
5      5      n	U VV
s/ s H6  n[        [        U5      5       V
s/ s H  oR                  S5      PM     sn
PM8     nnn
[!        [#        X(U5      5       GH  u  nu  pn	[$        R&                  " U R                  U5       Vs/ s H  oR)                  5       PM     nn[        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      e[+        [        [#        X5      5      5       Hg  u  nnU(       d  M  SU R                   S3SR                  U R                  /U-  5      -   nUS U U-   UU[        U R                  5      -   S  -   nXU'   Mi     GM     U Vs/ s H(  oR-                  U R                  U R.                  5      PM*     nnUS   R                  SS 5      nU R                  " SSU0US   DSS0D6nU R1                  UUS/S9  US   n[2        R4                  " US   5      nSUUU R6                  :H  '   UR9                  5        VVs0 s H  u  nnUUR;                  5       _M     nnnUR;                  5       US'   [=        0 UEUEUS9$ s  snf s  sn
f s  sn
nf s  snf s  snf s  snnf )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_tensorsrH   npimage)
modalities	input_ids   token_type_ids)datatensor_typer   )
ValueError_merge_kwargsr&   r3   init_kwargs
isinstancestrlistr	   r2   r=   r;   lenr   poprange	enumerateziprefinditerstartreversedreplacer?   _check_special_mm_tokensrO   
zeros_liker:   itemstolistr   )rB   rG   rH   videosaudiorC   output_kwargsimage_inputsbatched_imagesrM   _batch_num_crops	batch_idxpromptmimage_indexesnumidxformatted_image_textrN   text_inputs	array_idsmm_token_type_idskvs                            r$   __call__Gemma3Processor.__call__O   s    <FNJKK**!
"&.."<"<
 
 dC  6DD$''
47C0H0H`aa7?N//a-P_B`aL O]^~V$..!1CK!?@~^>"c$i/ GNH[G\\hilmqirhssuv 
 ","2"2;"?@I\jk\jRX%F:LM:LQa 0:LM\jOk:CC^mDn:o6	6FI46KKPV4W X4Wq4W Xv;#m"44$+C,>+??Z[^_e[fZggop 
 !)c).K)L MHCs9$..9IIyz!hh'7#'=>? - "(0D!DvcTWX\XfXfTgNgNiGj!j*0Y !N ;p& \``[_QWNN4>>43K3KL[_D`&}599:JDQnnd$d-2Nd_cd%%dKWI%N  ,	MM+k*BC>?)t':'::;1<1B1B1DE1DAq!((*}1DE(9(@(@(B$%!@K!@<!@n]]S _  Nk X$ a Fs0   2N3N=-N8N=O;/O1O8N=c                 :    U R                   R                  " U0 UD6$ )z
This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
refer to the docstring of this method for more information.
)r3   batch_decoderB   argsrC   s      r$   r   Gemma3Processor.batch_decode   s    
 ~~**D;F;;r#   c                 :    U R                   R                  " U0 UD6$ )z
This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
the docstring of this method for more information.
)r3   decoder   s      r$   r   Gemma3Processor.decode   s    
 ~~$$d5f55r#   c                     U R                   R                  S/-   nU R                  R                  n[        [        R                  X-   5      5      $ )NrT   )r3   model_input_namesr2   r\   dictfromkeys)rB   tokenizer_input_namesimage_processor_input_namess      r$   r   !Gemma3Processor.model_input_names   sE     $ @ @DTCU U&*&:&:&L&L#DMM"7"UVWWr#   )r;   r?   r5   r<   r:   )Nr*   )NNNN)r   r   r   r   
attributesvalid_kwargsimage_processor_classtokenizer_classr    rA   r   r   r   r   r   r   r&   r   r~   r   r   propertyr   r"   __classcell__)rE   s   @r$   r0   r0   3   s    #[1J#%78L0%O  #

 
 
0 "^bF^F^ I0$y/4HYCZZ[F^ ./F^ 
F^R<6 X Xr#   r0   )rb   typingr   r   r   numpyrO   feature_extraction_utilsr   image_utilsr   r	   processing_utilsr
   r   r   r   tokenization_utils_baser   r   utilsr   r   r&   r0   __all__r   r#   r$   <module>r      s[     
 ( (  4 A V V C # #,E xXn xXv 
r#   