
    Pi                     f   d dl Z d dlZd dlZd Z G d de          Ze j         G d de                      Ze j         G d de                      Z G d	 d
e          Z	 G d de          Z
d Zd Zd ZdZ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Zej         G d! d"e                      Z G d# d$e          ZeZej         G d% d&e                      ZdS )'    Nc                 R    | o%| d         dk    o|                                  o| dk    S )Nr   0)isdigitvalues    i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/semantic_version/base.py_has_leading_zeror	   
   s8     aC     c                       e Zd Zg Zd Zd ZdS )MaxIdentifierc                     dS )NzMaxIdentifier() selfs    r   __repr__zMaxIdentifier.__repr__   s      r
   c                 ,    t          || j                  S N
isinstance	__class__r   others     r   __eq__zMaxIdentifier.__eq__       %000r
   N)__name__
__module____qualname__	__slots__r   r   r   r
   r   r   r      s7        I! ! !1 1 1 1 1r
   r   c                   ,    e Zd ZdgZd Zd Zd Zd ZdS )NumericIdentifierr   c                 .    t          |          | _        d S r   )intr   r   r   s     r   __init__zNumericIdentifier.__init__   s    ZZ


r
   c                     d| j         z  S )NzNumericIdentifier(%r)r   r   s    r   r   zNumericIdentifier.__repr__"   s    &33r
   c                 Z    t          |t                    r| j        |j        k    S t          S r   )r   r    r   NotImplementedr   s     r   r   zNumericIdentifier.__eq__%   s*    e.// 	-:,,r
   c                     t          |t                    rdS t          |t                    rdS t          |t                    r| j        |j        k     S t
          S NT)r   r   AlphaIdentifierr    r   r'   r   s     r   __lt__zNumericIdentifier.__lt__*   sX    e]++ 	"4// 	"4011 	":++!!r
   Nr   r   r   r   r$   r   r   r+   r   r
   r   r    r       sW        	I     4 4 4  
" " " " "r
   r    c                   ,    e Zd ZdgZd Zd Zd Zd ZdS )r*   r   c                 :    |                     d          | _        d S )Nascii)encoder   r#   s     r   r$   zAlphaIdentifier.__init__9   s    \\'**


r
   c                     d| j         z  S )NzAlphaIdentifier(%r)r   r   s    r   r   zAlphaIdentifier.__repr__<   s    $tz11r
   c                 Z    t          |t                    r| j        |j        k    S t          S r   )r   r*   r   r'   r   s     r   r   zAlphaIdentifier.__eq__?   s)    e_-- 	-:,,r
   c                     t          |t                    rdS t          |t                    rdS t          |t                    r| j        |j        k     S t
          S )NTF)r   r   r    r*   r   r'   r   s     r   r+   zAlphaIdentifier.__lt__D   sX    e]++ 	"4011 	"5// 	":++!!r
   Nr,   r   r
   r   r*   r*   5   sW        	I+ + +2 2 2  
" " " " "r
   r*   c                   T   e Zd Z ej        d          Z ej        d          Z	 	 	 	 	 	 	 ddZedd            Z	d Z
d Zd	 ZddZedd            Zed d            Zedd            Zed             Zd Zd Zd Zd ZddZed             Zd Zd Zd Zd Zd Zd Zd ZdS )!VersionzB^(\d+)\.(\d+)\.(\d+)(?:-([0-9a-zA-Z.-]+))?(?:\+([0-9a-zA-Z.-]+))?$zL^(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:-([0-9a-zA-Z.-]*))?(?:\+([0-9a-zA-Z.-]*))?$NFc                 $   |rt          j        dt          d           |d u}||cxu o|cxu o|cxu o|cxu od u nc  }	||	z  st          d          |r|                     ||          \  }}}}}n>t          |pd          }|st          |pd          }|                     ||||||           || _        || _        || _	        || _
        || _        || _        |                     d          | _        |                     d          | _        d S )	NzIPartial versions will be removed in 3.0; use SimpleSpec('1.x.x') instead.   
stacklevelz6Call either Version('1.2.3') or Version(major=1, ...).r   F)
with_buildT)warningswarnDeprecationWarning
ValueErrorparsetuple_validate_kwargsmajorminorpatch
prereleasebuildpartial_build_precedence_key_cmp_precedence_key_sort_precedence_key)
r   version_stringrB   rC   rD   rE   rF   rG   has_text	has_partss
             r   r$   zVersion.__init__T   s~     	M["   
 "-%OOOO5OOOOJOOOO%OOOO4OOOOP	)# 	WUVVV 	S59ZZPW5X5X2E5%UU z/R00J +ekr**!!%z5'RRR


$
 $(#=#=#=#O#O $($>$>$$>$O$O!!!r
   c                 ,    ||r|S t          |          S r   )r"   )clsr   
allow_nones      r   _coercezVersion._coerce   s    =Z=L5zzr
   c                     | j         r7| j        | j        cxk    rdk    r n nt          | j        dd| j                  S t          | j        dz   dd| j                  S Nr   rB   rC   rD   rG      )rE   rC   rD   r5   rB   rG   r   s    r   
next_majorzVersion.next_major   s    ? 	tzTZ<<<<1<<<<<j	    j1n	   r
   c                     | j         r-| j        dk    r"t          | j        | j        d| j                  S t          | j        | j        dz   d| j                  S rS   )rE   rD   r5   rB   rC   rG   r   s    r   
next_minorzVersion.next_minor   sn    ? 	tzQjj	    jj1n	   r
   c                     | j         r't          | j        | j        | j        | j                  S t          | j        | j        | j        dz   | j                  S )NrT   rU   )rE   r5   rB   rC   rD   rG   r   s    r   
next_patchzVersion.next_patch   sh    ? 	jjj	    jjj1n	   r
   rD   c                    |dk    r| S |dk    r-t          | j        | j        | j        | j        | j                  S |dk    r't          | j        | j        | j        | j                  S |dk    r+t          | j        | j        | j        rdnd| j                  S |d	k    r/t          | j        | j        rdnd| j        rdnd| j                  S t          d
|z            )z@Return a new Version object, truncated up to the selected level.rF   rE   )rB   rC   rD   rE   rG   rD   rT   rC   Nr   rB   zInvalid truncation level `%s`.)r5   rB   rC   rD   rE   rG   r>   )r   levels     r   truncatezVersion.truncate   s&   GKl""jjj?    gjjj	    gjj"l1dd	    gj"l1dd"l1dd	    =EFFFr
   c                    t          j        d          }|                    |          }|st          d|z            |d|                                         }|s7|                    d          dk     r|dz  }|                    d          dk     d                    d |                    d          D                       }|                                t          |          k    rt          ||          S ||                                d         }t          j
        d	d
|          }|d         dk    rd}|dd         }nt|d         dk    rd}|dd         }n[|d         d
k    r-|dd         }d|v r|                    dd          \  }}n'|d}}n"d|v r|                    dd          \  }}n|d}}|                    dd          }|r|d
|}|r|d|} | ||          S )a  Coerce an arbitrary version string into a semver-compatible one.

        The rule is:
        - If not enough components, fill minor/patch with zeroes; unless
          partial=True
        - If more than 3 dot-separated components, extra components are "build"
          data. If some "build" data already appeared, append it to the
          extra components

        Examples:
            >>> Version.coerce('0.1')
            Version(0, 1, 0)
            >>> Version.coerce('0.1.2.3')
            Version(0, 1, 2, (), ('3',))
            >>> Version.coerce('0.1.2.3+4')
            Version(0, 1, 2, (), ('3', '4'))
            >>> Version.coerce('0.1+2-3+4_5')
            Version(0, 1, 0, (), ('2-3', '4-5'))
        z^\d+(?:\.\d+(?:\.\d+)?)?z.Version string lacks a numerical component: %rN.r7   z.0c              3   D   K   | ]}|                     d           pd V  dS )r   N)lstrip.0parts     r   	<genexpr>z!Version.coerce.<locals>.<genexpr>   sI       
 
  KK#
 
 
 
 
 
r
   rG   z[^a-zA-Z0-9+.-]-r   + rU   )recompilematchr>   endcountjoinsplitlenr5   subreplace)	rO   rK   rG   base_rerl   versionrestrE   rF   s	            r   coercezVersion.coerce   sL   * *899n-- 	@ !  
 !%))++. 	 --$$q((4 --$$q((
 (( 
 
  c**
 
 
 
 
 99;;#n----7G4444eiikkll+ v(#t447c>>JHEE!W^^JHEE!W^^8Dd{{$(JJsA$6$6!
EE$("E

D[[ $

3 2 2J $bJc3'' 	6!(**5G 	1!(%%0Gs7G,,,,r
   c                 X   |st          d|z            |r| j        }n| j        }|                    |          }|st          d|z            |                                \  }}}}	}
t          |          rt          d|z            t          |          rt          d|z            t          |          rt          d|z            t          |          }|                     ||          }|                     ||          }|	|r	|
|||ddfS d}	nB|	dk    rd}	n9t          |		                    d	                    }	| 
                    |	d
           |
|rd}
nEd}
nB|
dk    rd}
n9t          |
	                    d	                    }
| 
                    |
d           ||||	|
fS )ah  Parse a version string into a tuple of components:
           (major, minor, patch, prerelease, build).

        Args:
            version_string (str), the version string to parse
            partial (bool), whether to accept incomplete input
            coerce (bool), whether to try to map the passed in string into a
                valid Version.
        z Invalid empty version string: %rzInvalid version string: %rz!Invalid leading zero in major: %rz!Invalid leading zero in minor: %rz!Invalid leading zero in patch: %rNr   ri   r_   Fallow_leading_zeroesT)r>   partial_version_re
version_rerl   groupsr	   r"   rQ   r@   rp   _validate_identifiers)rO   rK   rG   rw   r|   rl   rB   rC   rD   rE   rF   s              r   r?   zVersion.parse)  s      	R?.PQQQ 	(/JJJ  00 	L9NJKKK16.ueZU## 	S@>QRRRU## 	S@>QRRRU## 	S@>QRRRE

E7++E7++  EMueT488

2JJz//4455J%%ju%MMM= b[[EE%++c**++E%%e$%GGGueZ77r
   c           	          |D ]f}|s(t          d|dd                    |                    |d         dk    r.|                                r|dk    r|st          d|z            gd S )NzInvalid empty identifier z in r_   r   r   z%Invalid leading zero in identifier %r)r>   ro   r   )rO   identifiersrz   items       r   r~   zVersion._validate_identifiersf  s     	Q 	QD  jttSXXk2224  
 Aw#~~$,,..~TS[[I][ !H4!OPPP	Q 	Qr
   c                 N   |t          |          k    s<||                     ||          k    s"||                     ||          k    s||r|#|s!t          d|d|d|d|d|d|          ||                     |d           ||                     |d	           d S d S )
Nz Invalid kwargs to Version(major=z, minor=z, patch=z, prerelease=z, build=z
, partial=Fry   T)r"   rQ   r>   r~   )rO   rB   rC   rD   rE   rF   rG   s          r   rA   zVersion._validate_kwargsr  s     U##CKKw7777CKKw7777%g%==* EE555%%%UUUGG  
 !%%ju%MMM%%e$%GGGGG r
   c                 \    t          | j        | j        | j        | j        | j        f          S r   )iterrB   rC   rD   rE   rF   r   s    r   __iter__zVersion.__iter__  s%    TZTZ$*UVVVr
   c                 T   d| j         z  }| j        d|| j        fz  }| j        d|| j        fz  }| j        s| j        r1| j        dk    r&| j        |dd                    | j                  }| j        s| j        r*| j        dk    r|dd                    | j                  }|S )Nz%dz%s.%dr   rg   r_   rh   )rB   rC   rD   rE   rG   rF   ro   r   ru   s     r   __str__zVersion.__str__  s    #:!$* 55G:!$* 55G? 	Et| 	E20E0E$*J\!(#((4?*C*C*CDG: 	@$, 	@4:+;+;!(#((4:*>*>*>?Gr
   c                 V    | j         j        dt          |           | j        rdnddS )N(z, partial=Trueri   ))r   r   strrG   r   s    r   r   zVersion.__repr__  s;    N###III $4"44
 	
r
   c                 \    t          | j        | j        | j        | j        | j        f          S r   )hashrB   rC   rD   rE   rF   r   s    r   __hash__zVersion.__hash__  s'     TZTZ$*UVVVr
   c                    | j         rt          d | j         D                       }nt                      f}|s| j        | j        | j        |fS t          d | j        pdD                       }| j        | j        | j        ||fS )zBuild a precedence key.

        The "build" component should only be used when sorting an iterable
        of versions.
        c              3   z   K   | ]6}|                                 rt          |          nt          |          V  7d S r   r   r    r*   rb   s     r   re   z0Version._build_precedence_key.<locals>.<genexpr>  sY       # # ,0<<>>T!$'''t?T?T# # # # # #r
   c              3   z   K   | ]6}|                                 rt          |          nt          |          V  7d S r   r   rb   s     r   re   z0Version._build_precedence_key.<locals>.<genexpr>  sY       
 
 (,||~~Pd###?4;P;P
 
 
 
 
 
r
   r   )rE   r@   r   rB   rC   rD   rF   )r   r:   prerelease_key	build_keys       r   rH   zVersion._build_precedence_key  s     ? 	" # # O# # #  NN N  	


	   
 

(b
 
 
 
 
	 JJJ
 	
r
   c                     | j         S r   )rJ   r   s    r   precedence_keyzVersion.precedence_key  s    ((r
   c                 x    t          || j                  st          S | |k     rdS | |k    rdS | |k    rdS t          S )NrU   r   )r   r   r'   r   s     r   __cmp__zVersion.__cmp__  sL    %00 	"!!%<<2E\\1U]]1!!r
   c                     t          || j                  st          S | j        |j        k    oG| j        |j        k    o7| j        |j        k    o'| j        pd|j        pdk    o| j        pd|j        pdk    S )Nr   )r   r   r'   rB   rC   rD   rE   rF   r   s     r   r   zVersion.__eq__  s    %00 	"!!J%+% :
ek):
ek): &BE,<,BC: !ru{'8b9	
r
   c                 z    t          || j                  st          S t          |           t          |          k    S r   )r   r   r'   r@   r   s     r   __ne__zVersion.__ne__  s3    %00 	"!!T{{eEll**r
   c                 Z    t          || j                  st          S | j        |j        k     S r   r   r   r'   rI   r   s     r   r+   zVersion.__lt__  -    %00 	"!!'%*CCCr
   c                 Z    t          || j                  st          S | j        |j        k    S r   r   r   s     r   __le__zVersion.__le__  -    %00 	"!!'5+DDDr
   c                 Z    t          || j                  st          S | j        |j        k    S r   r   r   s     r   __gt__zVersion.__gt__  r   r
   c                 Z    t          || j                  st          S | j        |j        k    S r   r   r   s     r   __ge__zVersion.__ge__  r   r
   )NNNNNNF)F)rD   )FF) r   r   r   rj   rk   r|   r{   r$   classmethodrQ   rV   rX   rZ   r]   rw   r?   r~   rA   r   r   r   r   rH   propertyr   r   r   r   r+   r   r   r   r   r
   r   r5   r5   O   s@       abbJ#$stt  )P )P )P )PV    [
         "G "G "G "GH M- M- M- [M-^ :8 :8 :8 [:8x 	Q 	Q 	Q [	Q H H [H$W W W  
 
 
W W W
#
 #
 #
 #
J ) ) X)
" 
" 
"	
 	
 	
+ + +
D D D
E E E
D D D
E E E E Er
   r5   c                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZeee	eiZ ej        d          ZddZed             Zed             Zd Zd Zd Zd Zd ZdS )SpecItemzA requirement specification.*<<====ri   >=>!=^~~=z$^(<|<=||=|==|>=|>|!=|\^|~|~=)(\d.*)$Tc                     |rt          j        dt          d           |                     |          \  }}|| _        || _        t          |          j        | _        d S )Nz,The `SpecItem` class will be removed in 3.0.r7   r8   )	r;   r<   r=   r?   kindspecSpecclause_clause)r   requirement_string_warnr   r   s        r   r$   zSpecItem.__init__  si     	M>"   
 ZZ 233
d		.//6r
   c                 z   |st          d|z            |dk    r	| j        dfS | j                            |          }|st          d|z            |                                \  }}|| j        v r| j        |         }t          |d          }|j        "|| j        | j	        fvrt          d|z            ||fS )Nz+Invalid empty requirement specification: %rr   ri   z%Invalid requirement specification: %rTrf   zEInvalid requirement specification %r: build numbers have no ordering.)
r>   KIND_ANYre_specrl   r}   KIND_ALIASESr5   rF   
KIND_EQUALKIND_NEQ)rO   r   rl   r   ru   r   s         r   r?   zSpecItem.parse  s    ! 	aJM__``` $$L"%%!!"455 	[DGYYZZZg3####D)Dw---:!d3>3<2P&P&PW$%   d|r
   c                     |t                      k    r | dd          S |t                      k    r | dd          S t          |t                    r | |j        |j        d          S d S )Nr   F)r   z<0.0.0-)AlwaysNeverr   Rangeoperatortarget)rO   matchers     r   from_matcherzSpecItem.from_matcher8  s    fhh3s%((((3y....'' 	Q3!1!17>>B%PPPP	Q 	Qr
   c                 6    | j                             |          S r   )r   rl   r   s     r   rl   zSpecItem.matchA  s    |!!'***r
   c                 "    | j         | j        S r   r   r   r   s    r   r   zSpecItem.__str__D  s    DII..r
   c                 (    d| j         d| j        dS )Nz<SpecItem:  r   r   r   s    r   r   zSpecItem.__repr__G  s     &*iii;;r
   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r   )r   r   r'   r   r   r   s     r   r   zSpecItem.__eq__J  s7    %** 	"!!yEJ&B49
+BBr
   c                 8    t          | j        | j        f          S r   )r   r   r   r   s    r   r   zSpecItem.__hash__O  s    TY	*+++r
   N)T)r   r   r   __doc__r   KIND_LTKIND_LTEr   KIND_SHORTEQ
KIND_EMPTYKIND_GTEKIND_GTr   
KIND_CARET
KIND_TILDEKIND_COMPATIBLEr   rj   rk   r   r$   r   r?   r   rl   r   r   r   r   r   r
   r   r   r     s       &&HGHJLJHGHJJO 	jJL
 bj@AAG
7 
7 
7 
7   [0 Q Q [Q+ + +/ / /< < <C C C
, , , , ,r
   r   c                 `    t          |                               t          |                    S r   )r5   r   )v1v2s     r   comparer   S  s"    2;;wr{{+++r
   c                 `    t          |                               t          |                    S r   )r   rl   r5   )r   ru   s     r   rl   rl   W  s$    ::GG,,---r
   c                 ^    	 t                               |            dS # t          $ r Y dS w xY w)z;Validates a version string againt the SemVer specification.TF)r5   r?   r>   )rK   s    r   validater   [  s@    n%%%t   uus    
,,simplec                        e Zd ZdZi Zed             Z fdZeefd            Z	ed             Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Z xZS )BaseSpeca'  A specification of compatible versions.

    Usage:
    >>> Spec('>=1.0.0', syntax='npm')

    A version matches a specification if it matches any
    of the clauses of that specification.

    Internally, a Spec is AnyOf(
        AllOf(Matcher, Matcher, Matcher),
        AllOf(...),
    )
    c                     |j         }|t          d          || j        v r#t          d|d| j        |         d|          || j        |<   |S )Nz(A Spec needs its SYNTAX field to be set.zDuplicate syntax for : , )SYNTAXr>   SYNTAXES)rO   subclasssyntaxs      r   register_syntaxzBaseSpec.register_syntaxw  sp    >GHHHs|##*663<///;    (Vr
   c                     t          t          |                                            || _        |                     |          | _        d S r   )superr   r$   
expression_parse_to_clauser   )r   r   r   s     r   r$   zBaseSpec.__init__  s?    h&&((($++J77r
   c                 .     | j         |         |          S )z>Convert a syntax-specific expression into a BaseSpec instance.)r   )rO   r   r   s      r   r?   zBaseSpec.parse  s     $s|F#J///r
   c                     t                      )z#Converts an expression to a clause.NotImplementedErrorrO   r   s     r   r   zBaseSpec._parse_to_clause  s     "###r
   c              #   F   K   |D ]}|                      |          r|V  dS )z3Filter an iterable of versions satisfying the Spec.Nrl   )r   versionsru   s      r   filterzBaseSpec.filter  s=       	 	Gzz'"" 	 	r
   c                 6    | j                             |          S )z+Check whether a Version satisfies the Spec.)r   rl   r   s     r   rl   zBaseSpec.match  s    {  )))r
   c                 l    t          |                     |                    }|rt          |          S dS )z@Select the best compatible version among an iterable of options.N)listr   max)r   r   optionss      r   selectzBaseSpec.select  s4    t{{8,,-- 	 w<<tr
   c                 Z    t          |t                    r|                     |          S dS )zWhether `version in self`.F)r   r5   rl   r   s     r   __contains__zBaseSpec.__contains__  s+    gw'' 	'::g&&&ur
   c                 Z    t          || j                  st          S | j        |j        k    S r   )r   r   r'   r   r   s     r   r   zBaseSpec.__eq__  s+    %00 	"!!{el**r
   c                 *    t          | j                  S r   )r   r   r   s    r   r   zBaseSpec.__hash__  s    DK   r
   c                     | j         S r   )r   r   s    r   r   zBaseSpec.__str__  s
    r
   c                 2    d| j         j        d| j        dS )Nr   r   r   )r   r   r   r   s    r   r   zBaseSpec.__repr__  s      !^444doooFFr
   )r   r   r   r   r   r   r   r$   DEFAULT_SYNTAXr?   r   r   rl   r  r  r   r   r   r   __classcell__r   s   @r   r   r   g  s         H
 
 [
8 8 8 8 8
 &4 0 0 0 [0 $ $ [$  * * *    + + +! ! !  G G G G G G Gr
   r   c                   D    e Zd Zg Zd Zd Zd Zd ZddZd Z	d Z
d	 Zd
S )Clausec                     t                      r   r   r   s     r   rl   zClause.match      !###r
   c                     t                      r   r   r   s     r   __and__zClause.__and__  r  r
   c                     t                      r   r   r   s     r   __or__zClause.__or__  r  r
   c                     t                      r   r   r   s     r   r   zClause.__eq__  r  r
   	c                 x    d                     |                                                               d|          S )z!Pretty-print the clause.
        
r  )ro   _prettyrs   )r   indents     r   prettyprintzClause.prettyprint  s.     yy((00v>>>r
   c              #   ,   K   t          |           V  dS )zvActual pretty-printing logic.

        Yields:
            A list of string. Indentation is performed with 	.
        Nreprr   s    r   r  zClause._pretty  s        4jjr
   c                     | |k     S r   r   r   s     r   r   zClause.__ne__  s    5=  r
   c                     | S r   r   r   s    r   simplifyzClause.simplify      r
   N)r  )r   r   r   r   rl   r  r  r   r  r  r   r   r   r
   r   r  r    s        I$ $ $$ $ $$ $ $$ $ $? ? ? ?
  ! ! !    r
   r  c                   Z     e Zd ZdgZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )AnyOfclausesc                 ~    t          t          |                                            t          |          | _        d S r   )r   r#  r$   	frozensetr$  r   r$  r   s     r   r$   zAnyOf.__init__  2    eT##%%% ))r
   c                 D    t          fd| j        D                       S )Nc              3   B   K   | ]}|                               V  d S r   r   )rc   cru   s     r   re   zAnyOf.match.<locals>.<genexpr>  s/      ::1777##::::::r
   )anyr$  r   s    `r   rl   zAnyOf.match  s(    ::::T\::::::r
   c                 J   t                      }| j        D ]^}|                                }t          |t                    r||j        z  }6|t                      k    rI|                    |           _t          |          dk    r|                                S t	          | S NrU   )	setr$  r   r   r#  r   addrq   popr   
subclausesr   
simplifieds       r   r   zAnyOf.simplify  s    UU
l 	+ 	+F**J*e,, +j00

uww&&z****z??a>>###j!!r
   c                 8    t          t          | j        f          S r   )r   r#  r$  r   s    r   r   zAnyOf.__hash__      UDL)***r
   c                 *    t          | j                  S r   r   r$  r   s    r   r   zAnyOf.__iter__      DL!!!r
   c                 L    t          || j                  o| j        |j        k    S r   r   r   r$  r   s     r   r   zAnyOf.__eq__  "    %00RT\U]5RRr
   c                     t          |t                    r|| z  S t          |t                    st          |t                    rt          | |          S t          S r   r   AllOfMatcherr#  r'   r   s     r   r  zAnyOf.__and__  W    eU## 	"4<w'' 	":eU+C+C 	"u%%%!!r
   c                 &   t          |t                    rt          | j        |j        z            }nWt          |t                    st          |t
                    r&t          | j        t          |g          z            }nt          S t          | S r   )r   r#  r   r$  r@  r?  r/  r'   r   r   r$  s      r   r  zAnyOf.__or__  s}    eU## 	"4<%-788GGw'' 	":eU+C+C 	"4<#ug,,677GG!!gr
   c                 j    dd                     t          d | j        D                                 z  S )Nz	AnyOf(%s)r   c              3   4   K   | ]}t          |          V  d S r   r  rc   r+  s     r   re   z!AnyOf.__repr__.<locals>.<genexpr>  (      -L-L!d1gg-L-L-L-L-L-Lr
   ro   sortedr$  r   s    r   r   zAnyOf.__repr__  2    TYYv-L-Lt|-L-L-L'L'LMMMMr
   c              #      K   dV  | j         D ]G}t          |                                          }|d d         D ]	}d|z   V  
d|d         z   dz   V  HdV  d S )NzAnyOF(r   r  ,r   r$  r   r  r   r   lineslines       r   r  zAnyOf._pretty        l 	) 	)F))**Ecrc
 " "Tk!!!!r"S(((((					r
   r   r   r   r   r$   rl   r   r   r   r   r  r  r   r  r
  r  s   @r   r#  r#    s        I* * * * *; ; ;" " "+ + +" " "S S S" " "  N N N      r
   r#  c                   Z     e Zd ZdgZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )r?  r$  c                 ~    t          t          |                                            t          |          | _        d S r   )r   r?  r$   r&  r$  r'  s     r   r$   zAllOf.__init__  r(  r
   c                 D    t          fd| j        D                       S )Nc              3   B   K   | ]}|                               V  d S r   r   )rc   r   ru   s     r   re   zAllOf.match.<locals>.<genexpr>$  s/      DDV6<<((DDDDDDr
   )allr$  r   s    `r   rl   zAllOf.match#  s(    DDDDt|DDDDDDr
   c                 J   t                      }| j        D ]^}|                                }t          |t                    r||j        z  }6|t                      k    rI|                    |           _t          |          dk    r|                                S t	          | S r.  )	r/  r$  r   r   r?  r   r0  rq   r1  r2  s       r   r   zAllOf.simplify&  s    UU
l 	+ 	+F**J*e,, +j00

vxx''z****z??a>>###j!!r
   c                 8    t          t          | j        f          S r   )r   r?  r$  r   s    r   r   zAllOf.__hash__4  r6  r
   c                 *    t          | j                  S r   r8  r   s    r   r   zAllOf.__iter__7  r9  r
   c                 L    t          || j                  o| j        |j        k    S r   r;  r   s     r   r   zAllOf.__eq__:  r<  r
   c                 &   t          |t                    st          |t                    r&t          | j        t          |g          z            }n9t          |t                    rt          | j        |j        z            }nt          S t          | S r   )r   r@  r#  r   r$  r/  r?  r'   rC  s      r   r  zAllOf.__and__=  s}    eW%% 	"E5)A)A 	"4<#ug,,677GGu%% 	"4<%-788GG!!gr
   c                     t          |t                    r|| z  S t          |t                    rt          | t          |                    S t          |t                    rt          | |          S t          S r   r   r#  r@  r?  r'   r   s     r   r  zAllOf.__or__F  sn    eU## 	"4<w'' 	"uU||,,,u%% 	"u%%%!!r
   c                 j    dd                     t          d | j        D                                 z  S )Nz	AllOf(%s)r   c              3   4   K   | ]}t          |          V  d S r   r  rF  s     r   re   z!AllOf.__repr__.<locals>.<genexpr>Q  rG  r
   rH  r   s    r   r   zAllOf.__repr__P  rJ  r
   c              #      K   dV  | j         D ]G}t          |                                          }|d d         D ]	}d|z   V  
d|d         z   dz   V  HdV  d S )NzAllOF(r   r  rL  r   rM  rN  s       r   r  zAllOf._prettyS  rQ  r
   rR  r  s   @r   r?  r?    s        I* * * * *E E E" " "+ + +" " "S S S  " " "N N N      r
   r?  c                       e Zd Zg Zd Zd ZdS )r@  c                     t          |t                    r|| z  S t          |t                    st          |t                    rt          | |          S t          S r   r>  r   s     r   r  zMatcher.__and__`  rA  r
   c                     t          |t                    r|| z  S t          |t                    st          |t                    rt          | |          S t          S r   r^  r   s     r   r  zMatcher.__or__h  rA  r
   N)r   r   r   r   r  r  r   r
   r   r@  r@  ]  s7        I" " "" " " " "r
   r@  c                   6    e Zd Zg Zd Zd Zd Zd Zd Zd Z	dS )r   c                     dS )NFr   r   s     r   rl   zNever.matcht  s    ur
   c                 ,    t          t          f          S r   )r   r   r   s    r   r   zNever.__hash__w  s    UH~~r
   c                 ,    t          || j                  S r   r   r   s     r   r   zNever.__eq__z  r   r
   c                     | S r   r   r   s     r   r  zNever.__and__}  r!  r
   c                     |S r   r   r   s     r   r  zNever.__or__      r
   c                     dS )NzNever()r   r   s    r   r   zNever.__repr__  s    yr
   N
r   r   r   r   rl   r   r   r  r  r   r   r
   r   r   r   q  ss        I    1 1 1        r
   r   c                   6    e Zd Zg Zd Zd Zd Zd Zd Zd Z	dS )r   c                     dS r)   r   r   s     r   rl   zAlways.match  s    tr
   c                 ,    t          t          f          S r   )r   r   r   s    r   r   zAlways.__hash__  s    VIr
   c                 ,    t          || j                  S r   r   r   s     r   r   zAlways.__eq__  r   r
   c                     |S r   r   r   s     r   r  zAlways.__and__  rk  r
   c                     | S r   r   r   s     r   r  zAlways.__or__  r!  r
   c                     dS )NzAlways()r   r   s    r   r   zAlways.__repr__  s    zr
   Nrm  r   r
   r   r   r     ss        I    1 1 1        r
   r   c                   v     e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZg dZe
ef fd	Zd Zd Zd Zd Zd Z xZS )r   r   r   r   r   r   r   alwaysnaturalz
same-patchimplicitstrict)r   r   prerelease_policybuild_policyc                    t          t          |                                            |j        r%|| j        | j        fvrt          d||d          || _        || _        || _	        |j        r| j
        n|| _        d S )NzInvalid range z!: build numbers have no ordering.)r   r   r$   rF   OP_EQOP_NEQr>   r   r   rz  BUILD_STRICTr{  )r   r   r   rz  r{  r   s        r   r$   zRange.__init__  s    eT##%%%< 	&HTZ,EEE*8VVV%& & & !!217OD--<r
   c                    | j         | j        k    r|                    d          }|j        rC| j                                        |                                k    }| j        | j        k    r|sdS | j        | j        k    ra| j         | j        k    rF| j                            d          |                    d          k    o|j	        | j        j	        k    S || j        k    S | j        | j
        k    r|| j        k    S | j        | j        k    r|| j        k    S | j        | j        k    r_|j        rM| j        | j        k    r=|                                | j                                        k    r| j        j        sdS || j        k     S | j        | j        k    r|| j        k    S | j        | j        k    sJ | j         | j        k    rG| j                            d          |                    d          k    o|j	        | j        j	        k     S |j        rM| j        | j        k    r=|                                | j                                        k    r| j        j        sdS || j        k    S )NrE   F)r{  r  r]   rE   r   rz  PRERELEASE_SAMEPATCHr   r}  rF   OP_GTOP_GTEOP_LTPRERELEASE_NATURALOP_LTEr~  )r   ru   
same_patchs      r   rl   zRange.match  ss    111&&|44G 	--//73C3C3E3EEJ%)BBB:Bu=DJ&& D$555K((66':J:J<:X:XX ;):: dk))]dj((T[((]dk))dk))]dj(("*d.EEE$$&&$+*>*>*@*@@@. A uT[((]dk))dk))=DK//// D$555K((66':J:J<:X:XX ;)::  "*d.EEE$$&&$+*>*>*@*@@@. A udk))r
   c                 P    t          t          | j        | j        | j        f          S r   )r   r   r   r   rz  r   s    r   r   zRange.__hash__  s     UDM4;8NOPPPr
   c                     t          || j                  o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r   )r   r   r   r   rz  r   s     r   r   zRange.__eq__  sP    udn-- B/Bu|+B &%*AA		
r
   c                 "    | j         | j        S r   r   r   r   s    r   r   zRange.__str__  s    44r
   c                     | j         | j        k    rdn	d| j         z  | j        | j        k    rdn	d| j        z  z   }d| j        d| j        |dS )Nri   z, prerelease_policy=%rz, build_policy=%rzRange(r   r   )rz  r  r{  BUILD_IMPLICITr   r   )r   policy_parts     r   r   zRange.__repr__  sn    (D,CCCBB)D,BB#t':::BB$t'88
 MMMKKKK
 	
r
   )r   r   r   r}  r  r  r  r  r~  PRERELEASE_ALWAYSr  r  r  r  r   r$   rl   r   r   r   r   r
  r  s   @r   r   r     s        EEFEFF !"'  NLKKKI;M\j 	P 	P 	P 	P 	P 	P/* /* /*bQ Q Q
 
 
5 5 5
 
 
 
 
 
 
r
   r   c                   B    e Zd ZdZed             Z G d d          ZdS )
SimpleSpecr   c                 6    | j                             |          S r   Parserr?   r   s     r   r   zSimpleSpec._parse_to_clause      z
+++r
   c                       e Zd ZdZ ej        d                    e          ej                  Ze	d             Z
dZdZdZdZd	Zd
ZdZdZdZeedZg dZe	d             ZdS )SimpleSpec.Parserz\*|0|[1-9][0-9]*z^
            (?P<op><|<=||=|==|>=|>|!=|\^|~|~=)
            (?P<major>{nb})(?:\.(?P<minor>{nb})(?:\.(?P<patch>{nb}))?)?
            (?:-(?P<prerel>[a-z0-9A-Z.-]*))?
            (?:\+(?P<build>[a-z0-9A-Z.-]*))?
            $
            )nbc                     |                     d          }t                      }|D ]F}| j                            |          st	          d|z            ||                     |          z  }G|S )NrL  zInvalid simple block %r)rp   r   
NAIVE_SPECrl   r>   parse_block)rO   r   blocksr   blocks        r   r?   zSimpleSpec.Parser.parse!  sw    %%c**FXXF 1 1~++E22 H$%>%FGGG#//%000Mr
   r   r   r   r   r   r   r   r   r   )r   ri   r   xXNc           	      b   | j                             |          st          d|z            | j                             |                                          \  }}}}}}| j                            ||          }|| j        v rd nt          |          }|| j        v rd nt          |          }	|| j        v rd nt          |          }
|5t          ddd          }|| j	        | j
        fvrt          d|z            nl|	t          |dd          }nW|
t          ||	d          }nBt          ||	|
|r|                    d          nd|r|                    d          nd          }||	|
|s|rt          d|z            |"|| j	        | j        fvrt          d|z            || j        k    r|j        r|                                }n0|j        r|                                }n|                                }t'          t&          j        |          t'          t&          j        |          z  S || j        k    rd|J |	|                                }n|                                }t'          t&          j        |          t'          t&          j        |          z  S || j        k    rf|J |	|
|                                }n|                                }t'          t&          j        |          t'          t&          j        |          z  S || j	        k    r|t'          t&          j        |          S |	Gt'          t&          j        |          t'          t&          j        |                                          z  S |
Gt'          t&          j        |          t'          t&          j        |                                          z  S |dk    r&t'          t&          j        |t&          j        	          S t'          t&          j        |          S || j        k    r|J |	Gt'          t&          j        |          t'          t&          j        |                                          z  S |
Gt'          t&          j        |          t'          t&          j        |                                          z  S |dk    r&t'          t&          j        |t&          j        
          S |dk    r&t'          t&          j        |t&          j        	          S t'          t&          j        |          S || j        k    rz|J |	,t'          t&          j        |                                          S |
,t'          t&          j        |                                          S t'          t&          j        |          S || j
        k    rt'          t&          j        |          S || j        k    rJ|J |dk    r&t'          t&          j        |t&          j        
          S t'          t&          j        |          S || j        k    sJ |J |	,t'          t&          j        |                                          S |
,t'          t&          j        |                                          S t'          t&          j         |          S )Nz!Invalid simple spec component: %rr   rB   rC   rD   zInvalid simple spec: %rr_   r   rB   rC   rD   rE   rF   ri   )r{  rz  )!r  rl   r>   r}   PREFIX_ALIASESgetEMPTY_VALUESr"   r5   	PREFIX_EQ
PREFIX_GTErp   
PREFIX_NEQPREFIX_CARETrB   rV   rC   rX   rZ   r   r  r  PREFIX_TILDEPREFIX_COMPATIBLEr}  r  r~  r  	PREFIX_GTr  	PREFIX_LT
PREFIX_LTEr  )rO   exprprefixmajor_tminor_tpatch_tprerelrF   rB   rC   rD   r   highs                r   r  zSimpleSpec.Parser.parse_block=  s.   >''-- M !Dt!KLLL?B~?S?STX?Y?Y?`?`?b?b<FGWgvu'++FF;;F#s'777DDS\\E#s'777DDS\\E#s'777DDS\\E} q;;;#-!@@@$%>%EFFF A uAQ??? uECCC 4:Bv||C000.3;%++c***   %-f-PU- !:T!ABBB VCM3>3R%R%R !:T!ABBB)))< /!,,..DD\ /!,,..DD!,,..DU\622U5;5M5MMM3+++((( =!,,..DD!,,..DU\622U5;5M5MMM3000(((=EM!,,..DD!,,..DU\622U5;5M5MMM3=((= v666] v66u{FL]L]L_L_9`9```] v66u{FL]L]L_L_9`9```b[[ f5CUVVVV f5553>))(((= f55elFL]L]L_L_8`8```] f55elFL]L]L_L_8`8```r\\ vI`aaaab[[ vEDVWWWW v6663=(((((= v/@/@/B/BCCC] v/@/@/B/BCCC f5553>))U\62223=(((((R<< fH_````U[&111 ////(((= f.?.?.A.ABBB] f.?.?.A.ABBB v666r
   N)r   r   r   NUMBERrj   rk   formatVERBOSEr  r   r?   r  r  r  r  r  r  r  r  r  r  r  r  r   r
   r   r  r    s        $RZ ! &!!J
 

 
	 	 
	  	
	
	
 
 

 -,,	y	7 y	7 
y	7 y	7 y	7r
   r  Nr   r   r   r   r   r   r  r   r
   r   r  r    sf         F, , [,b7 b7 b7 b7 b7 b7 b7 b7 b7 b7r
   r  c                   :     e Zd Z fdZed             Zd Z xZS )
LegacySpecc                    t          j        dt          d           t          |          dk    rt          j        dt          d           d                    |          }t          t          |                               |           d S )NzBThe Spec() class will be removed in 3.1; use SimpleSpec() instead.r7   r8   rU   z]Passing 2+ arguments to SimpleSpec will be removed in 3.0; concatenate them with ',' instead.rL  )	r;   r<   PendingDeprecationWarningrq   r=   ro   r   r  r$   )r   expressionsr   r   s      r   r$   zLegacySpec.__init__  s    P%	
 	
 	
 	
 {aMo"   
 XXk**
j$((44444r
   c                      t          |           S r   )r   r   s    r   specszLegacySpec.specs  s    Dzzr
   c              #      K   t          j        dt          d           	 t          | j                  }n# t
          $ r | j        g}Y nw xY w|D ]}t                              |          V  d S )NzLIterating over the components of a SimpleSpec object will be removed in 3.0.r7   r8   )r;   r<   r=   r   r   	TypeErrorr   r   )r   r$  r   s      r   r   zLegacySpec.__iter__  s      Z	
 	
 	
 	

	$4;''GG 	$ 	$ 	${mGGG	$ 	0 	0F''//////	0 	0s   5 A
	A
)r   r   r   r$   r   r  r   r
  r  s   @r   r  r    sb        5 5 5 5 5    X0 0 0 0 0 0 0r
   r  c                   B    e Zd ZdZed             Z G d d          ZdS )NpmSpecnpmc                 6    | j                             |          S r   r  r   s     r   r   zNpmSpec._parse_to_clause  r  r
   c            
       ,   e Zd ZdZdZdZdZ ej        d	                    ee          ej
                  Zed             Zed             Zd	Zd
ZdZdZdZdZdZdeiZeej        eej        eej        eej        eej        iZg dZed             ZdS )NpmSpec.Parserz||z - zx|X|\*|0|[1-9][0-9]*z[a-zA-Z0-9.-]*aQ  
            ^(?:v)?                     # Strip optional initial v
            (?P<op><|<=|>=|>|=|\^|~|)   # Operator, can be empty
            (?P<major>{nb})(?:\.(?P<minor>{nb})(?:\.(?P<patch>{nb}))?)?
            (?:-(?P<prerel>{part}))?    # Optional re-release
            (?:\+(?P<build>{part}))?    # Optional build
            $)r  rd   c                 :    t          ||t           j                  S )Nr  )r   r  )rO   r   r   s      r   rangezNpmSpec.Parser.range  s    6U=WXXXXr
   c                    t                      }|                    | j                  }|D ]}|                                }|sd}g }| j        |v rP|                    | j        d          \  }}|                     d|z             |                     d|z             z   }nq|                    d          }|D ]Y}	| j                            |	          st          d|d|	          |	                    |                     |	                     Zg }
g }|D ]}|j
        j        rd|j        t          j        t          j        fv rk|
                    t          t          j        t%          |j
        j        |j
        j        |j
        j        dz   	          t          j        
                     n}|j        t          j        t          j        fv r^|
                    t          t          j        t%          |j
        j        |j
        j        dd          t          j        
                     |
                    |           |                    |                     |j        |j
                                                             t|                    |           |
r|t5          |
 z  }|t5          | z  }|S )Nz>=0.0.0r7   r   r   r   zInvalid NPM block in r   rU   r  )r   r   rz  r   r   )rB   rC   rD   rE   r  )r   rp   JOINERstripHYPHENparse_simpleNPM_SPEC_BLOCKrl   r>   extendr   rE   r   r   r  r  appendr  r5   rB   rC   rD   r  r  r  r]   r?  )rO   r   resultr}   groupr3  lowr  r  r  prerelease_clausesnon_prerel_clausesr   s                r   r?   zNpmSpec.Parser.parse  s   WWF%%cj11F 45 45 &%E
:&& %CJ : :IC!$!1!1$*!=!=@P@PQUX\Q\@]@]!]JJ #[[--F!' C C"177>> b",*jjjZ_Z_-`"a"aa"))#*:*:5*A*ABBBB%'"%'"( : :F}/ :!?u{EL.III.55e).'.*0-*=*0-*=*0-*=*A(" (" ("
 382I7 7 7     $_el0KKK.55e).'.*0-*=*0-*=*+/1	(" (" (" 382I	7 	7 	7 	 	 	 +11&999*11#))%+_#)=#9#9#;#; 3< 3 3    
 +11&9999% 9e%788F%!344Mr
   r   r   r   r   r   r   r   ri   r  c           	      ,   | j                             |          }|                                \  }}}}}}| j                            ||          }|| j        v rd nt          |          }	|| j        v rd nt          |          }
|| j        v rd nt          |          }||| j        fvrd }|	<t          ddd          }|| j        | j	        fvrt          d|z            | j	        }nl|
t          |	dd          }nW|t          |	|
d          }nBt          |	|
||r|                    d          nd|r|                    d          nd          }|	|
||s|rt          d|z            || j        k    r|j        r'|                                                                }n|j        r'|                                                                }nx|
'|                                                                }nO|'|                                                                }n&|                                                                }|                     t(          j        |          |                     t(          j        |          gS || j        k    ro|	J |
|                                }n|                                }|                     t(          j        |          |                     t(          j        |          gS || j        k    r|	!|                     t(          j        |          gS |
R|                     t(          j        |          |                     t(          j        |                                          gS |R|                     t(          j        |          |                     t(          j        |                                          gS |                     t(          j        |          gS || j        k    r|	J |
3|                     t(          j        |                                          gS |3|                     t(          j        |                                          gS |                     t(          j        |          gS || j	        k    r!|                     t(          j        |          gS || j        k    r%|	J |                     t(          j        |          gS || j        k    sJ |	J |
3|                     t(          j        |                                          gS |3|                     t(          j        |                                          gS |                     t(          j        |          gS )Nr   r  zInvalid expression %rr_   r   r  zInvalid NPM spec: %r)r  rl   r}   r  r  r  r"   r  r5   r  r>   rp   r  rB   r]   rV   rC   rX   rZ   r  r   r  r  r  r}  r  r  r  r  r  )rO   r   rl   r  r  r  r  r  rF   rB   rC   rD   r   r  s                 r   r  zNpmSpec.Parser.parse_simpleN  s2   &,,V44E?D||~~<FGWgvu'++FF;;F#s'777DDS\\E#s'777DDS\\E#s'777DDS\\E VCM?%B%B} q;;;#-!@@@$%<v%EFFF uAQ??? uECCC 4:Bv||C000.3;%++c***   %-f-PU- !7&!@AAA)))< 	:!??,,7799DD\ :!??,,7799DD]!??,,7799DD]!??,,7799DD!??,,7799D		%,775;PT9U9UVV3+++(((=!,,..DD!,,..D		%,775;PT9U9UVV3=((=IIelF;;<<]IIelF;;SYYu{TZTeTeTgTg=h=hii]IIelF;;SYYu{TZTeTeTgTg=h=hiiIIek6::;;3=(((((=IIelF4E4E4G4GHHII]IIelF4E4E4G4GHHIIIIek6::;;3>))		%,77883=(((((		%+v6677 ////(((=IIek63D3D3F3FGGHH]IIek63D3D3F3FGGHHIIelF;;<<r
   N) r   r   r   r  r  r  PARTrj   rk   r  r  r  r   r  r?   r  r  r  r  r  r  r  r  r   r}  r  r  r  r  PREFIX_TO_OPERATORr  r  r   r
   r   r  r    s       ( # % 6--J
 
 
	Y 	Y 
	Y 
9	 9	 
9	v 		
	
 	

 u{u{u{
 -,,	Z	= Z	= 
Z	= Z	= Z	=r
   r  Nr  r   r
   r   r  r    sd        F, , [,A= A= A= A= A= A= A= A= A= A=r
   r  )	functoolsrj   r;   r	   objectr   total_orderingr    r*   r5   r   r   rl   r   r	  r   r  r#  r?  r@  r   r   r   r   r  r  r   r  r   r
   r   <module>r     s  
     				   1 1 1 1 1F 1 1 1 " " " " " " " "2 " " " " "f " " "2iE iE iE iE iEf iE iE iEXU, U, U, U, U,v U, U, U,p, , ,. . .   PG PG PG PG PGv PG PG PGf         V      F< < < < <F < < <~> > > > >F > > >B" " " " "f " " "(    G   ,    W   ,l
 l
 l
 l
 l
G l
 l
 l
^ 
j7 j7 j7 j7 j7 j7 j7 j7Z 0  0  0  0  0  0  0  0F  
H= H= H= H= H=h H= H= H= H= H=r
   