
    wi                        d Z ddlmZ ddlZddlZddlZ G d d          Z G d d          Z G d d	          Zg d
Z	dS )zKVersion specifier support using only standard library (PEP 440 compatible).    )annotationsNc                  P    e Zd ZdZddZd Zd Zd	 Zd
 Zd Z	d Z
d Zd Zd ZdS )SimpleVersionz?Simple PEP 440-like version parser using only standard library.version_strstrreturnNonec                   || _         t          j        d|                                          }|sd| }t	          |          t          |                    d                    | _        |                    d          r"t          |                    d                    nd| _        |                    d          r"t          |                    d                    nd| _	        |                    d          | _
        |                    d          r"t          |                    d                    nd | _        | j        | j        | j	        f| _        d S )	Nz1^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:(a|b|rc)(\d+))?$zInvalid version:       r            )r   rematchstrip
ValueErrorintgroupmajorminormicropre_typepre_numrelease)selfr   r   msgs       i/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/virtualenv/util/specifier.py__init__zSimpleVersion.__init__   s   & @
 
  	"3k33CS//!Q((
,1KKNNASQ(((
,1KKNNASQ(((
A.3kk!nnFs5;;q>>***$
DJ
;    c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S N)
isinstancer   NotImplementedr   r   r   r   others     r   __eq__zSimpleVersion.__eq__    sI    %// 	"!!|u},r%.1PrUYUaejerUrrr    c                D    t          | j        | j        | j        f          S r"   )hashr   r   r   r   s    r   __hash__zSimpleVersion.__hash__%   s    T\4=$,?@@@r    c                    t          |t                    st          S | j        |j        k    r| j        |j        k     S |                     |          S r"   )r#   r   r$   r   _compare_prereleaser%   s     r   __lt__zSimpleVersion.__lt__(   sL    %// 	"!!<5=((<%-//''...r    c                    | j         	|j         dS | j         dS |j         dS dddd}|| j                  ||j                  k    r|| j                  ||j                  k     S | j        pd|j        pdk     S )	zCompare pre-release versions.NFTr   r   r   )abrcr   )r   r   )r   r&   	pre_orders      r   r-   z!SimpleVersion._compare_prerelease0   s     = U^%;5= 5>!4!1--	T]#y'@@@T]+i.GGG!em&8q99r    c                    | |k    p| |k     S r"    r%   s     r   __le__zSimpleVersion.__le__@   s    u},u,r    c                H    t          |t                    st          S | |k     S r"   )r#   r   r$   r%   s     r   __gt__zSimpleVersion.__gt__C   s'    %// 	"!!5=  r    c                    | |k      S r"   r5   r%   s     r   __ge__zSimpleVersion.__ge__H   s    %<r    c                    | j         S r"   r   r*   s    r   __str__zSimpleVersion.__str__K   s    r    c                    d| j          dS )NzSimpleVersion('')r<   r*   s    r   __repr__zSimpleVersion.__repr__N   s    5!15555r    N)r   r   r   r	   )__name__
__module____qualname____doc__r   r'   r+   r.   r-   r6   r8   r:   r=   r@   r5   r    r   r   r   
   s        II< < < <&s s s
A A A/ / /: : : - - -! ! !
          6 6 6 6 6r    r   c                  P    e Zd ZdZdZddZdd
Zd Zd Zd Z	d Z
d Zd Zd ZdS )SimpleSpecifierzBSimple PEP 440-like version specifier using only standard library.)is_wildcardoperatorspec_strversionr   wildcard_precisionwildcard_versionrI   r   r   r	   c                   |                                 | _        t          j        d| j                  }|sd| }t	          |          |                    d          | _        |                    d                                           | _        | j                            d          rTd| _	        | j        d d         | _
        t          | j
                            d                    | _        | j
        | _        nd	| _	        d | _        	 t          | j                  | _        d S # t          $ r d | _        Y d S w xY w)
Nz!^(===|==|~=|!=|<=|>=|<|>)\s*(.+)$zInvalid specifier: r   r   z.*T.F)r   rI   r   r   r   r   rH   r   endswithrG   rL   lensplitrK   r   rJ   )r   rI   r   r   s       r   r   zSimpleSpecifier.__init___   s0    ((=t}MM 	"222CS//!A ;;q>>//11 $$T** 	+#D$($4SbS$9D!&)$*?*E*Ec*J*J&K&KD##4D$D&*D#	 ()9::DLLL 	  	  	 DLLLL	 s   D( (D=<D=r   boolc                    	 t          |t                    rt          |          n|}n# t          $ r Y dS w xY w| j        dS | j        r|                     |          S |                     |          S )z3Check if a version string satisfies this specifier.F)r#   r   r   r   rJ   rG   _check_wildcard_check_standard)r   r   	candidates      r   containszSimpleSpecifier.contains{   s    	6@c6R6Rck222XcII 	 	 	55	 <5 	3''	222##I...s   &) 
77c                    | j         dk    r/|j        d| j                 | j        j        d| j                 k    S | j         dk    r/|j        d| j                 | j        j        d| j                 k    S dS )z Check wildcard version matching.==N!=F)rH   r   rK   rJ   )r   rW   s     r   rU   zSimpleSpecifier._check_wildcard   s    =D  $%>t'>%>?4<CWXqZ^ZqXqCrrr=D  $%>t'>%>?4<CWXqZ^ZqXqCrrrur    c                z   | j         dk    r%t          |          t          | j                  k    S | j         dk    r|                     |          S t           j        t           j        t           j        t           j        t           j        t           j	        d}| j         |v r || j                  || j                  S dS )z#Check standard version comparisons.z===z~=)rZ   r[   <z<=>z>=F)
rH   r   rJ   _check_compatible_releaseeqneltlegtge)r   rW   cmp_opss      r   rV   zSimpleSpecifier._check_standard   s    =E!!y>>S%6%666=D  11)<<< ++++
 
 =G##)74=))T\BBBur    c                    || j         k     rdS t          | j         j                  dk    rct          | j         j        dd                   }|dxx         dz  cc<   t	          d                    d |D                                 }||k     S dS )	z&Check compatible release version (~=).Fr   Nr   rO   c              3  4   K   | ]}t          |          V  d S r"   )r   ).0ps     r   	<genexpr>z<SimpleSpecifier._check_compatible_release.<locals>.<genexpr>   s(      *G*Ga3q66*G*G*G*G*G*Gr    T)rJ   rQ   r   listr   join)r   rW   upper_partsuppers       r   r_   z)SimpleSpecifier._check_compatible_release   s    t|##5t|#$$))t|3CRC899KOOOq OOO!#((*G*G;*G*G*G"G"GHHEu$$tr    c                Z    t          |t                    st          S | j        |j        k    S r"   )r#   rF   r$   rI   r%   s     r   r'   zSimpleSpecifier.__eq__   s)    %11 	"!!}..r    c                *    t          | j                  S r"   )r)   rI   r*   s    r   r+   zSimpleSpecifier.__hash__   s    DM"""r    c                    | j         S r"   rI   r*   s    r   r=   zSimpleSpecifier.__str__   s
    }r    c                    d| j          dS )NzSimpleSpecifier('r?   rt   r*   s    r   r@   zSimpleSpecifier.__repr__   s    44=4444r    N)rI   r   r   r	   r   r   r   rS   )rA   rB   rC   rD   	__slots__r   rX   rU   rV   r_   r'   r+   r=   r@   r5   r    r   rF   rF   R   s        LLI       8/ / / /    &	 	 	/ / /
# # #  5 5 5 5 5r    rF   c                  F    e Zd ZdZdZdddZddZd Zd Zd Z	d Z
d ZdS )SimpleSpecifierSetz>Simple PEP 440-like specifier set using only standard library.)
specifiersspecifiers_str r{   r   r   r	   c                n   |                                 | _        g | _        | j        r| j                            d          D ]r}|                                 }|rXt	          j        t                    5  | j                            t          |                     d d d            n# 1 swxY w Y   qd S d S )N,)	r   r{   rz   rR   
contextlibsuppressr   appendrF   )r   r{   	spec_itemstrippeds       r   r   zSimpleSpecifierSet.__init__   s   ,2244 	J!066s;; J J	$??,, J#,Z88 J J..x/H/HIIIJ J J J J J J J J J J J J J J	J 	JJ Js   3(B''B+	.B+	r   rS   c                V    | j         sdS t          fd| j         D                       S )z7Check if a version satisfies all specifiers in the set.Tc              3  B   K   | ]}|                               V  d S r"   )rX   )rj   specr   s     r   rl   z.SimpleSpecifierSet.contains.<locals>.<genexpr>   s/      JJ$4==--JJJJJJr    )rz   all)r   r   s    `r   rX   zSimpleSpecifierSet.contains   s7     	4JJJJ$/JJJJJJr    c                *    t          | j                  S r"   )iterrz   r*   s    r   __iter__zSimpleSpecifierSet.__iter__   s    DO$$$r    c                Z    t          |t                    st          S | j        |j        k    S r"   )r#   ry   r$   r{   r%   s     r   r'   zSimpleSpecifierSet.__eq__   s,    %!344 	"!!"e&:::r    c                *    t          | j                  S r"   )r)   r{   r*   s    r   r+   zSimpleSpecifierSet.__hash__   s    D'(((r    c                    | j         S r"   r{   r*   s    r   r=   zSimpleSpecifierSet.__str__   s    ""r    c                    d| j          dS )NzSimpleSpecifierSet('r?   r   r*   s    r   r@   zSimpleSpecifierSet.__repr__   s    =d&9====r    N)r|   )r{   r   r   r	   rv   )rA   rB   rC   rD   rw   r   rX   r   r'   r+   r=   r@   r5   r    r   ry   ry      s        HH0I
J 
J 
J 
J 
JK K K K% % %; ; ;
) ) )# # #> > > > >r    ry   )rF   ry   r   )
rD   
__future__r   r   rH   r   r   rF   ry   __all__r5   r    r   <module>r      s    Q Q " " " " " "      				E6 E6 E6 E6 E6 E6 E6 E6Pj5 j5 j5 j5 j5 j5 j5 j5Z'> '> '> '> '> '> '> '>T  r    