/{YMc@sddlmZddlZddlZddlZddlmZmZmZmZddl m Z m Z ddddgZ Gd ddZ d d Zdd dZddddZdddZejjdsejdkr[[e jde jdndS(i(u generatorsN(u PKG_DIRECTORYu PY_COMPILEDu PY_SOURCEu PY_FROZEN(u StrictVersionu LooseVersionuRequireu find_moduleuget_module_constantuextract_constantcBsw|EeZdZdZdddddZddZddZdd d d Zdd d Z dddZ dS(uRequireu7A prerequisite to building or installing a distributionucCsn|dkr!|dk r!t}n|dk rQ||}|dkrQd}qQn|jjt|`dS(Nu __version__(uNoneu StrictVersionu__dict__uupdateulocalsuself(uselfunameurequested_versionumoduleuhomepageu attributeuformat((u+/tmp/pip-jy811g-build/setuptools/depends.pyu__init__ s     uRequire.__init__cCs*|jdk r#d|j|jfS|jS(u0Return full package/distribution name, w/versionu%s-%sN(urequested_versionuNoneuname(uself((u+/tmp/pip-jy811g-build/setuptools/depends.pyu full_namesuRequire.full_namecCs=|jdkp<|jdkp<t|dko<||jkS(u%Is 'version' sufficiently up-to-date?uunknownN(u attributeuNoneuformatustrurequested_version(uselfuversion((u+/tmp/pip-jy811g-build/setuptools/depends.pyu version_ok$suRequire.version_okuunknownc Cs|jdkray6t|j|\}}}|r@|jn|SWqatk r]dSYqaXnt|j|j||}|dk r||k r|jdk r|j|S|S(uGet 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(u attributeuNoneu find_moduleumoduleucloseu ImportErroruget_module_constantuformat(uselfupathsudefaultufupuiuv((u+/tmp/pip-jy811g-build/setuptools/depends.pyu get_version*s    ' uRequire.get_versioncCs|j|dk S(u/Return true if dependency is present on 'paths'N(u get_versionuNone(uselfupaths((u+/tmp/pip-jy811g-build/setuptools/depends.pyu is_presentFsuRequire.is_presentcCs,|j|}|dkrdS|j|S(u>Return true if dependency is present and up-to-date on 'paths'NF(u get_versionuNoneuFalseu version_ok(uselfupathsuversion((u+/tmp/pip-jy811g-build/setuptools/depends.pyu is_currentKs uRequire.is_currentN( u__name__u __module__u __qualname__u__doc__uNoneu__init__u full_nameu version_oku get_versionu is_presentu is_current(u __locals__((u+/tmp/pip-jy811g-build/setuptools/depends.pyuRequire s  c csddlm}ddlm}m}|d|j}t|j}d}d}x||kr||}||kr||d||dd|} |d7}||kr| td }qVqnd } |d7}|| fVqVWd S( u>Yield '(op,arg)' pair for each operation in code object 'code'i(uarray(u HAVE_ARGUMENTu EXTENDED_ARGubiiiiiN(uarrayudisu HAVE_ARGUMENTu EXTENDED_ARGuco_codeulenu long_typeuNone( ucodeuarrayu HAVE_ARGUMENTu EXTENDED_ARGubytesueofuptru extended_arguopuarg((u+/tmp/pip-jy811g-build/setuptools/depends.pyu _iter_codeSs"  "    u _iter_codec Cs|jd}x|r|jd}tj||\}}\}}}} |tkrv|pgdg}|g}q|rtd||fqqW| S(u7Just like 'imp.find_module()', but with package supportu.iu__init__uCan't find %r in %s(usplitupopuimpu find_moduleu PKG_DIRECTORYu ImportError( umoduleupathsupartsupartufupathusuffixumodeukinduinfo((u+/tmp/pip-jy811g-build/setuptools/depends.pyu find_module|s (  ic Cs!y%t||\}}\}}}Wntk r=dSYnXz|tkrl|jdtj|} n|tkrtj |} no|t krt |j|d} nH|t j krtj||||||fntt j ||dSWd|r|jnXt| ||S(uFind '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'.iuexecN(u find_moduleu ImportErroruNoneu PY_COMPILEDureadumarshaluloadu PY_FROZENuimpuget_frozen_objectu PY_SOURCEucompileusysumodulesu load_moduleugetattrucloseuextract_constant( umoduleusymboludefaultupathsufupathusuffixumodeukinducode((u+/tmp/pip-jy811g-build/setuptools/depends.pyuget_module_constants$%      "c Cs||jkrdSt|jj|}d}d}d}|}xdt|D]V\}} ||krx|j| }qP| |kr||ks||kr|S|}qPWdS(uExtract 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(uco_namesuNoneulistuindexu _iter_codeu co_consts( ucodeusymboludefaultuname_idxu STORE_NAMEu STORE_GLOBALu LOAD_CONSTuconstuopuarg((u+/tmp/pip-jy811g-build/setuptools/depends.pyuextract_constants  $ujavaucliii(u __future__u generatorsusysuimpumarshalu PKG_DIRECTORYu PY_COMPILEDu PY_SOURCEu PY_FROZENudistutils.versionu StrictVersionu LooseVersionu__all__uRequireu _iter_codeuNoneu find_moduleuget_module_constantuextract_constantuplatformu startswithuremove(((u+/tmp/pip-jy811g-build/setuptools/depends.pyus$"I )))"!