
    bi                         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y)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y)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                        \  | _        | _        | _        y N)_str_to_version_tupler	   r   r   r   selfs    Q/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/datasets/utils/version.py__post_init__zVersion.__post_init__7   s    -B4CSCS-T*
DJ
    c                 d    | j                   d    d| j                   d    d| j                   d    S )Nr   .      )tupler   s    r   __repr__zVersion.__repr__:   s1    **Q-$**Q-$**Q-AAr   c                 H    | j                   | j                  | j                  fS r   )r   r   r   r   s    r   r   zVersion.tuple=   s    zz4::tzz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   sB    eS!5>!w'L5'e5UVWWr   c                     	 | j                  |      }| j                  |j                  k(  S # t        t        f$ r Y yw xY w)NF)r$   r   r    
ValueErrorr"   s     r   __eq__zVersion.__eq__H   sE    	-**51E ::,, :& 		s   , >>c                 V    | j                  |      }| j                  |j                  k  S r   )r$   r   r"   s     r   __lt__zVersion.__lt__P   s%    &&u-zzEKK''r   c                 >    t        t        | j                              S r   )hash_version_tuple_to_strr   r   s    r   __hash__zVersion.__hash__T   s    )$**566r   c           
          t        j                  |       D ch c]  }|j                   }} | di |j                         D ci c]  \  }}||v s|| c}}S c c}w c c}}w )N )dataclassesfieldsnameitems)clsdicffield_nameskvs         r   	from_dictzVersion.from_dictW   s[    '2'9'9#'>?!qvv??Hsyy{Gtq!a;6FadGHH @Gs   AA!A!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:   r=   r/   r   r   r   r      s    $ !%K#%'+E8E#s(O$+'+E8E#s(O$+'+E8E#s(O$+UB 2 2X-(7 I I   r   r   c                     t         j                  |       }|st        d|  d      t        d |j	                  d      |j	                  d      |j	                  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   2   K   | ]  }t        |        y wr   )rC   .0r9   s     r   	<genexpr>z(_str_to_version_tuple.<locals>.<genexpr>e   s     ^AQ^   r   r   r   )_VERSION_REGmatchr&   r   group)r	   ress     r   r   r   `   s_    


[
)C,[M9opqq^#))G"4cii6H#))T[J\!]^^^r   c                 2    dj                  d | D              S )zDReturn the str version from the version tuple (major, minor, patch).r   c              3   2   K   | ]  }t        |        y wr   )r   rH   s     r   rJ   z(_version_tuple_to_str.<locals>.<genexpr>j   s     2qCF2rK   )join)version_tuples    r   r,   r,   h   s    882M222r   )rA   r0   rer   	functoolsr   typingr   r   compilerL   r   r   r,   r/   r   r   <module>rX      sY       	 ! $ " rzzUV 
?  ?   ? D_3r   