<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    a                 @   sx   d Z ddlmZmZ ddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ edZejdkZG d	d
 d
eZdS )zMA Python specification is an abstract requirement definition of a interpreter    )absolute_importunicode_literalsN)OrderedDict)fs_is_case_sensitive)
ensure_strz@^(?P<impl>[a-zA-Z]+)?(?P<version>[0-9.]+)?(?:-(?P<arch>32|64))?$win32c               @   sP   e Zd ZdZdd Zedd Zdd Zedd	 Z	d
d Z
dd Zdd ZdS )
PythonSpecz1Contains specification about a Python Interpreterc             C   s.   || _ || _|| _|| _|| _|| _|| _d S )N)str_specimplementationmajorminormicroarchitecturepath)selfr	   r
   r   r   r   r   r    r   M/opt/alt/python37/lib/python3.7/site-packages/virtualenv/discovery/py_spec.py__init__   s    zPythonSpec.__init__c             C   sZ  d\}}}}}}t j|r$|}n"d}tt|}	|	r<dd }
y|	 }|d }|d k	rtdd |dD }t	|d	krt
t	|d	kr|\}}}nVt	|d
kr|\}}n@t	|dkr|d }tt|d }|dkrtt|dd  }d}W n t
k
r   Y n.X |d }|dks,|dkr0d}|
|d }|sF|}| |||||||S )N)NNNNNNFc             S   s   | d krd S t | S )N)int)valr   r   r   _int_or_none&   s    z1PythonSpec.from_string_spec.<locals>._int_or_noneversionc             s   s   | ]}|rt |V  qd S )N)r   ).0ir   r   r   	<genexpr>-   s    z.PythonSpec.from_string_spec.<locals>.<genexpr>.         r   	   TimplpypythonCPythonarch)osr   isabsrematchPATTERN	groupdicttuplesplitlen
ValueErrorr   str)clsZstring_specr    r   r   r   r$   r   okr(   r   groupsr   ZversionsZversion_datar   r   r   from_string_spec   sB    
zPythonSpec.from_string_specc          	   c   s   t  }| jr8d|| j< t r8d|| j < d|| j < d|d< | j| j| jf}y|d |d  }W n t	k
rz   Y nX x`|
 D ]T\}}xJtt|ddD ]6}|d| }d|ddd	 |D }||fV  qW qW d S )
NFTr"   r   z{}{}r   c             s   s   | ]}t |V  qd S )N)r/   )r   r   r   r   r   r   Z   s    z,PythonSpec.generate_names.<locals>.<genexpr>)r   r
   r   lowerupperr   r   r   indexr.   itemsranger-   formatjoin)r   Zimplsr   r    r(   ZatZcur_verspecr   r   r   generate_namesG   s"    
zPythonSpec.generate_namesc             C   s   | j d k	otj | j S )N)r   r%   r&   )r   r   r   r   is_abs]   s    zPythonSpec.is_absc             C   s   |j r| j r| j|jkrdS |jdk	r>|j | j kr>dS |jdk	rX|j| jkrXdS xJt| j| j| jf|j|j|jfD ]$\}}|dk	r||dk	r|||kr|dS q|W dS )z\called when there's a candidate metadata spec to see if compatible - e.g. PEP-514 on WindowsFNT)	r>   r   r
   r5   r   zipr   r   r   )r   r<   Zourreqr   r   r   	satisfiesa   s    ,zPythonSpec.satisfiesc                s&   d t jd fdddD S )Nz{}({})z, c             3   s.   | ]&}t  |d k	rd|t  |V  qd S )Nz{}={})getattrr:   )r   k)r   r   r   r   s   s   z)PythonSpec.__unicode__.<locals>.<genexpr>)r
   r   r   r   r   r   )r:   type__name__r;   )r   r   )r   r   __unicode__o   s
    
zPythonSpec.__unicode__c             C   s   t |  S )N)r   rF   )r   r   r   r   __repr__y   s    zPythonSpec.__repr__N)rE   
__module____qualname____doc__r   classmethodr3   r=   propertyr>   rA   rF   rG   r   r   r   r   r      s   	+
r   )rJ   
__future__r   r   r%   r'   syscollectionsr   Zvirtualenv.infor   Zvirtualenv.util.sixr   compiler)   platformZIS_WINobjectr   r   r   r   r   <module>   s   

