
    eTh                           S SK JrJrJrJr  SSKJr  SSKJr  SSK	J
r
JrJr  SSKJrJr  SSKJr  SS	KJr   " S
 S\
SS9r " S S\5      rS/rg)    )DictListOptionalUnion   )BatchFeature)
ImageInput)ProcessingKwargsProcessorMixinUnpack)PreTokenizedInput	TextInput)
TensorType   )AutoTokenizerc                   >    \ rS rSrSS0SSS.\R
                  S.rSrg)	AriaProcessorKwargs   paddingF  )max_image_sizesplit_image)text_kwargsimages_kwargsreturn_tensors N)__name__
__module____qualname____firstlineno__r   PYTORCH	_defaults__static_attributes__r       `/var/www/auris/envauris/lib/python3.13/site-packages/transformers/models/aria/processing_aria.pyr   r      s-     u
 " 
 %,,	Ir$   r   F)totalc                      ^  \ rS rSrSrSS/rSS/rSrSr    SS\	\
\4   S\\   S\\\	\\4   \4      4U 4S	 jjjr   SS
\	\\\\   \\   4   S\\   S\\   S\4S jjrS rS r\S 5       rSrU =r$ )AriaProcessor,   a  
AriaProcessor is a processor for the Aria model which wraps the Aria image preprocessor and the LLama slow tokenizer.

Args:
    image_processor (`AriaImageProcessor`, *optional*):
        The AriaImageProcessor to use for image preprocessing.
    tokenizer (`PreTrainedTokenizerBase`, *optional*):
        An instance of [`PreTrainedTokenizerBase`]. This should correspond with the model's text model. The tokenizer is a required input.
    chat_template (`str`, *optional*):
        A Jinja template which will be used to convert lists of messages in a chat into a tokenizable string.
    size_conversion (`Dict`, *optional*):
        A dictionary indicating size conversions for images.
image_processor	tokenizerchat_templatesize_conversionAriaImageProcessorr   c                 ,  > Uc  SSS.nUR                  5        VVs0 s H  u  pV[        U5      U_M     snnU l        UR                  U l        UR                  U l        Ub  UR
                  c  UR                  Ul        [        TU ]!  XUS9  g s  snnf )N      )i  r   )r,   )	itemsintr-   image_tokenimage_token_id	pad_token	unk_tokensuper__init__)selfr*   r+   r,   r-   kv	__class__s          r%   r9   AriaProcessor.__init__@   s     "$'c2O6E6K6K6MN6MdaA	6MN$00'66 Y%8%8%@"+"5"5I=Q  Os   Btextimageskwargsreturnc                    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Ub  U R                  " U40 US   D6nU R                  UR                  R                  S      n/ n	UR                  S5      U-  n
U HQ  nUR                  U R                  R                  U R                  R                  U
-  5      nU	R                  U5        MS     O0 nUn	US   R                  S	S5      nU R                  " U	40 US   D6nU R!                  XS
/S9  [#        0 UEUEUS9$ )a  
Main method to prepare for the model one or several sequences(s) and image(s).

Args:
    text (`TextInput`, `PreTokenizedInput`, `List[TextInput]`, `List[PreTokenizedInput]`):
        The sequence or batch of sequences to be encoded. Each sequence can be a string or a list of strings
        (pretokenized string). If the sequences are provided as list of strings (pretokenized), you must set
        `is_split_into_words=True` (to lift the ambiguity with a batch of sequences).
    images (`ImageInput`):
        The image or batch of images to be prepared. Each image can be a PIL image, NumPy array or PyTorch
        tensor. Both channels-first and channels-last formats are supported.


Returns:
    [`BatchFeature`]: A [`BatchFeature`] with the following fields:
    - **input_ids** -- List of token ids to be fed to a model. Returned when `text` is not `None`.
    - **attention_mask** -- List of indices specifying which tokens should be attended to by the model (when
    `return_attention_mask=True` or if *"attention_mask"* is in `self.model_input_names` and if `text` is not
    `None`).
    - **pixel_values** -- Pixel values to be fed to a model. Returned when `images` is not `None`.
    - **pixel_mask** -- Pixel mask to be fed to a model. Returned when `images` is not `None`.
tokenizer_init_kwargsr   zAInvalid input text. Please provide a string, or a list of stringsNr   r   	num_cropsr   r   image)
modalities)datatensor_type)_merge_kwargsr   r+   init_kwargs
isinstancestrlist
ValueErrorr*   r-   pixel_valuesshapepopreplacer4   append_check_special_mm_tokensr   )r:   r?   r@   audiovideosrA   output_kwargsimage_inputstokens_per_imageprompt_stringsrE   sampler   text_inputss                 r%   __call__AriaProcessor.__call__R   s   < **
"&.."<"<
 
 dC  6DD$''
47C0H0H`aa//0L
  $33L4M4M4S4STU4VWN$((58HHI(B(BDNND^D^ajDjk%%f- 
 L!N&}599:JDQnn^T}]7ST%%nwi%X!@K!@<!@n]]r$   c                 :    U R                   R                  " U0 UD6$ )z
This method forwards all its arguments to LlamaTokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
refer to the docstring of this method for more information.
)r+   batch_decoder:   argsrA   s      r%   ra   AriaProcessor.batch_decode   s    
 ~~**D;F;;r$   c                 :    U R                   R                  " U0 UD6$ )z
This method forwards all its arguments to LlamaTokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
the docstring of this method for more information.
)r+   decoderb   s      r%   rf   AriaProcessor.decode   s    
 ~~$$d5f55r$   c                     U R                   R                  nU R                  R                  nU Vs/ s H  o3S:w  d  M
  UPM     nn[        [        R                  X-   5      5      $ s  snf )NrE   )r+   model_input_namesr*   rN   dictfromkeys)r:   tokenizer_input_namesimage_processor_input_namesnames       r%   ri   AriaProcessor.model_input_names   sb     $ @ @&*&:&:&L&L# 9T&k8S_jWjt8S#&kDMM"7"UVWW 'ls
   	A&A&)r4   r5   r-   )NNNN)NNN)r   r   r   r    __doc__
attributesvalid_kwargsimage_processor_classtokenizer_classr   r   rM   r   r   floatr3   r9   r   r   r   r	   r   r   r   r^   ra   rf   propertyri   r#   __classcell__)r=   s   @r%   r(   r(   ,   s    $[1J#%67L0%O /3'+BFR +,R  }	R
 "$uUCZ'8#'=">?R R* (,>^I0$y/4HYCZZ[>^ $>^ ,->^ 
>^@<6 X Xr$   r(   N)typingr   r   r   r   image_processing_utilsr   image_utilsr	   processing_utilsr
   r   r   tokenization_utilsr   r   utilsr   autor   r   r(   __all__r   r$   r%   <module>r      sL   * / . 2 % H H >   
*% 
|XN |X~ 
r$   