§
    ã�2d±7  ã                   óD  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 dZ
 ej        e
¦  «        Z ej        dej        ¦  «        Z e j        e¦  «        Z ej        d¦  «        Z ej        d	¦  «        Zeresk e¦   «         Ze                     d
¦  «         ese                     dd¦  «        dd…         Zes*e                     dd¦  «                             dd¦  «        Z	  ed„ e                     d¦  «        D ¦   «         ¦  «        Zn # e$ r e                     d¦  «         Y nw xY w	  ed„ e                     d¦  «        D ¦   «         ¦  «        Zn # e$ r e                     d¦  «         Y nw xY w G d„ d¦  «        Zdd„Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d d„Z%dS )!é    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+)?ÚDEBPYTHON3_SUPPORTEDÚDEBPYTHON3_DEFAULTz"/usr/share/python3/debian_defaultsÚDEFAULTzdefault-versioné   zsupported-versionsÚpythonÚ c              #   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Úint©Ú.0Úis     ú'/usr/share/python3/debpython/version.pyú	<genexpr>r   5   s(   è è € Ð8Ð8˜q•C˜‘F”FÐ8Ð8Ð8Ð8Ð8Ð8ó    ú.zcannot read debian_defaultsc              #   ó’   K  — | ]B}t          d „ |                     ¦   «                              d¦  «        D ¦   «         ¦  «        V — ŒCdS )c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r   )r   Újs     r   r   z<genexpr>.<genexpr>9   s(   è è € ÐAÐA q�C ™FœFÐAÐAÐAÐAÐAÐAr   r   N)ÚtupleÚstripÚsplitr   s     r   r   r   9   sa   è è € ð 6ð 6Øõ ÐAÐA¨A¯GªG©I¬I¯OªO¸CÑ,@Ô,@ÐAÑAÔAÑAÔAð 6ð 6ð 6ð 6ð 6ð 6r   ú,c                   ój   — e Zd Z	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zdd„ZdS )ÚVersionNc           	      ó€  — t          |t          t          f¦  «        rd                     d„ |D ¦   «         ¦  «        }t          |t          ¦  «        r&dD ]!}t          | |t          ||¦  «        ¦  «         Œ"d S t          ¦   «         }|d= |d= |rYt           	                    |¦  «        }	|	r&|	 
                    ¦   «                              ¦   «         ng D ]\  }}|�||         €|||<   Œ|                     ¦   «         D ]-\  }}|dk    r|�t          |¦  «        }t          | ||¦  «         Œ.| j        st          d¦  «        ‚d S )Nr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   ©Ústrr   s     r   r   z#Version.__init__.<locals>.<genexpr>C   s(   è è € Ð3Ð3¨�S ™VœVÐ3Ð3Ð3Ð3Ð3Ð3r   ©ÚmajorÚminorÚmicroÚreleaselevelÚserialÚselfÚvaluer*   zmajor component is required)Ú
isinstancer   ÚlistÚjoinr!   ÚsetattrÚgetattrÚlocalsÚ
VERSION_REÚmatchÚ	groupdictÚitemsr   r'   Ú
ValueError)
r,   r-   r'   r(   r)   r*   r+   ÚnameÚcompr5   s
             r   Ú__init__zVersion.__init__@   si  € å�e�e¥T˜]Ñ+Ô+ð 	4Ø—H’HÐ3Ð3¨UÐ3Ñ3Ô3Ñ3Ô3ˆEÝ�e�WÑ%Ô%ð 	ØMð :ð :�Ý˜˜d¥G¨E°4Ñ$8Ô$8Ñ9Ô9Ð9Ð9ØˆFÝ‰xŒxˆØ�ˆLØ�ˆMØð 	'Ý×$Ò$ UÑ+Ô+ˆEØ<AÐI˜uŸšÑ0Ô0×6Ò6Ñ8Ô8Ð8Àrð 'ð '‘��eØÐ$¨¨d¬Ð);Ø!&�D˜‘JøØŸ:š:™<œ<ð 	'ð 	'‰KˆD�%Ø�~Ò%Ð%¨%Ð*;Ý˜E™
œ
�Ý�D˜$ Ñ&Ô&Ð&Ð&ØŒzð 	<ÝÐ:Ñ;Ô;Ð;ð	<ð 	<r   c                 óv   — t          | j        ¦  «        }| j        �|d                     | j        ¦  «        z  }|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%   r'   r(   Úformat)r,   Úresults     r   Ú__str__zVersion.__str__W   s6   € õ �T”Z‘”ˆØŒ:Ð!Ø�e—l’l 4¤:Ñ.Ô.Ñ.ˆFØˆr   c                 ó:   — t          t          | ¦  «        ¦  «        S r   )ÚhashÚrepr)r,   s    r   Ú__hash__zVersion.__hash__d   s   € Ý•D˜‘J”JÑÔÐr   c                 ó˜   — d                      | ¦  «        }dD ].}t          | |¦  «        }|s n|d                      |¦  «        z  }Œ/|dz   S )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')"
        zVersion('{})r)   r*   r+   r=   z'))r>   r2   )r,   r?   r9   r-   s       r   Ú__repr__zVersion.__repr__g   sd   € ð ×%Ò% dÑ+Ô+ˆØ7ð 	*ð 	*ˆDÝ˜D $Ñ'Ô'ˆEØð Ø�Ø�e—l’l 5Ñ)Ô)Ñ)ˆFˆFØ˜‰}Ðr   c                 ó¨   — t          | ¦  «        }| j        €|xj        t          |¦  «        z  c_        n|xj        t          |¦  «        z  c_        |S )zˆReturn next version.

        >>> Version('3.1') + 1
        Version('3.2')
        >>> Version('2') + '1'
        Version('3')
        )r!   r(   r'   r   )r,   Úotherr?   s      r   Ú__add__zVersion.__add__w   sJ   € õ ˜‘”ˆØŒ:ÐØˆLŒL�C ™JœJÑ&ˆLŒLˆLàˆLŒL�C ™JœJÑ&ˆLŒLØˆr   c                 óî   — t          | ¦  «        }| j        €%|xj        t          |¦  «        z  c_        |j        }n$|xj        t          |¦  «        z  c_        |j        }|dk     rt	          d¦  «        ‚|S )zŒReturn previous version.

        >>> Version('3.1') - 1
        Version('3.0')
        >>> Version('3') - '1'
        Version('2')
        Nr   zcannot decrease version further)r!   r(   r'   r   r8   )r,   rH   r?   Únews       r   Ú__sub__zVersion.__sub__†   sp   € õ ˜‘”ˆØŒ:ÐØˆLŒL�C ™JœJÑ&ˆLŒLØ”,ˆCˆCàˆLŒL�C ™JœJÑ&ˆLŒLØ”,ˆCØ�Š7ˆ7ÝÐ>Ñ?Ô?Ð?Øˆr   c                 ó4   — |                       |¦  «        dk    S ©Nr   ©Ú_Version__cmp©r,   rH   s     r   Ú__eq__zVersion.__eq__™   ó   € Ø�zŠz˜%Ñ Ô  AÒ%Ð%r   c                 ó4   — |                       |¦  «        dk     S rN   rO   rQ   s     r   Ú__lt__zVersion.__lt__œ   ó   € Ø�zŠz˜%Ñ Ô  1Ò$Ð$r   c                 ó4   — |                       |¦  «        dk    S rN   rO   rQ   s     r   Ú__le__zVersion.__le__Ÿ   rS   r   c                 ó4   — |                       |¦  «        dk    S rN   rO   rQ   s     r   Ú__gt__zVersion.__gt__¢   rV   r   c                 ó4   — |                       |¦  «        dk    S rN   rO   rQ   s     r   Ú__ge__zVersion.__ge__¥   rS   r   c                 óÒ   — t          |t          ¦  «        st          |¦  «        }| j        �|j        €|                      |d¬¦  «        dk     S |                      |d¬¦  «        dk     S )ak  Compare 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(   ©Úignorer   r)   ©r.   r!   r(   rP   rQ   s     r   Ú
__lshift__zVersion.__lshift__¨   óf   € õ ˜%¥Ñ)Ô)ð 	#Ý˜E‘N”NˆEØŒ:Ð ¤Ð!4Ø—:’:˜e¨G�:Ñ4Ô4°qÒ8Ð8à—:’:˜e¨G�:Ñ4Ô4°qÒ8Ð8r   c                 óÒ   — t          |t          ¦  «        st          |¦  «        }| j        �|j        €|                      |d¬¦  «        dk    S |                      |d¬¦  «        dk    S )ao  Compare 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(   r^   r   r)   r`   rQ   s     r   Ú
__rshift__zVersion.__rshift__½   rb   r   c                 óL  — t          |t          ¦  «        st          |¦  «        }dD ]|}||k    r nst          | |¦  «        pd}t          ||¦  «        pd}|dk    r3dddddœ}|                     |d¦  «        }|                     |d¦  «        }||k    rŒn||k    ||k     z
  c S dS )Nr&   r   r*   éýÿÿÿéþÿÿÿéÿÿÿÿ)ÚalphaÚbetaÚ	candidateÚfinal)r.   r!   r2   Úget)r,   rH   r_   r9   Úvalue1Úvalue2Úrmaps          r   Ú__cmpzVersion.__cmpÒ   sÒ   € Ý˜%¥Ñ)Ô)ð 	#Ý˜E‘N”NˆEØIð 	9ð 	9ˆDØ�vŠ~ˆ~Ø�Ý˜T 4Ñ(Ô(Ð-¨AˆFÝ˜U DÑ)Ô)Ð.¨QˆFØ�~Ò%Ð%Ø!#¨R¸bÈ1ÐMÐM�ØŸš &¨!Ñ,Ô,�ØŸš &¨!Ñ,Ô,�Ø˜ÒÐØØ˜V’O¨°ªÑ8Ð8Ð8Ð8Øˆqr   )NNNNNNr   )Ú__name__Ú
__module__Ú__qualname__r;   r@   rD   rF   rI   rL   rR   rU   rX   rZ   r\   ra   rd   rP   © r   r   r!   r!   ?   sö   € € € € € ØAEØ+/ð<ð <ð <ð <ð.ð ð ð ð  ð  ðð ð ð ð ð ðð ð ð&&ð &ð &ð%ð %ð %ð&ð &ð &ð%ð %ð %ð&ð &ð &ð9ð 9ð 9ð*9ð 9ð 9ð*ð ð ð ð ð r   r!   c                 ó  ‡‡— t          | t          ¦  «        rt          | ¦  «        } | rt          | ¦  «        ddgk    rt	          t
          ¦  «        }ns| d         €dn| d         Š| d         €dn| d         Š‰‰k    r(t	          ‰t
          v r‰fnt          ¦   «         ¦  «        }n!t	          ˆˆfd„t
          D ¦   «         ¦  «        }|rt	          d„ |D ¦   «         ¦  «        }n|du rt	          d	„ |D ¦   «         ¦  «        }|S )
aJ  Return 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
    Nr   )r   r   é   )éc   rx   c              3   ó<   •K  — | ]}‰|cxk    r‰k     ¯n n|V — Œd S r   ru   )r   ÚvÚmaxvÚminvs     €€r   r   z)get_requested_versions.<locals>.<genexpr>   sD   øè è € ÐDÐD °4¸1Ð3CÐ3CÒ3CÐ3C¸tÒ3CÐ3CÐ3CÐ3CÐ3C˜1Ð3CÐ3CÐ3CÐ3CÐDÐDr   c              3   ó>   K  — | ]}t          d |z  ¦  «        ¯|V — ŒdS ©z/usr/bin/python%d.%dNr   ©r   rz   s     r   r   z)get_requested_versions.<locals>.<genexpr>  sH   è è € ð >ð >˜QÝ Ð!7¸!Ñ!;Ñ<Ô<ð>�qð >ð >ð >ð >ð >ð >r   Fc              3   ó>   K  — | ]}t          d |z  ¦  «        °|V — ŒdS r~   r   r   s     r   r   z)get_requested_versions.<locals>.<genexpr>  sQ   è è € ð Bð B˜QÝ$Ð%;¸aÑ%?Ñ@Ô@ðB�qð Bð Bð Bð Bð Bð Br   )r.   r%   Úparse_vranger/   ÚsetÚ	SUPPORTEDr   )ÚvrangeÚ	availableÚversionsr{   r|   s      @@r   Úget_requested_versionsr‡   ä   sD  øø€ õ" �&�#ÑÔð &Ý˜fÑ%Ô%ˆàð E•T˜&‘\”\ d¨D \Ò1Ð1Ý•y‘>”>ˆˆà œÐ*ˆvˆv°°q´	ˆØ! !œ9Ð,ˆxˆx°&¸´)ˆØ�4Š<ˆ<Ý d­iÐ&7Ð&7˜D˜7˜7½U¹W¼WÑEÔEˆHˆHåÐDÐDÐDÐDÐD¥iÐDÑDÔDÑDÔDˆHàð BÝð >ð > (ð >ñ >ô >ñ >ô >ˆˆà	�eÐ	Ð	Ýð Bð B (ð Bñ Bô Bñ Bô Bˆð €Or   c                 ó”  — | dv rdS t                                | ¦  «        }|st          d| z  ¦  «        ‚|                     ¦   «         }t	          |¦  «                             d¦  «        dk    r6t          d„ |d                              d¦  «        D ¦   «         ¦  «        }||fS dx}}|d	         r	|d         }n|d         }|d         }|r,t          d
„ |                     d¦  «        D ¦   «         ¦  «        nd}|r,t          d„ |                     d¦  «        D ¦   «         ¦  «        nd}|r|r||k    rt          d| z  ¦  «        ‚||fS )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   ú-©NNzversion range is invalid: %sNé   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r   r   s     r   r   zparse_vrange.<locals>.<genexpr>%  s(   è è € Ð:Ð: •S˜‘V”VÐ:Ð:Ð:Ð:Ð:Ð:r   rw   r   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r   r   s     r   r   zparse_vrange.<locals>.<genexpr>/  ó(   è è € Ð1Ð1˜A•�Q‘”Ð1Ð1Ð1Ð1Ð1Ð1r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r   r   s     r   r   zparse_vrange.<locals>.<genexpr>0  rŽ   r   )ÚRANGE_REr5   r8   Úgroupsr/   Úcountr   r   )r-   r5   r‘   r|   r{   s        r   r�   r�     sn  € ð  �	ÐÐØˆzå�NŠN˜5Ñ!Ô!€EØð AÝÐ7¸%Ñ?Ñ@Ô@Ð@Ø�\Š\‰^Œ^€FåˆF�|„|×Ò˜$ÑÔ 1Ò$Ð$ÝÐ:Ð: V¨A¤Y§_¢_°SÑ%9Ô%9Ð:Ñ:Ô:Ñ:Ô:ˆØ�TˆzÐàÐ€Dˆ4Øˆa„yð Ø�aŒyˆˆà�aŒyˆØ�aŒyˆà59ÐC�5Ð1Ð1 §¢¨C¡¤Ð1Ñ1Ô1Ñ1Ô1Ð1¸t€DØ59ÐC�5Ð1Ð1 §¢¨C¡¤Ð1Ñ1Ô1Ñ1Ô1Ð1¸t€Dàð A�ð A˜ š˜ÝÐ7¸%Ñ?Ñ@Ô@Ð@à�ˆ:Ðr   c                 óÊ  — dx}}t          ¦   «         }|                      d¦  «        D ]¸}|                     ¦   «         }t          j        d|¦  «        }|rd|                     d¦  «        z  }ŒFt          j        d|¦  «        }|rd|                     d¦  «        z  }Œvt          j        d|¦  «        }|r+|                     d|                     d¦  «        z  ¦  «         Œ¹t          |¦  «        dk    r2|                     ¦   «         }t          |¦  «        t          |¦  «        fS |s|rt          |¦  «        d         }|rt          |¦  «        nd|rt          |¦  «        ndfS )	a  Parse 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)
    Nr   z>=\s*([\d\.]+)z%.3srw   z<<\s*([\d\.]+)z	^[\d\.]+$r   )r‚   r   r   Úrer5   ÚgroupÚaddÚlenÚpopÚgetverÚsorted)r-   r|   r{   Ú	hardcodedÚitemr5   Úvers          r   Úparse_pycentral_vrangerž   8  s[  € ð Ð€Dˆ4Ý‘”€Ià—’˜CÑ Ô ð 3ð 3ˆØ�zŠz‰|Œ|ˆå”Ð*¨DÑ1Ô1ˆØð 	Ø˜EŸKšK¨™NœNÑ*ˆDØÝ”Ð*¨DÑ1Ô1ˆØð 	Ø˜EŸKšK¨™NœNÑ*ˆDØÝ”˜ tÑ,Ô,ˆØð 	3Ø�MŠM˜& 5§;¢;¨q¡>¤>Ñ1Ñ2Ô2Ð2øå
ˆ9�~„~˜ÒÐØ�mŠm‰oŒoˆÝ�c‰{Œ{�F 3™KœKÐ'Ð'àð $�Ið $å�iÑ Ô  Ô#ˆàÐ)�6�$‰<Œ<ˆ< T¸4Ð+I­6°$©<¬<¨<ÀTÐIÐIr   c                 óú  — | d         | d         cxu r€n ndS | d         | d         k    r%d                      d„ | d         D ¦   «         ¦  «        S | d         €(dd                      d„ | d         D ¦   «         ¦  «        z   S | d         €(d                      d„ | d         D ¦   «         ¦  «        dz   S d                      d	„ | d         D ¦   «         ¦  «        ›dd                      d
„ | d         D ¦   «         ¦  «        ›�S )aM  Return 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))
    '-'
    r   rw   Nr‰   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrange_str.<locals>.<genexpr>v  ó(   è è € Ð2Ð2 1�˜A™œÐ2Ð2Ð2Ð2Ð2Ð2r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrange_str.<locals>.<genexpr>x  s(   è è € Ð8Ð8¨�c !™fœfÐ8Ð8Ð8Ð8Ð8Ð8r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrange_str.<locals>.<genexpr>z  r¡   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrange_str.<locals>.<genexpr>|  ó(   è è € Ð"=Ð"=¨a¥3 q¡6¤6Ð"=Ð"=Ð"=Ð"=Ð"=Ð"=r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrange_str.<locals>.<genexpr>}  r¥   r   )r0   )r„   s    r   Ú
vrange_strr§   c  s%  € ð  ˆa„y�F˜1”IÐ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØˆsØˆa„y�F˜1”IÒÐØ�xŠxÐ2Ð2¨¨q¬	Ð2Ñ2Ô2Ñ2Ô2Ð2Ø	�ŒÐ	Ø�S—X’XÐ8Ð8¨f°Q¬iÐ8Ñ8Ô8Ñ8Ô8Ñ8Ð8Ø	�ŒÐ	Ø�xŠxÐ2Ð2¨¨q¬	Ð2Ñ2Ô2Ñ2Ô2°SÑ8Ð8àŸ(š(Ð"=Ð"=°6¸!´9Ð"=Ñ"=Ô"=Ñ=Ô=Ð=Ð=ØŸ(š(Ð"=Ð"=°6¸!´9Ð"=Ñ"=Ô"=Ñ=Ô=Ð=ð?ð 	?r   c                 ó¨  — t          | t          ¦  «        r| S t          | t          t          f¦  «        s:t          | d         t          ¦  «        rd                     d„ | D ¦   «         ¦  «        S g }| D ]_}t          |t          ¦  «        r|                     |¦  «         Œ-|                     d                     d„ |D ¦   «         ¦  «        ¦  «         Œ`|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'
    r   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrepr.<locals>.<genexpr>Ž  s(   è è € Ð.Ð. 1�˜A™œÐ.Ð.Ð.Ð.Ð.Ð.r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r$   r   s     r   r   zvrepr.<locals>.<genexpr>•  s(   è è € Ð";Ð";¨a¥3 q¡6¤6Ð";Ð";Ð";Ð";Ð";Ð";r   )r.   r%   r   r‚   r   r0   Úappend)r-   r?   Úversions      r   Úvreprr­   €  sØ   € õ �%�ÑÔð /ØˆÝ˜¥­sÐ3Ñ4Ô4ð /½ÀEÈ!ÄHÍcÑ9RÔ9Rð /Ø�xŠxÐ.Ð.¨Ð.Ñ.Ô.Ñ.Ô.Ð.à€FØð =ð =ˆÝ�g�sÑ#Ô#ð 	=Ø�MŠM˜'Ñ"Ô"Ð"Ð"à�MŠM˜#Ÿ(š(Ð";Ð";°7Ð";Ñ";Ô";Ñ;Ô;Ñ<Ô<Ð<Ð<Ø€Mr   c                 ó²   — | sdS t          | t          ¦  «        r
| dd…         S t          d„ |                      dd¦  «        D ¦   «         ¦  «        dd…         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   Né   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r   r   s     r   r   zgetver.<locals>.<genexpr>©  s(   è è € Ð5Ð5˜A•�Q‘”Ð5Ð5Ð5Ð5Ð5Ð5r   r   )r.   r   r   )r-   s    r   r™   r™   ™  se   € ð ð ØˆrÝ�%�ÑÔð Ø�R�a�RŒyÐÝÐ5Ð5 §¢¨S°!Ñ!4Ô!4Ð5Ñ5Ô5Ñ5Ô5°b°q°bÔ9Ð9r   c                 óP  — g }g }t          | ¦  «        D ]\}t          |t          ¦  «        rt          |¦  «        }|t          k     r|                     |¦  «         ŒG|                     |¦  «         Œ]|                     t          |¦  «        ¦  «         |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']
    )	rš   r.   r%   r™   r
   r«   ÚextendÚreversedr­   )r†   Ú
return_strr?   Úold_versionsr¬   s        r   Ú	debsortedr¶   ¬  s³   € ð& €FØ€LÝ˜(Ñ#Ô#ð #ð #ˆÝ�g�sÑ#Ô#ð 	&Ý˜W‘o”oˆGØ•WÒÐØ×Ò Ñ(Ô(Ð(Ð(à�MŠM˜'Ñ"Ô"Ð"Ð"Ø
‡M‚M•(˜<Ñ(Ô(Ñ)Ô)Ð)Øð �fð Ý�V‰}Œ}ÐØ€Mr   rŠ   r   )&Úloggingr”   Úosr   Úos.pathr   Úconfigparserr   Útypesr   ÚRANGE_PATTERNÚcompiler�   ÚVERBOSEr4   Ú	getLoggerrr   Úlogrm   Ú
_supportedÚ_defaultÚ_configÚreadÚreplacer   r   r
   Ú	ExceptionÚ	exceptionrƒ   r!   r‡   r�   rž   r§   r­   r™   r¶   ru   r   r   ú<module>rÈ      sà  ðð, €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à2€Øˆ2Œ:�mÑ$Ô$€ØˆRŒZð ð
 œñ%ô %€
ð €gÔ˜Ñ!Ô!€ð ˆWŒ[Ð/Ñ0Ô0€
Øˆ7Œ;Ð+Ñ,Ô,€Øð #˜ð #Øˆl‰nŒn€GØ‡L‚LÐ5Ñ6Ô6Ð6Øð AØ—;’;˜yÐ*;Ñ<Ô<¸Q¸R¸RÔ@ˆØð #Ø—[’[ Ð,@ÑAÔAßŠW�X˜rÑ"Ô"ð 	ð1ØˆeÐ8Ð8 H§N¢N°3Ñ$7Ô$7Ð8Ñ8Ô8Ñ8Ô8€G€GøØð 1ð 1ð 1Ø‡M‚MÐ/Ñ0Ô0Ð0Ð0Ð0ð1øøøð1Ø�ð 6ð 6Ø)×/Ò/°Ñ4Ô4ð6ñ 6ô 6ñ 6ô 6€I€Iøàð 1ð 1ð 1Ø‡M‚MÐ/Ñ0Ô0Ð0Ð0Ð0ð1øøøðbð bð bð bð bñ bô bð bðJ%ð %ð %ð %ðP)ð )ð )ðX(Jð (Jð (JðV?ð ?ð ?ð:ð ð ð2:ð :ð :ð&ð ð ð ð ð s$   Ã)(D ÄD/Ä.D/Ä3(E ÅE9Å8E9