Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
øðuYc@s©dZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
yddlmZWn!e
k
r­ddlmZnXddlmZddlmZmZmZmZddlZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddlm$Z$dd	l%m&Z&dd
l'm(Z(ddl)m*Z*ddl+m,Z,dd
l-m.Z.ej/dƒZ0ej/dej1ƒZ2ej/dƒZ3ej/dej1ƒj4Z5dj6ƒZ7ddddgZ8dZ9dZ:e:j;dej<d deƒZ=d„Z>d„Z?d„Z@eAd„ZBeAd „ZCeAd!„ZDeAeeAd"„ZEeAd#„ZFd$„ZGej/d%ej1ƒZHeGd&„ƒZId'eJfd(„ƒYZKd)eKfd*„ƒYZLdefd+„ƒYZMej/d,ƒjNZOd-„ZPd.„ZQd/„ZRdd0„ZSd1„ZTd2eJfd3„ƒYZUd4ejVfd5„ƒYZWejXjYd6„ZZeSe9ƒeZƒZZd7„Z[d8„Z\dS(9s#PyPI and direct package downloadingiÿÿÿÿN(twraps(t	splituser(tsix(turllibthttp_clienttconfigparsertmap(t
CHECKOUT_DISTtDistributiontBINARY_DISTtnormalize_pathtSOURCE_DISTtEnvironmenttfind_distributionst	safe_nametsafe_versiontto_filenametRequirementtDEVELOP_DIST(tssl_support(tlog(tDistutilsError(t	translate(tstrip_fragment(tget_all_headerss^egg=([-A-Za-z0-9_.+!]+)$shref\s*=\s*['"]?([^'"> ]+)s<a href="([^"#]+)">([^<]+)</a>
\s+\(<a (?:title="MD5 hash"
\s+)href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\)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_majorit
setuptoolscCs<ytj|ƒSWn$tk
r7td|fƒ‚nXdS(Ns1Not a URL, existing file, or requirement spec: %r(Rtparset
ValueErrorR(tspec((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytparse_requirement_arg6s

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</tmp/pip-build-NDUwcL/setuptools/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(RRturlparsetunquotetsplit(	turltpartstschemetservertpatht
parameterstquerytfragmentR)((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytegg_info_for_urlWs"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(R2tmetadataR)R9tdistR>((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRbs	"cCsÞ|jdƒr|d }n|jdƒrMd|krMtj|||ƒgS|jdƒr™t|ƒ\}}}|dk	r™t||||t|ƒSnx>tD]6}|j|ƒr |t|ƒ }t|||ƒSq WgS(s:Yield egg or source distribution objects based on basenames.egg.zipiüÿÿÿs.eggt-s.exeN(	R&Rt
from_locationRR%RR	t
EXTENSIONStlen(tlocationtbasenameR@twin_baseR*tplatformtext((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR<ps

cCs"tt|ƒtjj|ƒ|ƒS(sEYield possible egg or source distribution objects based on a filename(R<R
tosR6RG(tfilenameR@((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytdistros_for_filename†sc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!
    RBcss!|]}tjd|ƒVqdS(s	py\d\.\d$N(treR>(t.0tp((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pys	<genexpr>¤siNit
py_versionR;RI(R1tanytrangeRERtjoin(RFRGR@RQR;RIR3RP((s</tmp/pip-build-NDUwcL/setuptools/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%Rtmovestfilterfalset__contains__(titerabletkeytseentseen_addtelementtk((s</tmp/pip-build-NDUwcL/setuptools/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(R`(targstkwargs(tfunc(s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytwrapperÉs(R(RcRd((Rcs</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt
unique_valuesÃss(<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>ccsx¨tj|ƒD]—}|jƒ\}}tttj|jƒjdƒƒƒ}d|ksgd|krx=t	j|ƒD])}t
jj|t
|jdƒƒƒVqwWqqWxjd	D]b}|j|ƒ}|dkr²t	j||ƒ}|rt
jj|t
|jdƒƒƒVqq²q²WdS(
sEFind rel="homepage" and rel="download" links in `page`, yielding URLst,thomepageR-is
<th>Home Pages<th>Download URLiÿÿÿÿN(s
<th>Home Pages<th>Download URL(tRELtfinditertgroupsRURtstrtstripR$R1tHREFRRturljoint
htmldecodeR?tfindtsearch(R2tpageR>ttagtreltrelstpos((s</tmp/pip-build-NDUwcL/setuptools/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</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytfeedìscCstS(sC
        Check the hash. Return False if validation fails.
        (tTrue(Ry((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytis_validòscCsdS(su
        Call reporter with information about the checker (hash name)
        substituted into the template.
        N((Rytreporterttemplate((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytreportøs(t__name__t
__module__t__doc__R{R}R€(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRxçs		tHashCheckercBsJeZejdƒZd„Zed„ƒZd„Zd„Z	d„Z
RS(sK(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=(?P<expected>[a-f0-9]+)cCs(||_tj|ƒ|_||_dS(N(t	hash_namethashlibtnewthashtexpected(RyR…R‰((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt__init__s	cCsRtjj|ƒd}|s#tƒS|jj|ƒ}|sBtƒS||jƒS(s5Construct a (possibly null) ContentChecker from a URLiÿÿÿÿ(RRR/RxtpatternRqt	groupdict(tclsR2R9R>((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytfrom_urlscCs|jj|ƒdS(N(Rˆtupdate(RyRz((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR{scCs|jjƒ|jkS(N(Rˆt	hexdigestR‰(Ry((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR}scCs||j}||ƒS(N(R…(RyR~Rtmsg((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR€s
(RR‚RNtcompileR‹RŠtclassmethodRŽR{R}R€(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR„s				cBsveZdZdd%d&ed„Zed„Zed„Zed„Z	d„Z
d„Zd	„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.python.org/simplet*cOsÈtj|||Ž|d|jdƒ |_i|_i|_i|_tjdj	t
t|ƒƒƒj|_
g|_|o—tjo—|p—tjƒ}|rµtj|ƒ|_ntjj|_dS(NR,t|(RRŠR&t	index_urltscanned_urlstfetched_urlst
package_pagesRNR’RTRRR>tallowstto_scanRtis_availabletfind_ca_bundlet
opener_fortopenerRtrequestturlopen(RyR–thostst	ca_bundlet
verify_sslRatkwtuse_ssl((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRŠ$s			'		cCsg||jkr|rdSt|j|<t|ƒsD|j|ƒdStt|ƒƒ}|r‚|j|ƒsodS|jd|ƒn|sž|sž||jkr¸tt	|j
|ƒƒdS|j|ƒsØt|j|<dS|jd|ƒt|j|<d}|j|||ƒ}|dkr!dSt|j|j<d|jjddƒjƒkr`|jƒdS|j}|jƒ}t|tƒsÏt|tjjƒr¢d}n|jjd	ƒp·d}|j|d
ƒ}n|jƒxHtj|ƒD]7}	tjj|t|	j dƒƒƒ}
|j!|
ƒqéW|j"|j#ƒrct$|ddƒd
krc|j%||ƒ}ndS(s<Evaluate a URL as a possible download, and maybe retrieve itNsFound link: %ss
Reading %ss<Download error on %s: %%s -- Some packages may not be found!thtmlscontent-typetslatin-1tcharsettignoreitcodei”(&R—R|t
URL_SCHEMEtprocess_filenametlistRturl_oktdebugR˜RRVtinfotopen_urlR%R2theaderstgetR$tclosetreadt
isinstanceRkRterrort	HTTPErrort	get_paramtdecodeRmRiRRnRoR?tprocess_urlR'R–tgetattrt
process_index(RyR2tretrievetdiststtmpltfR)RrR©R>tlink((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR¼9sP



!
		
$*cCsÌtjj|ƒs&|jd|ƒdStjj|ƒr|rtjj|ƒ}x9tj|ƒD]%}|jtjj||ƒt	ƒqaWnt
|ƒ}|rÈ|jd|ƒtt
|j|ƒƒndS(Ns
Not found: %ss	Found: %s(RKR6texiststwarntisdirtrealpathtlistdirR­RTR|RMR°R®RRV(RytfntnestedR6titemRÀ((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR­ks&cCs‰t|ƒ}|o*|jdƒjƒdk}|sR|jtjj|ƒdƒrVtSd}|rut||ƒ‚n|j	||ƒdS(NitfilesN
Note: Bypassing %s (disallowed host; see http://bit.ly/1dg9ijs for details).
(
R¬R?R$RšRRR/R|RRÅ(RyR2tfataltstis_fileR‘((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR¯{s!%cCsBttjj|ƒ}d„|Dƒ}ttj|j|ƒƒdS(Ncss@|]6}tj|ƒD] }|jdƒr||fVqqdS(s	.egg-linkN(RKRÈR&(ROR6tentry((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pys	<genexpr>Šs(tfilterRKR6RÆR®t	itertoolststarmapt
scan_egg_link(Rytsearch_pathtdirst	egg_links((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytscan_egg_links‡s
c
Cs¿ttjj||ƒƒ(}ttdttj	|ƒƒƒ}WdQXt
|ƒdkr[dS|\}}xQttjj||ƒƒD]4}tjj||Œ|_t
|_|j|ƒqƒWdS(Ni(topenRKR6RTR®RÑR%RRkRlRER
RFRR;RV(RyR6RÐt	raw_linestlinestegg_patht
setup_pathRA((s</tmp/pip-build-NDUwcL/setuptools/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ƒ|<t|ƒt|ƒfSndS(NR,iR.ii(NN(R'R–R®RRRR0RER1RRR|R™t
setdefaultR$RR%(RÃR3tpkgtver(Ry(s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytscan¤s+"is.pys
#egg=%s-%scSsd|jdddƒS(Ns<a href="%s#md5=%s">%s</a>iii(R?(tm((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt<lambda>ÇsR¨N(RmRiRRRnRoR?R RwR:R&tneed_version_infotscan_urltPYPI_MD5tsub(
RyR2RrRáR>RßRàtnew_urlR)tfrag((Rys</tmp/pip-build-NDUwcL/setuptools/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(RyR2((s</tmp/pip-build-NDUwcL/setuptools/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–R˜RÅR±Rå(RyR‘Ra((s</tmp/pip-build-NDUwcL/setuptools/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–tunsafe_nameR™R´R[tproject_nametnot_found_in_indexR®(RytrequirementR2((s</tmp/pip-build-NDUwcL/setuptools/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(RyRît	installerRA((s</tmp/pip-build-NDUwcL/setuptools/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µRKtunlinkRRˆR(R6RG(RytcheckerRLttfp((s</tmp/pip-build-NDUwcL/setuptools/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(RyturlsR2((s</tmp/pip-build-NDUwcL/setuptools/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%(Ry((s</tmp/pip-build-NDUwcL/setuptools/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ê(RyRîtmethR‘((s</tmp/pip-build-NDUwcL/setuptools/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.pyRFN(R·RR¬t
_download_urlR?R:R&t	gen_setupRKR6RÄR"R½tfetch_distributionR%(RyR!ttmpdirR4tfoundR)R9((s</tmp/pip-build-NDUwcL/setuptools/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ˆ|<q#q#n||kr#|jtksˆr#ˆj|jˆƒ|_t	j
j|jƒrÄ|Sq#q#WdS(Ns&Skipping development or system egg: %si(R%R[R;RRÅRR-RFtdownload_locationRKR6RÄ(treqtenvRA(t
develop_okRytskippedtsourceRÿ(s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRp[s	
"s:No local packages or working download links found for %s%ssa source distribution of R¨sBest match: %sRFN(R±R%RðRïR›RÅtcloneR(	RyRîRÿt
force_scanRRtlocal_indexRARp((RRyRRRÿs</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRþBs0




cCs/|j||||ƒ}|dk	r+|jSdS(s3Obtain a file suitable for fulfilling `requirement`

        DEPRECATED; use the ``fetch_distribution()`` method now instead.  For
        backward compatibility, this routine is identical but returns the
        ``location`` of the downloaded distribution instead of a distribution
        object.
        N(RþR%RF(RyRîRÿRRRA((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytfetchˆsc
Csptj|ƒ}|rLgt||jdƒdƒD]}|jr1|^q1pOg}t|ƒdkrAtjj	|ƒ}tjj
|ƒ|krÞtjj||ƒ}ddlm
}	|	||ƒsÞtj||ƒ|}qÞnttjj|dƒdƒ?}
|
jd|dj|djtjj|ƒdfƒWdQX|S|r`td||fƒ‚ntd	ƒ‚dS(
Niiÿÿÿÿ(tsamefilessetup.pytwsIfrom setuptools import setup
setup(name=%r, version=%r, py_modules=[%r])
is†Can't unambiguously interpret project/version identifier %r; any dashes in the name or version should be escaped using underscores. %rspCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.(R=R>RR?R%tversionRERKR6RGtdirnameRTtsetuptools.command.easy_installRtshutiltcopy2RÙtwriteRìtsplitextR(RyRLR9RÿR>tdRÀRGtdstRRÌ((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRý•s24!!i c

Cs•|jd|ƒd	\}}z^tj|ƒ}|jt|ƒƒ}t|tjj	ƒrzt
d||j|jfƒ‚n|jƒ}d}|j
}d}	d|krçt|dƒ}
ttt|
ƒƒ}	|j|||||	ƒnt|dƒ}}x`tr[|j|ƒ}|rW|j|ƒ|j|ƒ|d7}|j|||||	ƒqüPqüW|j|||ƒWdQX|SWd|r|jƒnXdS(
NsDownloading %ssCan't download %s: %s %siiÿÿÿÿscontent-lengthsContent-Lengthtwbi(NN(R±R%R„RŽR²RR·RR¸R¹RR«R‘tdl_blocksizeRtmaxRtintt
reporthookRÙR|R¶R{RR÷Rµ(
RyR2RLtfpR±RõR³tblocknumtbstsizetsizesRöRz((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt_download_toÀs:		


cCsdS(N((RyR2RLRtblksizeR((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRäscCs§|jdƒrt|ƒSyt||jƒSWnsttjfk
r¥}djg|jD]}t	|ƒ^qXƒ}|rŒ|j
||ƒq£td||fƒ‚nþtj
jk
r¾}|Stj
jk
r}|rï|j
||jƒq£td||jfƒ‚n˜tjk
rU}|r9|j
||jƒq£td||jfƒ‚nNtjtj
fk
r¢}|r‰|j
||ƒq£td||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
InvalidURLRTRaRkRÅRRR¸R¹tURLErrortreasont
BadStatusLinetlinet
HTTPExceptiontsocket(RyR2twarningtvtargR‘((s</tmp/pip-build-NDUwcL/setuptools/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
jj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&RKR6RTR't
_download_svnt
_download_gitt_download_hgRR turl2pathnameRR/R¯R|t_attempt_download(RyR4R2RÿR(R9RL((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRü
s$%
 cCs|j|tƒdS(N(R¼R|(RyR2((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRå'scCsK|j||ƒ}d|jddƒjƒkrC|j|||ƒS|SdS(NR§scontent-typeR¨(R R´R$t_download_html(RyR2RLR³((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR9*scCs‘t|ƒ}xW|D]O}|jƒrtjd|ƒr^|jƒtj|ƒ|j||ƒSPqqW|jƒtj|ƒtd|ƒ‚dS(Ns <title>([^- ]+ - )?Revision \d+:sUnexpected HTML page found at (	RÙRlRNRqRµRKRôR5R(RyR2R³RLRÌR)((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR:1s




cCsf|jddƒd}d}|jƒjdƒr5d|kr5tjj|ƒ\}}}}}}	|r5|jdƒr5d|d	kr5|d	jddƒ\}}t|ƒ\}
}|
r2d
|
krò|
jd
dƒ\}}
d||
f}n
d|
}|}||||||	f}tjj|ƒ}q2q5n|jd
||ƒt	j
d|||fƒ|S(NR.iiR¨ssvn:t@s//R,it:s --username=%s --password=%ss --username=s'Doing subversion checkout from %s to %sssvn checkout%s -q %s %s(R1R$R'RRR/Rt
urlunparseR±RKtsystem(RyR2RLtcredsR4tnetlocR6RPtqRÂtauththosttusertpwR3((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR5@s$!$&
cCs¥tjj|ƒ\}}}}}|jddƒd}|jddƒd}d}d|krz|jddƒ\}}ntjj||||dfƒ}||fS(Nt+iiÿÿÿÿR.iR;R¨(RRturlsplitR1R%trsplitt
urlunsplit(R2t
pop_prefixR4R@R6R8Rétrev((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt_vcs_split_rev_from_urlUs!!cCs•|jddƒd}|j|dtƒ\}}|jd||ƒtjd||fƒ|dk	r‘|jd|ƒtjd||fƒn|S(	NR.iiRJsDoing git clone from %s to %ssgit clone --quiet %s %ssChecking out %ss"(cd %s && git checkout --quiet %s)(R1RLR|R±RKR>R%(RyR2RLRK((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR6gs	cCs•|jddƒd}|j|dtƒ\}}|jd||ƒtjd||fƒ|dk	r‘|jd|ƒtjd||fƒn|S(	NR.iiRJsDoing hg clone from %s to %sshg clone --quiet %s %ssUpdating to %ss(cd %s && hg up -C -r %s >&-)(R1RLR|R±RKR>R%(RyR2RLRK((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR7ws	cGstj||ŒdS(N(RR°(RyR‘Ra((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR°‡scGstj||ŒdS(N(RR±(RyR‘Ra((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR±ŠscGstj||ŒdS(N(RRÅ(RyR‘Ra((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRōs(R”N()RR‚RƒR%R|RŠtFalseR¼R­R¯RØRÔR¾RäRêRïRòR÷RúRðRíR-RþR
RýRR RR²RüRåR9R:R5tstaticmethodRLR6R7R°R±RÅ(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR!sL2	
		+										#D
	)	$	#									s!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?cCs6t|tƒs|S|dkr,tj|ƒSt|ƒS(Niÿ(R·RRtunichrtchr(tc((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytuchr–s

cCs„|jdƒ}|jdƒr4t|ddƒ}nF|jdƒrVt|dƒ}n$tjjjj||jdƒƒ}t|ƒS(Nis#xiiR.i(	R?R'RRRWt
html_entitiestname2codepointR´RR(R>twhat((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt
decode_entityžs$cCs
tt|ƒS(s'Decode HTML entities in the given text.(t
entity_subRV(ttext((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRo©scs‡fd†}|S(Ncs‡‡fd†}|S(Ncs?tjƒ}tjˆƒzˆ||ŽSWdtj|ƒXdS(N(R+tgetdefaulttimeouttsetdefaulttimeout(RaRbtold_timeout(Rcttimeout(s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt_socket_timeout°s

((RcR](R\(Rcs</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR]¯s((R\R]((R\s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytsocket_timeout®scCsItjj|ƒ}|jƒ}tj|ƒ}|jƒ}|jddƒ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¨(RRR0tencodetbase64tencodestringR»R4(RBtauth_st
auth_bytest
encoded_bytestencoded((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt_encode_auth½s
t
CredentialcBs)eZdZd„Zd„Zd„ZRS(s:
    A username/password pair. Use like a namedtuple.
    cCs||_||_dS(N(tusernametpassword(RyRhRi((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRŠÙs	ccs|jV|jVdS(N(RhRi(Ry((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt__iter__ÝscCsdt|ƒS(Ns%(username)s:%(password)s(tvars(Ry((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt__str__ás(RR‚RƒRŠRjRl(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRgÔs		t
PyPIConfigcBs2eZd„Zed„ƒZd„Zd„ZRS(cCsutjdddgdƒ}tjj||ƒtjjtjjdƒdƒ}tjj	|ƒrq|j
|ƒndS(s%
        Load from ~/.pypirc
        RhRit
repositoryR¨t~s.pypircN(tdicttfromkeysRtRawConfigParserRŠRKR6RTt
expanduserRÄR¶(Rytdefaultstrc((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRŠæs
!cCsMg|jƒD]$}|j|dƒjƒr
|^q
}tt|j|ƒƒS(NRn(tsectionsR´RlRpRt_get_repo_cred(Rytsectiontsections_with_repositories((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytcreds_by_repositoryñs$cCsO|j|dƒjƒ}|t|j|dƒjƒ|j|dƒjƒƒfS(NRnRhRi(R´RlRg(RyRxtrepo((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRwúscCs7x0|jjƒD]\}}|j|ƒr|SqWdS(sŒ
        If the URL indicated appears to be a repository defined in this
        config, return the credential for that repository.
        N(RztitemsR'(RyR2Rntcred((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pytfind_credentials(RR‚RŠtpropertyRzRwR~(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyRmås			cCsÊtjj|ƒ\}}}}}}|jdƒrEtjdƒ‚n|d	krft|ƒ\}}	nd
}|s»tƒj	|ƒ}
|
r»t
|
ƒ}|
j|f}tj
d|Œq»n|r dt|ƒ}||	||||f}tjj|ƒ}
tjj|
ƒ}|jd|ƒntjj|ƒ}|jdtƒ||ƒ}|rÆtjj|jƒ\}}}}}}||krÆ||	krÆ||||||f}tjj|ƒ|_qÆn|S(s4Open a urllib2 request, handling HTTP authenticationR<snonnumeric port: ''thttpthttpss*Authenticating as %s for %s (from .pypirc)sBasic t
Authorizations
User-Agent(shttpshttpsN(RRR/R&RR%RR%RmR~RkRhRR±RfR=R tRequestt
add_headert
user_agentR2(R2RŸR4R@R6tparamsR8RéRBRCR}R±R3RèR Rts2th2tpath2tparam2tquery2tfrag2((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR$s6$'cCs|S(N((R2((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt
fix_sf_url<scCs—tjj|ƒ\}}}}}}tjj|ƒ}tjj|ƒrXtjj|ƒS|j	dƒrPtjj
|ƒrPg}x¿tj|ƒD]‡}	tjj||	ƒ}
|	dkrÞt
|
dƒ}|jƒ}WdQXPntjj
|
ƒrý|	d7}	n|jdjd|	ƒƒqWd}
|
jd|d	d
j|ƒƒ}d\}}nd\}}}idd6}tj|ƒ}tjj|||||ƒS(s7Read a local path, with special support for directoriesR,s
index.htmltrNs<a href="{name}">{name}</a>R(sB<html><head><title>{url}</title></head><body>{files}</body></html>R2tfiless
iÈtOKi”sPath not founds	Not founds	text/htmlscontent-type(iÈsOK(i”sPath not founds	Not found(RRR/R R8RKR6tisfileR¡R&RÆRÈRTRÙR¶RøtformatRtStringIOR¸R¹(R2R4R5R6tparamR8RéRLRRÂtfilepathRtbodyRÁtstatustmessageR³tbody_stream((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyR#@s,$!
!
(]RƒtsysRKRNRR+R`R†RÒt	functoolsRturllib.parseRtImportErrorturllib2tsetuptools.externRtsetuptools.extern.six.movesRRRRRt
pkg_resourcesRRR	R
RRR
RRRRRRt	distutilsRtdistutils.errorsRtfnmatchRtsetuptools.py26compatRtsetuptools.py27compatRR’R=tIRmRæR>R¬R1RDt__all__t_SOCKET_TIMEOUTt_tmplR’R
R…R"RR:R%RR<RMRR`ReRhRwtobjectRxR„RRçRWRRRVRoR^RfRgRrRmR R¡R$RR#(((s</tmp/pip-build-NDUwcL/setuptools/setuptools/package_index.pyt<module>s~
"R							"	
!ÿÿt				&.