%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/share/python3/debpython/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/share/python3/debpython/__pycache__/version.cpython-35.pyc



Nw�V�7�@sddlZddlZddlmZddlmZddlmZddlm	Z	dZ
eje
�Zejdej
�Zeje�Zejd�Zejd	�Zes�ere�Zejd
�es�ejdd�d
d�Zesejdd�jdd�Zy&edd�ejd�D��ZWnek
r`ejd�YnXy&edd�ejd�D��ZWnek
r�ejd�YnXGdd�d�Zdddd�Zdd�Z dd�Z!dd �Z"d!d"�Z#d#d$�Z$dd%d&�Z%dS)'�N)�environ)�exists)�ConfigParser)�
GeneratorTypez(-)?(\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+)?ZDEBPYTHON3_SUPPORTEDZDEBPYTHON3_DEFAULTz"/usr/share/python3/debian_defaults�DEFAULTzdefault-version�zsupported-versions�python�ccs|]}t|�VqdS)N)�int)�.0�i�r
�'/usr/share/python3/debpython/version.py�	<genexpr>5sr�.zcannot read debian_defaultsccs7|]-}tdd�|j�jd�D��VqdS)css|]}t|�VqdS)N)r
)r�jr
r
rr9sz<genexpr>.<genexpr>rN)�tuple�strip�split)rrr
r
rr9s�,c@s�eZdZdddddddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zddd�ZdS)�VersionNc
CsYt|ttf�r1djdd�|D��}t|t�rnx'dD]}t||t||��qGWdSt�}|d	=|d
=|r�tj	|�}	xR|	r�|	j
�j�ngD]2\}}|dk	r�||dkr�|||<q�WxN|j�D]@\}}|dkr,|dk	r,t|�}t|||�q�W|j
sUtd��dS)
Nrcss|]}t|�VqdS)N)�str)rrr
r
rrCsz#Version.__init__.<locals>.<genexpr>�major�minor�micro�releaselevel�serial�self�valuezmajor component is required)zmajorzminorzmicrozreleaselevelzserial)�
isinstancer�list�joinr�setattr�getattr�locals�
VERSION_RE�match�	groupdict�itemsr
r�
ValueError)
rrrrrrr�name�compr&r
r
r�__init__@s(
	+	zVersion.__init__cCs8t|j�}|jdk	r4|dj|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'
        Nz.{})rrr�format)r�resultr
r
r�__str__WszVersion.__str__cCstt|��S)N)�hash�repr)rr
r
r�__hash__dszVersion.__hash__cCsQdj|�}x7dD]/}t||�}|s2P|dj|�7}qW|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('{}rrrz.{}z'))zmicrozreleaselevelzserial)r-r#)rr.r*rr
r
r�__repr__gs
zVersion.__repr__cCsLt|�}|jdkr3|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.r
r
r�__add__ws
zVersion.__add__cCsvt|�}|jdkr<|jt|�8_|j}n|jt|�8_|j}|dkrrtd��|S)z�Return previous version.

        >>> Version('3.1') - 1
        Version('3.0')
        >>> Version('3') - '1'
        Version('2')
        Nrzcannot decrease version further)rrrr
r))rr4r.�newr
r
r�__sub__�s	zVersion.__sub__cCs|j|�dkS)Nr)�
_Version__cmp)rr4r
r
r�__eq__�szVersion.__eq__cCs|j|�dkS)Nr)r8)rr4r
r
r�__lt__�szVersion.__lt__cCs|j|�dkS)Nr)r8)rr4r
r
r�__le__�szVersion.__le__cCs|j|�dkS)Nr)r8)rr4r
r
r�__gt__�szVersion.__gt__cCs|j|�dkS)Nr)r8)rr4r
r
r�__ge__�szVersion.__ge__cCsot|t�st|�}|jdks9|jdkrR|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
        N�ignorerrr)rrrr8)rr4r
r
r�
__lshift__�s
zVersion.__lshift__cCsot|t�st|�}|jdks9|jdkrR|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
        Nr>rrr)rrrr8)rr4r
r
r�
__rshift__�s
zVersion.__rshift__c	Cs�t|t�st|�}x�dD]�}||kr5Pt||�pGd}t||�p\d}|dkr�ddd	dddd
di}|j|d�}|j|d�}||kr�q"||k||kSWdS)NrrrrrrZalpha�Zbeta��	candidate��final)zmajorzminorzmicrozreleaselevelzserial���������)rrr#�get)rr4r>r*Zvalue1Zvalue2Zrmapr
r
rZ__cmp�s
z
Version.__cmp)�__name__�
__module__�__qualname__r,r/r2r3r5r7r9r:r;r<r=r?r@r8r
r
r
rr?s
rcs)t|t�rt|�}|s:t|�ddgkrItt�}n�|ddkr_d
n|d�|ddkrdn|d���kr�t�tkr��fnt��}n"t��fdd�tD��}|rtdd�|D��}n%|dkr%td	d�|D��}|S)aJReturn a set of requested and supported Python versions.

    :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([(3, 0), None]))
    [(3, 2), (3, 3)]
    >>> sorted(get_requested_versions('')) == sorted(SUPPORTED)
    True
    >>> sorted(get_requested_versions([None, None])) == sorted(SUPPORTED)
    True
    >>> get_requested_versions([(5, 0), None]) == set()
    True
    NrrD�cc3s1|]'}�|ko �knr|VqdS)Nr
)r�v)�maxv�minvr
rrsz)get_requested_versions.<locals>.<genexpr>css%|]}td|�r|VqdS)z/usr/bin/python%d.%dN)r)rrNr
r
rrsFcss%|]}td|�s|VqdS)z/usr/bin/python%d.%dN)r)rrNr
r
rrs)rr)rMrM)rr�parse_vranger �set�	SUPPORTEDr)�vrange�	available�versionsr
)rOrPr�get_requested_versions�s  '"rWcCsO|d
krdStj|�}|s5td|��|j�}t|�jd�dkr�tdd�|djd	�D��}||fSd}}|d
r�|d}n|d}|d}|r�tdd�|jd	�D��nd}|rtdd�|jd	�D��nd}|rE|rE||krEtd|��||fS)a�Return minimum and maximum Python version from given range.

    >>> parse_vrange('3.0-')
    ((3, 0), None)
    >>> parse_vrange('3.1-3.3')
    ((3, 1), (3, 3))
    >>> parse_vrange('3.2-4.0')
    ((3, 2), (4, 0))
    >>> parse_vrange('-3.7')
    (None, (3, 7))
    >>> parse_vrange('3.2')
    ((3, 2), (3, 2))
    >>> parse_vrange('') == parse_vrange('-') == (None, None)
    True
    r	�-Nzversion range is invalid: %srAcss|]}t|�VqdS)N)r
)rrr
r
rr%szparse_vrange.<locals>.<genexpr>rDrrcss|]}t|�VqdS)N)r
)rrr
r
rr/scss|]}t|�VqdS)N)r
)rrr
r
rr0s)r	rX)NN)�RANGE_REr&r)�groupsr �countrr)rr&rZrPrOr
r
rrQs&&





..rQcCsFd}}t�}x�|jd�D]�}|j�}tjd|�}|rcd|jd�}q#tjd|�}|r�d|jd�}q#tjd|�}|r#|jd|jd��q#Wt|�dkr�|j�}t	|�t	|�fS|r|rt
|�d}|r*t	|�nd|r?t	|�ndfS)	aParse X-Python3-Version.

    >>> parse_pycentral_vrange('>= 3.1')
    ((3, 1), None)
    >>> parse_pycentral_vrange('<< 4.0')
    (None, (4, 0))
    >>> parse_pycentral_vrange('3.1')
    ((3, 1), (3, 1))
    >>> parse_pycentral_vrange('3.1, 3.2')
    ((3, 1), None)
    Nrz>=\s*([\d\.]+)z%.3srDz<<\s*([\d\.]+)z	^[\d\.]+$r)rRrr�rer&�group�add�len�pop�getver�sorted)rrPrOZ	hardcoded�itemr&Zverr
r
r�parse_pycentral_vrange8s*
	
rdcCs|d|dkodknr(dS|d|dkrZdjdd�|dD��S|ddkr�ddjdd�|dD��S|ddkr�djd	d�|dD��dSd
djdd�|dD��djdd�|dD��fSdS)
aMReturn version range string from given range.

    >>> vrange_str(((3, 4), None))
    '3.4-'
    >>> vrange_str(((3, 4), (3, 6)))
    '3.4-3.6'
    >>> vrange_str(((3, 4), (4, 0)))
    '3.4-4.0'
    >>> vrange_str((None, (3, 7)))
    '-3.7'
    >>> vrange_str(((3, 5), (3, 5)))
    '3.5'
    >>> vrange_str((None, None))
    '-'
    rrDNrXrcss|]}t|�VqdS)N)r)rrr
r
rrvszvrange_str.<locals>.<genexpr>css|]}t|�VqdS)N)r)rrr
r
rrxscss|]}t|�VqdS)N)r)rrr
r
rrzsz%s-%scss|]}t|�VqdS)N)r)rrr
r
rr|scss|]}t|�VqdS)N)r)rrr
r
rr}s)r!)rTr
r
r�
vrange_strcs$"" recCs�t|t�r|St|ttf�rVt|dt�rVdjdd�|D��Sg}xP|D]H}t|t�r�|j|�qc|jdjdd�|D���qcW|S)z�
    >>> vrepr(([3, 4], [3, 2]))
    ['3.4', '3.2']
    >>> vrepr(('2.6', '3.1'))
    ['2.6', '3.1']
    >>> vrepr('3.2')
    '3.2'
    >>> vrepr((3, 2))
    '3.2'
    rrcss|]}t|�VqdS)N)r)rrr
r
rr�szvrepr.<locals>.<genexpr>css|]}t|�VqdS)N)r)rrr
r
rr�s)rrrrRr
r!�append)rr.�versionr
r
r�vrepr�s)
'rhcCsT|s
dSt|t�r'|dd�Stdd�|jdd�D��dd�S)z�Return pair of integers that represent version.

    >>> getver('3.2')
    (3, 2)
    >>> getver('3.1.4')
    (3, 1)
    >>> getver((3, 3, 1))
    (3, 3)
    >>> getver(None)
    ''
    r	NrBcss|]}t|�VqdS)N)r
)rrr
r
rr�szgetver.<locals>.<genexpr>r)rrr)rr
r
rra�s
racCs�g}g}xXt|�D]J}t|t�r:t|�}|tkrV|j|�q|j|�qW|jt|��|r�|r�t|�S|S)a�Return sorted list of versions starting with default Python
    version (if available) then list of suppored versions greater than default
    one followed by reversed list of older versions.

    List of versions sorted this way can be used in Depends field.

    :param vrepr: return string represenatations of versions, by default the
        same format is used as in :param:`versions`

    >>> debsorted([(2, 6), (3, 1), (3, 2), (3, 3), (2, 7)])[0] == DEFAULT
    True
    >>> debsorted(('2.4', '3.2', '2.6', '2.7'))[-1]
    (2, 4)
    >>> debsorted(set([(2, 1), (2, 2)]))
    [(2, 2), (2, 1)]
    >>> debsorted([(2, 1), (2, 2)], return_str=True)
    ['2.2', '2.1']
    )	rbrrrarrf�extend�reversedrh)rVZ
return_strr.Zold_versionsrgr
r
r�	debsorted�s
rk)&�loggingr\�osr�os.pathr�configparserr�typesrZ
RANGE_PATTERN�compilerY�VERBOSEr%�	getLoggerrJ�logrIZ
_supportedZ_defaultZ_config�read�replacerrr�	Exception�	exceptionrSrrWrQrdrerhrarkr
r
r
r�<module>sJ	
&

�(,+

Zerion Mini Shell 1.0