ó 9aÉcc@s˜dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddlmZmZmZmZddlZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!ddlm"Z"ddl#m$Z$dd l%m&Z&dd l'm(Z(dd l)m*Z*dd l+m,Z,dd l-m.Z.e/Z0ej1dƒZ2ej1dej3ƒZ4ej1dƒZ5ej1dej3ƒj6Z7dj8ƒZ9ddddgZ:dZ;dZ<e<j=ddj=ej>ŒdeƒZ?d„Z@d„ZAd„ZBeCd„ZDeCd „ZEeCd!„ZFeCeeCd"„ZGeCd#„ZHd$„ZIej1d%ej3ƒZJeId&„ƒZKd'fd(„ƒYZLd)eLfd*„ƒYZMdefd+„ƒYZNej1d,ƒjOZPd-„ZQd.„ZRdd/„ZSd0„ZTd1fd2„ƒYZUd3ejVfd4„ƒYZWejXjYd5„ZZd6„Z[eSe;ƒeZƒZZd7„Z\d8„Z]dS(9s#PyPI and direct package downloadingiÿÿÿÿN(twraps(tsix(turllibt http_clientt configparsertmap( t CHECKOUT_DISTt Distributiont BINARY_DISTtnormalize_patht SOURCE_DISTt Environmenttfind_distributionst safe_namet safe_versiont to_filenamet Requirementt DEVELOP_DISTtEGG_DIST(t ssl_support(tlog(tDistutilsError(t translate(tget_all_headers(tunescape(tWheels^egg=([-A-Za-z0-9_.+!]+)$shref\s*=\s*['"]?([^'"> ]+)sƒ([^<]+)\n\s+\(md5\)s([-+.a-z0-9]{2,}):s.tar.gz .tar.bz2 .tar .zip .tgzt PackageIndextdistros_for_urltparse_bdist_wininsttinterpret_distro_nameis<setuptools/{setuptools.__version__} Python-urllib/{py_major}tpy_majors{}.{}t setuptoolscCs<ytj|ƒSWn$tk r7td|fƒ‚nXdS(Ns1Not a URL, existing file, or requirement spec: %r(Rtparset ValueErrorR(tspec((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytparse_requirement_arg4s  cCsâ|jƒ}d\}}}|jdƒrÕ|jdƒrL|d }d}qÕ|jddƒr~|dd!}|d }d}qÕ|jd ƒr |d }d }qÕ|jd d ƒrÕ|dd!}|d }d }qÕn|||fS(s=Return (base,pyversion) or (None,None) for possible .exe names.exes .win32.exeiöÿÿÿtwin32s .win32-pyiðÿÿÿiùÿÿÿiüÿÿÿs.win-amd64.exeiòÿÿÿs win-amd64s .win-amd64-pyiìÿÿÿN(NNN(tlowertNonetendswitht startswith(tnameR%tbasetpy_vertplat((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR=s$           c Cs´tjj|ƒ}|\}}}}}}tjj|jdƒdƒ}|dkrƒ|dkrƒtjj|jdƒdƒ}nd|krª|jddƒ\}}n||fS(Nt/iÿÿÿÿssourceforge.nettdownloadiþÿÿÿt#i(RR turlparsetunquotetsplit( turltpartstschemetservertpatht parameterstquerytfragmentR*((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytegg_info_for_urlUs" ccsŠt|ƒ\}}xt|||ƒD] }|Vq%W|r†tj|ƒ}|r†x1t||jdƒ|dtƒD] }|VqqWq†ndS(sEYield egg or source distribution objects that might be found at a URLit precedenceN(R;tdistros_for_locationt EGG_FRAGMENTtmatchRtgroupR(R3tmetadataR*R:tdistR?((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR`s "c CsA|jdƒr|d }n|jdƒrMd|krMtj|||ƒgS|jdƒr°d|kr°t|ƒ}|jƒs„gStd|d|jd|jd td ƒgS|jd ƒrüt|ƒ\}}}|d k rüt ||||t |ƒSnx>t D]6}|j|ƒr|t |ƒ }t |||ƒSqWgS( s:Yield egg or source distribution objects based on basenames.egg.zipiüÿÿÿs.eggt-s.whltlocationt project_nametversionR<is.exeN(R'Rt from_locationRt is_compatibleRERFRRR&RRt EXTENSIONStlen(RDtbasenameRAtwheeltwin_baseR+tplatformtext((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR=ns.       cCs"tt|ƒtjj|ƒ|ƒS(sEYield possible egg or source distribution objects based on a filename(R=R tosR7RK(tfilenameRA((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytdistros_for_filenamesc csœ|jdƒ}| r4td„|dDƒƒr4dSxatdt|ƒdƒD]F}t||dj|| ƒdj||ƒd|d|d|ƒVqNWdS( sØGenerate 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! RCcss!|]}tjd|ƒVqdS(s py\d\.\d$N(treR?(t.0tp((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pys ­siNit py_versionR<RN(R2tanytrangeRJRtjoin(RDRKRARVR<RNR4RU((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR–s! ) ccs’tƒ}|j}|dkrSxmtjj|j|ƒD]}||ƒ|Vq7Wn;x8|D]0}||ƒ}||krZ||ƒ|VqZqZWdS(sHList unique elements, preserving order. Remember all elements ever seen.N(tsettaddR&Rtmovest filterfalset __contains__(titerabletkeytseentseen_addtelementtk((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytunique_everseenºs         cstˆƒ‡fd†ƒ}|S(ss Wrap a function returning an iterable such that the resulting iterable only ever yields unique items. cstˆ||ŽƒS(N(Re(targstkwargs(tfunc(s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytwrapperÒs(R(RhRi((Rhs</usr/lib/python2.7/dist-packages/setuptools/package_index.pyt unique_valuesÌss3<([^>]*\srel\s{0,10}=\s{0,10}['"]?([^'" >]+)[^>]*)>ccsx¨tj|ƒD]—}|jƒ\}}tttj|jƒjdƒƒƒ}d|ksgd|krx=t j|ƒD])}t j j |t |jdƒƒƒVqwWqqWxjd D]b}|j|ƒ}|dkr²t j||ƒ}|rt j j |t |jdƒƒƒVqq²q²WdS( sEFind rel="homepage" and rel="download" links in `page`, yielding URLst,thomepageR.is Home PagesDownload URLiÿÿÿÿN(s Home PagesDownload URL(tRELtfinditertgroupsRZRtstrtstripR%R2tHREFRR turljoint htmldecodeR@tfindtsearch(R3tpageR?ttagtreltrelstpos((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytfind_external_linksÝs'.  tContentCheckercBs)eZdZd„Zd„Zd„ZRS(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/dist-packages/setuptools/package_index.pytfeedõscCstS(sC Check the hash. Return False if validation fails. (tTrue(R~((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytis_validûscCsdS(su Call reporter with information about the checker (hash name) substituted into the template. N((R~treporterttemplate((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytreports(t__name__t __module__t__doc__R€R‚R…(((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR}ðs  t HashCheckercBsJeZejdƒZd„Zed„ƒZd„Zd„Z d„Z RS(sK(?Psha1|sha224|sha384|sha256|sha512|md5)=(?P[a-f0-9]+)cCs(||_tj|ƒ|_||_dS(N(t hash_namethashlibtnewthashtexpected(R~RŠRŽ((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyt__init__s cCsRtjj|ƒd}|s#tƒS|jj|ƒ}|sBtƒS||jƒS(s5Construct a (possibly null) ContentChecker from a URLiÿÿÿÿ(RR R0R}tpatternRvt groupdict(tclsR3R:R?((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytfrom_urlscCs|jj|ƒdS(N(Rtupdate(R~R((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR€scCs|jjƒ|jkS(N(Rt hexdigestRŽ(R~((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR‚"scCs||j}||ƒS(N(RŠ(R~RƒR„tmsg((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR…%s ( R†R‡RStcompileRRt classmethodR“R€R‚R…(((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR‰ s    cBsveZdZdd%d&ed„Zed„Zed„Zed„Z d„Z d„Z d „Z d „Z d&d „Zd „Zd&d „Zd„Zd„Zd„Zd„Zd„Zeeed&d„Zeed„Zd„ZdZd„Zd„Zd&d„Zd„Zd„Zd„Zd„Z d„Z!e"ed„ƒZ#d „Z$d!„Z%d"„Z&d#„Z'd$„Z(RS('s;A distribution index that scans web pages for download URLsshttps://pypi.org/simple/t*cOsÈtj|||Ž|d|jdƒ |_i|_i|_i|_tjdj t t |ƒƒƒj |_ g|_|o—tjo—|p—tjƒ}|rµtj|ƒ|_ntjj|_dS(NR-t|(R RR't index_urlt scanned_urlst fetched_urlst package_pagesRSR—RYRRR?tallowstto_scanRt is_availabletfind_ca_bundlet opener_fortopenerRtrequestturlopen(R~R›thostst ca_bundlet verify_sslRftkwtuse_ssl((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR-s   '  c Csg||jkr| rdSt|j|•s(tfilterRPR7RËR³t itertoolststarmapt scan_egg_link(R~t search_pathtdirst egg_links((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytscan_egg_links’s c Cs¿ttjj||ƒƒ(}ttdttj |ƒƒƒ}WdQXt |ƒdkr[dS|\}}xQt tjj||ƒƒD]4}tjj||Œ|_ t |_|j|ƒqƒWdS(Ni(topenRPR7RYR³RÖR&RRpRqRJR RDR R<R[(R~R7RÕt raw_linestlinestegg_patht setup_pathRB((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRÙœs' " c s‡fd†}xWtj|ƒD]F}y,|tjj|t|jdƒƒƒƒWqtk rdqXqW||ƒ\}}|rxyt||ƒD]h}t |ƒ\}} |j dƒrì| rì|rÜ|d||f7}qìˆj |ƒnˆj |ƒq‘Wt jd„|ƒSdSdS(s#Process the contents of a PyPI pagecsÁ|jˆjƒr½tttjj|tˆjƒjdƒƒƒ}t|ƒdkr½d|dkr½t |dƒ}t |dƒ}t ˆj j |jƒiƒ|%siii(R@(tm((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytÒR­R­N(RrRnRR RsRtR@R!R|R;R'tneed_version_infotscan_urltPYPI_MD5tsub( R~R3RwRæR?RäRåtnew_urlR*tfrag((R~s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRìs$,  cCs|jd|ƒdS(NsPPage at %s links to .py file(s) without version info; an index scan is required.(tscan_all(R~R3((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRé×scGsO|j|jkr;|r+|j||Œn|jdƒn|j|jƒdS(Ns6Scanning index of all packages (this may take a while)(R›RRÊR¶Rê(R~R–Rf((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRïÝs  cCs­|j|j|jdƒ|jj|jƒsN|j|j|jdƒn|jj|jƒss|j|ƒnx3t|jj|jdƒƒD]}|j|ƒq’WdS(NR-(( RêR›t unsafe_nameRžR¹R`REtnot_found_in_indexR³(R~t requirementR3((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyt find_packagesæs%cCsk|jƒ|j|ƒx8||jD])}||kr;|S|jd||ƒq%Wtt|ƒj||ƒS(Ns%s does not match %s(tprescanRóR`RµtsuperRtobtain(R~Ròt installerRB((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRöõs   cCsi|j|jd|ƒ|jƒse|jƒtj|ƒtd|jjtj j |ƒfƒ‚ndS(s- checker is a ContentChecker sValidating %%s checksum for %ss7%s validation failed for %s; possible download problem?N( R…RµR‚RºRPtunlinkRRR)R7RK(R~tcheckerRQttfp((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyt check_hashþs    cCsrxk|D]c}|jdksJt|ƒ sJ|jdƒsJtt|ƒƒrZ|j|ƒq|jj|ƒqWdS(s;Add `urls` to the list that will be prescanned for searchessfile:N(R R&R±R(R³RRêtappend(R~turlsR3((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pytadd_find_linkss  cCs2|jr%tt|j|jƒƒnd|_dS(s7Scan urls scheduled for prescanning (e.g. --find-links)N(R R³RRêR&(R~((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRôs cCsN||jr |jd}}n|jd}}|||jƒ|jƒdS(Ns#Couldn't retrieve index page for %rs3Couldn't find index page for %r (maybe misspelled?)(R`R¶RÊRðRï(R~RòtmethR–((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRñ#s   cCs½t|tƒs¡t|ƒ}|r||j|jdƒ||ƒ}t|ƒ\}}|jdƒrx|j|||ƒ}n|Stj j |ƒr’|St |ƒ}nt |j ||ƒddƒS(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.pyRDN(R¼RR±t _download_urlR@R;R't gen_setupRPR7RÉR#RÂtfetch_distributionR&(R~R"ttmpdirR5tfoundR*R:((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR.-s c sFˆjd|ƒi‰d}d‡‡‡‡‡fd†}|rfˆjƒˆj|ƒ||ƒ}n| r‹|dk r‹|||ƒ}n|dkrˆjdk r³ˆjƒn||ƒ}n|dkrñ| rñˆj|ƒ||ƒ}n|dkrˆjdˆrdpd|ƒn#ˆjd|ƒ|jd|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]­}|jtkrnˆ rn|ˆkr#ˆjd|ƒdˆ|R?RR@R&RFRJRPR7RKtdirnameRYtsetuptools.command.easy_installRtshutiltcopy2RÞtwriteREtsplitextR( R~RQR:RR?tdRÅRKtdstRRÑ((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR¨s24 !!i c Cs‰|jd|ƒd}zXtj|ƒ}|j|ƒ}t|tjjƒrnt d||j |j fƒ‚n|jƒ}d}|j }d}d|krÛt |dƒ} ttt| ƒƒ}|j|||||ƒnt|dƒ}} x`trO|j|ƒ} | rK|j| ƒ| j| ƒ|d7}|j|||||ƒqðPqðW|j||| ƒWdQX|SWd|r„|jƒnXdS( NsDownloading %ssCan't download %s: %s %siiÿÿÿÿscontent-lengthsContent-Lengthtwbi(R¶R&R‰R“R·R¼RR½R¾RR°R–t dl_blocksizeRtmaxRtintt reporthookRÞRR»R€RRûRº( R~R3RQtfpRùR¸tblocknumtbstsizetsizesRúR((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyt _download_toÓs:       cCsdS(N((R~R3RQR!tblksizeR#((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR÷scCs§|jdƒrt|ƒSyt||jƒSWnsttjfk r¥}djg|jD]}t |ƒ^qXƒ}|rŒ|j ||ƒq£t d||fƒ‚nþt j jk r¾}|St j jk r }|rï|j ||jƒq£t d||jfƒ‚n˜tjk rU}|r9|j ||jƒq£t d||jfƒ‚nNtjtj fk r¢}|r‰|j ||ƒq£t d||fƒ‚nXdS(Nsfile:t s%s %ssDownload error for %s: %ss;%s returned a bad status line. The server might be down, %s(R(t local_opentopen_with_authR¤R!Rt InvalidURLRYRfRpRÊRRR½R¾tURLErrortreasont BadStatusLinetlinet HTTPExceptiontsocket(R~R3twarningtvtargR–((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR·ús6 +cCsHt|ƒ\}}|rLx7d|krH|jddƒjddƒ}qWnd}|jdƒrn|d }ntjj||ƒ}|dksž|jd ƒr®|j||ƒS|d ksÉ|jd ƒrÙ|j||ƒS|jd ƒrø|j ||ƒS|d kr$t j j t j j|ƒdƒS|j|tƒ|j||ƒSdS(Ns..t.s\t_t__downloaded__s.egg.zipiüÿÿÿtsvnssvn+tgitsgit+shg+RÑi(R;treplaceR'RPR7RYR(t _download_svnt _download_gitt _download_hgRR¥t url2pathnameR R0R´Rt_attempt_download(R~R5R3RR)R:RQ((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRs$%   cCs|j|tƒdS(N(RÁR(R~R3((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyRê:scCsK|j||ƒ}d|jddƒjƒkrC|j|||ƒS|SdS(NR¬s content-typeR­(R%R¹R%t_download_html(R~R3RQR¸((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR>=scCs‘t|ƒ}xW|D]O}|jƒrtjd|ƒr^|jƒtj|ƒ|j||ƒSPqqW|jƒtj|ƒtd|ƒ‚dS(Ns ([^- ]+ - )?Revision \d+:s���Unexpected HTML page found at ( ���RÞ���Rq���RS���Rv���Rº���RP���Rø���R:��R���(���R~���R3���R¸���RQ���RÑ���R.��(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR?��D��s����       c���������C���sv��t��j�d�t�ƒ�|�j�d�d�ƒ�d�}�d�}�|�j�ƒ��j�d�ƒ�rEd�|�k�rEt�j�j�|�ƒ�\�}�}�}�}�}�} �|� rE|�j�d�ƒ�rEd �|�d �k�rE|�d �j�d �d�ƒ�\�}�}�t �|�ƒ�\�} �} �| �rBd �| �k�r| �j�d �d�ƒ�\�} �} �d �| �| �f�}�n �d �| �}�| �}�|�|�|�|�|�| �f�}�t�j�j �|�ƒ�}�qBqEn��|��j �d�|�|�ƒ�t �j �d�|�|�|�f�ƒ�|�S(���Ns"���SVN download support is deprecatedR/���i���i����R­���s���svn:t���@s���//R-���i���t���:s��� --username=%s --password=%ss ��� --username=s'���Doing subversion checkout from %s to %ss���svn checkout%s -q %s %s(���t���warningsRÊ���t ���UserWarningR2���R%���R(���R���R ���R0���t ���_splitusert ���urlunparseR¶���RP���t���system(���R~���R3���RQ���t���credsR5���t���netlocR7���RU���t���qRÇ���t���autht���hostt���usert���pwR4���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR:��S��s&����!$&  c���������C���s¥���t��j�j�|��ƒ�\�}�}�}�}�}�|�j�d�d�ƒ�d�}�|�j�d�d�ƒ�d�}�d��}�d�|�k�rz�|�j�d�d�ƒ�\�}�}�n��t��j�j�|�|�|�|�d�f�ƒ�}��|��|�f�S(���Nt���+i���iÿÿÿÿR/���i����R@��R­���(���R���R ���t���urlsplitR2���R&���t���rsplitt ���urlunsplit(���R3���t ���pop_prefixR5���RH��R7���R9���Rî���t���rev(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���_vcs_split_rev_from_urli��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( ���NR/���i���i����RR��s���Doing git clone from %s to %ss���git clone --quiet %s %ss���Checking out %ss���git -C %s checkout --quiet %s(���R2���RT��R���R¶���RP���RF��R&���(���R~���R3���RQ���RS��(����(����s<���/usr/lib/python2.7/dist-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( ���NR/���i���i����RR��s���Doing hg clone from %s to %ss���hg clone --quiet %s %ss���Updating to %ss���hg --cwd %s up -C -r %s -q(���R2���RT��R���R¶���RP���RF��R&���(���R~���R3���RQ���RS��(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR<��‹��s����  c���������G���s���t��j�|�|�Œ�d��S(���N(���R���Rµ���(���R~���R–���Rf���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRµ���›��s����c���������G���s���t��j�|�|�Œ�d��S(���N(���R���R¶���(���R~���R–���Rf���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR¶���ž��s����c���������G���s���t��j�|�|�Œ�d��S(���N(���R���RÊ���(���R~���R–���Rf���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRÊ���¡��s����(���R™���N()���R†���R‡���Rˆ���R&���R���R���t���FalseRÁ���R²���R´���RÝ���RÙ���RÃ���Ré���Rï���Ró���Rö���Rû���Rþ���Rô���Rñ���R.���R��R��R��R��R%��R��R·���R���Rê���R>��R?��R:��t ���staticmethodRT��R;��R<��Rµ���R¶���RÊ���(����(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR���*��sL��� 3   +      #J ) $  #         s!���&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?c���������C���s���|��j��d�ƒ�}�t�|�ƒ�S(���Ni����(���R@���R���(���R?���t���what(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt ���decode_entityª��s����c���������C���s ���t��t�|��ƒ�S(���s�� Decode HTML entities in the given text. >>> htmldecode( ... 'https://../package_name-0.1.2.tar.gz' ... '?tokena=A&tokenb=B">package_name-0.1.2.tar.gz') 'https://../package_name-0.1.2.tar.gz?tokena=A&tokenb=B">package_name-0.1.2.tar.gz' (���t ���entity_subRX��(���t���text(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRt���¯��s���� c������������s���‡��f�d�†��}�|�S(���Nc������������s���‡��‡�f�d�†��}�|�S(���Nc�������������s?���t��j�ƒ��}�t��j�ˆ�ƒ�z�ˆ��|��|�Ž��SWd��t��j�|�ƒ�Xd��S(���N(���R0��t���getdefaulttimeoutt���setdefaulttimeout(���Rf���Rg���t ���old_timeout(���Rh���t���timeout(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���_socket_timeout½��s ����  (����(���Rh���R_��(���R^��(���Rh���s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR_��¼��s����(����(���R^��R_��(����(���R^��s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���socket_timeout»��s���� c���������C���sI���t��j�j�|��ƒ�}�|�j�ƒ��}�t�j�|�ƒ�}�|�j�ƒ��}�|�j�d�d�ƒ�S(���sq�� A function compatible with Python 2.3-3.3 that will encode auth from a URL suitable for an HTTP header. >>> str(_encode_auth('username%3Apassword')) 'dXNlcm5hbWU6cGFzc3dvcmQ=' Long auth strings should not cause a newline to be inserted. >>> long_auth = 'username:' + 'password'*10 >>> chr(10) in str(_encode_auth(long_auth)) False s��� R­���(���R���R ���R1���t���encodet���base64t ���b64encodeRÀ���R9��(���RJ��t���auth_st ���auth_bytest ���encoded_bytest���encoded(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt ���_encode_authÊ��s ����   t ���Credentialc�����������B���s)���e��Z�d��Z�d�„��Z�d�„��Z�d�„��Z�RS(���s:��� A username/password pair. Use like a namedtuple. c���������C���s���|�|��_��|�|��_�d��S(���N(���t���usernamet���password(���R~���Rj��Rk��(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR���å��s���� c���������c���s���|��j��V|��j�Vd��S(���N(���Rj��Rk��(���R~���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���__iter__é��s����c���������C���s���d�t��|��ƒ�S(���Ns���%(username)s:%(password)s(���t���vars(���R~���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���__str__í��s����(���R†���R‡���Rˆ���R���Rl��Rn��(����(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRi��à��s���  t ���PyPIConfigc�����������B���s2���e��Z�d��„��Z�e�d�„��ƒ�Z�d�„��Z�d�„��Z�RS(���c���������C���su���t��j�d�d�d�g�d�ƒ�}�t�j�j�|��|�ƒ�t�j�j�t�j�j�d�ƒ�d�ƒ�}�t�j�j �|�ƒ�rq�|��j �|�ƒ�n��d�S(���s%��� Load from ~/.pypirc Rj��Rk��t ���repositoryR­���t���~s���.pypircN( ���t���dictt���fromkeysR���t���RawConfigParserR���RP���R7���RY���t ���expanduserRÉ���R»���(���R~���t���defaultst���rc(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR���ò��s ����!c���������C���sM���g��|��j��ƒ��D]$�}�|��j�|�d�ƒ�j�ƒ��r �|�^�q �}�t�t�|��j�|�ƒ�ƒ�S(���NRp��(���t���sectionsR¹���Rq���Rr��R���t���_get_repo_cred(���R~���t���sectiont���sections_with_repositories(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���creds_by_repositoryý��s����$c���������C���sO���|��j��|�d�ƒ�j�ƒ��}�|�t�|��j��|�d�ƒ�j�ƒ��|��j��|�d�ƒ�j�ƒ��ƒ�f�S(���NRp��Rj��Rk��(���R¹���Rq���Ri��(���R~���Rz��t���repo(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRy����s����c���������C���s7���x0�|��j��j�ƒ��D]�\�}�}�|�j�|�ƒ�r�|�Sq�Wd�S(���sŒ��� If the URL indicated appears to be a repository defined in this config, return the credential for that repository. N(���R|��t���itemsR(���(���R~���R3���Rp��t���cred(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt���find_credential ��s����(���R†���R‡���R���t���propertyR|��Ry��R€��(����(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRo��ñ��s���  c���������C���sÐ��t��j�j�|��ƒ�}�|�\�}�}�}�}�}�}�|�j�d�ƒ�rK�t�j�d�ƒ�‚�n��|�d �k�rl�t�|�ƒ�\�} �} �n�d �} �| �sÁ�t�ƒ��j �|��ƒ�} �| �rÁ�t �| �ƒ�} �| �j �|��f�} �t �j �d�| �Œ�qÁ�n��| �r&d�t�| �ƒ�} �|�| �|�|�|�|�f�} �t��j�j�| �ƒ�}�t��j�j�|�ƒ�}�|�j�d�| �ƒ�n�t��j�j�|��ƒ�}�|�j�d�t�ƒ�|�|�ƒ�}�| �rÌt��j�j�|�j�ƒ�\�}�}�}�}�}�}�|�|�k�rÌ|�| �k�rÌ|�|�|�|�|�|�f�} �t��j�j�| �ƒ�|�_�qÌn��|�S( ���s4���Open a urllib2 request, handling HTTP authenticationRA��s���nonnumeric port: ''t���httpt���httpss*���Authenticating as %s for %s (from .pypirc)s���Basic t ���Authorizations ���User-Agent(���R‚��Rƒ��N(���R���R ���R0���R'���R���R*��RD��R&���Ro��R€��Rp���Rj��R���R¶���Rh��RE��R¥���t���Requestt ���add_headert ���user_agentR3���(���R3���R¤���t���parsedR5���RH��R7���t���paramsR9���Rî���RJ��t���addressR��R¶���R4���Rí���R¥���R ��t���s2t���h2t���path2t���param2t���query2t���frag2(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyR)����s8����   'c���������C���s.���|��j��d�ƒ�\�}�}�}��|�r$�|�n�d�|��f�S(���sJ���splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.R@��N(���t ���rpartitionR&���(���RK��RL��t���delim(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyRD��F��s����c���������C���s���|��S(���N(����(���R3���(����(����s<���/usr/lib/python2.7/dist-packages/setuptools/package_index.pyt ���fix_sf_urlP��s����c���������C���s—��t��j�j�|��ƒ�\�}�}�}�}�}�}�t��j�j�|�ƒ�}�t�j�j�|�ƒ�rX�t��j�j�|��ƒ�S|�j �d�ƒ�rPt�j�j �|�ƒ�rPg��}�x¿�t�j �|�ƒ�D]‡�} �t�j�j �|�| �ƒ�} �| �d�k�rÞ�t �| �d�ƒ��} �| �j�ƒ��} �Wd�QXPn�t�j�j �| �ƒ�rý�| �d�7} �n��|�j�d�j�d�| �ƒ�ƒ�q�Wd�} �| �j�d�|��d �d �j �|�ƒ�ƒ�} �d�\�}�}�n�d�\�}�}�} �i�d�d�6}�t�j�| �ƒ�}�t��j�j�|��|�|�|�|�ƒ�S(���s7���Read a local path, with special support for directoriesR-���s ���index.htmlt���rNs���<a href="{name}">{name}</a>R)���sB���<html><head><title>{url}{files}R3tfiless iÈtOKi”sPath not founds Not founds text/htmls content-type(iÈR–(i”sPath not founds Not found(RR R0R¥R=RPR7tisfileR¦R'RËRÍRYRÞR»RütformatRtStringIOR½R¾(R3R5R6R7tparamR9RîRQR•RÇtfilepathR tbodyRÆtstatustmessageR¸t body_stream((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyR(Ts,$!  ! (^RˆtsysRPRSRR0RbR‹R×RBt functoolsRtsetuptools.externRtsetuptools.extern.six.movesRRRRRt pkg_resourcesRRRR R R R R RRRRRRt distutilsRtdistutils.errorsRtfnmatchRtsetuptools.py27compatRtsetuptools.py33compatRtsetuptools.wheelRttypet __metaclass__R—R>tIRrRëR?R±R2RIt__all__t_SOCKET_TIMEOUTt_tmplR˜t version_infoR‡R#RR;R&RR=RRRReRjRmR|R}R‰RRìRYRXRtR`RhRiRtRoR¥R¦R)RDR“R((((s</usr/lib/python2.7/dist-packages/setuptools/package_index.pyts|         " X    $   !  "  !ÿÿ   &/