Edit File: version.cpython-36.opt-1.pyc
3 )�]b�\������������������@���sZ��d�Z�ddlZddlZddlmZ�ddddd d ddgZeje�ZG�d d��de �Z G�dd��de�ZG�dd��de�Z ejd�Zdd��ZeZG�dd��de�Zdd��ZG�dd��de �Zejd�dfejd�dfejd�dfejd�dfejd �d!fejd"�d!fejd#�d$fejd%�d&fejd'�d(fejd)�d*ff Zejd+�dfejd,�dfejd-�d$fejd#�d$fejd.�dffZejd/�Zd0d1��Zd2d3��Zejd4ej�Zd5d5d6d5d7ddd8�Zd9d:��ZG�d;d��de�ZG�d<d��de �Zejd=ej�Z d>d?��Z!d@dA��Z"G�dBd ��d e�Z#G�dCd ��d e �Z$G�dDdE��dEe�Z%e%eee�e%eedFdG���e%e"e$e�dH�Z&e&dI�e&dJ<�dKd��Z'dS�)Lz~ Implementation of a flexible versioning scheme providing support for PEP-440, setuptools-compatible and semantic versioning. �����N����)�string_types�NormalizedVersion�NormalizedMatcher� LegacyVersion� LegacyMatcher�SemanticVersion�SemanticMatcher�UnsupportedVersionError� get_schemec���������������@���s���e�Zd�ZdZdS�)r ���zThis is an unsupported version.N)�__name__� __module__�__qualname__�__doc__��r���r����/usr/lib/python3.6/version.pyr ������s���c���������������@���sx���e�Zd�Zdd��Zdd��Zdd��Zdd��Zd d ��Zdd��Zd d��Z dd��Z dd��Zdd��Zdd��Z dd��Zedd���ZdS�)�Versionc�������������C���s"���|j����|�_}|�j|��|�_}d�S�)N)�strip�_string�parse�_parts)�self�s�partsr���r���r����__init__���s����zVersion.__init__c�������������C���s���t�d��d�S�)Nzplease implement in a subclass)�NotImplementedError)r���r���r���r���r���r���$���s����z Version.parsec�������������C���s$���t�|��t�|�kr td|�|f���d�S�)Nzcannot compare %r and %r)�type� TypeError)r����otherr���r���r����_check_compatible'���s����zVersion._check_compatiblec�������������C���s���|�j�|��|�j|jkS�)N)r���r���)r���r���r���r���r����__eq__+���s���� zVersion.__eq__c�������������C���s���|�j�|��S�)N)r ���)r���r���r���r���r����__ne__/���s����zVersion.__ne__c�������������C���s���|�j�|��|�j|jk�S�)N)r���r���)r���r���r���r���r����__lt__2���s���� zVersion.__lt__c�������������C���s���|�j�|�p|�j|��S�)N)r"���r ���)r���r���r���r���r����__gt__6���s����zVersion.__gt__c�������������C���s���|�j�|�p|�j|�S�)N)r"���r ���)r���r���r���r���r����__le__9���s����zVersion.__le__c�������������C���s���|�j�|�p|�j|�S�)N)r#���r ���)r���r���r���r���r����__ge__<���s����zVersion.__ge__c�������������C���s ���t�|�j�S�)N)�hashr���)r���r���r���r����__hash__@���s����zVersion.__hash__c�������������C���s���d|�j�j|�jf�S�)Nz%s('%s'))� __class__r���r���)r���r���r���r����__repr__C���s����zVersion.__repr__c�������������C���s���|�j�S�)N)r���)r���r���r���r����__str__F���s����zVersion.__str__c�������������C���s���t�d��d�S�)NzPlease implement in subclasses.)r���)r���r���r���r���� is_prereleaseI���s����zVersion.is_prereleaseN)r���r ���r���r���r���r���r ���r!���r"���r#���r$���r%���r'���r)���r*����propertyr+���r���r���r���r���r������s���r���c������������ ���@���s����e�Zd�ZdZejd�Zejd�Zejd�Zdd��dd��dd��d d��d d��dd��dd��d d��d�Z dd��Z dd��Zedd���Z dd��Zdd��Zdd��Zdd��Zdd��Zdd ��ZdS�)!�MatcherNz^(\w[\s\w'.-]*)(\((.*)\))?z'^(<=|>=|<|>|!=|={2,3}|~=)?\s*([^\s,]+)$z ^\d+(\.\d+)*$c�������������C���s���|�|k�S�)Nr���)�v�c�pr���r���r����<lambda>W���s����zMatcher.<lambda>c�������������C���s���|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���X���s����c�������������C���s���|�|kp|�|k�S�)Nr���)r.���r/���r0���r���r���r���r1���Y���s����c�������������C���s���|�|kp|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���Z���s����c�������������C���s���|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���[���s����c�������������C���s���|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���\���s����c�������������C���s���|�|kp|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���^���s����c�������������C���s���|�|kS�)Nr���)r.���r/���r0���r���r���r���r1���_���s����)�<�>z<=z>=z==z===z~=z!=c������� ������C���sJ��|�j�d�krtd��|j���|�_}|�jj|�}|s<td|���|jd�}|d�j��|�_|�jj��|�_ g�}|d��r<dd��|d�j d�D��}x�|D�]�}|�jj|�}|s�td ||f���|j��}|d�p�d }|d�}|jd��r|dkr�td|���|d�d��d�}} |�j j|��s(|�j�|��n|�j�|�d�}} |j||| f��q�W�t|�|�_d�S�)NzPlease specify a version classz Not valid: %r��r�������c�������������S���s���g�|�]}|j����qS�r���)r���)�.0r/���r���r���r���� <listcomp>n���s����z$Matcher.__init__.<locals>.<listcomp>�,zInvalid %r in %rz~=r���z.*�==�!=z#'.*' not allowed for %r constraintsTF)r9���r:������)� version_class� ValueErrorr���r����dist_re�match�groups�name�lower�key�split�comp_re�endswith�num_re�append�tupler���) r���r����mr@���ZclistZconstraintsr/����opZvn�prefixr���r���r���r���b���s:���� zMatcher.__init__c�������������C���sz���t�|t�r|�j|�}x`|�jD�]V\}}}|�jj|�}t�|t�rFt|�|�}|sbd||�jjf�}t |��||||�sdS�qW�dS�)z� Check if the provided version matches the constraints. :param version: The version to match against this instance. :type version: String or :class:`Version` instance. z%r not implemented for %sFT) � isinstancer���r<���r���� _operators�get�getattrr(���r���r���)r����version�operator� constraintrL����f�msgr���r���r���r?�������s���� z Matcher.matchc�������������C���s6���d�}t�|�j�dkr2|�jd�d�dkr2|�jd�d�}|S�)Nr���r����==�===)rV���rW���)�lenr���)r����resultr���r���r���� exact_version����s���� zMatcher.exact_versionc�������������C���s0���t�|��t�|�ks|�j|jkr,td|�|f���d�S�)Nzcannot compare %s and %s)r���rA���r���)r���r���r���r���r���r�������s����zMatcher._check_compatiblec�������������C���s"���|�j�|��|�j|jko |�j|jkS�)N)r���rC���r���)r���r���r���r���r���r �������s���� zMatcher.__eq__c�������������C���s���|�j�|��S�)N)r ���)r���r���r���r���r���r!�������s����zMatcher.__ne__c�������������C���s���t�|�j�t�|�j��S�)N)r&���rC���r���)r���r���r���r���r'�������s����zMatcher.__hash__c�������������C���s���d|�j�j|�jf�S�)Nz%s(%r))r(���r���r���)r���r���r���r���r)�������s����zMatcher.__repr__c�������������C���s���|�j�S�)N)r���)r���r���r���r���r*�������s����zMatcher.__str__)r���r ���r���r<����re�compiler>���rE���rG���rN���r���r?���r,���rZ���r���r ���r!���r'���r)���r*���r���r���r���r���r-���N���s*��� %r-���zk^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$c�������������C���s���|�j���}�tj|��}|s"td|����|j��}tdd��|d�jd�D���}x(t|�dkrn|d�dkrn|d�d��}qHW�|d�s~d}nt|d��}|dd��}|d d ��}|dd��}|d �}|dkr�f�}n|d�t|d��f}|dkr�f�}n|d�t|d��f}|dk�r f�}n|d�t|d��f}|d�k�r.f�}nLg�} x>|jd�D�]0} | j ���rZdt| �f} nd| f} | j | ���q>W�t| �}|�s�|��r�|�r�d}nd}|�s�d}|�s�d}||||||fS�)NzNot a valid version: %sc�������������s���s���|�]}t�|�V��qd�S�)N)�int)r6���r.���r���r���r���� <genexpr>����s����z_pep_440_key.<locals>.<genexpr>r����.r���������������� ���� �������� ����a�z�_�final���rk���)NN)NN)NNrk���)rg���rk���)rh���)ri���)rj���)r����PEP440_VERSION_REr?���r ���r@���rI���rD���rX���r]����isdigitrH���)r���rJ���r@���ZnumsZepoch�preZpost�devZlocalr����partr���r���r����_pep_440_key����sT���� rq���c���������������@���s6���e�Zd�ZdZdd��Zedddddg�Zed d ���ZdS�)r���aI��A rational version. Good: 1.2 # equivalent to "1.2.0" 1.2.0 1.2a1 1.2.3a2 1.2.3b1 1.2.3c1 1.2.3.4 TODO: fill this out Bad: 1 # minimum two numbers 1.2a # release level must have a release serial 1.2.3b c�������������C���s<���t�|�}tj|�}|j��}tdd��|d�jd�D���|�_|S�)Nc�������������s���s���|�]}t�|�V��qd�S�)N)r]���)r6���r.���r���r���r���r^�����s����z*NormalizedVersion.parse.<locals>.<genexpr>r���r_���)�_normalized_keyrl���r?���r@���rI���rD����_release_clause)r���r���rY���rJ���r@���r���r���r���r�����s ���� zNormalizedVersion.parserg����br/����rcro���c����������������s���t���fdd���jD���S�)Nc�������������3���s ���|�]}|r|d����j�kV��qdS�)r���N)�PREREL_TAGS)r6����t)r���r���r���r^�����s����z2NormalizedVersion.is_prerelease.<locals>.<genexpr>)�anyr���)r���r���)r���r���r+�����s����zNormalizedVersion.is_prereleaseN) r���r ���r���r���r����setrv���r,���r+���r���r���r���r���r�������s���c�������������C���s>���t�|��}�t�|�}|�|krdS�|�j|�s*dS�t|�}|�|�dkS�)NTFr_���)�str� startswithrX���)�x�y�nr���r���r���� _match_prefix"��s���� r���c������������ ���@���sn���e�Zd�ZeZddddddddd �Zd d��Zdd ��Zdd��Zdd��Z dd��Z dd��Zdd��Zdd��Z dd��ZdS�)r����_match_compatible� _match_lt� _match_gt� _match_le� _match_ge� _match_eq�_match_arbitrary� _match_ne)z~=r2���r3���z<=z>=z==z===z!=c�������������C���sV���|rd|ko|j�d�}n|j�d��o,|j�d�}|rN|jjdd�d�}|�j|�}||fS�)N�+r���r���rk���rk���rk���)r���r���rD���r<���)r���rQ���rS���rL���Zstrip_localr���r���r���r���� _adjust_local<��s���� zNormalizedMatcher._adjust_localc�������������C���sD���|�j�|||�\}}||krdS�|j}djdd��|D���}t||��S�)NFr_���c�������������S���s���g�|�]}t�|��qS�r���)rz���)r6����ir���r���r���r7���O��s����z/NormalizedMatcher._match_lt.<locals>.<listcomp>)r����rs����joinr���)r���rQ���rS���rL����release_clause�pfxr���r���r���r����J��s����zNormalizedMatcher._match_ltc�������������C���sD���|�j�|||�\}}||krdS�|j}djdd��|D���}t||��S�)NFr_���c�������������S���s���g�|�]}t�|��qS�r���)rz���)r6���r����r���r���r���r7���W��s����z/NormalizedMatcher._match_gt.<locals>.<listcomp>)r����rs���r����r���)r���rQ���rS���rL���r����r����r���r���r���r����R��s����zNormalizedMatcher._match_gtc�������������C���s���|�j�|||�\}}||kS�)N)r����)r���rQ���rS���rL���r���r���r���r����Z��s����zNormalizedMatcher._match_lec�������������C���s���|�j�|||�\}}||kS�)N)r����)r���rQ���rS���rL���r���r���r���r����^��s����zNormalizedMatcher._match_gec�������������C���s.���|�j�|||�\}}|s ||k}n t||�}|S�)N)r����r���)r���rQ���rS���rL���rY���r���r���r���r����b��s ���� zNormalizedMatcher._match_eqc�������������C���s���t�|�t�|�kS�)N)rz���)r���rQ���rS���rL���r���r���r���r����j��s����z"NormalizedMatcher._match_arbitraryc�������������C���s0���|�j�|||�\}}|s ||k}nt||��}|S�)N)r����r���)r���rQ���rS���rL���rY���r���r���r���r����m��s ���� zNormalizedMatcher._match_nec�������������C���sf���|�j�|||�\}}||krdS�||k�r*dS�|j}t|�dkrH|d�d��}djdd��|D���}t||�S�)NTFr���r_���c�������������S���s���g�|�]}t�|��qS�r���)rz���)r6���r����r���r���r���r7������s����z7NormalizedMatcher._match_compatible.<locals>.<listcomp>rk���)r����rs���rX���r����r���)r���rQ���rS���rL���r����r����r���r���r���r����u��s����z#NormalizedMatcher._match_compatibleN)r���r ���r���r���r<���rN���r����r����r����r����r����r����r����r����r����r���r���r���r���r���-��s$���z[.+-]$r4���z^[.](\d)z0.\1z^[.-]z ^\((.*)\)$z\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}r_���z\b(alfa|apha)\b�alphaz\b(pre-alpha|prealpha)\bz pre.alphaz \(beta\)$�betaz ^[:~._+-]+z [,*")([\]]z[~:+_ -]z\.$z (\d+(\.\d+)*)c�������������C���sZ��|�j���j��}xtD�]\}}|j||�}qW�|s2d}tj|�}|sJd}|}n�|j��d�jd�}dd��|D��}xt|�dk�r�|j d��qlW�t|�dkr�||j ��d��}n8djdd��|dd��D���||j ��d���}|dd��}djd d��|D���}|j���}|�rxtD�]\}}|j||�}�qW�|�s*|}nd |k�r8dnd}||�|�}t |��sVd}|S�) z� Try to suggest a semantic form for a version for which _suggest_normalized_version couldn't come up with anything. z0.0.0r���r_���c�������������S���s���g�|�]}t�|��qS�r���)r]���)r6���r����r���r���r���r7������s����z-_suggest_semantic_version.<locals>.<listcomp>����Nc�������������S���s���g�|�]}t�|��qS�r���)rz���)r6���r����r���r���r���r7������s����c�������������S���s���g�|�]}t�|��qS�r���)rz���)r6���r����r���r���r���r7������s����ro����-r����)r���rB���� _REPLACEMENTS�sub�_NUMERIC_PREFIXr?���r@���rD���rX���rH����endr�����_SUFFIX_REPLACEMENTS� is_semver)r���rY���Zpat�replrJ���rL����suffix�sepr���r���r����_suggest_semantic_version���s:���� , r����c�������������C���sl��yt�|���|�S��tk r ���Y�nX�|�j��}xdBD�]\}}|j||�}q0W�tjdd|�}tjdd|�}tjdd|�}tjdd|�}tjdd|�}|jd���r�|d d!��}tjd"d|�}tjd#d$|�}tjd%d&|�}tjd'd|�}tjd(d)|�}tjd*d)|�}tjd+d |�}tjd,d-|�}tjd.d&|�}tjd/d0|�}tjd1d2|�}yt�|��W�n�tk �rf���d!}Y�nX�|S�)Ca���Suggest a normalized version close to the given version string. If you have a version string that isn't rational (i.e. NormalizedVersion doesn't like it) then you might be able to get an equivalent (or close) rational version from this function. This does a number of simple normalizations to the given string, based on observation of versions currently in use on PyPI. Given a dump of those version during PyCon 2009, 4287 of them: - 2312 (53.93%) match NormalizedVersion without change with the automatic suggestion - 3474 (81.04%) match when using this suggestion method @param s {str} An irrational version string. @returns A rational version string, or None, if couldn't determine one. �-alpharg����-betart���r����r����ru���r/����-finalr4����-pre�-release�.release�-stabler����r_���ri���� �.finalrj���zpre$Zpre0zdev$Zdev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?z\1r.���r���Nz\b0+(\d+)(?!\d)z(\d+[abc])$z\g<1>0z\.?(dev-r|dev\.r)\.?(\d+)$z.dev\2z-(a|b|c)(\d+)$z[\.\-](dev|devel)$z.dev0z(?![\.\-])dev$z(final|stable)$z\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1�r����rg����r����rt����r����rg����r����rt����ru���r/����r����r4����r����r/����r����r4����r����r4����r����r4����r����r_����ri���r_����r����r4����r����r4����rj���r4���)r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����)rr���r ���rB����replacer[���r����r{���)r���ZrsZorigr����r���r���r����_suggest_normalized_version���sH�������� r����z([a-z]+|\d+|[\.-])r/���zfinal-�@)rn���Zpreviewr����ru���ro���r4���r_���c�������������C���s~���dd��}g�}xh||��D�]\}|j�d�rh|dk�rJx|rH|d�dkrH|j���q.W�x|rf|d �dkrf|j���qLW�|j|��qW�t|�S�) Nc�������������S���sx���g�}xdt�j|�j���D�]R}tj||�}|rd|d�d����koBdkn��rT|jd�}nd|�}|j|��qW�|jd��|S�)N�0r����9�����*z*final)� _VERSION_PARTrD���rB����_VERSION_REPLACErO����zfillrH���)r���rY���r0���r���r���r���� get_partsI��s���� z_legacy_key.<locals>.get_partsr����z*finalr���z*final-Z00000000rk���rk���)r{����poprH���rI���)r���r����rY���r0���r���r���r����_legacy_keyH��s���� r����c���������������@���s ���e�Zd�Zdd��Zedd���ZdS�)r���c�������������C���s���t�|�S�)N)r����)r���r���r���r���r���r���c��s����zLegacyVersion.parsec�������������C���s:���d}x0|�j�D�]&}t|t�r|jd�r|dk�rd}P�qW�|S�)NFr����z*finalT)r���rM���r���r{���)r���rY���r|���r���r���r���r+���f��s����zLegacyVersion.is_prereleaseN)r���r ���r���r���r,���r+���r���r���r���r���r���b��s���c���������������@���s4���e�Zd�ZeZeej�Zded<�ej d�Z dd��ZdS�)r���r����z~=z^(\d+(\.\d+)*)c�������������C���s`���||k�rdS�|�j�jt|��}|s2tjd||��dS�|j��d�}d|krV|jdd�d�}t||�S�)NFzACannot compute compatible match for version %s and constraint %sTr���r_���r���)� numeric_rer?���rz����loggerZwarningr@����rsplitr���)r���rQ���rS���rL���rJ���r���r���r���r���r����y��s����zLegacyMatcher._match_compatibleN)r���r ���r���r���r<����dictr-���rN���r[���r\���r����r����r���r���r���r���r���q��s ��� zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c�������������C���s ���t�j|��S�)N)� _SEMVER_REr?���)r���r���r���r���r�������s����r����c������� ������C���sn���dd��}t�|��}|st|���|j��}dd��|d�d��D��\}}}||d�d�||d�d��}}|||f||fS�) Nc�������������S���s8���|�d�kr|f}n$|�dd���j�d�}tdd��|D���}|S�)Nr���r_���c�������������S���s"���g�|�]}|j���r|jd��n|�qS�)r����)rm���r����)r6���r0���r���r���r���r7������s����z5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>)rD���rI���)r���ZabsentrY���r���r���r���r���� make_tuple���s ����z!_semantic_key.<locals>.make_tuplec�������������S���s���g�|�]}t�|��qS�r���)r]���)r6���r����r���r���r���r7������s����z!_semantic_key.<locals>.<listcomp>r�����|����r����)r����r ���r@���) r���r����rJ���r@����major�minorZpatchrn���Zbuildr���r���r���� _semantic_key���s���� r����c���������������@���s ���e�Zd�Zdd��Zedd���ZdS�)r���c�������������C���s���t�|�S�)N)r����)r���r���r���r���r���r������s����zSemanticVersion.parsec�������������C���s���|�j�d�d�dkS�)Nr���r���r����)r���)r���r���r���r���r+������s����zSemanticVersion.is_prereleaseN)r���r ���r���r���r,���r+���r���r���r���r���r������s���c���������������@���s���e�Zd�ZeZdS�)r ���N)r���r ���r���r���r<���r���r���r���r���r ������s���c���������������@���s6���e�Zd�Zddd�Zdd��Zdd��Zdd ��Zd d��ZdS�) � VersionSchemeNc�������������C���s���||�_�||�_||�_d�S�)N)rC����matcher� suggester)r���rC���r����r����r���r���r���r������s����zVersionScheme.__init__c�������������C���s2���y|�j�j|��d}W�n�tk r,���d}Y�nX�|S�)NTF)r����r<���r ���)r���r���rY���r���r���r����is_valid_version���s���� zVersionScheme.is_valid_versionc�������������C���s0���y|�j�|��d}W�n�tk r*���d}Y�nX�|S�)NTF)r����r ���)r���r���rY���r���r���r����is_valid_matcher���s���� zVersionScheme.is_valid_matcherc�������������C���s���|�j�d|��S�)z: Used for processing some metadata fields zdummy_name (%s))r����)r���r���r���r���r����is_valid_constraint_list���s����z&VersionScheme.is_valid_constraint_listc�������������C���s���|�j�d�krd�}n |�j�|�}|S�)N)r����)r���r���rY���r���r���r����suggest���s���� zVersionScheme.suggest)N)r���r ���r���r���r����r����r����r����r���r���r���r���r�������s ��� r����c�������������C���s���|S�)Nr���)r���r���r���r���r���r1������s����r1���)� normalized�legacyZsemanticr�����defaultc�������������C���s���|�t�krtd|����t�|��S�)Nzunknown scheme name: %r)�_SCHEMESr=���)rA���r���r���r���r������s����)(r���Zloggingr[����compatr����__all__Z getLoggerr���r����r=���r ����objectr���r-���r\���rl���rq���rr���r���r���r���r����r����r����r����r�����Ir����r����r����r���r���r����r����r����r���r ���r����r����r���r���r���r���r����<module> ���sz��� 1k =$W .r $