
    h                         S r SSKrSSKrSSKJr  SSKJr  SSKJrJr  \R                  " S5      r
\\ " S S5      5       5       rS	 rS
 rg)zVersion utils.    N)	dataclass)total_ordering)OptionalUnionz0^(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)$c                       \ rS rSr% Sr\\S'   Sr\\   \S'   Sr	\\
\\4      \S'   Sr\\
\\4      \S'   Sr\\
\\4      \S'   S	 rS
 r\S 5       rS rS rS rS r\S 5       rS\4S jrSrg)Version   a'  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    [        U R                  5      u  U l        U l        U l        g N)_str_to_version_tupler
   r   r   r   selfs    P/home/james-whalen/.local/lib/python3.13/site-packages/datasets/utils/version.py__post_init__Version.__post_init__7   s    -B4CSCS-T*
DJ
    c                 d    U R                   S    SU R                   S    SU R                   S    3$ )Nr   .      )tupler   s    r   __repr__Version.__repr__:   s1    **Q-$**Q-$**Q-AAr   c                 H    U R                   U R                  U R                  4$ r   r   r   r   r   s    r   r   Version.tuple=   s    zz4::tzz11r   c                     [        U[        5      (       a  [        U5      $ [        U[        5      (       a  U$ [        U S[	        U5       S35      e)Nz (type z ) cannot be compared to version.)
isinstancestrr   	TypeErrortyper   others     r   _validate_operandVersion._validate_operandA   sH    eS!!5>!w''L5'e5UVWWr   c                      U R                  U5      nU R                  UR                  :H  $ ! [        [        4 a     gf = f)NF)r)   r   r%   
ValueErrorr'   s     r   __eq__Version.__eq__H   sE    	-**51E ::,, :& 		s   , ??c                 V    U R                  U5      nU R                  UR                  :  $ r   )r)   r   r'   s     r   __lt__Version.__lt__P   s%    &&u-zzEKK''r   c                 >    [        [        U R                  5      5      $ r   )hash_version_tuple_to_strr   r   s    r   __hash__Version.__hash__T   s    )$**566r   c           
          [         R                  " U 5       Vs1 s H  o"R                  iM     nnU " S0 UR                  5        VVs0 s H  u  pEXC;   d  M  XE_M     snnD6$ s  snf s  snnf )N )dataclassesfieldsnameitems)clsdicffield_nameskvs         r   	from_dictVersion.from_dictW   s\    '2'9'9#'>?'>!vv'>?Hsyy{G{tqa6Fdad{GHH @Gs   A"A'A'returnc                     U R                   $ r   )r
   r   s    r   _to_yaml_stringVersion._to_yaml_string\   s    r   r    )__name__
__module____qualname____firstlineno____doc__r$   __annotations__r   r   r   r   intr   r   r   r   propertyr   r)   r-   r0   r5   classmethodrC   rG   __static_attributes__r8   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                     [         R                  U 5      nU(       d  [        SU  S35      e[        S UR	                  S5      UR	                  S5      UR	                  S5      4 5       5      $ )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   8   #    U  H  n[        U5      v   M     g 7fr   )rO   .0rB   s     r   	<genexpr>(_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    SR                  S U  5       5      $ )zDReturn the str version from the version tuple (major, minor, patch).r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )r$   rU   s     r   rW   (_version_tuple_to_str.<locals>.<genexpr>j   s     2MqCFFMrY   )join)version_tuples    r   r4   r4   h   s    882M222r   )rM   r9   rer   	functoolsr   typingr   r   compilerZ   r   r   r4   r8   r   r   <module>rg      sW       	 ! $ " zzUV 
?  ?   ? D_3r   