
    j:              
           d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 e
eee   f   Ze	eeeee
eef      ee
eef      ee
eef      f   Ze
deeef   ee   eef   Zedegef   ZdefdZdedefdZ G d	 d      Zy)
    N)wraps)CallableDictListOptionalTupleUnionSemanticVersionreturnc                     | |kD  | |k  z
  S N )abs     n/Users/manta/Documents/Projects/TheRoad-I1/backend/.venv/lib/python3.12/site-packages/opik/semantic_version.py_cmpr      s    Ea!e    operatorc                 L     t               dddt        dt        f fd       }|S )Nselfr
   otherr   c                 p    t         t        t        t        t        f}t        ||      st        S  | |      S r   )r
   dicttupleliststr
isinstanceNotImplemented)r   r   comparable_typesr   s      r   wrapperz_comparator.<locals>.wrapper   s<     
 %!12!!e$$r   )r   ComparableVersionbool)r   r    s   ` r   _comparatorr#      s7    
8_
%' 
%0A 
%d 
% 
% Nr   c                      e Zd ZdZ ej
                  ej                  dd      ej                        Z ej
                  ej                  dd      ej                        Z		 	 	 	 	 d#de
de
de
d	eeee
f      d
eeee
f      deeee
f      fdZede
fd       Zede
fd       Zede
fd       Zedee   fd       Zedee   fd       Zedee   fd       ZdefdZdej2                  fdZdede
fdZededefd       Zededefd       Z ededefd       Z!ededefd       Z"ededefd       Z#ededefd       Z$defdZ%defdZ&e'	 d$d ed!edd fd"       Z(y)%r
   ae  
                ^
                (?P<major>0|[1-9]\d*)
                (?:\.(?P<minor>0|[1-9]\d*)
                    (?:-(?P<feature_branch>0|[1-9]\d*|[a-zA-Z-_][0-9a-zA-Z-_]*))?
                    (?:\.(?P<patch>0|[1-9]\d*)){opt_patch}
                ){opt_minor}
                (?:-(?P<pre_release>
                    (?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)
                    (?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*
                ))?
                (?:\+(?P<build>
                    [0-9a-zA-Z-]+
                    (?:\.[0-9a-zA-Z-]+)*
                ))?
                $
             )	opt_patch	opt_minor?Nmajorminorpatchfeature_branchpre_releasebuildc                     || _         || _        || _        |d n
t        |      | _        |d n
t        |      | _        |d | _        y t        |      | _        y r   )_major_minor_patchr   _feature_branch_pre_release_build)r   r)   r*   r+   r,   r-   r.   s          r   __init__zSemanticVersion.__init__N   sV     '5'=t3~CV$/$7DS=M#mdUr   r   c                     | j                   S r   )r0   r   s    r   r)   zSemanticVersion.major^       {{r   c                     | j                   S r   )r1   r8   s    r   r*   zSemanticVersion.minorb   r9   r   c                     | j                   S r   )r2   r8   s    r   r+   zSemanticVersion.patchf   r9   r   c                     | j                   S r   )r4   r8   s    r   r-   zSemanticVersion.pre_releasej   s       r   c                     | j                   S r   )r5   r8   s    r   r.   zSemanticVersion.buildn   r9   r   c                     | j                   S r   )r3   r8   s    r   r,   zSemanticVersion.feature_branchr   s    ###r   c                     | j                   | j                  | j                  | j                  | j                  | j
                  fS r   r)   r*   r+   r,   r-   r.   r8   s    r   to_tuplezSemanticVersion.to_tuplev   s:    JJJJJJJJ
 	
r   c           	          t        j                  d| j                  fd| j                  fd| j                  fd| j
                  fd| j                  fd| j                  ff      S )Nr)   r*   r,   r+   r-   r.   )collectionsOrderedDictr0   r1   r3   r2   r4   r5   r8   s    r   to_dictzSemanticVersion.to_dict   sf    &&$++&$++&!4#7#78$++& 1 12$++&	
 		
r   r   c                    t        |       }t        |t              r|j                  |      }net        |t              r	 |di |}nLt        |t
        t        f      r || }n0t        ||      s$t        d|j                  dt        |            | j                         dd }|j                         dd }t        ||      S )z
        Compare self with other version.

        :param other: another version
        :return: The return value is negative if self < other,
             zero if self == other and strictly positive if self > other
        z7Wrong type. Expected str, bytes, dict, tuple, list, or z instance, but got N   r   )typer   r   parser   r   r   	TypeError__name__rA   r   )r   r   clsv1v2s        r   comparezSemanticVersion.compare   s     4jeS!IIe$Et$L%LEt}-KEE3'<<e. 
 ]]_Ra ^^bq!B|r   c                 *    | j                  |      dk(  S Nr   rO   r   r   s     r   __eq__zSemanticVersion.__eq__       ||E"a''r   c                 *    | j                  |      dk7  S rQ   rR   rS   s     r   __ne__zSemanticVersion.__ne__   rU   r   c                 *    | j                  |      dk  S rQ   rR   rS   s     r   __lt__zSemanticVersion.__lt__       ||E"Q&&r   c                 *    | j                  |      dk  S rQ   rR   rS   s     r   __le__zSemanticVersion.__le__   rU   r   c                 *    | j                  |      dkD  S rQ   rR   rS   s     r   __gt__zSemanticVersion.__gt__   rZ   r   c                 *    | j                  |      dk\  S rQ   rR   rS   s     r   __ge__zSemanticVersion.__ge__   rU   r   c                     dj                  d | j                         j                         D              }t        |       j                  d|dS )Nz, c              3   0   K   | ]  \  }}|d |  yw)=Nr   ).0keyvals      r   	<genexpr>z+SemanticVersion.__repr__.<locals>.<genexpr>   s     R;QxsCc*;Qs   ())joinrE   itemsrH   rK   )r   ss     r   __repr__zSemanticVersion.__repr__   s:    IIR4<<>;O;O;QRR:..22r   c                    d| j                   | j                  fz  }| j                  r|d| j                  z  z  }|d| j                  z  z  }| j                  r|d| j                  z  z  }| j
                  r|d| j
                  z  z  }|S )Nz%d.%dz-%sz.%dz+%s)r)   r*   r3   r+   r-   r.   )r   versions     r   __str__zSemanticVersion.__str__   s    TZZ44ut3333G54::%%ut////G::utzz))Gr   ro   optional_minor_and_patchc                    t        |t              st        dt        |      z        |r| j                  j                  |      }n| j                  j                  |      }|t        d|z        |j                         }|d   sd|d<   |d   sd|d<   t        |d         }t        |d         }t        |d         }|j                  dd       }|j                  dd       }	|j                  d	d       }
 | |||||	|

      S )Nzwrong version string type %rz%r is not valid SemVer stringr*   r   r+   r)   r,   r-   r.   r@   )r   r   rJ   rH   &_SEMVER_REGEX_OPTIONAL_MINOR_AND_PATCHmatch_SEMVER_REGEX
ValueError	groupdictintget)rL   ro   rq   rt   version_partsr)   r*   r+   r,   r-   r.   s              r   rI   zSemanticVersion.parse   s    '3':T']JKK#>>DDWME%%++G4E=<wFGG)W%%&M'"W%%&M'"M'*+M'*+M'*+&**+;TB#''t<!!'40)#
 	
r   )r   r   NNN)F))rK   
__module____qualname___SEMVER_REGEX_TEMPLATErecompileformatVERBOSEru   rs   rx   r   r	   r   r6   propertyr)   r*   r+   r-   r.   r,   VersionTuplerA   rC   rD   rE   r!   rO   r#   r"   rT   rW   rY   r\   r^   r`   rm   rp   classmethodrI   r   r   r   r
   r
   /   s   $ BJJ%%b%A


M
 .8RZZ%%s%C


.* 4815+/<< < 	<
 !sCx1< eCHo.< c3h(<  s   s   s   !Xc] ! ! x}   $ $ $
, 


00 

. 3 2 (- ($ ( ( (- ($ ( ( '- '$ ' ' (- ($ ( ( '- '$ ' ' (- ($ ( (3# 3  <A!
!
59!
	!
 !
r   )rC   r~   	functoolsr   typingr   r   r   r   r   r	   rx   r   VersionPartr   r!   r"   
Comparatorr   r#   r
   r   r   r   <module>r      s   
  	  ? ?C#&'U38_U38_U38_ tC,-tK/@,PSS  (*;<dBC
# *  "A
 A
r   