Ë
    T^(hÚ1  ã                   ó´   — 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y)é    N)ÚDatasetÚIterableDataseté   )ÚModelOutputc                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚPipelineDatasetc                 ó.   — || _         || _        || _        y ©N©ÚdatasetÚprocessÚparams)Úselfr   r   r   s       ú]/var/www/skyplay_api_hub/venv/lib/python3.12/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                 ó^   — | j                   |   } | j                  |fi | j                  ¤Ž}|S r
   r   )r   ÚiÚitemÚ	processeds       r   Ú__getitem__zPipelineDataset.__getitem__   s.   € Ø�|‰|˜A‰ˆØ �D—L‘L Ñ5¨¯©Ñ5ˆ	ØÐr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   © r   r   r   r      s   „ òò
!ór   r   c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚPipelineIteratorNc                 óf   — || _         || _        || _        |dk(  rd}|| _        d| _        d| _        y)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__   sA   € ð6 ˆŒØˆŒ
ØˆŒØ Ò!à $ÐØ!2ˆÔð $(ˆÔ Ø"&ˆÕr   c                 ó,   — t        | j                  «      S r
   )r   r&   r   s    r   r   zPipelineIterator.__len__?   s   € Ü�4—;‘;ÓÐr   c                 ó:   — t        | j                  «      | _        | S r
   ©Úiterr&   Úiteratorr   s    r   Ú__iter__zPipelineIterator.__iter__B   ó   € Ü˜TŸ[™[Ó)ˆŒØˆr   c                 óÊ  ‡ — t        ‰ j                  t        j                  «      r*‰ j                  ‰ j                     j                  d«      }�nþi }‰ j                  j                  «       D �]Ã  \  }}t        |t        «      rz|j                  «       }t        |d   t        j                  «      rt        ˆ fd„|D «       «      ||<   n4t        |d   t        j                  «      rt        ˆ fd„|D «       «      ||<   Œ‘|dv r{t        |t        «      rkt        |d   t        j                  «      rt        ˆ fd„|D «       «      ||<   n4t        |d   t        j                  «      rt        ˆ fd„|D «       «      ||<   �Œ|€d||<   �Œt        |‰ j                     t        j                  «      r#|‰ j                     j                  d«      ||<   �Œct        |‰ j                     t        j                  «      r(t        j                  |‰ j                     d«      ||<   �Œ²|‰ j                     ||<   �ŒÆ ‰ 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   óZ   •K  — | ]"  }|‰j                      j                  d «      –— Œ$ y­w©r   N©r)   Ú	unsqueeze©Ú.0Úelr   s     €r   ú	<genexpr>z5PipelineIterator.loader_batch_item.<locals>.<genexpr>U   ó)   øè ø€ Ò1nÐ`b°"°T×5MÑ5MÑ2N×2XÑ2XÐYZ×2[Ñ1nùó   ƒ(+c              3   ód   •K  — | ]'  }t        j                  |‰j                     d «      –— Œ) y­wr4   ©ÚnpÚexpand_dimsr)   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>W   ó)   øè ø€ Ò1tÐfh´"·.±.ÀÀD×D\ÑD\ÑA]Ð_`×2aÑ1tùó   ƒ-0>   Ú
attentionsÚhidden_statesÚpast_key_valuesc              3   óZ   •K  — | ]"  }|‰j                      j                  d «      –— Œ$ y­wr4   r5   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>\   r;   r<   c              3   ód   •K  — | ]'  }t        j                  |‰j                     d «      –— Œ) y­wr4   r>   r7   s     €r   r:   z5PipelineIterator.loader_batch_item.<locals>.<genexpr>^   rA   rB   Nr%   )Ú
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¯|©|Ô<à×,Ñ,¨T×-EÑ-EÑF×PÑPÐQRÓSŠFð  ˆNØ"×5Ñ5×;Ñ;Ó=ó J‘
��7Ü˜g¤{Ô3à%×.Ñ.Ó0�GÜ! '¨!¡*¬e¯l©lÔ;Ü,1Ó1nÐfmÔ1nÓ,n˜ qÒ)Ü# G¨A¡J´·
±
Ô;Ü,1Ó1tÐlsÔ1tÓ,t˜ qÑ)ØØÐJÑJÌzÐZaÔchÔOiä! '¨!¡*¬e¯l©lÔ;Ü,1Ó1nÐfmÔ1nÓ,n˜ qÒ)Ü# G¨A¡J´·
±
Ô;Ü,1Ó1tÐlsÔ1tÓ,t˜ qÑ)ÙØ�?à(,�N 1Ó%Ü ¨×(@Ñ(@Ñ AÄ5Ç<Á<ÔPð )0°×0HÑ0HÑ(I×(SÑ(SÐTUÓ(V�N 1Ó%Ü ¨×(@Ñ(@Ñ AÄ2Ç:Á:ÔNô )+¯©°w¸t×?WÑ?WÑ7XÐZ[Ó(\�N 1Ó%ð )0°×0HÑ0HÑ(I�N 1Ó%ð=JðB ×,Ñ,×6Ñ6°~ÓFˆFØ× Ò  AÑ%Õ Øˆr   c                 óŽ  — | j                   �)| j                   | j                  k  r| j                  «       S t        | j                  «      } | j
                  |fi | j                  ¤Ž}| j                  �Ñt        |t        j                  «      r|}n7t        |t        «      r|d   }n!t        |j                  «       «      d   }||   }t        |t        «      rt        |«      }n|j                  d   }d|cxk  r| j                  k  r
n n|| _        t        |t        «      r|d   n|| _        d| _         | j                  «       S |S )Nr   )r)   r(   rT   Únextr/   r'   r   rH   rI   rJ   rM   ÚlistÚkeysr   Úshaper*   )r   r   r   Úfirst_tensorÚkeyÚobserved_batch_sizes         r   Ú__next__zPipelineIterator.__next__u   s'  € Ø×#Ñ#Ð/°D×4LÑ4LÈt×OeÑOeÒ4eð ×)Ñ)Ó+Ð+ô �D—M‘MÓ"ˆØ�D—J‘J˜tÑ3 t§{¡{Ñ3ˆ	à×!Ñ!Ð-ä˜)¤U§\¡\Ô2Ø(‘Ü˜I¤uÔ-Ø(¨™|‘ä˜9Ÿ>™>Ó+Ó,¨QÑ/�Ø(¨™~�ä˜,¬Ô-Ü&)¨,Ó&7Ñ#à&2×&8Ñ&8¸Ñ&;Ð#ØÐ&Ô?¨×)?Ñ)?Õ?ð *=�Ô&ä6@ÀÌEÔ6R i°¢lÐXaˆDÔ#Ø'(ˆDÔ$Ø×)Ñ)Ó+Ð+ð Ðr   r
   )r   r   r    r   r   r0   rT   r]   r!   r   r   r#   r#      s   „ ó%'òN òò-ó^"r   r#   c                   ó,   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ xZS )ÚPipelineChunkIteratorc                 ó(   •— t         ‰| �  |||«       y)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(   rO   s        €r   r   zPipelineChunkIterator.__init__›   s   ø€ ô$ 	‰Ñ˜ ¨Õ/r   c                 óH   — t        | j                  «      | _        d | _        | S r
   )r.   r&   r/   Úsubiteratorr   s    r   r0   zPipelineChunkIterator.__iter__¯   s   € Ü˜TŸ[™[Ó)ˆŒØˆÔØˆr   c                 ój  — | j                   €6	  | j                  t        | j                  «      fi | j                  ¤Ž| _         	 t        | j                   «      }|S # t
        $ rN  | j                  t        | j                  «      fi | j                  ¤Ž| _         t        | j                   «      }Y |S w xY wr
   )rc   r'   rV   r/   r   ÚStopIteration)r   r   s     r   r]   zPipelineChunkIterator.__next__´   s¡   € Ø×ÑÐ#Ø\Ø)˜tŸz™z¬$¨t¯}©}Ó*=ÑMÀÇÁÑMˆDÔð	/ä˜T×-Ñ-Ó.ˆIð Ðøô ò 	/ð  *˜tŸz™z¬$¨t¯}©}Ó*=ÑMÀÇÁÑMˆDÔÜ˜T×-Ñ-Ó.‰IØÐð	/ús   ÁA ÁAB2Â1B2r
   )r   r   r    r   r0   r]   Ú__classcell__)rO   s   @r   r_   r_   š   s   ø„ õ0ò(ö
r   r_   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú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                 ó:   — t        | j                  «      | _        | S r
   r-   r   s    r   r0   zPipelinePackIterator.__iter__õ   r1   r   c                 óú  — d}g }| j                   �‚| j                   | j                  k  ri| j                   | j                  k  rP| j                  «       }|j                  d«      }|j	                  |«       |r|S | j                   | j                  k  rŒP|�se | j
                  t        | j                  «      fi | j                  ¤Ž}| j                  �� t        |t        j                  «      r|}n!t        |j                  «       «      d   }||   }t        |t        «      rt        |«      }n|j                  d   }d|cxk  r| j                  k  r
n n|| _        || _        d| _         | j                   | j                  k  ru| j                  «       }|j                  d«      }|j	                  |«       |r|S | j                   | j                  k  rŒPn$|}|j                  d«      }|j	                  |«       |s�Œe|S )NFÚis_lastr   )r)   r(   rT   ÚpopÚappendr'   rV   r/   r   rH   rI   rJ   rW   rX   r   rY   r*   )r   rk   Úaccumulatorr   r   rZ   r[   r\   s           r   r]   zPipelinePackIterator.__next__ù   sÑ  € ð ˆØˆØ×#Ñ#Ð/°D×4LÑ4LÈt×OeÑOeÒ4eØ×*Ñ*¨T×-CÑ-CÒCØ×-Ñ-Ó/�ØŸ(™( 9Ó-�Ø×"Ñ" 4Ô(ÙØ&Ð&ð ×*Ñ*¨T×-CÑ-CÓCò Ø"˜Ÿ
™
¤4¨¯©Ó#6ÑF¸$¿+¹+ÑFˆIØ×%Ñ%Ñ1Ü˜i¬¯©Ô6Ø#,‘Lä˜yŸ~™~Ó/Ó0°Ñ3�CØ#,¨S¡>�LÜ˜l¬DÔ1Ü*-¨lÓ*;Ñ'à*6×*<Ñ*<¸QÑ*?Ð'ØÐ*ÔC¨T×-CÑ-CÕCð .A�DÔ*Ø*3�Ô'Ø+,�Ô(Ø×.Ñ.°×1GÑ1GÒGØ×1Ñ1Ó3�DØ"Ÿh™h yÓ1�GØ×&Ñ& tÔ,ÙØ*Ð*ð ×.Ñ.°×1GÑ1GÔGð !�ØŸ(™( 9Ó-�Ø×"Ñ" 4Ô(ó7 ð8 Ðr   N)r   r   r    Ú__doc__r0   r]   r!   r   r   rh   rh   Ç   s   „ ñ+òZó/r   rh   c                   ó(   — e Zd Zdedefd„Zd„ Zd„ Zy)Ú
KeyDatasetr   r[   c                 ó    — || _         || _        y r
   ©r   r[   )r   r   r[   s      r   r   zKeyDataset.__init__,  s   € ØˆŒØˆ�r   c                 ó,   — t        | j                  «      S r
   r   r   s    r   r   zKeyDataset.__len__0  r   r   c                 ó:   — | j                   |   | j                     S r
   rs   ©r   r   s     r   r   zKeyDataset.__getitem__3  s   € Ø�|‰|˜A‰˜tŸx™xÑ(Ð(r   N©r   r   r    r   Ústrr   r   r   r!   r   r   rq   rq   +  s   „ ð ð ¨có ò!ó)r   rq   c                   ó,   — e Zd Zdededefd„Zd„ Zd„ Zy)ÚKeyPairDatasetr   Úkey1Úkey2c                 ó.   — || _         || _        || _        y r
   ©r   r{   r|   )r   r   r{   r|   s       r   r   zKeyPairDataset.__init__8  s   € ØˆŒØˆŒ	Øˆ�	r   c                 ó,   — t        | j                  «      S r
   r   r   s    r   r   zKeyPairDataset.__len__=  r   r   c                 ót   — | j                   |   | j                     | j                   |   | j                     dœS )N)ÚtextÚ	text_pairr~   rv   s     r   r   zKeyPairDataset.__getitem__@  s2   € ØŸ™ Q™¨¯	©	Ñ2ÀÇÁÈaÁÐQU×QZÑQZÑA[Ñ\Ð\r   Nrw   r!   r   r   rz   rz   7  s'   „ ð ð ¨sð ¸#ó ò
!ó]r   rz   )Únumpyr?   rI   Útorch.utils.datar   r   Úutils.genericr   r   r#   r_   rh   rq   rz   r!   r   r   ú<module>r†      sd   ðÛ Û ß 5å 'ô�gô ô@�ô @ôF*Ð,ô *ôZaÐ+ô aôH	)�ô 	)ô
]�Wõ 
]r   