§
    ‚Štj2  ã                   óÚ   — d dl Zd dlZd dlmZmZ ddlmZ  G d„ de¦  «        Z G d„ de¦  «        Z	 G d	„ d
e	¦  «        Z
 G d„ de	¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)ÚDatasetÚIterableDataseté   )ÚModelOutputc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚPipelineDatasetc                 ó0   — || _         || _        || _        d S ©N©ÚdatasetÚprocessÚparams)Úselfr   r   r   s       ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/pipelines/pt_utils.pyÚ__init__zPipelineDataset.__init__	   s   € ØˆŒØˆŒØˆŒˆˆó    c                 ó*   — t          | j        ¦  «        S r
   ©Úlenr   ©r   s    r   Ú__len__zPipelineDataset.__len__   ó   € Ý�4”<Ñ Ô Ð r   c                 óF   — | j         |         } | j        |fi | j        ¤Ž}|S r
   r   )r   ÚiÚitemÚ	processeds       r   Ú__getitem__zPipelineDataset.__getitem__   s.   € ØŒ|˜AŒˆØ �D”L Ð5Ð5¨¬Ð5Ð5ˆ	ØÐr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   © r   r   r   r      sA   € € € € € ðð ð ð
!ð !ð !ðð ð ð ð r   r   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚPipelineIteratorNc                 ój   — || _         || _        || _        |dk    rd}|| _        d| _        d| _        dS )a§  
        Roughly equivalent to

        ```
        for item in loader:
            yield infer(item, **params)
        ```

                Arguments:
                    loader (`torch.utils.data.DataLoader` or `Iterable`):
                        The iterator that will be used to apply `infer` on.
                    infer (any function):
                        The function to apply of each element of `loader`.
                    params (`dict`):
                        The parameters passed to `infer` along with every item
                    loader_batch_size (`int`, *optional*):
                        If specified, the items of `loader` are supposed to come as batch, and are loader_batched here
                        making it roughly behave as


        ```
        for items in loader:
            for i in loader_batch_size:
                item = items[i]
                yield infer(item, **params)
        ```é   N)ÚloaderÚinferr   Úloader_batch_sizeÚ_loader_batch_indexÚ_loader_batch_data)r   r&   r'   r   r(   s        r   r   zPipelineIterator.__init__   sJ   € ð6 ˆŒØˆŒ
ØˆŒØ Ò!Ð!à $ÐØ!2ˆÔð $(ˆÔ Ø"&ˆÔÐÐr   c                 ó*   — t          | j        ¦  «        S r
   )r   r&   r   s    r   r   zPipelineIterator.__len__?   s   € Ý�4”;ÑÔÐr   c                 ó8   — t          | j        ¦  «        | _        | S r
   ©Úiterr&   Úiteratorr   s    r   Ú__iter__zPipelineIterator.__iter__B   ó   € Ý˜Tœ[Ñ)Ô)ˆŒØˆr   c                 ó  ‡ — t          ‰ j        t          j        ¦  «        r'‰ j        ‰ j                                      d¦  «        }�n1i }‰ j                             ¦   «         D �]ú\  }}t          |t          ¦  «        r’|                     ¦   «         }t          |d         t          j        ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        ||<   n>t          |d         t          j        ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        ||<   Œ­|dv r”t          |t          ¦  «        rt          |d         t          j        ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        ||<   n>t          |d         t          j        ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        ||<   �ŒE|dk    r�ŒM|€d||<   �ŒVt          |‰ j                 t          j        ¦  «        r%|‰ j                                      d¦  «        ||<   �Œ t          |‰ j                 t          j        ¦  «        r%t          j        |‰ j                 d¦  «        ||<   �Œê|‰ j                 ||<   �Œü‰ j                             |¦  «        }‰ xj        d	z  c_        |S )
ze
        Return item located at `loader_batch_index` within the current `loader_batch_data`.
        r   c              3   óX   •K  — | ]$}|‰j                                       d ¦  «        V — Œ%dS ©r   N©r)   Ú	unsqueeze©Ú.0Úelr   s     €r   ú	<genexpr>z5PipelineIterator.loader_batch_item.<locals>.<genexpr>U   ó;   øè è € Ð1nÐ1nÐ`b°"°TÔ5MÔ2N×2XÒ2XÐYZÑ2[Ô2[Ð1nÐ1nÐ1nÐ1nÐ1nÐ1nr   c              3   óX   •K  — | ]$}t          j        |‰j                 d ¦  «        V — Œ%dS r4   ©ÚnpÚexpand_dimsr)   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>W   ó9   øè è € Ð1tÐ1tÐfhµ"´.ÀÀDÔD\ÔA]Ð_`Ñ2aÔ2aÐ1tÐ1tÐ1tÐ1tÐ1tÐ1tr   >   Ú
attentionsÚhidden_statesc              3   óX   •K  — | ]$}|‰j                                       d ¦  «        V — Œ%dS r4   r5   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>\   r;   r   c              3   óX   •K  — | ]$}t          j        |‰j                 d ¦  «        V — Œ%dS r4   r=   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>^   r@   r   Úpast_key_valuesNr%   )Ú
isinstancer*   ÚtorchÚTensorr)   r6   Úitemsr   Úto_tupleÚtupler>   Úndarrayr?   Ú	__class__)r   ÚresultÚloader_batchedÚkÚelements   `    r   Úloader_batch_itemz"PipelineIterator.loader_batch_itemF   s¥  ø€ õ �dÔ-­u¬|Ñ<Ô<ð )	GàÔ,¨TÔ-EÔF×PÒPÐQRÑSÔSˆF‰Fð  ˆNØ"Ô5×;Ò;Ñ=Ô=ð  Jñ  J‘
��7Ý˜g¥{Ñ3Ô3ð à%×.Ò.Ñ0Ô0�GÝ! '¨!¤*­e¬lÑ;Ô;ð uÝ,1Ð1nÐ1nÐ1nÐ1nÐfmÐ1nÑ1nÔ1nÑ,nÔ,n˜ qÑ)Ð)Ý# G¨A¤Jµ´
Ñ;Ô;ð uÝ,1Ð1tÐ1tÐ1tÐ1tÐlsÐ1tÑ1tÔ1tÑ,tÔ,t˜ qÑ)ØØÐ7Ð7Ð7½JÀwÕPUÑ<VÔ<VÐ7å! '¨!¤*­e¬lÑ;Ô;ð uÝ,1Ð1nÐ1nÐ1nÐ1nÐfmÐ1nÑ1nÔ1nÑ,nÔ,n˜ qÑ)Ð)Ý# G¨A¤Jµ´
Ñ;Ô;ð uÝ,1Ð1tÐ1tÐ1tÐ1tÐlsÐ1tÑ1tÔ1tÑ,tÔ,t˜ qÑ)ÙØÐ)Ò)Ð)ÙØ�?à(,�N 1Ñ%Ñ%Ý ¨Ô(@Ô AÅ5Ä<ÑPÔPð Jð )0°Ô0HÔ(I×(SÒ(SÐTUÑ(VÔ(V�N 1Ñ%Ñ%Ý ¨Ô(@Ô AÅ2Ä:ÑNÔNð Jõ )+¬°w¸tÔ?WÔ7XÐZ[Ñ(\Ô(\�N 1Ñ%Ñ%ð )0°Ô0HÔ(I�N 1Ñ%Ñ%ð Ô,×6Ò6°~ÑFÔFˆFØÐ Ô  AÑ%Ð Ô Øˆr   c                 ó¦  — | j         �$| j         | j        k     r|                      ¦   «         S t          | j        ¦  «        } | j        |fi | j        ¤Ž}| j        �÷t          |t          j	        ¦  «        r|}nMt          |t          ¦  «        r	|d         }n/t          |                     ¦   «         ¦  «        d         }||         }t          |t          ¦  «        rt          |¦  «        }n|j        d         }d|cxk     r| j        k     r
n n|| _        t          |t          ¦  «        r|d         n|| _        d| _         |                      ¦   «         S |S )Nr   )r)   r(   rR   Únextr/   r'   r   rF   rG   rH   rK   ÚlistÚkeysr   Úshaper*   )r   r   r   Úfirst_tensorÚkeyÚobserved_batch_sizes         r   Ú__next__zPipelineIterator.__next__w   sd  € ØÔ#Ð/°DÔ4LÈtÔOeÒ4eÐ4eð ×)Ò)Ñ+Ô+Ð+õ �D”MÑ"Ô"ˆØ�D”J˜tÐ3Ð3 t¤{Ð3Ð3ˆ	àÔ!Ð-å˜)¥U¤\Ñ2Ô2ð .Ø(��Ý˜I¥uÑ-Ô-ð .Ø(¨œ|��å˜9Ÿ>š>Ñ+Ô+Ñ,Ô,¨QÔ/�Ø(¨œ~�å˜,­Ñ-Ô-ð <Ý&)¨,Ñ&7Ô&7Ð#Ð#à&2Ô&8¸Ô&;Ð#ØÐ&Ð?Ð?Ò?Ð?¨Ô)?Ò?Ð?Ð?Ð?Ð?ð *=�Ô&å6@ÀÍEÑ6RÔ6RÐ&a i°¤l lÐXaˆDÔ#Ø'(ˆDÔ$Ø×)Ò)Ñ+Ô+Ð+ð Ðr   r
   )r   r   r    r   r   r0   rR   r[   r!   r   r   r#   r#      sf   € € € € € ð%'ð %'ð %'ð %'ðN ð  ð  ðð ð ð/ð /ð /ðb"ð "ð "ð "ð "r   r#   c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚPipelineChunkIteratorNc                 óN   •— t          ¦   «                              |||¦  «         dS )aI  
        Roughly equivalent to

        ```
        for iterator in loader:
            for item in iterator:
                yield infer(item, **params)
        ```

                Arguments:
                    loader (`torch.utils.data.DataLoader` or `Iterable`):
                        The iterator that will be used to apply `infer` on.
                    infer (any function):
                        The function to apply of each element of `loader`.
                    params (`dict`):
                        The parameters passed to `infer` along with every item
        N)Úsuperr   )r   r&   r'   r   r(   rM   s        €r   r   zPipelineChunkIterator.__init__�   s'   ø€ õ$ 	‰Œ×Ò˜ ¨Ñ/Ô/Ð/Ð/Ð/r   c                 óF   — t          | j        ¦  «        | _        d | _        | S r
   )r.   r&   r/   Úsubiteratorr   s    r   r0   zPipelineChunkIterator.__iter__±   s    € Ý˜Tœ[Ñ)Ô)ˆŒØˆÔØˆr   c                 ó2  — | j         €+	  | j        t          | j        ¦  «        fi | j        ¤Ž| _         	 t          | j         ¦  «        }nN# t
          $ rA  | j        t          | j        ¦  «        fi | j        ¤Ž| _         t          | j         ¦  «        }Y nw xY w|S r
   )ra   r'   rT   r/   r   ÚStopIteration)r   r   s     r   r[   zPipelineChunkIterator.__next__¶   s®   € ØÔÐ#Ø\Ø)˜tœz­$¨t¬}Ñ*=Ô*=ÐMÐMÀÄÐMÐMˆDÔð	/å˜TÔ-Ñ.Ô.ˆIˆIøÝð 	/ð 	/ð 	/ð  *˜tœz­$¨t¬}Ñ*=Ô*=ÐMÐMÀÄÐMÐMˆDÔÝ˜TÔ-Ñ.Ô.ˆIˆIˆIð	/øøøð Ðs   ´A	 Á	ABÂBr
   )r   r   r    r   r0   r[   Ú__classcell__)rM   s   @r   r]   r]   œ   s[   ø€ € € € € ð0ð 0ð 0ð 0ð 0ð 0ð(ð ð ð
ð ð ð ð ð ð r   r]   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚPipelinePackIteratoraü  
    Roughly equivalent to

    ```
    packed =  []
    for item in loader:
        packed.append(item)
        if item["is_last"]:
            yield packed
            packed = []
    ```

        but it also handles cases where `item` are batched (meaning it's a dict of Tensor with first dimension > 1. In
        that case it does

    ```
    packed =  []
    for batch in loader:
        # item is batched
        for item in batch:
            packed.append(item)
            if item["is_last"]:
                yield packed
                packed = []
    ```

        Arguments:
            loader (`torch.utils.data.DataLoader` or `Iterable`):
                The iterator that will be used to apply `infer` on.
            infer (any function):
                The function to apply of each element of `loader`.
            params (`dict`):
                The parameters passed to `infer` along with every item
            loader_batch_size (`int`, *optional*):
                If specified, the items of `loader` are supposed to come as batch, and are loader_batched here making
                it roughly behave as


    ```
    for items in loader:
        for i in loader_batch_size:
            item = items[i]
            yield infer(item, **params)
    ```c                 ó8   — t          | j        ¦  «        | _        | S r
   r-   r   s    r   r0   zPipelinePackIterator.__iter__÷   r1   r   c                 óÔ  — d}g }| j         �r| j         | j        k     rb| j         | j        k     rR|                      ¦   «         }|                     d¦  «        }|                     |¦  «         |r|S | j         | j        k     °R|�sg | j        t          | j        ¦  «        fi | j        ¤Ž}| j        ��t          |t          j        ¦  «        r|}n/t          |                     ¦   «         ¦  «        d         }||         }t          |t          ¦  «        rt          |¦  «        }n|j        d         }d|cxk     r| j        k     r
n n|| _        || _        d| _         | j         | j        k     rR|                      ¦   «         }|                     d¦  «        }|                     |¦  «         |r|S | j         | j        k     °Rn,|}|                     d¦  «        }|                     |¦  «         |�¯g|S )NFÚis_lastr   )r)   r(   rR   ÚpopÚappendr'   rT   r/   r   rF   rG   rH   rU   rV   r   rW   r*   )r   ri   Úaccumulatorr   r   rX   rY   rZ   s           r   r[   zPipelinePackIterator.__next__û   s!  € ð ˆØˆØÔ#Ð/°DÔ4LÈtÔOeÒ4eÐ4eØÔ*¨TÔ-CÒCÐCØ×-Ò-Ñ/Ô/�ØŸ(š( 9Ñ-Ô-�Ø×"Ò" 4Ñ(Ô(Ð(Øð 'Ø&Ð&ð Ô*¨TÔ-CÒCÐCð ñ 	)Ø"˜œ
¥4¨¬Ñ#6Ô#6ÐFÐF¸$¼+ÐFÐFˆIØÔ%Ñ1Ý˜i­¬Ñ6Ô6ð 2Ø#,�L�Lå˜yŸ~š~Ñ/Ô/Ñ0Ô0°Ô3�CØ#,¨S¤>�LÝ˜l­DÑ1Ô1ð @Ý*-¨lÑ*;Ô*;Ð'Ð'à*6Ô*<¸QÔ*?Ð'ØÐ*ÐCÐCÒCÐC¨TÔ-CÒCÐCÐCÐCÐCð .A�DÔ*Ø*3�Ô'Ø+,�Ô(ØÔ.°Ô1GÒGÐGØ×1Ò1Ñ3Ô3�DØ"Ÿhšh yÑ1Ô1�GØ×&Ò& tÑ,Ô,Ð,Øð +Ø*Ð*ð Ô.°Ô1GÒGÐGøð !�ØŸ(š( 9Ñ-Ô-�Ø×"Ò" 4Ñ(Ô(Ð(ð7 ñ 	)ð8 Ðr   N)r   r   r    Ú__doc__r0   r[   r!   r   r   rf   rf   É   s=   € € € € € ð+ð +ðZð ð ð/ð /ð /ð /ð /r   rf   c                   ó*   — e Zd Zdedefd„Zd„ Zd„ ZdS )Ú
KeyDatasetr   rY   c                 ó"   — || _         || _        d S r
   ©r   rY   )r   r   rY   s      r   r   zKeyDataset.__init__.  s   € ØˆŒØˆŒˆˆr   c                 ó*   — t          | j        ¦  «        S r
   r   r   s    r   r   zKeyDataset.__len__2  r   r   c                 ó2   — | j         |         | j                 S r
   rq   ©r   r   s     r   r   zKeyDataset.__getitem__5  s   € ØŒ|˜AŒ˜tœxÔ(Ð(r   N©r   r   r    r   Ústrr   r   r   r!   r   r   ro   ro   -  sT   € € € € € ð ð ¨cð ð ð ð ð!ð !ð !ð)ð )ð )ð )ð )r   ro   c                   ó.   — e Zd Zdededefd„Zd„ Zd„ ZdS )ÚKeyPairDatasetr   Úkey1Úkey2c                 ó0   — || _         || _        || _        d S r
   ©r   ry   rz   )r   r   ry   rz   s       r   r   zKeyPairDataset.__init__:  s   € ØˆŒØˆŒ	ØˆŒ	ˆ	ˆ	r   c                 ó*   — t          | j        ¦  «        S r
   r   r   s    r   r   zKeyPairDataset.__len__?  r   r   c                 ód   — | j         |         | j                 | j         |         | j                 dœS )N)ÚtextÚ	text_pairr|   rt   s     r   r   zKeyPairDataset.__getitem__B  s,   € Øœ Qœ¨¬	Ô2ÀÄÈaÄÐQUÔQZÔA[Ð\Ð\Ð\r   Nru   r!   r   r   rx   rx   9  s`   € € € € € ð ð ¨sð ¸#ð ð ð ð ð
!ð !ð !ð]ð ]ð ]ð ]ð ]r   rx   )Únumpyr>   rG   Útorch.utils.datar   r   Úutils.genericr   r   r#   r]   rf   ro   rx   r!   r   r   ú<module>r„      si  ðØ Ð Ð Ð Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð �gñ ô ð ðBð Bð Bð Bð B�ñ Bô Bð BðJ*ð *ð *ð *ð *Ð,ñ *ô *ð *ðZað að að að aÐ+ñ aô að aðH	)ð 	)ð 	)ð 	)ð 	)�ñ 	)ô 	)ð 	)ð
]ð 
]ð 
]ð 
]ð 
]�Wñ 
]ô 
]ð 
]ð 
]ð 
]r   