
    wi                        d Z ddlmZ ddlZddlZddlZddlmZmZ  ej	        d          Z
 ej	        d          Z G d d          ZeZeZeZeZg d	ZdS )
zOA Python specification is an abstract requirement definition of an interpreter.    )annotationsN)SimpleSpecifierSetSimpleVersionzP^(?P<impl>[a-zA-Z]+)?(?P<version>[0-9.]+)?(?P<threaded>t)?(?:-(?P<arch>32|64))?$zC^(?:(?P<impl>[A-Za-z]+)\s*)?(?P<spec>(?:===|==|~=|!=|<=|>=|<|>).+)$c                      e Zd ZdZdddd dZed!d            Zd"dZed             Z	d Z
ed             Zd Zd#dZdS )$
PythonSpecz2Contains specification about a Python Interpreter.Nfree_threadedversion_specifierstr_specstrimplementation
str | Nonemajor
int | Noneminormicroarchitecturepathr	   bool | Noner
   SpecifierSet | NonereturnNonec                   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S N)	r   r   r   r   r   r	   r   r   r
   )
selfr   r   r   r   r   r   r   r	   r
   s
             l/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/virtualenv/discovery/py_spec.py__init__zPythonSpec.__init__   sM     !,


*(	!2    string_specc                   d\  }}}}}}}d }	t           j                            |          r|}nd}
t          j        t
          |          }|rId }	 |                                }|d         }|t          d |                    d          D                       }t          |          dk    rt          t          |          dk    r|\  }}}nt          |          dk    r|\  }}ngt          |          d	k    rT|d
         }t          t          |          d
                   }|dk    r$t          t          |          d	d                    }t          |d                   }d}
|d         }|dv rd } ||d                   }n# t          $ r Y nw xY w|
st                              |                                          }|r}t           v|                    d          }|                    d                                          }	 t!          |          }	|dv rd } | ||d d d d d d |		  	        S # t$          $ r Y nw xY w|} | |||||||||		  	        S )N)NNNNNNNFc                (    | d nt          |           S r   int)vals    r   _int_or_nonez1PythonSpec.from_string_spec.<locals>._int_or_none4   s    #&;44CHH<r   versionc              3  8   K   | ]}|t          |          V  d S r   r"   ).0is     r   	<genexpr>z.PythonSpec.from_string_spec.<locals>.<genexpr>;   s-      (Q(QAq(QQ(Q(Q(Q(Q(Q(Qr   .         r   	   threadedTimpl>   pypythonarchspecr   )osr   isabsrematchPATTERN	groupdicttuplesplitlen
ValueErrorr#   r   boolSPECIFIER_PATTERNstripSpecifierSetgroupInvalidSpecifier)clsr   r1   r   r   r   r0   r4   r   r
   okr9   r%   groupsr&   versionsversion_dataspecifier_match	spec_texts                      r   from_string_speczPythonSpec.from_string_spec)   s   :b7eUE8T4 7==%% ;	#DDBHWk22E 8= = =8"__..F$Y/G*#((Q(Qs9K9K(Q(Q(Q#Q#Qx==1,,",,x==A--2:/E5%% ]]a//+3LE55 ]]a//+3A;L$'L(9(9!(<$=$=E+a//(+C,=,=abb,A(B(B#'z(:#;#;B "&>D///#'<v77DD "   D  #"3"9"9+:K:K:M:M"N"N" |'?*0088D / 5 5f = = C C E EI,8,C,C)  #333#'D"s'      *..?
  
  
  
 ,     #s"/

 

 

 
	
s%   DF 
FFH5 5
IIwindowsr@   
re.Patternc               0    dj         d | j        | j        | j        fD              }| j        dndt          j        | j                   }| j        rdnd}|rdnd}|s| j        d	nd}t          j        d
| d| | d| | d	t
          j	                  S )z>Generate a regular expression for matching against a filename.z{}(\.{}(\.{})?)?c              3  "   K   | ]
}|dn|V  d S )Nz\d+ )r(   vs     r   r*   z)PythonSpec.generate_re.<locals>.<genexpr>y   s*      WWQ	ffqWWWWWWr   Nr3   zpython|zt? z\.exe?z	(?P<impl>z)(?P<v>)$)flags)
formatr   r   r   r   r8   escaper	   compile
IGNORECASE)r   rN   r&   r1   modsuffixversion_conditionals          r   generate_rezPythonSpec.generate_rev   s    ,%,WW4:tz4:2VWWW
  .6xx<fbiPTPcFdFd<f<f(0ddb$,"  z!	 C
  	 zSSSgSsSS5HS&SSS-
 
 
 	
r   c                \    | j         d uo#t          j                             | j                   S r   )r   r6   r7   )r   s    r   is_abszPythonSpec.is_abs   s$    y$Aty)A)AAr   c                   g }| j         | j        | j        fD ]}| n|                    |           |sdS d                    d |D                       }t          j        t                    5  t          |           |j	        D ]P}| 
                    |          }|t          |          |k     r-|                    |          s ddd           dS Q	 ddd           n# 1 swxY w Y   dS )z(Check if version specifier is satisfied.NTr+   c              3  4   K   | ]}t          |          V  d S r   )r   )r(   parts     r   r*   z6PythonSpec._check_version_specifier.<locals>.<genexpr>   s(      @@Ts4yy@@@@@@r   F)r   r   r   appendjoin
contextlibsuppressInvalidVersionVersionr
   _get_required_precisionr>   contains)r   r5   
componentsre   version_stritemrequired_precisions          r   _check_version_specifierz#PythonSpec._check_version_specifier   su    "
ZTZ8 	$ 	$D|d#### 	4hh@@Z@@@@@ 00 	! 	!K   . ! !%)%A%A$%G%G"%-ZCU1U1U}}[11 ! 	! 	! 	! 	! 	! 	! 	! 	!!!	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ts   /AC$C$$C(+C(c                    t          j        t          t                    5  t	          | j        j                  cddd           S # 1 swxY w Y   dS )z0Get the required precision for a specifier item.N)rh   ri   AttributeErrorr?   r>   r&   release)rp   s    r   rl   z"PythonSpec._get_required_precision   s      << 	- 	-t|+,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-ts   AA
A
c                   |j         r| j         r| j        |j        k    rdS |j        6|j                                        | j                                        k    rdS |j        |j        | j        k    rdS |j        |j        | j        k    rdS |j        |                     |          sdS t          | j	        | j
        | j        f|j	        |j
        |j        f          D ]\  }}||	||k    r dS dS )z]Called when there's a candidate metadata spec to see if compatible - e.g. PEP-514 on Windows.FNT)rb   r   r   lowerr   r	   r
   rr   zipr   r   r   )r   r5   ourreqs       r   	satisfieszPythonSpec.satisfies   s   ; 	4; 	49	+A+A5*t/B/H/H/J/JdNaNgNgNiNi/i/i5(T->$BS-S-S5)d.@DDV.V.V5!-d6S6STX6Y6Y-5TZTZ@4:tz[_[eBfgg 	 	HC3?sczzuutr   c                ~     t                     j        }d}| dd                     fd|D                        dS )N)r   r   r   r   r   r   r	   r
   (z, c              3  b   K   | ])}t          |          | dt          |           V  *d S )N=)getattr)r(   kr   s     r   r*   z&PythonSpec.__repr__.<locals>.<genexpr>   sM      "m"mPWX\^_P`P`Pla#<#<'$*:*:#<#<PlPlPlPl"m"mr   rV   )type__name__rg   )r   nameparamss   `  r   __repr__zPythonSpec.__repr__   sR    Dzz"	
 pp"m"m"m"mf"m"m"mmmppppr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r
   r   r   r   )r   r   )rN   r@   r   rO   )r   r   )r   
__module____qualname____doc__r   classmethodrM   r`   propertyrb   rr   staticmethodrl   r{   r   rR   r   r   r   r      s        << &*153 3 3 3 3 3. J
 J
 J
 [J
X
 
 
 
, B B XB  ,   \  &q q q q q qr   r   )rE   rj   r   rC   rk   )r   
__future__r   rh   r6   r8   virtualenv.util.specifierr   r   r[   r:   rA   r   rC   rk   r?   rE   rj   __all__rR   r   r   <module>r      s    U U " " " " " "     				 				 G G G G G G G G
"*h
i
iBJeff }q }q }q }q }q }q }q }qB "
   r   