U �Qab$-� @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�K/usr/lib/python3.8/site-packages/pkg_resources/_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�0�z%_BaseVersion.__lt__..��_compare�r�otherrrr�__lt__/sz_BaseVersion.__lt__cCs|�|dd��S)NcSs||kSrrr!rrrr$3r%z%_BaseVersion.__le__..r&r(rrr�__le__2sz_BaseVersion.__le__cCs|�|dd��S)NcSs||kSrrr!rrrr$6r%z%_BaseVersion.__eq__..r&r(rrr�__eq__5sz_BaseVersion.__eq__cCs|�|dd��S)NcSs||kSrrr!rrrr$9r%z%_BaseVersion.__ge__..r&r(rrr�__ge__8sz_BaseVersion.__ge__cCs|�|dd��S)NcSs||kSrrr!rrrr$<r%z%_BaseVersion.__gt__..r&r(rrr�__gt__;sz_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'As 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 dS)r cCst|�|_t|j�|_dSr)�str�_version�_legacy_cmpkeyr)rrrrr�__init__Js zLegacyVersion.__init__cCs|jSr�r4rrrr�__str__NszLegacyVersion.__str__cCsd�tt|���S)Nz��format�reprr3rrrr�__repr__QszLegacyVersion.__repr__cCs|jSrr7rrrr�publicTszLegacyVersion.publiccCs|jSrr7rrrr� base_versionXszLegacyVersion.base_versioncCsdSrrrrrrr\szLegacyVersion.localcCsdS�NFrrrrr� is_prerelease`szLegacyVersion.is_prereleasecCsdSr?rrrrr�is_postreleasedszLegacyVersion.is_postreleaseN) rrrr6r8r<�propertyr=r>rr@rArrrrr Hs    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_partsrs   rScCszd}g}t|���D]T}|�d�r^|dkrD|rD|ddkrD|��q*|r^|ddkr^|��qD|�|�qt|�}||fS)N�����rKrLz*final-Z00000000)rS�lower� startswith�pop�append�tuple)rr �partsrRrrrr5�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��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__..rrHZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr�r
rrrrr)�_regex�searchr
r:r�groupr[rYrN�_parse_letter_version�_parse_local_versionr4�_cmpkeyr
rrrrrr)rr�matchrrrr6�s8�����zVersion.__init__cCsd�tt|���S)Nzr9rrrrr<�szVersion.__repr__cCs�g}|jjdkr$|�d�|jj��|�d�dd�|jjD���|jjdk	rl|�d�dd�|jjD���|jjdk	r�|�d�|jjd	��|jjdk	r�|�d
�|jjd	��|jj	dk	r�|�d�d�dd�|jj	D����d�|�S)
Nr�{0}!rHcss|]}t|�VqdSr�r3�r]�xrrrr_�sz"Version.__str__..�css|]}t|�VqdSrrirjrrrr_�sz.post{0}rz.dev{0}z+{0}css|]}t|�VqdSrrirjrrrr_s)
r4r
rXr:�joinrrrrr�rrZrrrr8�s�zVersion.__str__cCst|��dd�dS)N�+rr�r3rNrrrrr=
szVersion.publiccCsLg}|jjdkr$|�d�|jj��|�d�dd�|jjD���d�|�S)NrrhrHcss|]}t|�VqdSrrirjrrrr_sz'Version.base_version..rl)r4r
rXr:rmrrnrrrr>s
zVersion.base_versioncCs$t|�}d|kr |�dd�dSdS)Nrorrp)rZversion_stringrrrrsz
Version.localcCst|jjp|jj�Sr)�boolr4rrrrrrr@!szVersion.is_prereleasecCst|jj�Sr)rqr4rrrrrrA%szVersion.is_postreleaseN)rrr�re�compiler�VERBOSE�
IGNORECASErar6r<r8rBr=r>rr@rArrrrr�s"

�#



cCsv|rZ|dkrd}|��}|dkr&d}n(|dkr4d}n|dkrBd}n|dkrNd	}|t|�fS|sr|rrd	}|t|�fSdS)
NrZalpha�aZbeta�b)rCrrErG)Zrev�rr)rUr[)ZletterZnumberrrrrd*s rdz[\._-]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)�isdigitrUr[)r]rRrrrr_Qs�z'_parse_local_version..)rY�_local_version_seperatorsrN)rrrrreLs�recCs�tttt�dd�t|�����}|dkr@|dkr@|dk	r@t}n|dkrLt}|dkrZt}|dkrft}|dkrvt}ntdd�|D��}||||||fS)NcSs|dkS)Nrr)rkrrrr$`r%z_cmpkey..css*|]"}t|t�r|dfnt|fVqdS)rlN)r0r[rr\rrrr_�s�z_cmpkey..)rY�reversed�list�	itertools�	dropwhilerr`rrrrfWs,���
	�rf)Z
__future__rrr�collectionsr}rrZ_structuresr�__all__�
namedtuplerr�
ValueErrorr
�objectrr	rsrtrMrOrSr5rrrdrzrerfrrrr�sH��!�� k