ó Àfc@`s<ddlmZmZmZddlZddlZddlZddlZddlm Z m Z ddl m Z m Z mZdefd„ƒYZde ejeƒfd „ƒYZd efd „ƒYZd efd „ƒYZd„Zdefd„ƒYZejdƒZd„Zd„Zdefd„ƒYZdS(i(tabsolute_importtdivisiontprint_functionNi(t string_typestwith_metaclass(tVersiont LegacyVersiontparsetInvalidSpecifiercB`seZdZRS(sH An invalid specifier was found, users should refer to PEP 440. (t__name__t __module__t__doc__(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRst BaseSpecifiercB`sžeZejd„ƒZejd„ƒZejd„ƒZejd„ƒZejd„ƒZ e j d„ƒZ ejdd„ƒZ ejdd„ƒZ RS( cC`sdS(sŽ Returns the str representation of this Specifier like object. This should be representative of the Specifier itself. N((tself((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__str__tcC`sdS(sF Returns a hash value for this Specifier like object. N((R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__hash__RcC`sdS(sq Returns a boolean representing whether or not the two Specifier like objects are equal. N((R tother((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__eq__$RcC`sdS(su Returns a boolean representing whether or not the two Specifier like objects are not equal. N((R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__ne__+RcC`sdS(sg Returns whether or not pre-releases as a whole are allowed by this specifier. N((R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt prereleases2RcC`sdS(sd Sets whether or not pre-releases as a whole are allowed by this specifier. N((R tvalue((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR9RcC`sdS(sR Determines if the given item is contained within this specifier. N((R titemR((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pytcontains@RcC`sdS(s• Takes an iterable of items and filters them so that only items which are contained within this specifier are allowed in it. N((R titerableR((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pytfilterFRN(R R tabctabstractmethodRRRRtabstractpropertyRtsettertNoneRR(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR st_IndividualSpecifiercB`s¼eZiZddd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z e d „ƒZ e d „ƒZe d „ƒZejd „ƒZd „Zdd„Zdd„ZRS(RcC`sj|jj|ƒ}|s0tdj|ƒƒ‚n|jdƒjƒ|jdƒjƒf|_||_dS(NsInvalid specifier: '{0}'toperatortversion(t_regextsearchRtformattgrouptstript_spect _prereleases(R tspecRtmatch((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__init__Rs cC`sF|jdk r!dj|jƒnd}dj|jjt|ƒ|ƒS(Ns, prereleases={0!r}Rs<{0}({1!r}{2})>(R(RR$Rt __class__R tstr(R tpre((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__repr___s !  cC`sdj|jŒS(Ns{0}{1}(R$R'(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRlscC`s t|jƒS(N(thashR'(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRoscC`s`t|tƒr:y|j|ƒ}WqPtk r6tSXnt||jƒsPtS|j|jkS(N(t isinstanceRR,RtNotImplementedR'(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRrs cC`s`t|tƒr:y|j|ƒ}WqPtk r6tSXnt||jƒsPtS|j|jkS(N(R1RR,RR2R'(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR}s cC`st|dj|j|ƒƒS(Ns _compare_{0}(tgetattrR$t _operators(R top((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt _get_operatorˆscC`s(t|ttfƒs$t|ƒ}n|S(N(R1RRR(R R!((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_coerce_version‹scC`s |jdS(Ni(R'(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR scC`s |jdS(Ni(R'(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR!”scC`s|jS(N(R((R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR˜scC`s ||_dS(N(R((R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRœscC`s |j|ƒS(N(R(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt __contains__ scC`sW|dkr|j}n|j|ƒ}|jr;| r;tS|j|jƒ||jƒS(N(RRR7t is_prereleasetFalseR6R R!(R RR((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR£s   cc`s¾t}g}i|dk r!|ntd6}xf|D]^}|j|ƒ}|j||r2|jr‚|pn|j r‚|j|ƒqt}|Vq2q2W| rº|rºx|D] }|Vq¨WndS(NR(R:RtTrueR7RR9Rtappend(R RRtyieldedtfound_prereleasestkwR!tparsed_version((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR¶s     N(R R R4RR+R/RRRRR6R7tpropertyR R!RRR8RR(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRNs       tLegacySpecifiercB`s¡eZdZejdedejejBƒZidd6dd6dd6d d 6d d 6d d6Zd„Z d„Z d„Z d„Z d„Z d„Zd„ZRS(sÛ (?P(==|!=|<=|>=|<|>)) \s* (?P [^,;\s)]* # Since this is a "legacy" specifier, and the version # string can be just about anything, we match everything # except for whitespace, a semi-colon for marker support, # a closing paren since versions can be enclosed in # them, and a comma since it's a version separator. ) s^\s*s\s*$tequals==t not_equals!=tless_than_equals<=tgreater_than_equals>=t less_thantcC`s(t|tƒs$tt|ƒƒ}n|S(N(R1RR-(R R!((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR7òscC`s||j|ƒkS(N(R7(R t prospectiveR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_equal÷scC`s||j|ƒkS(N(R7(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_not_equalúscC`s||j|ƒkS(N(R7(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_less_than_equalýscC`s||j|ƒkS(N(R7(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_greater_than_equalscC`s||j|ƒkS(N(R7(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_less_thanscC`s||j|ƒkS(N(R7(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_greater_thans(R R t _regex_strtretcompiletVERBOSEt IGNORECASER"R4R7RLRMRNRORPRQ(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRBÖs"        c`s"tjˆƒ‡fd†ƒ}|S(Nc`s#t|tƒstSˆ|||ƒS(N(R1RR:(R RKR)(tfn(sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pytwrapped s(t functoolstwraps(RWRX((RWsK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_require_version_compare st SpecifiercB`seZdZejdedejejBƒZidd6dd6dd6d d 6d d 6d d6dd6dd6Ze d„ƒZ e d„ƒZ e d„ƒZ e d„ƒZ e d„ƒZe d„ƒZe d„ƒZd„Zed„ƒZejd„ƒZRS(s (?P(~=|==|!=|<=|>=|<|>|===)) (?P (?: # The identity operators allow for an escape hatch that will # do an exact string match of the version you wish to install. # This will not be parsed by PEP 440 and we cannot determine # any semantic meaning from it. This operator is discouraged # but included entirely as an escape hatch. (?<====) # Only match for the identity operator \s* [^\s]* # We just match everything, except for whitespace # since we are only testing for strict identity. ) | (?: # The (non)equality operators allow for wild card and local # versions to be specified so we have to define these two # operators separately to enable that. (?<===|!=) # Only match for equals and not equals \s* v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)* # release (?: # pre release [-_\.]? (a|b|c|rc|alpha|beta|pre|preview) [-_\.]? [0-9]* )? (?: # post release (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) )? # You cannot use a wild card and a dev or local version # together so group them with a | and make them optional. (?: (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local | \.\* # Wild card syntax of .* )? ) | (?: # The compatible operator requires at least two digits in the # release segment. (?<=~=) # Only match for the compatible operator \s* v? (?:[0-9]+!)? # epoch [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) (?: # pre release [-_\.]? (a|b|c|rc|alpha|beta|pre|preview) [-_\.]? [0-9]* )? (?: # post release (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) )? (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release ) | (?: # All other operators only allow a sub set of what the # (non)equality operators do. Specifically they do not allow # local versions to be specified nor do they allow the prefix # matching wild cards. (?=RGRHRIRJt arbitrarys===cC`sfdjttjd„t|ƒƒƒd ƒ}|d7}|jdƒ||ƒoe|jdƒ||ƒS(Nt.cS`s|jdƒ o|jdƒ S(Ntposttdev(t startswith(tx((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pytsiÿÿÿÿs.*s>=s==(tjointlistt itertoolst takewhilet_version_splitR6(R RKR)tprefix((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_compatible‚s   cC`s™|jdƒrht|jƒ}t|d ƒ}tt|ƒƒ}|t|ƒ }t||ƒ\}}n't|ƒ}|jst|jƒ}n||kS(Ns.*iþÿÿÿ(tendswithRtpublicRiR-tlent _pad_versiontlocal(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRLs  cC`s|j||ƒ S(N(RL(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRMÀscC`s|t|ƒkS(N(R(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRNÄscC`s|t|ƒkS(N(R(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyROÈscC`sXt|ƒ}||kstS|j rT|jrTt|jƒt|jƒkrTtSntS(N(RR:R9t base_versionR;(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRPÌs  cC`sŒt|ƒ}||kstS|j rT|jrTt|jƒt|jƒkrTtSn|jdk rˆt|jƒt|jƒkrˆtSntS(N(RR:tis_postreleaseRqRpRR;(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRQås  cC`s"t|ƒjƒt|ƒjƒkS(N(R-tlower(R RKR)((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt_compare_arbitraryscC`ss|jdk r|jS|j\}}|dkro|dkrY|jdƒrY|d }nt|ƒjrotSntS( Ns==s>=s<=s~=s===s.*iþÿÿÿ(s==s>=s<=s~=s===(R(RR'RlRR9R;R:(R R R!((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRs  cC`s ||_dS(N(R((R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRs(R R RRRSRTRURVR"R4R[RkRLRMRNRORPRQRtRARR(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR\s,^ # s^([0-9]+)((?:a|b|c|rc)[0-9]+)$cC`s\g}xO|jdƒD]>}tj|ƒ}|rG|j|jƒƒq|j|ƒqW|S(NR_(tsplitt _prefix_regexR#textendtgroupsR<(R!tresultRR*((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRi'sc C`sgg}}|jttjd„|ƒƒƒ|jttjd„|ƒƒƒ|j|t|dƒƒ|j|t|dƒƒ|jddgtdt|dƒt|dƒƒƒ|jddgtdt|dƒt|dƒƒƒttj|Œƒttj|ŒƒfS(NcS`s |jƒS(N(tisdigit(Rc((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRd6RcS`s |jƒS(N(Rz(Rc((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRd7Riit0(R<RfRgRhRntinserttmaxtchain(tlefttrightt left_splitt right_split((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRo2s ""//t SpecifierSetcB`s¡eZddd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z e d „ƒZ e jd „ƒZ d „Zdd „Zdd„ZRS(RcC`s¨g|jdƒD]}|jƒr|jƒ^q}tƒ}xL|D]D}y|jt|ƒƒWqDtk r‡|jt|ƒƒqDXqDWt|ƒ|_||_ dS(Nt,( RuR&tsettaddR\RRBt frozensett_specsR((R t specifiersRtstparsedt specifier((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR+Os4   cC`s=|jdk r!dj|jƒnd}djt|ƒ|ƒS(Ns, prereleases={0!r}Rs(R(RR$RR-(R R.((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR/ds!cC`s djtd„|jDƒƒƒS(NR„cs`s|]}t|ƒVqdS(N(R-(t.0RŠ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pys ns(RetsortedRˆ(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRmscC`s t|jƒS(N(R0Rˆ(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRpscC`sÞt|tƒrt|ƒ}nt|tƒs1tStƒ}t|j|jBƒ|_|jdkr€|jdk r€|j|_nZ|jdk r­|jdkr­|j|_n-|j|jkrÎ|j|_n tdƒ‚|S(NsFCannot combine SpecifierSets with True and False prerelease overrides.( R1RRƒR2R‡RˆR(Rt ValueError(R RRŒ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__and__ss  cC`set|tƒrt|ƒ}n7t|tƒrBtt|ƒƒ}nt|tƒsUtS|j|jkS(N(R1RRƒRR-R2Rˆ(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRŠscC`set|tƒrt|ƒ}n7t|tƒrBtt|ƒƒ}nt|tƒsUtS|j|jkS(N(R1RRƒRR-R2Rˆ(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR”scC`s t|jƒS(N(RnRˆ(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__len__žscC`s t|jƒS(N(titerRˆ(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyt__iter__¡scC`s:|jdk r|jS|js#dStd„|jDƒƒS(Ncs`s|]}|jVqdS(N(R(RRŠ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pys ³s(R(RRˆtany(R ((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR¤s  cC`s ||_dS(N(R((R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRµscC`s |j|ƒS(N(R(R R((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR8¹sc`sptˆttfƒs$tˆƒ‰nˆdkr<|j‰nˆ rPˆjrPtSt‡‡fd†|j DƒƒS(Nc3`s$|]}|jˆdˆƒVqdS(RN(R(RRŠ(RR(sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pys Õs( R1RRRRRR9R:tallRˆ(R RR((RRsK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyR¼s  cC`s |dkr|j}n|jrTx,|jD]!}|j|dt|ƒƒ}q+W|Sg}g}xƒ|D]{}t|ttfƒs‘t|ƒ}n|}t|tƒr¬qgn|j rÕ| rÕ|sâ|j |ƒqâqg|j |ƒqgW| r|r|dkr|S|SdS(NR( RRRˆRtboolR1RRRR9R<(R RRR)tfilteredR>RR@((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRÙs*    N(R R RR+R/RRRRRR‘R“RARRR8RR(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyRƒMs       (t __future__RRRRRYRgRSt_compatRRR!RRRRRtABCMetatobjectR RRBR[R\RTRvRiRoRƒ(((sK/usr/lib/python2.7/site-packages/setuptools/_vendor/packaging/specifiers.pyts"    "9ˆ4 ÿ