o
    8wÖi.  ã                   @   sD   d dl mZmZ G dd„ deƒZG dd„ deƒZG dd„ deƒZdS )	é    )ÚIterableÚIteratorc                       sD   e Zd Zi Zdef‡ fdd„Z‡ fdd„Zdef‡ fdd„Z‡  ZS )	Útracked_strÚoriginc                    s(   t ƒ  ¡ | jvr|| jt ƒ  ¡ < d S d S ©N)ÚsuperÚ__repr__Úorigins)Úselfr   ©Ú	__class__© úQ/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/datasets/utils/track.pyÚ
set_origin   s   ÿztracked_str.set_originc                    s   | j  tƒ  ¡ t| ƒ¡S r   )r	   Úgetr   r   Ústr©r
   r   r   r   Ú
get_origin   s   ztracked_str.get_originÚreturnc                    sN   t ƒ  ¡ | jvs| jt ƒ  ¡  | krt ƒ  ¡ S t| ƒ› d| jt ƒ  ¡  › dS )Nz	 (origin=ú))r   r   r	   r   r   r   r   r   r      s   $
 ztracked_str.__repr__)	Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   Ú__classcell__r   r   r   r   r      s
    r   c                       sB   e Zd Zd	‡ fdd„Zdef‡ fdd„Zdef‡ fdd„Z‡  ZS )
Útracked_listr   Nc                    s   t ƒ j|i |¤Ž d | _d S r   )r   Ú__init__Ú	last_item)r
   ÚargsÚkwargsr   r   r   r      s   
ztracked_list.__init__c                 #   s(    t ƒ  ¡ D ]}|| _|V  qd | _d S r   )r   Ú__iter__r   ©r
   Úxr   r   r   r      s
   €
ztracked_list.__iter__c                    ó*   | j d u r
tƒ  ¡ S | jj› d| j › dS ©Nz	(current=r   ©r   r   r   r   r   r   r   r   r   r       ó   

ztracked_list.__repr__)r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    r   c                       sB   e Zd ZdZ‡ fdd„Zdd„ Zdef‡ fdd„Zd	d
„ Z‡  Z	S )ÚTrackedIterableFromGeneratorzkUtility class to create an iterable from a generator function, in order to reset the generator when needed.c                    s    t ƒ  ¡  || _|| _d | _d S r   )r   r   Ú	generatorr   r   )r
   r'   r   r   r   r   r   *   s   

z%TrackedIterableFromGenerator.__init__c                 c   s*    | j | jŽ D ]}|| _|V  qd | _d S r   )r'   r   r   r    r   r   r   r   0   s
   €
z%TrackedIterableFromGenerator.__iter__r   c                    r"   r#   r$   r   r   r   r   r   6   r%   z%TrackedIterableFromGenerator.__repr__c                 C   s   | j | jg| j¢R fS r   )r   r'   r   r   r   r   r   Ú
__reduce__<   s   z'TrackedIterableFromGenerator.__reduce__)
r   r   r   Ú__doc__r   r   r   r   r(   r   r   r   r   r   r&   '   s    r&   N)Úcollections.abcr   r   r   r   Úlistr   r&   r   r   r   r   Ú<module>   s    