
    Z j                         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Jr   " S S	\S
S9r\ " S S\	5      5       rS/rg)    N   )BatchFeature)
ImageInputmake_nested_list_of_images)MultiModalDataProcessingKwargsProcessorMixinUnpack)PreTokenizedInput	TextInput)auto_docstring	to_py_objc                   0    \ rS rSrSSS.SSSSSS.S	.rS
rg)Gemma3ProcessorKwargs   FT)paddingreturn_mm_token_type_ids      g333333?)do_convert_rgbdo_pan_and_scanpan_and_scan_min_crop_sizepan_and_scan_max_num_crops"pan_and_scan_min_ratio_to_activate)text_kwargsimages_kwargs N)__name__
__module____qualname____firstlineno__	_defaults__static_attributes__r       }/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s,     (,

 #$*-*+25
Ir$   r   F)totalc            
          ^  \ rS rSr  SS\4U 4S jjjr\  SS\S-  S\\	-  \
\   -  \
\	   -  S\\   S\4S	 jj5       rSS
 jr\S 5       rSrU =r$ )Gemma3Processor(   N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

)image_processor	tokenizerchat_templater   )	r*   image_token_id	boi_tokenimage_tokenjoin	eoi_tokenfull_image_sequencesuper__init__)selfr-   r.   r/   r*   kwargsimage_tokens_expanded	__class__s          r%   r7   Gemma3Processor.__init__*   s     !1'66",,$00 ")>)>(?BR(R S%))*=*=)>?T>UV_ViViUjjn#o  	
+'	
 		
r$   imagestextr9   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bo  U R                  R                  U5      n[        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[/        [        ['        X}5      5      5       He  u  pU(       d  M  SU R                   S3SR                  U R                  /U-  5      -   nUS U U-   X[        U R                  5      -   S  -   nXU
'   Mg     GM     U Vs/ s H(  oR1                  U R                  U R2                  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 R5                  UUS/S9  U(       a  U R7                  US   5      US'   [9        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   Fr>   image)
modalities	input_idstoken_type_ids)datatensor_typer   )
ValueError_merge_kwargsr   r.   init_kwargs
isinstancestrlist	TypeErrorr-   fetch_imagesr   r3   r1   lenr   poprange	enumerateziprefinditerstartreversedreplacer5   _check_special_mm_tokenscreate_mm_token_type_idsr   )r8   r=   r>   r9   output_kwargsimage_inputsbatched_imagesrC   _batch_num_crops	batch_idxpromptmimage_indexesnumidxformatted_image_textrD   r   text_inputss                       r%   __call__Gemma3Processor.__call__@   s    <FNJKK**!
"&.."<"<
 
 dC  6DD$''
47C0H0H_``))66v>F7?N//Y-:XYL 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!DvTWX\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#,0,I,I+VaJb,cK()!@K!@<!@n]]M _  Nk X$ as*   2N,NN	"N.N/N	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.
   )num_image_tokensnum_image_patchesr   )r*   rS   updater   )r8   image_sizesr9   vision_datarp   rq   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                  S/-   nU R                  R                  nU Vs/ s H  o3S:w  d  M
  UPM     nn[        X-   5      $ s  snf )NrH   rC   )r.   model_input_namesr-   rP   )r8   tokenizer_input_namesimage_processor_input_namesnames       r%   rx   !Gemma3Processor.model_input_names   s_     $ @ @DTCU U&*&:&:&L&L#8S&k8S_jWjt8S#&k)GHH 'ls   	AA)r1   r5   r*   r2   r0   )Nr   )NN)N)r   r   r    r!   intr7   r   r   r   r   rP   r
   r   r   rl   ru   propertyrx   r#   __classcell__)r;   s   @r%   r(   r(   (   s      #

 
 
,  %)Z^B^T!B^ ++d9o=EV@WWB^ ./	B^
 
B^ B^H-. I Ir$   r(   )rX   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      sW    
 4 A X X C .,E   yIn yI yIx 
r$   