File: //usr/local/lib/python3.9/site-packages/virtualenv/discovery/__pycache__/py_spec.cpython-39.pyc
a
��h� � @ sB d Z ddlmZ ddlZddlZe�d�ZG dd� d�ZdgZdS )zOA Python specification is an abstract requirement definition of an interpreter.� )�annotationsNzP^(?P<impl>[a-zA-Z]+)?(?P<version>[0-9.]+)?(?P<threaded>t)?(?:-(?P<arch>32|64))?$c @ sx e Zd ZdZdd�dddddddddd � d
d�Zedd�d
d��Zddd�dd�Zedd� �Z dd� Z
dd�dd�ZdS )�
PythonSpecz2Contains specification about a Python Interpreter.N��
free_threaded�strz
str | Nonez
int | Nonezbool | None�None) �str_spec�implementation�major�minor�micro�architecture�pathr �returnc C s4 || _ || _|| _|| _|| _|| _|| _|| _d S �N)r r r
r r r r
r ) �selfr r r
r r r
r r � r �F/usr/local/lib/python3.9/site-packages/virtualenv/discovery/py_spec.py�__init__ s zPythonSpec.__init__)�string_specc
C sb d\}}}}}}}t j�|�r&|}�n$d} t�t|�}
|
�r@dd� }z�|
�� }|d }
|
d u�rtdd� |
�d�D ��}t |�d kr�t
�t |�d kr�|\}}}nVt |�d
kr�|\}}n@t |�dkr�|d }tt|�d �}|d
kr�tt|�dd � �}t
|d �}d} W n t
�y Y n$0 |d }|dv �r4d }||d �}| �sJ|}| ||||||||d�S )N)NNNNNNNFc S s | d u rd S t | �S r ��int)�valr r r �_int_or_none- s z1PythonSpec.from_string_spec.<locals>._int_or_none�versionc s s | ]}|rt |�V qd S r r )�.0�ir r r � <genexpr>4 � z.PythonSpec.from_string_spec.<locals>.<genexpr>�.� � � r � �threadedT�impl> �py�python�archr )�osr �isabs�re�match�PATTERN� groupdict�tuple�split�len�
ValueErrorr r �bool)�clsr r% r
r r r$ r( r �okr, r �groupsr �versionsZversion_datar r r �from_string_spec# sD
zPythonSpec.from_string_specr3 z
re.Pattern)�windowsr c
C s� dj dd� | j| j| jfD �� }| jdu r.dndt�| j�� �}| jrJdnd}|rVd nd}|sh| jdu rld
nd}tjd|� d|� |� d
|� |� d� tj d�S )z>Generate a regular expression for matching against a filename.z{}(\.{}(\.{})?)?c s s | ]}|d u rdn|V qd S )Nz\d+r )r �vr r r r R r z)PythonSpec.generate_re.<locals>.<genexpr>Nr'