HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/share/dh-python/dhpython/__pycache__/version.cpython-39.pyc
a

��:`H:�@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�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zddd�ZdS) �VersionNc
Cs�t|ttf�r"d�dd�|D��}t|t�rLdD]}t||t||��q0dSt�}|d=|d=|r�t�	|�}	|	r||	�
���ngD]$\}}|dur�||dur�|||<q�|��D],\}}|dkr�|dur�t|�}t|||�q�|j
dur�td	��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')
        �.css|]}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�comprrrr�__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�.{})rrr�format�r�resultrrr�__str__Gs

zVersion.__str__cCstt|��Sr)�hash�repr�rrrr�__hash__TszVersion.__hash__cCs<d�|�}dD]$}t||�}|s$q4|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$rrrr�__repr__Ws

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

        >>> Version('3.1') + 1
        Version('3.2')
        >>> Version('2') + '1'
        Version('3')
        N)rrrr")r�otherr*rrr�__add__gs

zVersion.__add__cCsXt|�}|jdur,|jt|�8_|j}n|jt|�8_|j}|dkrTtd��|S)z�Return previous version.

        >>> Version('3.1') - 1
        Version('3.0')
        >>> Version('3') - '1'
        Version('2')
        Nrzcannot decrease version further)rrrr"r#)rr1r*�newrrr�__sub__vs
zVersion.__sub__cCs0zt|�}Wnty YdS0|�|�dkS)NFr)r�	Exception�
_Version__cmp�rr1rrr�__eq__�s
zVersion.__eq__cCs|�|�dkS�Nr�r6r7rrr�__lt__�szVersion.__lt__cCs|�|�dkSr9r:r7rrr�__le__�szVersion.__le__cCs|�|�dkSr9r:r7rrr�__gt__�szVersion.__gt__cCs|�|�dkSr9r:r7rrr�__ge__�szVersion.__ge__cCsNt|t�st|�}|jdus&|jdur8|j|dd�dkS|j|dd�dkSdS)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�rrrr6r7rrr�
__lshift__�s

zVersion.__lshift__cCsNt|t�st|�}|jdus&|jdur8|j|dd�dkS|j|dd�dkSdS)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
        Nrr?rrrAr7rrr�
__rshift__�s

zVersion.__rshift__cCs�t|t�st|�}dD]v}||kr&q�t||�p2d}t||�p@d}|dkrpddddd�}|�|d�}|�|d�}||krzq||k||kSdS)Nrrr���������)ZalphaZbeta�	candidate�final)rrr�get)rr1r@r$Zvalue1Zvalue2ZrmaprrrZ__cmp�s
z
Version.__cmp)NNNNNN)N)�__name__�
__module__�__qualname__r&r+r/r0r2r4r8r;r<r=r>rBrCr6rrrrr(s �

rc@sFeZdZddd�Zdd�Zdd�Zdd	�Zed
d��Zedd
��Z	dS)�VersionRangeNcCsj|rt|�|_nd|_|r&t|�|_nd|_|rf|�|�\}}|rR|jdurR||_|rf|jdurf||_dSr)r�minver�maxver�parse)rrrNrOrrrr&�szVersionRange.__init__cCs|jdus|jdurdSdS)NTF)rNrOr.rrr�__bool__�szVersionRange.__bool__cCsv|jdur|jur nndS|j|jkr6t|j�S|jdurLd�|j�S|jdurbd�|j�Sd�|j|j�SdS)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{}-{})rNrOrr(r.rrrr+�s


zVersionRange.__str__cCsLd}|jdur|d�|j�7}|jdur8|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(, �(�))rNr(rO�replacer)rrrr0
s

zVersionRange.__repr__cCs�|dvrdSt�|�}|sNzt�|�\}}Wq�tyJtd|��Yq�0nx|��}t|��d�dkr|t	|d�}||fSd}}|dr�|d}n|d}|d}|r�t	|�nd}|r�t	|�nd}|r�|r�||kr�td|��||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)
        )�rR)NNzversion range is invalid: %sN��r)
�RANGE_RErrM�_parse_pycentralr5r#�groupsr�countr)rr�minv�maxvr[rrrrPs,

zVersionRange.parsecCs�d}}t�}|�d�D]p}|��}t�d|�}|rDd|�d�}qt�d|�}|rdd|�d�}qt�d|�}|r|�d|�d��qt|�dkr�|��}t	|�t	|�fS|s�|r�t
|�d}|r�t	|�nd|r�t	|�ndfS)	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%.3srXz<<\s*([\d\.]+)z	^[\d\.]+$r)�set�split�strip�rer�group�add�len�popr�sorted)rr]r^Z	hardcoded�itemr�verrrrrZLs*zVersionRange._parse_pycentral)NNN)
rJrKrLr&rQr+r0�staticmethodrPrZrrrrrM�s

1rMcCs4|tjvrtd|��tj|}t|d|dd�S)z<Return default interpreter version for given implementation.�,interpreter implementation not supported: %rrrX�rr)rZDEFAULTr#r)�implrjrrr�defaultws

rocCs.|tjvrtd|��tj|}dd�|D�S)zGReturn list of supported interpreter versions for given implementation.rlcSs g|]}t|d|dd��qS)rrXrm�r�r	�vrrr�
<listcomp>�rzsupported.<locals>.<listcomp>)rZ	SUPPORTEDr#)rn�versionsrrr�	supporteds

rucst|t�rt|�}|s$tt|��}nz|jdur:tddd�n|j�|jdurVtddd�n|j���kr�t�t|�vrx�gnt��}nt��fdd�t|�D��}|dur�t	dur�ddl
m	a	|r�t	|d��t�fd	d�|D��}n*|d
u�r
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()
    Nrrm�cc3s*|]"}�|kr�krnq|VqdSrrrq)r^r]rrr
�rz)get_requested_versions.<locals>.<genexpr>)�Interpreter)rnc3s |]}t��|��r|VqdSr�rZbinaryrq��interpreterrrr
�s�Fc3s |]}t��|��s|VqdSrrxrqryrrr
�s�)rrrMr`rurNrrOrrwZdhpython.interpreter)rnZvrangeZ	availablertr)rzr^r]r�get_requested_versions�s&



r{�cpython3cCsJt|�}tdd�|D��}z|�|�Wnty:Yn0|�|�|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')]
    css|]}t|�VqdSrrprqrrrr
�rzbuild_sorted.<locals>.<genexpr>)rorh�remover#�append)rtrnZdefault_verr*rrr�build_sorted�s

r)NN)r|)Zloggingrc�os.pathrrrZ
RANGE_PATTERN�compilerY�VERBOSErZ	getLogger�logrwrrMrorur{rrrrr�<module>s$
�
1 
.