3 \90�@s:ddlZGdd�d�ZGdd�de�ZGdd�de�ZdS)�Nc@sFeZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dS)�VersionNcCs|r|j|�dS)N)�parse)�self�vstring�r�)/usr/lib64/python3.6/distutils/version.py�__init__&szVersion.__init__cCsd|jjt|�fS)Nz %s ('%s'))� __class__�__name__�str)rrrr�__repr__*szVersion.__repr__cCs|j|�}|tkr|S|dkS)Nr)�_cmp�NotImplemented)r�other�crrr�__eq__-s zVersion.__eq__cCs|j|�}|tkr|S|dkS)Nr)r r)rrrrrr�__lt__3s zVersion.__lt__cCs|j|�}|tkr|S|dkS)Nr)r r)rrrrrr�__le__9s zVersion.__le__cCs|j|�}|tkr|S|dkS)Nr)r r)rrrrrr�__gt__?s zVersion.__gt__cCs|j|�}|tkr|S|dkS)Nr)r r)rrrrrr�__ge__Es zVersion.__ge__)N) r � __module__� __qualname__rr rrrrrrrrrrs rc@s8eZdZejdejejB�Zdd�Zdd�Z dd�Z dS) � StrictVersionz)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$cCs�|jj|�}|std|��|jddddd�\}}}}}|rTttt|||g��|_nttt||g��d|_|r�|dt|�f|_nd|_dS) Nzinvalid version number '%s'�����r)r) � version_re�match� ValueError�group�tuple�map�int�version� prerelease)rrr�major�minorZpatchr&Zprerelease_numrrrr�s  zStrictVersion.parsecCsb|jddkr*djtt|jdd���}ndjtt|j��}|jr^||jdt|jd�}|S)Nrr�.r)r%�joinr#r r&)rrrrr�__str__�s zStrictVersion.__str__cCs�t|t�rt|�}|j|jkr2|j|jkr.dSdS|j rF|j rFdS|jrX|j rXdS|j rj|jrjdS|jr�|jr�|j|jkr�dS|j|jkr�dSdSndS)Nrr�����r,r,)� isinstancer rr%r&)rrrrrr �s&      zStrictVersion._cmpN) r rr�re�compile�VERBOSE�ASCIIrrr+r rrrrr]s % rc@sDeZdZejdej�Zd dd�Zdd�Zdd�Z d d �Z d d �Z dS)� LooseVersionz(\d+ | [a-z]+ | \.)NcCs|r|j|�dS)N)r)rrrrrr.szLooseVersion.__init__c Csb||_dd�|jj|�D�}x:t|�D].\}}yt|�||<Wq&tk rRYq&Xq&W||_dS)NcSsg|]}|r|dkr|�qS)r)r)�.0�xrrr� 8sz&LooseVersion.parse..)r� component_re�split� enumerater$r r%)rrZ components�i�objrrrr3s zLooseVersion.parsecCs|jS)N)r)rrrrr+CszLooseVersion.__str__cCs dt|�S)NzLooseVersion ('%s'))r )rrrrr GszLooseVersion.__repr__cCsFt|t�rt|�}|j|jkr"dS|j|jkr2dS|j|jkrBdSdS)Nrrr,)r-r r2r%)rrrrrr Ks    zLooseVersion._cmp)N) r rrr.r/r0r6rrr+r r rrrrr2 s ! r2)r.rrr2rrrr�s>/