§
    ‚Štj×  ã                   óÄ   — d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZmZ  ej        e¦  «        Z G d„ ded¬	¦  «        Ze G d
„ de¦  «        ¦   «         ZdgZdS )é   )ÚBatchFeature)Ú
ImageInput)ÚProcessingKwargsÚProcessorMixinÚUnpack)ÚPreTokenizedInputÚ	TextInput)Úauto_docstringÚloggingc                   ó   — e Zd Zddii dœZdS )ÚOvis2ProcessorKwargsÚpaddingF)Útext_kwargsÚimage_kwargsN)Ú__name__Ú
__module__Ú__qualname__Ú	_defaults© ó    úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/ovis2/processing_ovis2.pyr   r      s+   € € € € € ð �uð
ð ð	ð €I€I€Ir   r   F)Útotalc            
       óê   ‡ — e Zd Z	 	 	 	 	 dˆ fd„	Ze	 	 ddedz  deez  ee         z  ee         z  de	e
         defd	„¦   «         Zdee         d
eee                  fd„Zd„ Zd„ Zed„ ¦   «         Zˆ xZS )ÚOvis2ProcessorNú<image>é   c                 óú   •— || _         t          |d¦  «        r|j        n|| _        t          |dd¦  «        r|j        n|                     | j        ¦  «        | _         t          ¦   «         j        ||fd|i|¤Ž dS )a  
        image_token (`str`, *optional*, defaults to `"<image>"`):
            Special token used to denote image location.
        image_seq_length (`int`, *optional*, defaults to 256):
            The number of image tokens to be used for each image in the input.
        Úimage_tokenÚimage_token_idNÚchat_template)Úimage_seq_lengthÚhasattrr   Úgetattrr   Úconvert_tokens_to_idsÚsuperÚ__init__)ÚselfÚimage_processorÚ	tokenizerr    r   r!   ÚkwargsÚ	__class__s          €r   r&   zOvis2Processor.__init__%   s˜   ø€ ð !1ˆÔÝ4;¸IÀ}Ñ4UÔ4UÐf˜9Ô0Ð0Ð[fˆÔõ �yÐ"2°DÑ9Ô9ðCˆIÔ$Ð$à×0Ò0°Ô1AÑBÔBð 	Ôð
 	�‰ŒÔ˜¨)Ð[Ð[À=Ð[ÐTZÐ[Ð[Ð[Ð[Ð[r   ÚimagesÚtextr*   Úreturnc                 óê  —  | j         t          fd| j        j        i|¤Ž}t	          |t
          ¦  «        r|g}n?t	          |t          ¦  «        s*t	          |d         t
          ¦  «        st          d¦  «        ‚i }|�Q | j        |fi |d         ¤Ž}| 	                    d¦  «         
                    ¦   «         }|                      ||¦  «        } | j        |fi |d         ¤Ž}t          i |¥|¥¬¦  «        S )	aÀ  
        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`.
            - **image_sizes** -- Size of each image that will be used to unpad an image. Returned when `images` is not `None`.
        Útokenizer_init_kwargsé    zAInvalid input text. Please provide a string, or a list of stringsNÚimages_kwargsÚgridsr   )Údata)Ú_merge_kwargsr   r)   Úinit_kwargsÚ
isinstanceÚstrÚlistÚ	TypeErrorr(   ÚpopÚtolistÚ_expand_image_tokensr   )r'   r,   r-   r*   Úoutput_kwargsÚimage_inputsÚimage_gridsÚtext_inputss           r   Ú__call__zOvis2Processor.__call__=   s%  € ð& +˜Ô*Ý ð
ð 
à"&¤.Ô"<ð
ð ð
ð 
ˆõ �d�CÑ Ô ð 	aØ�6ˆDˆDÝ˜D¥$Ñ'Ô'ð 	aµ
¸4À¼7ÅCÑ0HÔ0Hð 	aÝÐ_Ñ`Ô`Ð`àˆàÐØ/˜4Ô/°ÐYÐY¸-ÈÔ:XÐYÐYˆLØ&×*Ò*¨7Ñ3Ô3×:Ò:Ñ<Ô<ˆKØ×,Ò,¨T°;Ñ?Ô?ˆDà$�d”n TÐJÐJ¨]¸=Ô-IÐJÐJˆÝÐ!@ KÐ!@°<Ð!@ÐAÑAÔAÐAr   r3   c                 óŽ  — g }d}|D ]½}d|v r¢||         }|d         |d         }}dd| j         z  › d�}	||z  dk    rNt          |¦  «        D ]>}
t          |¦  «        D ]}|	d| j         z  › z  }	||dz
  k     r|	dz  }	Œ|
|dz
  k     r|	dz  }	Œ?|	d	z  }	|                     d|	d¦  «        }|dz  }d|v °¢|                     |¦  «         Œ¾|S )
Nr1   r   é   z<IMG_START>z
<IMG_ATOM>z
<IMG_GRID>z	<IMG_COL>z	<IMG_ROW>z	<IMG_END>)r!   ÚrangeÚreplaceÚappend)r'   r-   r3   Úprocessed_textÚ
grid_indexÚsampleÚgridÚrowÚcolÚplaceholderÚrÚcs               r   r=   z#Ovis2Processor._expand_image_tokense   s+  € ð
 ˆØˆ
Øð 	*ð 	*ˆFØ˜vÐ%Ð%Ø˜ZÔ(�Ø œ7 D¨¤G�S�Ø\¨L¸4Ô;PÑ,PÐ\Ð\Ð\�Ø˜‘9˜q’=�=Ý" 3™ZœZð 7ð 7˜Ý!& s¡¤ð ;ð ;˜AØ'¨l¸TÔ=RÑ.RÐ+TÑT˜KØ  3¨¡7š{˜{Ø +¨{Ñ : øØ˜s Q™wš;˜;Ø'¨;Ñ6˜KøØ˜{Ñ*�àŸš¨	°;ÀÑBÔB�Ø˜a‘�
ð ˜vÐ%Ð%ð  ×!Ò! &Ñ)Ô)Ð)Ð)ØÐr   c                 ó&   —  | j         j        |i |¤ŽS )zÂ
        This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
        refer to the docstring of this method for more information.
        )r)   Úbatch_decode©r'   Úargsr*   s      r   rR   zOvis2Processor.batch_decode€   s   € ð
 +ˆtŒ~Ô*¨DÐ;°FÐ;Ð;Ð;r   c                 ó&   —  | j         j        |i |¤ŽS )z¼
        This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
        the docstring of this method for more information.
        )r)   ÚdecoderS   s      r   rV   zOvis2Processor.decode‡   s   € ð
 %ˆtŒ~Ô$ dÐ5¨fÐ5Ð5Ð5r   c                 óp   — | j         j        }| j        j        }t          |¦  «        t          |¦  «        z   S )N)r)   Úmodel_input_namesr(   r9   )r'   Útokenizer_input_namesÚimage_processor_input_namess      r   rX   z Ovis2Processor.model_input_namesŽ   s6   € à $¤Ô @ÐØ&*Ô&:Ô&LÐ#ÝÐ)Ñ*Ô*­TÐ2MÑ-NÔ-NÑNÐNr   )NNNr   r   )NN)r   r   r   r&   r
   r   r	   r   r9   r   r   r   rB   Úintr=   rR   rV   ÚpropertyrX   Ú__classcell__)r+   s   @r   r   r   #   sH  ø€ € € € € ð ØØØØð\ð \ð \ð \ð \ð \ð0 ð %)ØZ^ð%Bð %Bà˜TÑ!ð%Bð Ð+Ñ+¨d°9¬oÑ=ÀÐEVÔ@WÑWð%Bð Ð-Ô.ð	%Bð
 
ð%Bð %Bð %Bñ „^ð%BðNà�9Œoðð �D˜”IŒðð ð ð ð6<ð <ð <ð6ð 6ð 6ð ðOð Oñ „XðOð Oð Oð Oð Or   r   N)Úfeature_extraction_utilsr   Úimage_utilsr   Úprocessing_utilsr   r   r   Útokenization_utils_baser   r	   Úutilsr
   r   Ú
get_loggerr   Úloggerr   r   Ú__all__r   r   r   ú<module>rf      s  ðð  5Ð 4Ð 4Ð 4Ð 4Ð 4Ø %Ð %Ð %Ð %Ð %Ð %Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð Ð+°5ð ñ ô ð ð ðnOð nOð nOð nOð nO�^ñ nOô nOñ „ðnOðb Ð
€€€r   