ž 7’ReÔYc @sdZddlZddlZddlmZddddd d d d gZejeƒZGd d „d e ƒZ Gdd„de ƒZ Gdd„de ƒZ ejdƒZdd„ZeZGdd„de ƒZdd„ZGdd„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ƒZid5d66d5d76d8d96d5d:6d;d<6dd6dd$6Zd=d>„ZGd?d„de ƒZGd@d„de ƒZ ejdAejƒZ!dBdC„Z"dDdE„Z#GdFd „d e ƒZ$GdGd „d e ƒZ%GdHdI„dIe ƒZ&ie&eeeƒdJ6e&ee dKdL„ƒdM6e&e#e%eƒdN6Z'e'dJe'dOt‚t|ƒdksVt‚dS(Ni(ustripu_stringuparseu_partsu isinstanceutupleuAssertionErrorulen(uselfusuparts((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__init__suVersion.__init__cCstdƒ‚dS(Nuplease implement in a subclass(uNotImplementedError(uselfus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuparse$su Version.parsecCs5t|ƒt|ƒkr1td||fƒ‚ndS(Nucannot compare %r and %r(utypeu TypeError(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu_check_compatible'suVersion._check_compatiblecCs|j|ƒ|j|jkS(N(u_check_compatibleu_parts(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__eq__+s uVersion.__eq__cCs|j|ƒ S(N(u__eq__(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__ne__/suVersion.__ne__cCs|j|ƒ|j|jkS(N(u_check_compatibleu_parts(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__lt__2s uVersion.__lt__cCs|j|ƒp|j|ƒ S(N(u__lt__u__eq__(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__gt__6suVersion.__gt__cCs|j|ƒp|j|ƒS(N(u__lt__u__eq__(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__le__9suVersion.__le__cCs|j|ƒp|j|ƒS(N(u__gt__u__eq__(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__ge__<suVersion.__ge__cCs t|jƒS(N(uhashu_parts(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__hash__@suVersion.__hash__cCsd|jj|jfS(Nu%s('%s')(u __class__u__name__u_string(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__repr__CsuVersion.__repr__cCs|jS(N(u_string(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__str__FsuVersion.__str__cCstdƒ‚dS(NuPlease implement in subclasses.(uNotImplementedError(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu is_prereleaseIsuVersion.is_prereleaseN(u__name__u __module__u __qualname__u__init__uparseu_check_compatibleu__eq__u__ne__u__lt__u__gt__u__le__u__ge__u__hash__u__repr__u__str__upropertyu is_prerelease(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuVersions            uVersioncBs|EeZdZd%ZejdƒZejdƒZejdƒZ idd„d6dd„d6d d„d 6d d„d 6d d„d6dd„d6dd„d6Z dd„Z dd„Z e dd„ƒZdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%S(&uMatcheru^(\w[\s\w'.-]*)(\((.*)\))?u#^(<=|>=|<|>|!=|==|~=)?\s*([^\s,]+)$u ^\d+(\.\d+)*$cCs ||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuWsuMatcher.uXsu>cCs||kp||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuYsu<=cCs||kp||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuZsu>=cCs ||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu[su==cCs||kp||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu]su~=cCs ||kS(N((uvucup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu^su!=c CsÔ|jdkrtdƒ‚n|jƒ|_}|jj|ƒ}|s\td|ƒ‚n|jdƒ}|djƒ|_|jj ƒ|_ g}|drÁdd„|dj dƒDƒ}xþ|D]ó}|j j|ƒ}|sþtd ||fƒ‚n|jƒ}|dpd }|d }|j d ƒrŽ|dkrRtd|ƒ‚n|dd…d}} |jj|ƒs¤|j|ƒq¤n|j|ƒd}} |j||| fƒqÇWnt|ƒ|_dS(NuPlease specify a version classu Not valid: %ruiicSsg|]}|jƒ‘qS((ustrip(u.0uc((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu ms u$Matcher.__init__..u,uInvalid %r in %ru~=iu.*u==u!=u#'.*' not allowed for %r constraints(u==u!=iþÿÿÿTF(u version_classuNoneu ValueErrorustripu_stringudist_reumatchugroupsunameulowerukeyusplitucomp_reuendswithuTrueunum_reuFalseuappendutupleu_parts( uselfusumugroupsuclistu constraintsucuopuvnuprefix((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__init__as:       uMatcher.__init__cCs¶t|tƒr!|j|ƒ}nxŽ|jD]ƒ\}}}|jj|ƒ}t|tƒrmt||ƒ}n|s˜d||jjf}t |ƒ‚n||||ƒs+dSq+WdS(uÊ Check if the provided version matches the constraints. :param version: The version to match against this instance. :type version: Strring or :class:`Version` instance. u%r not implemented for %sFT( u isinstanceu string_typesu version_classu_partsu _operatorsugetugetattru __class__u__name__uNotImplementedErroruFalseuTrue(uselfuversionuoperatoru constraintuprefixufumsg((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyumatch†su Matcher.matchcCsJd}t|jƒdkrF|jdddkrF|jdd}n|S(Niiu==(uNoneulenu_parts(uselfuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu exact_version›s,uMatcher.exact_versioncCsGt|ƒt|ƒks*|j|jkrCtd||fƒ‚ndS(Nucannot compare %s and %s(utypeunameu TypeError(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu_check_compatible¢s*uMatcher._check_compatiblecCs/|j|ƒ|j|jko.|j|jkS(N(u_check_compatibleukeyu_parts(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__eq__¦s uMatcher.__eq__cCs|j|ƒ S(N(u__eq__(uselfuother((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__ne__ªsuMatcher.__ne__cCst|jƒt|jƒS(N(uhashukeyu_parts(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__hash__®suMatcher.__hash__cCsd|jj|jfS(Nu%s(%r)(u __class__u__name__u_string(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__repr__±suMatcher.__repr__cCs|jS(N(u_string(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__str__´suMatcher.__str__N(u__name__u __module__u __qualname__uNoneu version_classureucompileudist_reucomp_reunum_reu _operatorsu__init__umatchupropertyu exact_versionu_check_compatibleu__eq__u__ne__u__hash__u__repr__u__str__(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuMatcherNs*       %      uMatcheruQ^(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(-(\d+(\.\d+)?))?$cCsó|jƒ}tj|ƒ}|s4td|ƒ‚n|jƒ}tdd„|djdƒDƒƒ}x6t|ƒdkrž|ddkrž|dd…}qiW|dd…}|d d …}|d d …}|d }|dkrîf}n|dt |dƒf}|dkrf}n|dt |dƒf}|dkrLf}n|dt |dƒf}|dkr{f}n"tdd„|jdƒDƒƒ}|sÂ| r¹|r¹d}qÂd}n|sÑd}n|sàd}n|||||fS(NuNot a valid version: %scss|]}t|ƒVqdS(N(uint(u.0uv((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu Ãsu_pep426_key..iu.iiiiii i i cSsg|]}t|ƒ‘qS((uint(u.0us((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu Ús u_pep426_key..uauzu_ufinaliÿÿÿÿiÿÿÿÿ(NN(NN(NNiÿÿÿÿ(uaiÿÿÿÿ(uz(u_(ufinal( ustripuPEP426_VERSION_REumatchuUnsupportedVersionErrorugroupsutupleusplitulenuNoneuint(usumugroupsunumsupreupostudevulocal((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _pep426_key½sB  &%         "     u _pep426_keycBsS|EeZdZdZdd„ZedddddgƒZed d „ƒZd S( uNormalizedVersionuIA 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 # mininum two numbers 1.2a # release level must have a release serial 1.2.3b cCsTt|ƒ}tj|ƒ}|jƒ}tdd„|djdƒDƒƒ|_|S(Ncss|]}t|ƒVqdS(N(uint(u.0uv((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu su*NormalizedVersion.parse..iu.(u_normalized_keyuPEP426_VERSION_REumatchugroupsutupleusplitu_release_clause(uselfusuresultumugroups((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuparses   )uNormalizedVersion.parseuaubucurcudevcs t‡fdd†ˆjDƒƒS(Nc3s(|]}|r|dˆjkVqdS(iN(u PREREL_TAGS(u.0ut(uself(u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu su2NormalizedVersion.is_prerelease..(uanyu_parts(uself((uselfu4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu is_prereleasesuNormalizedVersion.is_prereleaseN( u__name__u __module__u __qualname__u__doc__uparseusetu PREREL_TAGSupropertyu is_prerelease(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuNormalizedVersionïs cCsUt|ƒ}t|ƒ}||kr(dS|j|ƒs;dSt|ƒ}||dkS(Nu.TF(ustruTrueu startswithuFalseulen(uxuyun((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_prefixs    u _match_prefixcBs±|EeZdZeZidd6dd6dd6dd6d d 6d d 6d d6Zdd„Zdd„Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dS( uNormalizedMatcheru_match_compatibleu~=u _match_ltuu _match_leu<=u _match_geu>=u _match_equ==u _match_neu!=cCsx|r"d|ko|jd}n|jd o:|jd}|rn|jjddƒd}|j|ƒ}n||fS(Nu-iiiÿÿÿÿiÿÿÿÿiÿÿÿÿ(u_partsu_stringusplitu version_class(uselfuversionu constraintuprefixu strip_localus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _adjust_local,suNormalizedMatcher._adjust_localcCs^|j|||ƒ\}}||kr+dS|j}djdd„|Dƒƒ}t||ƒ S(Nu.cSsg|]}t|ƒ‘qS((ustr(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu ?s u/NormalizedMatcher._match_lt..F(u _adjust_localuFalseu_release_clauseujoinu _match_prefix(uselfuversionu constraintuprefixurelease_clauseupfx((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_lt:s   uNormalizedMatcher._match_ltcCs^|j|||ƒ\}}||kr+dS|j}djdd„|Dƒƒ}t||ƒ S(Nu.cSsg|]}t|ƒ‘qS((ustr(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu Gs u/NormalizedMatcher._match_gt..F(u _adjust_localuFalseu_release_clauseujoinu _match_prefix(uselfuversionu constraintuprefixurelease_clauseupfx((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_gtBs   uNormalizedMatcher._match_gtcCs%|j|||ƒ\}}||kS(N(u _adjust_local(uselfuversionu constraintuprefix((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_leJsuNormalizedMatcher._match_lecCs%|j|||ƒ\}}||kS(N(u _adjust_local(uselfuversionu constraintuprefix((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_geNsuNormalizedMatcher._match_gecCsC|j|||ƒ\}}|s0||k}nt||ƒ}|S(N(u _adjust_localu _match_prefix(uselfuversionu constraintuprefixuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_eqRs uNormalizedMatcher._match_eqcCsD|j|||ƒ\}}|s0||k}nt||ƒ }|S(N(u _adjust_localu _match_prefix(uselfuversionu constraintuprefixuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _match_neZs uNormalizedMatcher._match_necCs’|j|||ƒ\}}||kr+dS||kr;dS|j}t|ƒdkri|dd…}ndjdd„|Dƒƒ}t||ƒS(Niu.cSsg|]}t|ƒ‘qS((ustr(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu ks u7NormalizedMatcher._match_compatible..TFiÿÿÿÿ(u _adjust_localuTrueuFalseu_release_clauseulenujoinu _match_prefix(uselfuversionu constraintuprefixurelease_clauseupfx((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu_match_compatiblebs   u#NormalizedMatcher._match_compatibleN(u__name__u __module__u __qualname__uNormalizedVersionu version_classu _operatorsu _adjust_localu _match_ltu _match_gtu _match_leu _match_geu _match_equ _match_neu_match_compatible(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuNormalizedMatchers"        u[.+-]$uu^[.](\d)u0.\1u^[.-]u ^\((.*)\)$u\1u^v(ersion)?\s*(\d+)u\2u^r(ev)?\s*(\d+)u[.]{2,}u.u\b(alfa|apha)\bualphau\b(pre-alpha|prealpha)\bu pre.alphau \(beta\)$ubetau ^[:~._+-]+u [,*")([\]]u[~:+_ -]u\.$u (\d+(\.\d+)*)cCsÝ|jƒjƒ}x&tD]\}}|j||ƒ}qW|sJd}ntj|ƒ}|snd}|}nï|jƒdjdƒ}dd„|Dƒ}x#t|ƒdkr¿|j dƒqWt|ƒdkrë||j ƒd…}nJdj dd„|dd…Dƒƒ||j ƒd…}|dd…}dj d d„|Dƒƒ}|jƒ}|rx)t D]\}}|j||ƒ}qjWn|sž|}n&d |kr°d nd }|||}t |ƒsÙd}n|S( u€ Try to suggest a semantic form for a version for which _suggest_normalized_version couldn't come up with anything. u0.0.0iu.cSsg|]}t|ƒ‘qS((uint(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu ›s u-_suggest_semantic_version..iNcSsg|]}t|ƒ‘qS((ustr(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu ¡s cSsg|]}t|ƒ‘qS((ustr(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu £s udevu-u+(ustripuloweru _REPLACEMENTSusubu_NUMERIC_PREFIXumatchugroupsusplitulenuappenduendujoinu_SUFFIX_REPLACEMENTSu is_semveruNone(usuresultupatureplumuprefixusuffixusep((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu_suggest_semantic_version‡s:  :    u_suggest_semantic_versioncCsûyt|ƒ|SWntk r&YnX|jƒ}x&dBD]\}}|j||ƒ}q:Wtjdd|ƒ}tjdd|ƒ}tjdd|ƒ}tjdd|ƒ}tjdd|ƒ}|jdƒrç|d d!…}ntjd"d|ƒ}tjd#d$|ƒ}tjd%d&|ƒ}tjd'd|ƒ}tjd(d)|ƒ}tjd*d)|ƒ}tjd+d |ƒ}tjd,d-|ƒ}tjd.d&|ƒ}tjd/d0|ƒ}tjd1d2|ƒ}yt|ƒWntk röd!}YnX|S(Cuè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. u-alphauau-betaubualphaubetaurcucu-finaluu-preu-releaseu.releaseu-stableu+u.u_u u.finalufinalupre$upre0udev$udev0u([abc]|rc)[\-\.](\d+)$u\1\2u[\-\.](dev)[\-\.]?r?(\d+)$u.\1\2u[.~]?([abc])\.?u\1uviNu\b0+(\d+)(?!\d)u (\d+[abc])$u\g<1>0u\.?(dev-r|dev\.r)\.?(\d+)$u.dev\2u-(a|b|c)(\d+)$u[\.\-](dev|devel)$u.dev0u(?![\.\-])dev$u(final|stable)$u\.?(r|-|-r)\.?(\d+)$u.post\2u\.?(dev|git|bzr)\.?(\d+)$u\.?(pre|preview|-c)(\d+)$uc\g<2>up(\d+)$u.post\1(u-alphaua(u-betaub(ualphaua(ubetaub(urcuc(u-finalu(u-preuc(u-releaseu(u.releaseu(u-stableu(u+u.(u_u.(u u(u.finalu(ufinalu((u-alphaua(u-betaub(ualphaua(ubetaub(urcuc(u-finalu(u-preuc(u-releaseu(u.releaseu(u-stableu(u+u.(u_u.(u u(u.finalu(ufinalu(u_normalized_keyuUnsupportedVersionErrorulowerureplaceureusubu startswithuNone(usursuorigurepl((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu_suggest_normalized_versionµsH      u_suggest_normalized_versionu([a-z]+|\d+|[\.-])ucupreupreviewufinal-u-urcu@udevcCs¯dd„}g}x||ƒD]‚}|jdƒr”|dkrjx'|rf|ddkrf|jƒqCWnx'|r|d dkr|jƒqmWn|j|ƒqWt|ƒS( NcSs¡g}x‡tj|jƒƒD]p}tj||ƒ}|rd|dd…ko[dknrr|jdƒ}n d|}|j|ƒqqW|jdƒ|S(Nu0iu9iu*u*final(u _VERSION_PARTusplituloweru_VERSION_REPLACEugetuzfilluappend(usuresultup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu get_parts4s&  u_legacy_key..get_partsu*u*finaliu*final-u00000000iÿÿÿÿiÿÿÿÿ(u startswithupopuappendutuple(usu get_partsuresultup((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _legacy_key3s  u _legacy_keycBs2|EeZdZdd„Zedd„ƒZdS(u LegacyVersioncCs t|ƒS(N(u _legacy_key(uselfus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuparseNsuLegacyVersion.parsecCsRd}xE|jD]:}t|tƒr|jdƒr|dkrd}PqqW|S(Nu*u*finalFT(uFalseu_partsu isinstanceu string_typesu startswithuTrue(uselfuresultux((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu is_prereleaseQs uLegacyVersion.is_prereleaseN(u__name__u __module__u __qualname__uparseupropertyu is_prerelease(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu LegacyVersionMs cBsN|EeZdZeZeejƒZded†s u5_semantic_key..make_tuple..(uNoneusplitutuple(usuabsenturesultuparts((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu make_tuples   u!_semantic_key..make_tuplecSsg|]}t|ƒ‘qS((uint(u.0ui((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu s u!_semantic_key..iu|iu*(u is_semveruUnsupportedVersionErrorugroups( usu make_tupleumugroupsumajoruminorupatchupreubuild((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu _semantic_key~s  &'u _semantic_keycBs2|EeZdZdd„Zedd„ƒZdS(uSemanticVersioncCs t|ƒS(N(u _semantic_key(uselfus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuparse”suSemanticVersion.parsecCs|jdddkS(Niiu|(u_parts(uself((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu is_prerelease—suSemanticVersion.is_prereleaseN(u__name__u __module__u __qualname__uparseupropertyu is_prerelease(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuSemanticVersion“s cBs|EeZdZeZdS(uSemanticMatcherN(u__name__u __module__u __qualname__uSemanticVersionu version_class(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuSemanticMatcherœscBsS|EeZdZd dd„Zdd„Zdd„Zdd„Zd d „Zd S( u VersionSchemecCs||_||_||_dS(N(ukeyumatcheru suggester(uselfukeyumatcheru suggester((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu__init__¡s  uVersionScheme.__init__c Cs9y|jj|ƒd}Wntk r4d}YnX|S(NTF(umatcheru version_classuTrueuUnsupportedVersionErroruFalse(uselfusuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuis_valid_version¦s    uVersionScheme.is_valid_versionc Cs6y|j|ƒd}Wntk r1d}YnX|S(NTF(umatcheruTrueuUnsupportedVersionErroruFalse(uselfusuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuis_valid_matcher®s     uVersionScheme.is_valid_matchercCs|jd|ƒS(u: Used for processing some metadata fields udummy_name (%s)(uis_valid_matcher(uselfus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuis_valid_constraint_list¶su&VersionScheme.is_valid_constraint_listcCs+|jdkrd}n|j|ƒ}|S(N(u suggesteruNone(uselfusuresult((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyusuggest¼s uVersionScheme.suggestN( u__name__u __module__u __qualname__uNoneu__init__uis_valid_versionuis_valid_matcheruis_valid_constraint_listusuggest(u __locals__((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu VersionScheme s    u VersionSchemeu normalizedcCs|S(N((uselfus((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyuÆsuulegacyusemanticudefaultcCs'|tkrtd|ƒ‚nt|S(Nuunknown scheme name: %r(u_SCHEMESu ValueError(uname((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu get_schemeÎs ()u__doc__uloggingureucompatu string_typesu__all__u getLoggeru__name__uloggeru ValueErroruUnsupportedVersionErroruobjectuVersionuMatcherucompileuPEP426_VERSION_REu _pep426_keyu_normalized_keyuNormalizedVersionu _match_prefixuNormalizedMatcheru _REPLACEMENTSu_SUFFIX_REPLACEMENTSu_NUMERIC_PREFIXu_suggest_semantic_versionu_suggest_normalized_versionuIu _VERSION_PARTuNoneu_VERSION_REPLACEu _legacy_keyu LegacyVersionu LegacyMatcheru _SEMVER_REu is_semveru _semantic_keyuSemanticVersionuSemanticMatcheru VersionSchemeu_SCHEMESu get_scheme(((u4/tmp/pip-zej_zi-build/pip/_vendor/distlib/version.pyu s~   1j /$ Q  . r       #