
    %	&h                         d dl Z d dlmZmZmZ 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mZ ddlmZmZ ddlmZ  G d	 d
e      Z G d ded      Z G d de      ZdgZy)    N)ListOptionalUnion   )BatchFeature)
ImageInputmake_nested_list_of_images)ImagesKwargsProcessingKwargsProcessorMixinUnpack)PreTokenizedInput	TextInput)	to_py_objc                   ^    e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   y)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_rgbN)__name__
__module____qualname__r   bool__annotations__intfloat     /var/www/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/transformers/models/gemma3/processing_gemma3.pyr   r      s4    d^# (- (-(07TN"r    r   c                   0    e Zd ZU eed<   ddiddddddZy	)
Gemma3ProcessorKwargsimages_kwargspaddingF      g333333?)r   r   r   r   )text_kwargsr$   N)r   r   r   r   r   	_defaultsr   r    r!   r#   r#   $   s.    %% u
  %*-*+25	
	
Ir    r#   F)totalc            
            e Zd ZddgZddgZdZdZ	 	 ddef fdZ	 	 	 	 dde	d	e
eeee   ee   f   d
ee   defdZd Zd Zed        Z xZS )Gemma3Processorimage_processor	tokenizerchat_templateimage_seq_lengthAutoImageProcessorAutoTokenizerc                 $   || _         |j                  | _        |j                  | _        |j                  | _        dj	                  |j                  g|z        }d|j                   | |j
                   d| _        t        |    d|||d| y )N z

)r-   r.   r/   r   )	r0   image_token_id	boi_tokenimage_tokenjoin	eoi_tokenfull_image_sequencesuper__init__)selfr-   r.   r/   r0   kwargsimage_tokens_expanded	__class__s          r!   r<   zGemma3Processor.__init__9   s     !1'66",,$.. ")>)>(?BR(R S%))*=*=)>?T>UV_ViViUjjn#o  	
+'	
 		
r    imagestextr>   returnc           
      (   ||t        d       | j                  t        fd| j                  j                  i|}t        |t              r|g}n.t        |t              st        |d   t              st        d      i }|<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	      t        |j                  d
            }	|D 
cg c]3  }t        t        |            D 
cg c]  }
|	j                  d       c}
5 }}}
t!        t#        |||            D ]  \  }\  }}}	t%        j&                  | j                  |      D cg c]  }|j)                          }}t        |      t        |      k7  r$t        dt        |       dt        |       d      t+        t        t#        |	|                  D ]a  \  }}|s	d| j                   ddj                  | j                  g|z        z   }|d | |z   ||t        | j                        z   d  z   }|||<   c  |D cg c](  }|j-                  | j                  | j.                        * }}|d   j                  dd       } | j                  dd|i|d   ddi}|d   }t1        j2                  |d         }d||| j4                  k(  <   |j7                         D ci c]  \  }}||j9                          }}}|j9                         |d<   t;        i |||      S c c}w c c}
w c c}
}w c c}w c c}w c c}}w )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_tensorsrB   np	input_ids   token_type_ids)datatensor_typer   )
ValueError_merge_kwargsr#   r.   init_kwargs
isinstancestrlistr	   r-   r8   r6   lenr   poprange	enumerateziprefinditerstartreversedreplacer:   rI   
zeros_liker5   itemstolistr   )r=   rA   rB   videosaudior>   output_kwargsimage_inputsbatched_imagesrG   _batch_num_crops	batch_idxpromptmimage_indexesnumidxformatted_image_textrH   text_inputs	array_idsmm_token_type_idskvs                            r!   __call__zGemma3Processor.__call__O   s    <FNJKK***!
"&.."<"<
 
 dC 6DD$'
47C0H`aa7?N/4//a-P_B`aL O]^V$..!1CK!?@^^>"c$i/ GNH[G\\hilmqirhssuv 
 ","2"2;"?@I\jkRX%F:LMQ	a 0MkOk:CCn^mDn:o 16	6FFI46KKPV4W Xq X Xv;#m"44$+C,>+??Z[^_e[fZggop 
 !)c)].K)L M 1HC9$..9IIyz!hh'7#'=>? - "(0D!DvcTWX\XfXfTgNgNiGj!j*0Y11& \``QWFNN4>>43K3KL`D`&}599:JDQ$dnnd$d-2Nd_cd  ,	MM+k*BC>?)t':'::;1<1B1B1DEAq!((*}EE(9(@(@(B$%!@K!@<!@n]]Q _  Nk X$ a Fs0   +/M46M>M9)M>4N-N	2N9M>c                 :     | j                   j                  |i |S )z
        This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
        refer to the docstring of this method for more information.
        )r.   batch_decoder=   argsr>   s      r!   rw   zGemma3Processor.batch_decode   s     
 +t~~**D;F;;r    c                 :     | j                   j                  |i |S )z
        This method forwards all its arguments to GemmaTokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
        the docstring of this method for more information.
        )r.   decoderx   s      r!   r{   zGemma3Processor.decode   s     
 %t~~$$d5f55r    c                     | j                   j                  dgz   }| j                  j                  }t        t        j                  ||z               S )NrL   )r.   model_input_namesr-   rT   dictfromkeys)r=   tokenizer_input_namesimage_processor_input_namess      r!   r}   z!Gemma3Processor.model_input_names   sH     $ @ @DTCU U&*&:&:&L&L#DMM"7:U"UVWWr    )Nr&   )NNNN)r   r   r   
attributesvalid_kwargsimage_processor_classtokenizer_classr   r<   r   r   r   r   r   r   r#   r   ru   rw   r{   propertyr}   __classcell__)r@   s   @r!   r,   r,   3   s    #[1J#%78L0%O  #

 
0 "^bE^E^ I0$y/4HYCZZ[E^ ./E^ 
E^P<6 X Xr    r,   )rZ   typingr   r   r   numpyrI   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      s[     
 ( (  4 A V V C # #,E wXn wXt 
r    