ó œ0{Yc @srdZddlZddlZddlmZddddd d d d gZejeƒZd e fd „ƒYZ de fd„ƒYZ de fd„ƒYZ ejdƒZd„ZeZde fd„ƒYZd„Zde fd„ƒYZejdƒdfejdƒdfejdƒdfejdƒdfejdƒdfejd ƒdfejd!ƒd"fejd#ƒd$fejd%ƒd&fejd'ƒd(ff Zejd)ƒdfejd*ƒdfejd+ƒd"fejd!ƒd"fejd,ƒdffZejd-ƒZd.„Zd/„Zejd0ejƒZid1d26d1d36d4d56d1d66d7d86dd6dd"6Zd9„Zde fd:„ƒYZde fd;„ƒYZ ejd<ejƒZ!d=„Z"d>„Z#d e fd?„ƒYZ$d e fd@„ƒYZ%dAe fdB„ƒYZ&ie&eeeƒdC6e&ee dD„ƒdE6e&e#e%eƒdF6Z'e'dCe'dGt‚t|ƒdksVt‚dS(Ni(tstript_stringtparset_partst isinstancettupletAssertionErrortlen(tselftstparts((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__init__scCstdƒ‚dS(Nsplease implement in a subclass(tNotImplementedError(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR$scCs5t|ƒt|ƒkr1td||fƒ‚ndS(Nscannot compare %r and %r(ttypet TypeError(Rtother((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt_check_compatible'scCs|j|ƒ|j|jkS(N(RR(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__eq__+s cCs|j|ƒ S(N(R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__ne__/scCs|j|ƒ|j|jkS(N(RR(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__lt__2s cCs|j|ƒp|j|ƒ S(N(R R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__gt__6scCs|j|ƒp|j|ƒS(N(R R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__le__9scCs|j|ƒp|j|ƒS(N(R!R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__ge__<scCs t|jƒS(N(thashR(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__hash__@scCsd|jj|jfS(Ns%s('%s')(t __class__R R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__repr__CscCs|jS(N(R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt__str__FscCstdƒ‚dS(NsPlease implement in subclasses.(R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt is_prereleaseIs(R R RRRRRR R!R"R#R%R'R(tpropertyR)(((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR s            tMatchercBsÞeZdZejdƒZejdƒZejdƒZid„d6d„d6d„d6d „d 6d „d 6d „d6d„d6Z d„Z d„Z e d„ƒZ d„Zd„Zd„Zd„Zd„Zd„ZRS(s^(\w[\s\w'.-]*)(\((.*)\))?s#^(<=|>=|<|>|!=|==|~=)?\s*([^\s,]+)$s ^\d+(\.\d+)*$cCs ||kS(N((tvtctp((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pytWstcCs||kp||kS(N((R,R-R.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR/Yss<=cCs||kp||kS(N((R,R-R.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR/Zss>=cCs ||kS(N((R,R-R.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR/[ss==cCs||kp||kS(N((R,R-R.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR/]ss~=cCs ||kS(N((R,R-R.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR/^ss!=c CsÚ|jdkrtdƒ‚n|jƒ|_}|jj|ƒ}|s\td|ƒ‚n|jdƒ}|djƒ|_|jj ƒ|_ g}|drÇg|dj dƒD]}|jƒ^q´}xø|D]í}|j j|ƒ}|s td||fƒ‚n|jƒ}|dp#d}|d }|j d ƒr”|dkr^td |ƒ‚n|d t}} |jj|ƒsª|j|ƒqªn|j|ƒt}} |j||| fƒqÓWnt|ƒ|_dS(NsPlease specify a version classs Not valid: %rtiit,sInvalid %r in %rs~=is.*s==s!=s#'.*' not allowed for %r constraintsiþÿÿÿ(s==s!=(t version_classtNonet ValueErrorR Rtdist_retmatchtgroupstnametlowertkeytsplittcomp_retendswithtTruetnum_retFalsetappendRR( RRtmR9tclistR-t constraintstoptvntprefix((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRas: ,     cCs¶t|tƒr!|j|ƒ}nxŽ|jD]ƒ\}}}|jj|ƒ}t|tƒrmt||ƒ}n|s˜d||jjf}t |ƒ‚n||||ƒs+t Sq+Wt S(sÊ Check if the provided version matches the constraints. :param version: The version to match against this instance. :type version: Strring or :class:`Version` instance. s%r not implemented for %s( RRR4Rt _operatorstgettgetattrR&R RRBR@(Rtversiontoperatort constraintRItftmsg((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR8†scCsJd}t|jƒdkrF|jdddkrF|jdd}n|S(Niis==(R5RR(Rtresult((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt exact_version›s,cCsGt|ƒt|ƒks*|j|jkrCtd||fƒ‚ndS(Nscannot compare %s and %s(RR:R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR¢s*cCs/|j|ƒ|j|jko.|j|jkS(N(RR<R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR¦s cCs|j|ƒ S(N(R(RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRªscCst|jƒt|jƒS(N(R$R<R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR%®scCsd|jj|jfS(Ns%s(%r)(R&R R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR'±scCs|jS(N(R(R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR(´sN(R R R5R4tretcompileR7R>RARJRR8R*RSRRRR%R'R((((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR+Ns*        %      sQ^(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(-(\d+(\.\d+)?))?$cCsí|jƒ}tj|ƒ}|s4td|ƒ‚n|jƒ}td„|djdƒDƒƒ}x0t|ƒdkr•|ddkr•|d }qfW|dd!}|d d !}|d d !}|d }|dkrÜd}n|dt |dƒf}|dkr d}n|dt |dƒf}|dkr:d}n|dt |dƒf}|dkrid}n.tg|jdƒD]}t |ƒ^q|ƒ}|s¼| r³|r³d}q¼d}n|sËd}n|sÚd}n|||||fS(NsNot a valid version: %scss|]}t|ƒVqdS(N(tint(t.0R,((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pys Ãsit.iiÿÿÿÿiiiii i i tatzt_tfinal(NN((NN((NN(((RYiÿÿÿÿ(RZ(R[(sfinal( R tPEP426_VERSION_RER8RR9RR=RR5RV(RRDR9tnumstpretposttdevtlocal((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt _pep426_key½sB  #%            .     cBsAeZdZd„ZedddddgƒZed„ƒZRS(sIA 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 cCsQt|ƒ}tj|ƒ}|jƒ}td„|djdƒDƒƒ|_|S(Ncss|]}t|ƒVqdS(N(RV(RWR,((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pys siRX(t_normalized_keyR]R8R9RR=t_release_clause(RRRRRDR9((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRs   &RYtbR-trcRacst‡fd†ˆjDƒƒS(Nc3s(|]}|r|dˆjkVqdS(iN(t PREREL_TAGS(RWtt(R(sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pys s(tanyR(R((RsL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR)s(R R R RtsetRhR*R)(((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRïs cCsUt|ƒ}t|ƒ}||kr(tS|j|ƒs;tSt|ƒ}||dkS(NRX(tstrR@t startswithRBR(txtytn((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt _match_prefixs    cBseZeZidd6dd6dd6dd6dd 6d d 6d d 6Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z RS(t_match_compatibles~=t _match_ltR0t _match_gtR1t _match_les<=t _match_ges>=t _match_eqs==t _match_nes!=cCsx|r"d|ko|jd}n|jd o:|jd}|rn|jjddƒd}|j|ƒ}n||fS(Nt-iÿÿÿÿii(RRR=R4(RRMRORIt strip_localR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt _adjust_local,scCsj|j|||ƒ\}}||kr+tS|j}djg|D]}t|ƒ^qAƒ}t||ƒ S(NRX(R{RBRetjoinRlRq(RRMRORItrelease_clausetitpfx((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRs:s   (cCsj|j|||ƒ\}}||kr+tS|j}djg|D]}t|ƒ^qAƒ}t||ƒ S(NRX(R{RBReR|RlRq(RRMRORIR}R~R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRtBs   (cCs%|j|||ƒ\}}||kS(N(R{(RRMRORI((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRuJscCs%|j|||ƒ\}}||kS(N(R{(RRMRORI((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRvNscCsC|j|||ƒ\}}|s0||k}nt||ƒ}|S(N(R{Rq(RRMRORIRR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRwRs cCsD|j|||ƒ\}}|s0||k}nt||ƒ }|S(N(R{Rq(RRMRORIRR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRxZs cCs˜|j|||ƒ\}}||kr+tS||kr;tS|j}t|ƒdkrc|d }ndjg|D]}t|ƒ^qpƒ}t||ƒS(NiiÿÿÿÿRX(R{R@RBReRR|RlRq(RRMRORIR}R~R((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRrbs    (( R R RR4RJR{RsRtRuRvRwRxRr(((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRs"        s[.+-]$R2s^[.](\d)s0.\1s^[.-]s ^\((.*)\)$s\1s^v(ersion)?\s*(\d+)s\2s^r(ev)?\s*(\d+)s[.]{2,}RXs\b(alfa|apha)\btalphas\b(pre-alpha|prealpha)\bs pre.alphas \(beta\)$tbetas ^[:~._+-]+s [,*")([\]]s[~:+_ -]s\.$s (\d+(\.\d+)*)c Csé|jƒjƒ}x&tD]\}}|j||ƒ}qW|sJd}ntj|ƒ}|snd}|}nû|jƒdjdƒ}g|D]}t|ƒ^qŽ}x#t |ƒdkrË|j dƒq©Wt |ƒdkrñ||j ƒ}nDdj g|dD]}t |ƒ^qƒ||j ƒ}|d }dj g|D]}t |ƒ^qBƒ}|jƒ}|r›x)tD]\}}|j||ƒ}qvWn|sª|}n&d|kr¼dnd}|||}t|ƒsåd}n|S( s€ Try to suggest a semantic form for a version for which _suggest_normalized_version couldn't come up with anything. s0.0.0iRXiRaRyt+N(R R;t _REPLACEMENTStsubt_NUMERIC_PREFIXR8R9R=RVRRCtendR|Rlt_SUFFIX_REPLACEMENTSt is_semverR5( RRRtpattreplRDRItsuffixR~tsep((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt_suggest_semantic_version‡s:  : (    cCs yt|ƒ|SWntk r%nX|jƒ}xSd2d3d4d5d6d7d8d9d:d;d<d=d>d?d@fD]\}}|j||ƒ}qfWtjdd|ƒ}tjdd|ƒ}tjdd|ƒ}tjdd|ƒ}tjdd|ƒ}|jdƒr |d }ntjd!d|ƒ}tjd"d#|ƒ}tjd$d%|ƒ}tjd&d|ƒ}tjd'd(|ƒ}tjd)d(|ƒ}tjd*d |ƒ}tjd+d,|ƒ}tjd-d%|ƒ}tjd.d/|ƒ}tjd0d1|ƒ}yt|ƒWntk rdA}nX|S(Bsè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. s-alphaRYs-betaRfR€RRgR-s-finalR2s-pres-releases.releases-stableR‚RXR[t s.finalR\spre$tpre0sdev$tdev0s([abc]|rc)[\-\.](\d+)$s\1\2s[\-\.](dev)[\-\.]?r?(\d+)$s.\1\2s[.~]?([abc])\.?s\1R,is\b0+(\d+)(?!\d)s (\d+[abc])$s\g<1>0s\.?(dev-r|dev\.r)\.?(\d+)$s.dev\2s-(a|b|c)(\d+)$s[\.\-](dev|devel)$s.dev0s(?![\.\-])dev$s(final|stable)$s\.?(r|-|-r)\.?(\d+)$s.post\2s\.?(dev|git|bzr)\.?(\d+)$s\.?(pre|preview|-c)(\d+)$sc\g<2>sp(\d+)$s.post\1(s-alphaRY(s-betaRf(R€RY(RRf(srcR-(s-finalR2(s-preR-(s-releaseR2(s.releaseR2(s-stableR2(R‚RX(R[RX(RŽR2(s.finalR2(sfinalR2N(RdRR;treplaceRTR„RmR5(RtrstorigRŠ((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt_suggest_normalized_versionµsH           s([a-z]+|\d+|[\.-])R-R_tpreviewsfinal-RyRgt@RacCs¬d„}g}x||ƒD]‚}|jdƒr‘|dkrgx'|rc|ddkrc|jƒq@Wnx'|r|ddkr|jƒqjWn|j|ƒqWt|ƒS(NcSs›g}xtj|jƒƒD]j}tj||ƒ}|rd|d koUdknrl|jdƒ}n d|}|j|ƒqqW|jdƒ|S(Nt0it9it*s*final(t _VERSION_PARTR=R;t_VERSION_REPLACERKtzfillRC(RRRR.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt get_parts4s   R™s*finaliÿÿÿÿs*final-t00000000(RmtpopRCR(RRRRR.((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyt _legacy_key3s  cBs eZd„Zed„ƒZRS(cCs t|ƒS(N(R (RR((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRNscCsRt}xE|jD]:}t|tƒr|jdƒr|dkrt}PqqW|S(NR™s*final(RBRRRRmR@(RRRRn((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyR)Qs (R R RR*R)(((sL/opt/alt/python34/lib/python3.4/site-packages/pip/_vendor/distlib/version.pyRMs cBs?eZeZeejƒZded s~   1j /$ Q  . r       #