ó . ^c@sÓddlZddlZddlZddlmZddlmZddlmZm Z m Z m Z ddl mZddd d gZ ddd „ƒYZd „Zddd „Zdd„Zd„ZeƒdS(iÿÿÿÿN(t StrictVersioni(tBytecode(t find_modulet PY_COMPILEDt PY_FROZENt PY_SOURCE(t py27compattRequireRtget_module_constanttextract_constantcBsYeZdZdd d d„Zd„Zd„Zd dd„Zd d„Zd d„Z RS( s7A prerequisite to building or installing a distributiontcCsn|dkr!|dk r!t}n|dk rQ||ƒ}|dkrQd}qQn|jjtƒƒ|`dS(Nt __version__(tNoneRt__dict__tupdatetlocalstself(Rtnametrequested_versiontmodulethomepaget attributetformat((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt__init__s     cCs*|jdk r#d|j|jfS|jS(s0Return full package/distribution name, w/versions%s-%sN(RR R(R((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt full_name#scCs=|jdkp<|jdkp<t|ƒdko<||jkS(s%Is 'version' sufficiently up-to-date?tunknownN(RR RtstrR(Rtversion((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt version_ok)sRcCs°|jdkr]y6t|j|ƒ\}}}|r@|jƒn|SWq]tk rYdSXnt|j|j||ƒ}|dk r¬||k r¬|jdk r¬|j|ƒS|S(s×Get version number of installed module, 'None', or 'default' Search 'paths' for module. If not found, return 'None'. If found, return the extracted version attribute, or 'default' if no version attribute was specified, or the value cannot be determined without importing the module. The version is formatted according to the requirement's version format (if any), unless it is 'None' or the supplied 'default'. N(RR RRtcloset ImportErrorRR(Rtpathstdefaulttftptitv((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt get_version.s   ' cCs|j|ƒdk S(s/Return true if dependency is present on 'paths'N(R%R (RR((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt is_presentIscCs,|j|ƒ}|dkrtS|j|ƒS(s>Return true if dependency is present and up-to-date on 'paths'N(R%R tFalseR(RRR((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt is_currentMs N( t__name__t __module__t__doc__R RRRR%R&R((((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyRs   cCs,tjd„ƒ}|s|ƒStj|ƒS(Ncss dVdS(N((((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pytemptyVs(t contextlibtcontextmanagertclosing(R!R,((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt maybe_closeUsc Csùy)t||ƒ\}}\}}}} Wntk r=dSXt|ƒ|tkrv|jdƒtj|ƒ} nm|tkr—t j ||ƒ} nL|t kr¾t |jƒ|dƒ} n%t j ||| ƒ} t| |dƒSWdQXt| ||ƒS(süFind 'module' by searching 'paths', and extract 'symbol' Return 'None' if 'module' does not exist on 'paths', or it does not define 'symbol'. If the module defines 'symbol' as a constant, return the constant. Otherwise, return 'default'.itexecN(RRR R0RtreadtmarshaltloadRRtget_frozen_objectRtcompilet get_moduletgetattrR ( RtsymbolR RR!tpathtsuffixtmodetkindtinfotcodetimported((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyR`s)      c Csº||jkrdSt|jƒj|ƒ}d}d}d}|}xpt|ƒD]b}|j} |j} | |kr„|j| }qP| |kr¬| |ks¨| |kr¬|S|}qPWdS(sExtract the constant value of 'symbol' from 'code' If the name 'symbol' is bound to a constant value by the Python code object 'code', return that value. If 'symbol' is bound to an expression, return 'default'. Otherwise, return 'None'. Return value is based on the first assignment to 'symbol'. 'symbol' must be a global, or at least a non-"fast" local in the code block. That is, only 'STORE_NAME' and 'STORE_GLOBAL' opcodes are checked, and 'symbol' must be present in 'code.co_names'. iZiaidN(tco_namesR tlisttindexRtopcodetargt co_consts( R?R9R tname_idxt STORE_NAMEt STORE_GLOBALt LOAD_CONSTtconstt byte_codetopRE((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyR }s    $cCsXtjjdƒ r&tjdkr&dSd}x%|D]}tƒ|=tj|ƒq3WdS(s• Patch the globals to remove the objects not available on some platforms. XXX it'd be better to test assertions about bytecode instead. tjavatcliNR R(R R(tsystplatformt startswithtglobalst__all__tremove(t incompatibleR((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyt_update_globals¡s "  ((RPR3R-tdistutils.versionRt py33compatRRRRRRR RTRR0R RR RW(((s6/usr/lib/python2.7/dist-packages/setuptools/depends.pyts   "D  $