
    <h!                         S SK r S SK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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)OptionalUnion   )BatchFeature)
ImageInputmake_nested_list_of_images)ImagesKwargsMultiModalData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/html/shao/venv/lib/python3.13/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s4    d^# (- (-(07TN"r#   r   c                   <    \ rS rSr% \\S'   SSS.SSSSSS	.S
.rSrg)Gemma3ProcessorKwargs$   images_kwargsFT)paddingreturn_mm_token_type_ids      g333333?)r   r   r   r   r   )text_kwargsr(   r   N)r   r   r   r   r   r   	_defaultsr"   r   r#   r$   r&   r&   $   s2    %% (,

 #$*-*+25
Ir#   r&   F)totalc            
          ^  \ rS r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S jrS rS r\S 5       rSrU =r$ )Gemma3Processor5   image_processor	tokenizerAutoImageProcessorAutoTokenizerimage_seq_lengthc                 $  > 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

)r3   r4   chat_templater   )	r7   image_token_id	boi_tokenimage_tokenjoin	eoi_tokenfull_image_sequencesuper__init__)selfr3   r4   r:   r7   kwargsimage_tokens_expanded	__class__s          r$   rB   Gemma3Processor.__init__:   s     !1'66",,$00 ")>)>(?BR(R S%))*=*=)>?T>UV_ViViUjjn#o  	
+'	
 		
r#   imagestextrD   returnc           
      z   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bQ  [        U5      nU R                  " U40 US   D6nU(       d7  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H5  n[!        [        U5      5       V
s/ sH  oR                  S5      PM     sn
PM7     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 R0                  5      PM*     nnUS   R                  SS 5      nUS   R                  SS5      nU R                  " SSU0US   D6nU R3                  UUS/S9  U(       aT  [4        R6                  " US   5      n[4        R8                  " U5      nSUUU R:                  :H  '   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 )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_tensorsr*   FrI   image)
modalities	input_ids   token_type_ids)datatensor_typer   ) 
ValueError_merge_kwargsr&   r4   init_kwargs
isinstancestrlist	TypeErrorr   r3   r>   r<   lenr   poprange	enumerateziprefinditerstartreversedreplacer@   _check_special_mm_tokensnparray
zeros_liker;   tolistr   )rC   rH   rI   videosaudiorD   output_kwargsimage_inputsbatched_imagesrN   _batch_num_crops	batch_idxpromptmimage_indexesnumidxformatted_image_textrO   r*   text_inputs	array_idsmm_token_type_idss                           r$   __call__Gemma3Processor.__call__P   s    <FNJKK**!
"&.."<"<
 
 dC  6DD$''
47C0H0H_``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#0#?#C#CD^`e#f nnO$O-2NO%%dKWI%N $[!9:I "i 8BCi4+>+>>?,=,D,D,FK()!@K!@<!@n]]W _  Nk X$ as*   1N#N-+N(N-N37.N8(N-c                     0 nUb;  U R                   /[        U5      -  nS/[        U5      -  nUR                  XES.5        [        S0 UD6$ )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.
rS   )num_image_tokensnum_image_patchesr   )r7   r^   updater
   )rC   image_sizesrD   vision_datar   r   s         r$   _get_num_multimodal_tokens*Gemma3Processor._get_num_multimodal_tokens   sZ     " $ 5 56[9II!"c+&6 64Dmn,,,r#   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.
)r4   batch_decoderC   argsrD   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.
)r4   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   )r4   model_input_namesr3   r\   dictfromkeys)rC   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@   r7   r=   r;   )Nr+   )NNNN)N)r   r   r   r   
attributesimage_processor_classtokenizer_classr    rB   r   r   r   r   r\   r   r&   r   r~   r   r   r   propertyr   r"   __classcell__)rF   s   @r$   r1   r1   5   s    #[1J0%O  #

 
 
0 "^bH^H^ I0$y/4HYCZZ[H^ ./H^ 
H^T-0<6 X Xr#   r1   )rc   typingr   r   numpyri   feature_extraction_utilsr   image_utilsr   r   processing_utilsr	   r
   r   r   r   tokenization_utils_baser   r   utilsr   r   r&   r1   __all__r   r#   r$   <module>r      sX     
 "  4 A f f C # #,E "PXn PXf 
r#   