U ��.e�.� @s�ddlmZmZmZddlZddlZddlZddlmZddddd gZ e� d d d d dddg�Z dd�Z Gdd�de �ZGdd�de�ZGdd�de�Ze�dej�Zdddddd�Zdd�Zdd�ZdZGd d�de�Zd!d"�Ze�d#�Zd$d%�Zd&d'�ZdS)(�)�absolute_import�division�print_functionN�)�Infinity�parse�Version� LegacyVersion�InvalidVersion�VERSION_PATTERN�_Version�epoch�release�dev�pre�post�localcCs,z t|�WStk r&t|�YSXdS)z� Parse the given version string and return either a :class:`Version` object or a :class:`LegacyVersion` object depending on if the given version is a valid PEP 440 version or a legacy version. N)rr r )�version�r�A/usr/lib/python3.8/site-packages/pip/_vendor/packaging/version.pyrs c@seZdZdZdS)r zF An invalid version was found, users should refer to PEP 440. N)�__name__� __module__� __qualname__�__doc__rrrrr !sc@sLeZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dS)� _BaseVersioncCs t|j�S�N)�hash�_key��selfrrr�__hash__(sz_BaseVersion.__hash__cCs|�|dd��S)NcSs||kSrr��s�orrr�,�z%_BaseVersion.__lt__..��_compare�r�otherrrr�__lt__+sz_BaseVersion.__lt__cCs|�|dd��S)NcSs||kSrrr!rrrr$/r%z%_BaseVersion.__le__..r&r(rrr�__le__.sz_BaseVersion.__le__cCs|�|dd��S)NcSs||kSrrr!rrrr$2r%z%_BaseVersion.__eq__..r&r(rrr�__eq__1sz_BaseVersion.__eq__cCs|�|dd��S)NcSs||kSrrr!rrrr$5r%z%_BaseVersion.__ge__..r&r(rrr�__ge__4sz_BaseVersion.__ge__cCs|�|dd��S)NcSs||kSrrr!rrrr$8r%z%_BaseVersion.__gt__..r&r(rrr�__gt__7sz_BaseVersion.__gt__cCs|�|dd��S)NcSs||kSrrr!rrrr$;r%z%_BaseVersion.__ne__..r&r(rrr�__ne__:sz_BaseVersion.__ne__cCst|t�stS||j|j�Sr)� isinstancer�NotImplementedr)rr)�methodrrrr'=s z_BaseVersion._compareN) rrrr r*r+r,r-r.r/r'rrrrr'src@s�eZdZdd�Zdd�Zdd�Zedd��Zed d ��Zed d ��Z ed d��Z edd��Z edd��Z edd��Z edd��Zedd��Zedd��Zedd��ZdS)r cCst|�|_t|j�|_dSr)�str�_version�_legacy_cmpkeyr)rrrrr�__init__Es zLegacyVersion.__init__cCs|jSr�r4rrrr�__str__IszLegacyVersion.__str__cCsd�tt|���S)Nz��format�reprr3rrrr�__repr__LszLegacyVersion.__repr__cCs|jSrr7rrrr�publicOszLegacyVersion.publiccCs|jSrr7rrrr� base_versionSszLegacyVersion.base_versioncCsdS)N�����rrrrrr WszLegacyVersion.epochcCsdSrrrrrrr[szLegacyVersion.releasecCsdSrrrrrrr_szLegacyVersion.precCsdSrrrrrrrcszLegacyVersion.postcCsdSrrrrrrrgszLegacyVersion.devcCsdSrrrrrrrkszLegacyVersion.localcCsdS�NFrrrrr� is_prereleaseoszLegacyVersion.is_prereleasecCsdSr@rrrrr�is_postreleasesszLegacyVersion.is_postreleasecCsdSr@rrrrr� is_devreleasewszLegacyVersion.is_devreleaseN)rrrr6r8r<�propertyr=r>r rrrrrrArBrCrrrrr Ds2          z(\d+ | [a-z]+ | \.| -)�czfinal-�@)r�preview�-�rcrccs\t�|�D]F}t�||�}|r |dkr(q |dd�dkrF|�d�Vq d|Vq dVdS)N�.r� 0123456789��*�*final)�_legacy_version_component_re�split�_legacy_version_replacement_map�get�zfill)r"�partrrr�_parse_version_parts�s   rUcCszd}g}t|���D]T}|�d�r^|dkrD|rD|ddkrD|��q*|r^|ddkr^|��qD|�|�qt|�}||fS)Nr?rMrNz*final-Z00000000)rU�lower� startswith�pop�append�tuple)rr �partsrTrrrr5�s    r5a� v? (?: (?:(?P[0-9]+)!)? # epoch (?P[0-9]+(?:\.[0-9]+)*) # release segment (?P
                                          # pre-release
            [-_\.]?
            (?P(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?P[0-9]+)?
        )?
        (?P                                         # post release
            (?:-(?P[0-9]+))
            |
            (?:
                [-_\.]?
                (?Ppost|rev|r)
                [-_\.]?
                (?P[0-9]+)?
            )
        )?
        (?P                                          # dev release
            [-_\.]?
            (?Pdev)
            [-_\.]?
            (?P[0-9]+)?
        )?
    )
    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
c@s�eZdZe�dedejejB�Zdd�Z	dd�Z
dd�Zed	d
��Z
edd��Zed
d��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��ZdS) rz^\s*z\s*$c
Cs�|j�|�}|std�|���t|�d�r8t|�d��ndtdd�|�d��d�D��t	|�d�|�d	��t	|�d
�|�d�p�|�d��t	|�d
�|�d��t
|�d��d�|_t|jj
|jj|jj|jj|jj|jj�|_dS)NzInvalid version: '{0}'r
rcss|]}t|�VqdSr)�int��.0�irrr�	�sz#Version.__init__..rrJZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr�r
rrrrr)�_regex�searchr
r:r�groupr\rZrP�_parse_letter_version�_parse_local_versionr4�_cmpkeyr
rrrrrr)rr�matchrrrr6�s,���zVersion.__init__cCsd�tt|���S)Nzr9rrrrr<�szVersion.__repr__cCs�g}|jdkr |�d�|j��|�d�dd�|jD���|jdk	rb|�d�dd�|jD���|jdk	r~|�d�|j��|jdk	r�|�d	�|j��|jdk	r�|�d
�|j��d�|�S)Nr�{0}!rJcss|]}t|�VqdSr�r3�r^�xrrrr`sz"Version.__str__..�css|]}t|�VqdSrrjrkrrrr`sz.post{0}z.dev{0}z+{0})	r
rYr:�joinrrrrr�rr[rrrr8�s




zVersion.__str__cCs|jjSr)r4r
rrrrr
sz
Version.epochcCs|jjSr)r4rrrrrrszVersion.releasecCs|jjSr)r4rrrrrrszVersion.precCs|jjr|jjdSdS�Nr)r4rrrrrr szVersion.postcCs|jjr|jjdSdSrp)r4rrrrrr$szVersion.devcCs(|jjr d�dd�|jjD��SdSdS)NrJcss|]}t|�VqdSrrjrkrrrr`+sz Version.local..)r4rrnrrrrr(sz
Version.localcCst|��dd�dS)N�+rr)r3rPrrrrr=/szVersion.publiccCsFg}|jdkr |�d�|j��|�d�dd�|jD���d�|�S)NrrirJcss|]}t|�VqdSrrjrkrrrr`<sz'Version.base_version..rm)r
rYr:rnrrorrrr>3s

zVersion.base_versioncCs|jdk	p|jdk	Sr)rrrrrrrA@szVersion.is_prereleasecCs
|jdk	Sr)rrrrrrBDszVersion.is_postreleasecCs
|jdk	Sr)rrrrrrCHszVersion.is_devreleaseN)rrr�re�compiler�VERBOSE�
IGNORECASErbr6r<r8rDr
rrrrrr=r>rArBrCrrrrr�s4









cCsv|rZ|dkrd}|��}|dkr&d}n(|dkr4d}n|dkrBd}n|dkrNd	}|t|�fS|sr|rrd	}|t|�fSdS)
NrZalpha�aZbeta�b)rErrGrI)Zrev�rr)rVr\)ZletterZnumberrrrreMs rez[\._-]cCs$|dk	r tdd�t�|�D��SdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|��s|��nt|�VqdSr)�isdigitrVr\)r^rTrrrr`ts�z'_parse_local_version..)rZ�_local_version_separatorsrP)rrrrrfos�rfcCs�tttt�dd�t|�����}|dkr@|dkr@|dk	r@t}n|dkrLt}|dkrZt}|dkrft}|dkrvt}ntdd�|D��}||||||fS)NcSs|dkS)Nrr)rlrrrr$�r%z_cmpkey..css*|]"}t|t�r|dfnt|fVqdS)rmN)r0r\rr]rrrr`�sz_cmpkey..)rZ�reversed�list�	itertools�	dropwhilerrarrrrgzs�	rg)Z
__future__rrr�collectionsr}rrZ_structuresr�__all__�
namedtuplerr�
ValueErrorr
�objectrr	rsrtrOrQrUr5rrrerzrfrgrrrr�s8�8�	 x