HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/usr/share/dh-python/dhpython/__pycache__/version.cpython-310.pyc
o

O�IbH:�@s�ddlZddlZddlmZddlmZdZe�e�Ze�dej	�Z
e�d�Zda
Gdd�d�ZGd	d
�d
�Zdd�Zd
d�Zddd�Zddd�ZdS)�N)�exists)�	_defaultsz(-)?(\d\.\d+)(?:(-)(\d\.\d+)?)?z�
    (?P<major>\d+)\.?
    (?P<minor>\d+)?\.?
    (?P<micro>\d+)?[.\s]?
    (?P<releaselevel>alpha|beta|candidate|final)?[.\s]?
    (?P<serial>\d+)?�dhpythonc@s�eZdZ		ddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zddd�ZdS) �VersionNc
Cs�t|ttf�rd�dd�|D��}t|t�r&dD]}t||t||��qdSt�}|d=|d=|rSt�	|�}	|	r>|	�
���ngD]\}}|durR||durR|||<q@|��D]\}}|dkrg|durgt|�}t|||�qW|j
durwtd	��dS)
z�Construct a new instance.

        >>> Version(major=0, minor=0, micro=0, releaselevel=0, serial=0)
        Version('0.0')
        >>> Version('0.0')
        Version('0.0')
        �.cs��|]}t|�VqdS�N)�str)�.0�i�r�(/usr/share/dh-python/dhpython/version.py�	<genexpr>3��z#Version.__init__.<locals>.<genexpr>��major�minor�micro�releaselevel�serialN�self�valuerzmajor component is required)�
isinstance�tuple�list�joinr�setattr�getattr�locals�
VERSION_RE�match�	groupdict�items�intr�
ValueError)
rrrrrrr�name�compr rrr
�__init__)s,	

�
�zVersion.__init__cCs(t|j�}|jdur|d�|j�7}|S)z�Return major.minor or major string.

        >>> str(Version(major=3, minor=2, micro=1, releaselevel='final', serial=4))
        '3.2'
        >>> str(Version(major=2))
        '2'
        N�.{})r	rr�format�r�resultrrr
�__str__Gs

zVersion.__str__cCstt|��Sr)�hash�repr�rrrr
�__hash__TszVersion.__hash__cCsBd�|�}dD]}t||�}|s|dS|d�|�7}q|dS)z�Return full version string.

        >>> repr(Version(major=3, minor=2, micro=1, releaselevel='final', serial=4))
        "Version('3.2.1.final.4')"
        >>> repr(Version(major=2))
        "Version('2')"
        zVersion('{})rrrr(z'))r)r)rr+r%rrrr
�__repr__Ws

�zVersion.__repr__cCs>t|�}|jdur|jt|�7_|S|jt|�7_|S)z�Return next version.

        >>> Version('3.1') + 1
        Version('3.2')
        >>> Version('2') + '1'
        Version('3')
        N)rrrr#)r�otherr+rrr
�__add__gs
�zVersion.__add__cCsXt|�}|jdur|jt|�8_|j}n|jt|�8_|j}|dkr*td��|S)z�Return previous version.

        >>> Version('3.1') - 1
        Version('3.0')
        >>> Version('3') - '1'
        Version('2')
        Nrzcannot decrease version further)rrrr#r$)rr2r+�newrrr
�__sub__vs
zVersion.__sub__cCs0zt|�}Wn
tyYdSw|�|�dkS)NFr)r�	Exception�
_Version__cmp�rr2rrr
�__eq__�s�zVersion.__eq__cCs|�|�dkS�Nr�r7r8rrr
�__lt__��zVersion.__lt__cCs|�|�dkSr:r;r8rrr
�__le__�r=zVersion.__le__cCs|�|�dkSr:r;r8rrr
�__gt__�r=zVersion.__gt__cCs|�|�dkSr:r;r8rrr
�__ge__�r=zVersion.__ge__cCsJt|t�s	t|�}|jdus|jdur|j|dd�dkS|j|dd�dkS)akCompare major.minor or major only (if minor is not set).

        >>> Version('2.6') << Version('2.7')
        True
        >>> Version('2.6') << Version('2.6.6')
        False
        >>> Version('3') << Version('2')
        False
        >>> Version('3.1') << Version('2')
        False
        >>> Version('2') << Version('3.2.1.alpha.3')
        True
        Nr��ignorerr�rrrr7r8rrr
�
__lshift__��

zVersion.__lshift__cCsJt|t�s	t|�}|jdus|jdur|j|dd�dkS|j|dd�dkS)aoCompare major.minor or major only (if minor is not set).

        >>> Version('2.6') >> Version('2.7')
        False
        >>> Version('2.6.7') >> Version('2.6.6')
        False
        >>> Version('3') >> Version('2')
        True
        >>> Version('3.1') >> Version('2')
        True
        >>> Version('2.1') >> Version('3.2.1.alpha.3')
        False
        NrrArrrCr8rrr
�
__rshift__�rEzVersion.__rshift__cCs�t|t�s	t|�}dD]<}||krdSt||�pd}t||�p!d}|dkr9ddddd�}|�|d�}|�|d�}||kr>q||k||kSdS)Nrrr���������)�alpha�beta�	candidate�final)rrr�get)rr2rBr%�value1�value2�rmaprrr
�__cmp�s 

�z
Version.__cmp)NNNNNNr)�__name__�
__module__�__qualname__r'r,r0r1r3r5r9r<r>r?r@rDrFr7rrrr
r(s"
�
rc@sFeZdZddd�Zdd�Zdd�Zdd	�Zed
d��Zedd
��Z	dS)�VersionRangeNcCsv|rt|�|_nd|_|rt|�|_nd|_|r5|�|�\}}|r)|jdur)||_|r7|jdur9||_dSdSdSdSr)r�minver�maxver�parse)rrrWrXrrr
r'�s
�zVersionRange.__init__cCs|jdus
|jdurdSdS)NTF)rWrXr/rrr
�__bool__�szVersionRange.__bool__cCsn|jdur
|jurdS|j|jkrt|j�S|jdur$d�|j�S|jdur/d�|j�Sd�|j|j�S)a�Return version range string from given range.

        >>> str(VersionRange(minver='3.4'))
        '3.4-'
        >>> str(VersionRange(minver='3.4', maxver='3.6'))
        '3.4-3.6'
        >>> str(VersionRange(minver='3.4', maxver='4.0'))
        '3.4-4.0'
        >>> str(VersionRange(maxver='3.7'))
        '-3.7'
        >>> str(VersionRange(minver='3.5', maxver='3.5'))
        '3.5'
        >>> str(VersionRange())
        '-'
        N�-z-{}z{}-z{}-{})rWrXr	r)r/rrr
r,�s�


zVersionRange.__str__cCsLd}|jdur|d�|j�7}|jdur|d�|j�7}|�dd�}|dS)z�Return version range string.

        >>> repr(VersionRange('5.0-'))
        "VersionRange(minver='5.0')"
        >>> repr(VersionRange('3.0-3.5'))
        "VersionRange(minver='3.0', maxver='3.5')"
        z
VersionRange(Nzminver='{}'z
, maxver='{}'z(, �(�))rWr)rX�replacer*rrr
r1
s

zVersionRange.__repr__cCs�|dvrdSt�|�}|s$z	t�|�\}}WnIty#td|��w|��}t|��d�dkr;t	|d�}||fSd}}|drH|d}n|d}|d}|rVt	|�nd}|r^t	|�nd}|rn|rn||krntd|��||fS)aYReturn minimum and maximum Python version from given range.

        >>> VersionRange.parse('3.0-')
        (Version('3.0'), None)
        >>> VersionRange.parse('3.1-3.3')
        (Version('3.1'), Version('3.3'))
        >>> VersionRange.parse('3.2-4.0')
        (Version('3.2'), Version('4.0'))
        >>> VersionRange.parse('-3.7')
        (None, Version('3.7'))
        >>> VersionRange.parse('3.2')
        (Version('3.2'), Version('3.2'))
        >>> VersionRange.parse('') == VersionRange.parse('-')
        True
        >>> VersionRange.parse('>= 4.0')
        (Version('4.0'), None)
        )�r[�NNzversion range is invalid: %sN��r)
�RANGE_REr rV�_parse_pycentralr6r$�groupsr�countr)rr �minv�maxvrerrr
rYs.
�
zVersionRange.parsecCs�d}}t�}|�d�D]8}|��}t�d|�}|r"d|�d�}qt�d|�}|r2d|�d�}qt�d|�}|rD|�d|�d��qt|�dkrW|��}t	|�t	|�fS|sa|rat
|�d}|rgt	|�nd|rot	|�fSdfS)	awParse X-Python3-Version.

        >>> VersionRange._parse_pycentral('>= 3.1')
        (Version('3.1'), None)
        >>> VersionRange._parse_pycentral('<< 4.0')
        (None, Version('4.0'))
        >>> VersionRange._parse_pycentral('3.1')
        (Version('3.1'), Version('3.1'))
        >>> VersionRange._parse_pycentral('3.1, 3.2')
        (Version('3.1'), None)
        N�,z>=\s*([\d\.]+)z%.3srbz<<\s*([\d\.]+)z	^[\d\.]+$r)�set�split�strip�rer �group�add�len�popr�sorted)rrgrh�	hardcoded�itemr �verrrr
rdLs,�"zVersionRange._parse_pycentral)NNN)
rSrTrUr'rZr,r1�staticmethodrYrdrrrr
rV�s

1rVcCs4|tjvrtd|��tj|}t|d|dd�S)z<Return default interpreter version for given implementation.�,interpreter implementation not supported: %rrrb�rr)r�DEFAULTr$r)�implrurrr
�defaultws

r{cCs.|tjvrtd|��tj|}dd�|D�S)zGReturn list of supported interpreter versions for given implementation.rwcSs g|]}t|d|dd��qS)rrbrx�r�r
�vrrr
�
<listcomp>�s zsupported.<locals>.<listcomp>)r�	SUPPORTEDr$)rz�versionsrrr
�	supporteds

r�cst|t�r	t|�}|stt|��}n=|jdurtddd�n|j�|jdur+tddd�n|j���krAt�t|�vr<�gnt��}nt��fdd�t|�D��}|dur]t	dur]ddl
m	a	|rqt	|d��t�fd	d�|D��}|S|d
ur�t	|d��t�fdd�|D��}|S)aOReturn a set of requested and supported Python versions.

    :param impl: interpreter implementation
    :param available: if set to `True`, return installed versions only,
        if set to `False`, return requested versions that are not installed.
        By default returns all requested versions.
    :type available: bool

    >>> sorted(get_requested_versions('cpython3', '')) == sorted(supported('cpython3'))
    True
    >>> sorted(get_requested_versions('cpython3', '-')) == sorted(supported('cpython3'))
    True
    >>> get_requested_versions('cpython3', '>= 5.0')
    set()
    Nrrx�cc3s,�|]}�|kr�krnn|VqdSrrr})rhrgrr
r�s�*z)get_requested_versions.<locals>.<genexpr>)�Interpreter)rzc3s"�|]}t��|��r|VqdSr�r�binaryr}��interpreterrr
r����Fc3s"�|]}t��|��s|VqdSrr�r}r�rr
r�r�)rr	rVrjr�rWrrXrr��dhpython.interpreter)rz�vrange�	availabler�r)r�rhrgr
�get_requested_versions�s(

�
r��cpython3cCsLt|�}tdd�|D��}z|�|�Wn
tyY|Sw|�|�|S)aOReturn sorted list of versions in a build friendly order.

    i.e. default version, if among versions, is sorted last.

    >>> build_sorted([(2, 6), (3, 4), default('cpython3'), (3, 6), (2, 7)])[-1] == default('cpython3')
    True
    >>> build_sorted(('3.2', (3, 0), '3.1'))
    [Version('3.0'), Version('3.1'), Version('3.2')]
    csrrr|r}rrr
r�rzbuild_sorted.<locals>.<genexpr>)r{rr�remover$�append)r�rz�default_verr+rrr
�build_sorted�s
�
r�r`)r�)�loggingrm�os.pathrrr�
RANGE_PATTERN�compilerc�VERBOSEr�	getLogger�logr�rrVr{r�r�r�rrrr
�<module>s&
�
1 
.