
    +gd                         d Z ddlZddlZddlmZ ddlmZ ddlmZmZ  ej	        d          Z
ee G d d                                  Zd	 Zd
 ZdS )zVersion utils.    N)	dataclass)total_ordering)OptionalUnionz0^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)$c                      e Zd ZU dZeed<   dZee         ed<   dZee	ee
f                  ed<   dZee	ee
f                  ed<   dZee	ee
f                  ed<   d Zd	 Zed
             Zd Zd Zd Zd Zed             ZdefdZdS )Versiona[  Dataset version `MAJOR.MINOR.PATCH`.

    Args:
        version_str (`str`):
            The dataset version.
        description (`str`):
            A description of what is new in this version.
        major (`str`):
        minor (`str`):
        patch (`str`):

    Example:

    ```py
    >>> VERSION = datasets.Version("1.0.0")
    ```
    version_strNdescriptionmajorminorpatchc                 T    t          | j                  \  | _        | _        | _        d S N)_str_to_version_tupler	   r   r   r   selfs    6lib/python3.11/site-packages/datasets/utils/version.py__post_init__zVersion.__post_init__7   s#    -B4CS-T-T*
DJ


    c                 X    | j         d          d| j         d          d| j         d          S )Nr   .      )tupler   s    r   __repr__zVersion.__repr__:   s0    *Q-AA$*Q-AA$*Q-AAAr   c                 *    | j         | j        | j        fS r   )r   r   r   r   s    r   r   zVersion.tuple=   s    z4:tz11r   c                     t          |t                    rt          |          S t          |t                    r|S t          | dt	          |           d          )Nz (type z ) cannot be compared to version.)
isinstancestrr   	TypeErrortyper   others     r   _validate_operandzVersion._validate_operandA   s\    eS!! 	5>>!w'' 	L5VVeVVVWWWr   c                 ~    	 |                      |          }| j        |j        k    S # t          t          f$ r Y dS w xY w)NF)r$   r   r    
ValueErrorr"   s     r   __eq__zVersion.__eq__H   sT    	-**511E :,, :& 	 	 	55	s   ' <<c                 L    |                      |          }| j        |j        k     S r   )r$   r   r"   s     r   __lt__zVersion.__lt__P   s$    &&u--zEK''r   c                 D    t          t          | j                            S r   )hash_version_tuple_to_strr   r   s    r   __hash__zVersion.__hash__T   s    )$*55666r   c                     d t          j        |           D              | di fd|                                D             S )Nc                     h | ]	}|j         
S  )name).0fs     r   	<setcomp>z$Version.from_dict.<locals>.<setcomp>Y   s    ???!qv???r   c                 $    i | ]\  }}|v 	||S r0   r0   )r2   kvfield_namess      r   
<dictcomp>z%Version.from_dict.<locals>.<dictcomp>Z   s)    GGGtq!a;6F6Fa6F6F6Fr   r0   )dataclassesfieldsitems)clsdicr8   s     @r   	from_dictzVersion.from_dictW   sT    ??{'9#'>'>???sHHGGGGsyy{{GGGHHHr   returnc                     | j         S r   )r	   r   s    r   _to_yaml_stringzVersion._to_yaml_string\   s    r   )__name__
__module____qualname____doc__r   __annotations__r
   r   r   r   intr   r   r   r   propertyr   r$   r'   r)   r-   classmethodr?   rB   r0   r   r   r   r      sP         $ !%K#%%%'+E8E#s(O$+++'+E8E#s(O$+++'+E8E#s(O$+++U U UB B B 2 2 X2X X X- - -( ( (7 7 7 I I [I             r   r   c                 
   t                               |           }|st          d|  d          t          d |                    d          |                    d          |                    d          fD                       S )zFReturn the tuple (major, minor, patch) version extracted from the str.zInvalid version 'z4'. Format should be x.y.z with {x,y,z} being digits.c              3   4   K   | ]}t          |          V  d S r   )rH   r2   r7   s     r   	<genexpr>z(_str_to_version_tuple.<locals>.<genexpr>e   s(      ^^AQ^^^^^^r   r   r   r   )_VERSION_REGmatchr&   r   group)r	   ress     r   r   r   `   s    


[
)
)C rp[pppqqq^^#))G"4"4cii6H6H#))T[J\J\!]^^^^^^r   c                 @    d                     d | D                       S )zDReturn the str version from the version tuple (major, minor, patch).r   c              3   4   K   | ]}t          |          V  d S r   )r   rM   s     r   rN   z(_version_tuple_to_str.<locals>.<genexpr>j   s(      22qCFF222222r   )join)version_tuples    r   r,   r,   h   s#    8822M222222r   )rF   r:   rer   	functoolsr   typingr   r   compilerO   r   r   r,   r0   r   r   <module>r[      s           				 ! ! ! ! ! ! $ $ $ $ $ $ " " " " " " " " rzUVV 
?  ?  ?  ?  ?  ?  ?   ? D_ _ _3 3 3 3 3r   