
    bi.                     V    d dl mZmZ  G d de      Z G d de      Z G d de      Zy)	    )IterableIteratorc                   B     e Zd Zi Zdef fdZ fdZdef fdZ xZS )tracked_stroriginc                 r    t         |          | j                  vr|| j                  t         |          <   y y N)super__repr__origins)selfr   	__class__s     O/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/datasets/utils/track.py
set_originztracked_str.set_origin   s2    7T\\1/5DLL)+, 2    c                 f    | j                   j                  t        |          t	        |             S r	   )r   getr
   r   strr   r   s    r   
get_originztracked_str.get_origin   s&    || 0 2CI>>r   returnc                     t         |          | j                  vs| j                  t         |             | k(  rt         |          S t        |        d| j                  t         |              dS )Nz	 (origin=))r
   r   r   r   r   s    r   r   ztracked_str.__repr__   sg    7T\\1T\\%'BRBT5UY]5]7#%%$i[	$,,uw7G7I*J)K1MMr   )	__name__
__module____qualname__r   r   r   r   r   __classcell__r   s   @r   r   r      s-    G6 6?N# N Nr   r   c                   @     e Zd Zd fdZdef fdZdef fdZ xZS )tracked_listr   c                 2    t        |   |i | d | _        y r	   )r
   __init__	last_item)r   argskwargsr   s      r   r"   ztracked_list.__init__   s    $)&)r   c              #   X   K   t         |          D ]  }|| _        |  d | _        y wr	   )r
   __iter__r#   )r   xr   s     r   r'   ztracked_list.__iter__   s3     !# 	ADNG	 s   '*c                     | j                   t        | 	         S | j                  j                   d| j                    dS Nz	(current=r   r#   r
   r   r   r   r   s    r   r   ztracked_list.__repr__    >    >>!7#%%nn--.i7GqIIr   )r   N)	r   r   r   r"   r   r'   r   r   r   r   s   @r   r    r       s(    ( J# J Jr   r    c                   >     e Zd ZdZ fdZd Zdef fdZd Z xZ	S )TrackedIterableFromGeneratorzkUtility class to create an iterable from a generator function, in order to reset the generator when needed.c                 L    t         |           || _        || _        d | _        y r	   )r
   r"   	generatorr$   r#   )r   r0   r$   r   s      r   r"   z%TrackedIterableFromGenerator.__init__*   s#    "	r   c              #   l   K    | j                   | j                   D ]  }|| _        |  d | _        y wr	   )r0   r$   r#   )r   r(   s     r   r'   z%TrackedIterableFromGenerator.__iter__0   s9     + 	ADNG	 s   24r   c                     | j                   t        | 	         S | j                  j                   d| j                    dS r*   r+   r   s    r   r   z%TrackedIterableFromGenerator.__repr__6   r,   r   c                 N    | j                   | j                  g| j                  fS r	   )r   r0   r$   )r   s    r   
__reduce__z'TrackedIterableFromGenerator.__reduce__<   s!     <$)) <==r   )
r   r   r   __doc__r"   r'   r   r   r4   r   r   s   @r   r.   r.   '   s#    uJ# J>r   r.   N)collections.abcr   r   r   r   listr    r.    r   r   <module>r9      s0    .N# N"J4 J$>8 >r   