Yc@sSdZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZddlmZddlmZddlmZddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)ddlm*Z*dd l+m,Z,dd l-m.Z.dd l-m/Z/dd l0m1Z1ej2d Z3ej2dej4Z5ej2dZ6ej2dej4j7Z8dj9Z:ddddgZ;dZ<dZ=dZ>e?dZ@e?dZAe?dZBe?e e?dZCe?dZDdZEej2dej4ZFeEd ZGd!ejHd" e d#d$jHfZId%eJfd&YZKd'eKfd(YZLdefd)YZMej2d*jNZOd+ZPd,ZQd-ZRdd.ZSd/ZTejUd0ZVeSe<eVZVd1ZWd2ZXdS(3s#PyPI and direct package downloadingiN( t CHECKOUT_DISTt Distributiont BINARY_DISTtnormalize_patht SOURCE_DISTtrequiret Environmenttfind_distributionst safe_namet safe_versiont to_filenamet Requirementt DEVELOP_DIST(t ssl_support(tlog(tDistutilsError(turllib2thttplibtStringIOt HTTPErrorturlparset urlunparsetunquotet splitusert url2pathnametname2codepointtunichrturljointurlsplitt urlunsplit(t filterfalse(t translate(thashlib(twraps(tget_all_headerss^egg=([-A-Za-z0-9_.]+)$shref\s*=\s*['"]?([^'"> ]+)s([^<]+) \s+\(md5\)s([-+.a-z0-9]{2,}):s.tar.gz .tar.bz2 .tar .zip .tgzt PackageIndextdistros_for_urltparse_bdist_wininsttinterpret_distro_nameicCs|j}d\}}}|jdr|jdrL|d }d}q|jddr~|dd!}|d }d}q|jd r|d }d }q|jd d r|dd!}|d }d }qn|||fS(s=Return (base,pyversion) or (None,None) for possible .exe names.exes .win32.exeitwin32s .win32-pyiiis.win-amd64.exeis win-amd64s .win-amd64-pyiN(NNN(tlowertNonetendswitht startswith(tnameR(tbasetpy_vertplat((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR%,s$           cCst|\}}}}}}t|jdd}|dkrk|dkrkt|jdd}nd|kr|jdd\}}n||fS(Nt/issourceforge.nettdownloadit#i(RRtsplit(turltschemetservertpatht parameterstquerytfragmentR-((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytegg_info_for_urlDs ccst|\}}xt|||D] }|Vq%W|rtj|}|rx1t||jd|dtD] }|VqqWqndS(sEYield egg or source distribution objects that might be found at a URLit precedenceN(R;tdistros_for_locationt EGG_FRAGMENTtmatchR&tgroupR(R4tmetadataR-R:tdistR?((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR$Ls "cCs|jdr|d }n|jdrMd|krMtj|||gS|jdrt|\}}}|dk rt||||t|Snx>tD]6}|j|r|t| }t|||SqWgS(s:Yield egg or source distribution objects based on basenames.egg.zipis.eggt-s.exeN( R*Rt from_locationR%R)R&Rt EXTENSIONStlen(tlocationtbasenameRAtwin_baseR.tplatformtext((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR=Xs   cCs"tt|tjj||S(sEYield possible egg or source distribution objects based on a filename(R=RtosR7RH(tfilenameRA((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytdistros_for_filenamemsc cs|jd}|s^xFt|dD]1\}}t|dkr&|jdr&dSq&Wnxatdt|dD]F}t||dj|| dj||d|d|d |VqxWdS( sGenerate alternative interpretations of a source distro name Note: if `location` is a filesystem filename, you should call ``pkg_resources.normalize_path()`` on it before passing it to this routine! RCiispy2.Nit py_versionR<RJ(R3t enumerateRFR+trangeRtjoin( RGRHRAROR<RJtpartstitp((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR&ts!  ) ccst}|j}|dkrMxgt|j|D]}|||Vq1Wn;x8|D]0}||}||krT|||VqTqTWdS(sHList unique elements, preserving order. Remember all elements ever seen.N(tsettaddR)Rt __contains__(titerabletkeytseentseen_addtelementtk((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytunique_everseens         cstfd}|S(ss Wrap a function returning an iterable such that the resulting iterable only ever yields unique items. cst||S(N(R_(targstkwargs(tfunc(s</usr/lib/python2.7/site-packages/setuptools/package_index.pytwrappers(R!(RbRc((Rbs</usr/lib/python2.7/site-packages/setuptools/package_index.pyt unique_valuesss(<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>ccsxtj|D]}|j\}}tttj|jjd}d|ksgd|krx7t j|D]#}t |t |j dVqwWqqWxdd D]\}|j |}|dkrt j||}|rt |t |j dVqqqWdS( sEFind rel="homepage" and rel="download" links in `page`, yielding URLst,thomepageR1is Home PagesDownload URLiN(s Home PagesDownload URL(tRELtfinditertgroupsRVtmaptstrtstripR(R3tHREFRt htmldecodeR@tfindtsearch(R4tpageR?ttagtreltrelstpos((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfind_external_linkss'(  sPython-urllib/%s setuptools/%sit setuptoolsitContentCheckercBs)eZdZdZdZdZRS(sP A null content checker that defines the interface for checking content cCsdS(s3 Feed a block of data to the hash. N((tselftblock((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfeedscCstS(sC Check the hash. Return False if validation fails. (tTrue(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytis_validscCsdS(su Call reporter with information about the checker (hash name) substituted into the template. N((Rytreporterttemplate((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytreports(t__name__t __module__t__doc__R{R}R(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRxs  t HashCheckercBsJeZejdZdZedZdZdZ dZ RS(sK(?Psha1|sha224|sha384|sha256|sha512|md5)=(?P[a-f0-9]+)cCsO||_|dkr0tj|dt|_ntj||_||_dS(Ntmd5tusedforsecurity(t hash_nameR tnewtFalsethashtexpected(RyRR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt__init__s   cCsLt|d}|stS|jj|}|s<tS||jS(s5Construct a (possibly null) ContentChecker from a URLi(RRxtpatternRpt groupdict(tclsR4R:R?((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytfrom_urlscCs|jj|dS(N(Rtupdate(RyRz((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR{scCs|jj|jkS(N(Rt hexdigestR(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR}scCs||j}||S(N(R(RyR~Rtmsg((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs ( RRtretcompileRRt classmethodRR{R}R(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs    cBsveZdZdd%d&edZedZedZedZ dZ dZ d Z d Z d&d Zd Zd&d ZdZdZdZdZdZeeed&dZeedZdZdZdZdZd&dZdZdZdZdZ dZ!e"edZ#d Z$d!Z%d"Z&d#Z'd$Z(RS('s;A distribution index that scans web pages for download URLsshttps://pypi.python.org/simplet*cOstj||||d|jd |_i|_i|_i|_tjdj t t |j |_ g|_|rtjr|stjrtj||_n tj|_dS(NR0t|(RRR*t index_urlt scanned_urlst fetched_urlst package_pagesRRRRRjRR?tallowstto_scanR t is_availabletfind_ca_bundlet opener_fortopenerRturlopen(RyRthostst ca_bundlet verify_sslR`tkw((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR s   ' !c CsU||jkr| rdSt|j|%siii(R@(tm((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytsRN( RmRhRRnR@t ValueErrorRvR;R*tneed_version_infotscan_urltPYPI_MD5tsub( RyR4RqRR?RRtnew_urlR-tfrag((Rys</usr/lib/python2.7/site-packages/setuptools/package_index.pyRss$&  cCs|jd|dS(NsPPage at %s links to .py file(s) without version info; an index scan is required.(tscan_all(RyR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRscGsO|j|jkr;|r+|j||n|jdn|j|jdS(Ns6Scanning index of all packages (this may take a while)(RRRRR(RyRR`((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs  cCs|j|j|jd|jj|jsN|j|j|jdn|jj|jss|j|nx3t|jj|jdD]}|j|qWdS(NR0(( RRt unsafe_nameRRRZt project_nametnot_found_in_indexR(Ryt requirementR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt find_packagess%cCsk|j|j|x8||jD])}||kr;|S|jd||q%Wtt|j||S(Ns%s does not match %s(tprescanRRZRtsuperR#tobtain(RyRt installerRB((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs   cCsi|j|jd||jse|jtj|td|jjtj j |fndS(s- checker is a ContentChecker sValidating %%s checksum for %ss7%s validation failed for %s; possible download problem?N( RRR}RRLtunlinkRRR,R7RH(RytcheckerRMttfp((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt check_hashs     cCsrxk|D]c}|jdksJt| sJ|jdsJtt|rZ|j|q|jj|qWdS(s;Add `urls` to the list that will be prescanned for searchessfile:N(RR)RR+RR$Rtappend(RyturlsR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytadd_find_linkss  cCs2|jr%tt|j|jnd|_dS(s7Scan urls scheduled for prescanning (e.g. --find-links)N(RRRjRR)(Ry((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs cCsN||jr |jd}}n|jd}}|||j|jdS(Ns#Couldn't retrieve index page for %rs3Couldn't find index page for %r (maybe misspelled?)(RZRRRR(RyRtmethR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs   cCst|tst|}|r||j|jd||}t|\}}|jdrx|j|||}n|Stj j |r|Sytj |}Wqt k rt d|fqXnt|j||ddS(sLocate and/or download `spec` to `tmpdir`, returning a local path `spec` may be a ``Requirement`` object, or a string containing a URL, an existing local filename, or a project/version requirement spec (i.e. the string form of a ``Requirement`` object). If it is the URL of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is automatically created alongside the downloaded file. If `spec` is a ``Requirement`` object or a string containing a project/version requirement spec, this method returns the location of a matching distribution (possibly after downloading it to `tmpdir`). If `spec` is a locally existing file or directory name, it is simply returned unchanged. If `spec` is a URL, it is downloaded to a subpath of `tmpdir`, and the local filename is returned. Various errors may be raised if a problem occurs during downloading. is.pys1Not a URL, existing file, or requirement spec: %rRGN(RR Rt _download_urlR@R;R*t gen_setupRLR7RtparseRRRtfetch_distributionR)(RytspecttmpdirR5tfoundR-R:((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR1s"  c sKjd|id}dfd}|rcjj|||}n|dk r|p|||}n|dkrjdk rj||}n|dkr| rj|||}n|dkrjdr dpd|n/jd||jdj|j|SdS( s|Obtain a distribution suitable for fulfilling `requirement` `requirement` must be a ``pkg_resources.Requirement`` instance. If necessary, or if the `force_scan` flag is set, the requirement is searched for in the (online) package index as well as the locally installed packages. If a distribution matching `requirement` is found, the returned distribution's ``location`` is the value you would have gotten from calling the ``download()`` method with the matching distribution's URL or filename. If no matching distribution is found, ``None`` is returned. If the `source` flag is set, only source distributions and source checkout links will be considered. Unless the `develop_ok` flag is set, development and system eggs (i.e., those using the ``.egg-info`` format) will be ignored. sSearching for %scs|dkr}nx||jD]q}|jtkrn rn|kr#jd|d|R?R&R@R)tversionRFRLR7RHtdirnameRRtsetuptools.command.easy_installRtshutiltcopy2RtwriteRtsplitextRR( RyRMR:RR?tdRRHtdstRR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRhs44  i c Cs|jd|d \}}}zItj|}|j|}t|trqtd||j|j fn|j}d}|j } d} d|krt |d} t t t| } |j|||| | nt|d}x`trO|j| } | rK|j| |j| |d7}|j|||| | qPqW|j||||SWd|r~|jn|r|jnXdS( NsDownloading %ssCan't download %s: %s %siiscontent-lengthsContent-Lengthtwbi(NNN(RR)RRRRRRRRt dl_blocksizeR"tmaxRjtintt reporthookRR|RR{R RR( RyR4RMtfpRRRRtblocknumtbstsizetsizesRz((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyt _download_tos>        cCsdS(N((RyR4RMRtblksizeR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRscCs|jdrt|Syt||jSWnttjfk rtjd}dj g|j D]}t |^qf}|r|j ||qt d||fn'tjk rtjd}|Stjk r/tjd}|r|j ||jqt d||jfntjk rtjd}|rk|j ||jqt d||jfnStjk rtjd}|r|j ||qt d||fnXdS(Nsfile:it s%s %ssDownload error for %s: %ss;%s returned a bad status line. The server might be down, %s(R+t local_opentopen_with_authRRRt InvalidURLtsystexc_infoRRR`RkRRRRtURLErrortreasont BadStatusLinetlinet HTTPException(RyR4twarningtvtargR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs@ +cCs<t|\}}|rLx7d|krH|jddjdd}qWnd}|jdrn|d }ntjj||}|dks|jd r|j||S|d ks|jd r|j||S|jd r|j ||S|d krt t |dS|j |t |j||SdS(Ns..t.s\t_t__downloaded__s.egg.zipitsvnssvn+tgitsgit+shg+Ri(R;treplaceR*RLR7RRR+t _download_svnt _download_gitt _download_hgRRRR|t_attempt_download(RyR5R4RR,R:RM((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs$%  cCs|j|tdS(N(RR|(RyR4((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRscCsK|j||}d|jddjkrC|j|||S|SdS(NRs content-typeR(RRR(t_download_html(RyR4RMR((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyR1scCst|}xW|D]O}|jrtjd|r^|jtj||j||SPqqW|jtj|td|dS(Ns ([^- ]+ - )?Revision \d+:s���Unexpected HTML page found at ( ���R���Rl���R���Rp���R���RL���R���R.��R���(���Ry���R4���R���RM���R���R#��(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR2�� ��s����       c������ ���C���sT��|�j��d�d��d�}�d�}�|�j���j�d��r#d�|�k�r#t�|��\�}�}�}�}�}�} �|� r#|�j�d��r#d�|�d �k�r#|�d �j��d�d��\�}�}�t�|��\�} �} �| �r d �| �k�r�| �j��d �d��\�} �} �d �| �| �f�}�n �d �| �}�| �}�t�|�|�|�|�|�| �f��}�q q#n��|��j�d �|�|��t�j�d�|�|�|�f��|�S(���NR2���i���i����R���s���svn:t���@s���//R0���i���t���:s��� --username=%s --password=%ss ��� --username=s'���Doing subversion checkout from %s to %ss���svn checkout%s -q %s %s( ���R3���R(���R+���R���R���R���R���RL���t���system(���Ry���R4���RM���t���credsR5���t���netlocR7���RU���t���qR���t���autht���hostt���usert���pw(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR.����s"����!&  'c���������C���s���t��|���\�}�}�}�}�}�|�j�d�d��d�}�|�j�d�d��d�}�d��}�d�|�k�rt�|�j�d�d��\�}�}�n��t�|�|�|�|�d�f��}��|��|�f�S(���Nt���+i���iR2���i����R3��R���(���R���R3���R)���t���rsplitR���(���R4���t ���pop_prefixR5���R7��R7���R9���R���t���rev(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt���_vcs_split_rev_from_url,��s���� c���������C���s���|�j��d�d��d�}�|��j�|�d�t�\�}�}�|��j�d�|�|��t�j�d�|�|�f��|�d��k �r�|��j�d�|��t�j�d�|�|�f��n��|�S( ���NR2���i���i����R?��s���Doing git clone from %s to %ss���git clone --quiet %s %ss���Checking out %ss"���(cd %s && git checkout --quiet %s)(���R3���RA��R|���R���RL���R5��R)���(���Ry���R4���RM���R@��(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR/��>��s����  c���������C���s���|�j��d�d��d�}�|��j�|�d�t�\�}�}�|��j�d�|�|��t�j�d�|�|�f��|�d��k �r�|��j�d�|��t�j�d�|�|�f��n��|�S( ���NR2���i���i����R?��s���Doing hg clone from %s to %ss���hg clone --quiet %s %ss���Updating to %ss���(cd %s && hg up -C -r %s >&-)(���R3���RA��R|���R���RL���R5��R)���(���Ry���R4���RM���R@��(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR0��N��s����  c���������G���s���t��j�|�|��d��S(���N(���R���R���(���Ry���R���R`���(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR���^��s����c���������G���s���t��j�|�|��d��S(���N(���R���R���(���Ry���R���R`���(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR���a��s����c���������G���s���t��j�|�|��d��S(���N(���R���R���(���Ry���R���R`���(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR���d��s����(���R���N()���R���R���R���R)���R|���R���R���R���R���R���R���R���R���R���R���R���R���R���R���R���R���R1���R���R��R���R��R��R��R���R���R���R1��R2��R.��t ���staticmethodRA��R/��R0��R���R���R���(����(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR#�����sL��� 0   *       )A * $  (         s!���&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?c���������C���s3���t��|��t��s�|��S|��d�k�r)�t�|���St�|���S(���Ni���(���R���R��R���t���chr(���t���c(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt���uchrk��s ���� � c���������C���s{���|��j��d��}�|�j�d��r4�t�|�d�d��}�n=�|�j�d��rV�t�|�d��}�n�t�j�|�|��j��d���}�t�|��S(���Ni���s���#xi���i���R2���i����(���R@���R+���R��R���R���RE��(���R?���t���what(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt ���decode_entityq��s����c���������C���s ���t��t�|���S(���s'���Decode HTML entities in the given text.(���t ���entity_subRG��(���t���text(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyRn���{��s����c������������s�����f�d���}�|�S(���Nc������������s������f�d���}�|�S(���Nc�������������s?���t��j���}�t��j���z���|��|���SWd��t��j�|��Xd��S(���N(���t���sockett���getdefaulttimeoutt���setdefaulttimeout(���R`���Ra���t ���old_timeout(���Rb���t���timeout(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt���_socket_timeout��s ����  (����(���Rb���RO��(���RN��(���Rb���s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyRO����s����(����(���RN��RO��(����(���RN��s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt���socket_timeout��s���� c���������C���s=���t��|���}�|�j���}�t�j�|��}�|�j���}�|�j���S(���s��� A function compatible with Python 2.3-3.3 that will encode auth from a URL suitable for an HTTP header. >>> _encode_auth('username%3Apassword') u'dXNlcm5hbWU6cGFzc3dvcmQ=' (���R���t���encodet���base64t ���encodestringR���t���rstrip(���R9��t���auth_st ���auth_bytest ���encoded_bytest���encoded(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt ���_encode_auth��s ����   c���������C���sQ��t��|���\�}�}�}�}�}�}�|�j�d��r?�t�j�d���n��|�d�k�r`�t�|��\�}�} �n�d �}�|�r�d�t�|��}�t�|�| �|�|�|�|�f��} �t�j �| ��} �| �j �d�|��n�t�j �|���} �| �j �d�t ��|�| ��} �|�rMt��| �j ��\�} �}�}�}�}�}�| �|�k�rM|�| �k�rMt�| �|�|�|�|�|�f��| �_ �qMn��| �S( ���s4���Open a urllib2 request, handling HTTP authenticationR4��s���nonnumeric port: ''t���httpt���httpss���Basic t ���Authorizations ���User-Agent(���RZ��R[��N( ���R���R*���R���R��R���R)���RY��R���R���t���Requestt ���add_headert ���user_agentR4���(���R4���R���R5���R7��R7���t���paramsR9���R���R9��R:��R���t���requestR��t���s2t���h2t���path2t���param2t���query2t���frag2(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyR����s&����  !'c���������C���s���|��S(���N(����(���R4���(����(����s<���/usr/lib/python2.7/site-packages/setuptools/package_index.pyt ���fix_sf_url��s����c���������C���so��t��|���\�}�}�}�}�}�}�t�|��}�t�j�j�|��rI�t�j�|���S|�j�d��r=t�j�j�|��r=g��}�x�t�j �|��D]�} �| �d�k�r�t �t�j�j �|�| ��d��} �| �j ���} �| �j ���Pn.�t�j�j�t�j�j �|�| ���r�| �d�7} �n��|�j�d�| �| �f��q�Wd�|��d�d�j �|��} �d�\�} �} �n�d�\�} �} �} �t�|��| �| �i�d �d�6t�| ���S(���s7���Read a local path, with special support for directoriesR0���s ���index.htmlt���rbs���<a href=%r>%s</a>s���<html><head><title>%ss%ss itOKisPath not founds Not founds text/htmls content-type(iRj(isPath not founds Not found(RRRLR7tisfileRRR*RRRRRRRRRR(R4R5R6R7tparamR9RRMtfilesRRtbodytstatustmessage((s</usr/lib/python2.7/site-packages/setuptools/package_index.pyRs*  !   !  (YRRRLRRRJRRt pkg_resourcesRRRRRRRRRR R R R RwR t distutilsRtdistutils.errorsRtsetuptools.compatRRRRRRRRRRRRRRRtfnmatchRtsetuptools.py24compatR R!tsetuptools.py27compatR"RR>tIRmRR?RR3REt__all__t_SOCKET_TIMEOUTR%R;R)R$R=RNR&R_RdRgRvRR_tobjectRxRR#RRHRERGRnRPRYRRRhR(((s</usr/lib/python2.7/site-packages/setuptools/package_index.pytsj      X^         "  !$d   $