ok

Mini Shell

Direktori : /opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/
Upload File :
Current File : //opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyo

�
�2{Yc@ssddlZddlmZddlZddlZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZyddlZWnek
rddlZnXddlZddlmZddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/e
j0e1�Z2dZ3e
j4e3�Z5dZ6d	e6d
Z7e6dZ8dZ9d
e9de8de3d
e9de8dZ:dZ;de:de;de:dZ<e7d
e3e7dZ=de=dZ>de6de>de<dZ?e
j4e?�Z@de9de8d
ZAe
j4eA�ZBd�ZCd �ZDd!�ZEd"�ZFddd#�ZHd$�ZId%�ZJd&�ZKejLd'��ZMejLd(��ZNejLd)d*��ZOd+ePfd,��YZQd-�ZRd.ePfd/��YZSd0�ZTd1ePfd2��YZUe
j4d3e
jV�ZWd4�ZXdd5�ZYd6�ZZd7�Z[d8�Z\d9�Z]d:�Z^e
j4d;e
j_�Z`e
j4d<�Zadd=�Zbe
j4d>�Zcd?�Zdd@�ZedA�ZfdB�ZgdC�ZhdDePfdE��YZidFePfdG��YZjdHePfdI��YZkd}ZldemdQ�ZndR�Zod~ZpdYePfdZ��YZqe
j4d[�Zre
j4d\�Zse
j4d]�Ztd^�Zd_�Zud`e"jvfda��YZvdbe'fdc��YZ&dde&e%fde��YZwejxdf Zyeydkr�dhe"jzfdi��YZzdje"j{fdk��YZ{ndle#j|fdm��YZ|dne#j}fdo��YZ}dpe#j~fdq��YZ~dr�ZdsePfdt��YZ�due�fdv��YZ�dwe�fdx��YZ�dye(fdz��YZ�d{ePfd|��YZ�dS(�i����N(tdeque(tiglobi(tDistlibException(tstring_typest	text_typetshutilt	raw_inputtStringIOtcache_from_sourceturlopenthttplibt	xmlrpclibt	splittypetHTTPHandlertHTTPSHandlertBaseConfiguratortvalid_identt	ContainertconfigparsertURLErrortmatch_hostnametCertificateErrortZipFiles\s*,\s*s
(\w|[.-])+s(\*|:(\*|\w+):|t)s\*?s([<>=!~]=)|[<>]t(s)?\s*(s)(s)\s*(s))*s(from\s+(?P<diref>.*))s\(\s*(?P<c1>t|s)\s*\)|(?P<c2>s\s*)s)*s\[\s*(?P<ex>s)?\s*\]s(?P<dn>s	\s*)?(\s*s)?$s(?P<op>s)\s*(?P<vn>c
Cskd�}d}tj|�}|rg|j�}|d}|dpK|d}|dsad}nd}|dj�}|s�d}d}|d}	n{|ddkr�d	|}ntj|�}
g|
D]}||�^q�}d
|djg|D]}d|^q��f}	|d
s$d}ntj	|d
�}t
d|d|d|d|	d|d|�}n|S(NcSs|j�}|d|dfS(Ntoptvn(t	groupdict(tmtd((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_constraintTstdntc1tc2tdireftis<>!=s~=s%s (%s)s, s%s %stextnametconstraintstextrastrequirementtsourceturl(tNonetREQUIREMENT_REtmatchRtstriptRELOP_IDENT_REtfinditertjointCOMMA_REtsplitR(
tsRtresultRRR&tconsR+tconstrtrstiteratortconR(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytparse_requirementRs4	

	

0
	cCs�d�}i}x�|D]�\}}}tjj||�}x�t|�D]�}tjj||�}	x�t|	�D]v}
|||
�}|dkr�|j|d�qo|||
�}|jtjjd�jd�}
|
d|||<qoWqGWqW|S(s%Find destinations for resources filescSsG|jtjjd�}|jtjjd�}|t|�jd�S(Nt/(treplacetostpathtseptlentlstrip(tbaseR@((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_rel_pathzsR=N(	R?R@R2RR,tpopR>RAtrstrip(tresources_roottrulesREtdestinationsRDtsuffixtdesttprefixtabs_basetabs_globtabs_patht
resource_filetrel_pathtrel_dest((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_resources_destsws	!cCs:ttd�rt}ntjttdtj�k}|S(Ntreal_prefixtbase_prefix(thasattrtsystTrueRMtgetattr(R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytin_venv�s	cCs;tjdkr.dtjkr.tjd}n	tj}|S(Ntdarwint__PYVENV_LAUNCHER__(RXtplatformR?tenviront
executable(R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_executable�s
	cCs�|}xwtrt|�}|}|r7|r7|}n|r	|dj�}||kr]Pn|r|d|||f}q|q	q	W|S(Nis	%c: %s
%s(RYRtlower(tpromptt
allowed_charsterror_prompttdefaulttpR5tc((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytproceed�s	
	cCsVt|t�r|j�}ni}x+|D]#}||kr+||||<q+q+W|S(N(t
isinstanceRR4(RtkeysR6tkey((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytextract_by_key�s
c
Cs�tjddkr+tjd�|�}n|j�}t|�}y�tj|�}|d}x]|j�D]O\}}x@|j�D]2\}}d||f}t	|�}|||<q�WqlW|SWn!t
k
r�|jdd�nXtj
�}	t|	d�r|	j|�n
|	j|�i}xh|	j�D]Z}
i||
<}xC|	j|
�D]2\}}d||f}t	|�}|||<qWWq3W|S(Niisutf-8texportss%s = %st	read_file(RXtversion_infotcodecst	getreadertreadRtjsontloadtitemstget_export_entryt	ExceptiontseekRtConfigParserRWRotreadfptsections(
tstreamtdataR6tgrouptentriestktvR5tentrytcpRlR&tvalue((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytread_exports�s6


cCs�tjddkr+tjd�|�}ntj�}x�|j�D]�\}}|j|�x�|j�D]u}|j	dkr�|j}nd|j|j	f}|jr�d|dj
|j�f}n|j||j|�qjWqDW|j|�dS(Niisutf-8s%s:%ss%s [%s]s, (RXRpRqt	getwriterRRzRvtadd_sectiontvaluesRKR,RMtflagsR2tsetR&twrite(RnR}R�R�R�R�R5((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
write_exports�s
	ccs*tj�}z	|VWdtj|�XdS(N(ttempfiletmkdtempRtrmtree(ttd((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyttempdir�s	ccs7tj�}ztj|�dVWdtj|�XdS(N(R?tgetcwdtchdir(Rtcwd((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s

	iccs7tj�}ztj|�dVWdtj|�XdS(N(tsockettgetdefaulttimeouttsetdefaulttimeout(tsecondstcto((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytsocket_timeouts

	tcached_propertycBseZd�Zdd�ZRS(cCs
||_dS(N(tfunc(tselfR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__init__scCs<|dkr|S|j|�}tj||jj|�|S(N(R,R�tobjectt__setattr__t__name__(R�tobjtclsR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__get__s
N(R�t
__module__R�R,R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s	cCs�tjdkr|S|s|S|ddkr@td|��n|ddkrctd|��n|jd�}x#tj|kr�|jtj�quW|s�tjStjj|�S(s�Return 'pathname' as a name that will work on the native filesystem.

    The path is split on '/' and put back together again using the current
    directory separator.  Needed because filenames in the setup script are
    always supplied in Unix style, and have to be converted to the local
    convention before we can actually use them in the filesystem.  Raises
    ValueError on non-Unix-ish systems if 'pathname' either starts or
    ends with a slash.
    R=ispath '%s' cannot be absolutei����spath '%s' cannot end with '/'(R?RAt
ValueErrorR4tcurdirtremoveR@R2(tpathnametpaths((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytconvert_paths
tFileOperatorcBs�eZed�Zd�Zd�Zd�Zed�Zdd�Z
d�Zd�Zd�Z
d	�Zd
�Zeedd�Zd�Zd
�Zd�Zd�ZRS(cCs#||_t�|_|j�dS(N(tdry_runR�tensuredt_init_record(R�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�;s	cCs%t|_t�|_t�|_dS(N(tFalsetrecordR�t
files_writtentdirs_created(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�@s	cCs |jr|jj|�ndS(N(R�R�tadd(R�R@((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytrecord_as_writtenEs	cCsitjj|�s1tdtjj|���ntjj|�sGtStj|�jtj|�jkS(s�Tell if the target is newer than the source.

        Returns true if 'source' exists and is more recently modified than
        'target', or if 'source' exists and 'target' doesn't.

        Returns false if both exist and 'target' is the same age or younger
        than 'source'. Raise PackagingFileError if 'source' does not exist.

        Note that this test is not very accurate: files created in the same
        second will have the same "age".
        sfile '%r' does not exist(R?R@texistsRtabspathRYtstattst_mtime(R�R*ttarget((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytnewerIscCs�|jtjj|��tjd||�|js�d}|r�tjj|�r`d|}q�tjj	|�r�tjj
|�r�d|}q�n|r�t|d��ntj
||�n|j|�dS(s8Copy a file respecting dry-run and force flags.
        sCopying %s to %ss%s is a symlinks%s is a non-regular files which would be overwrittenN(t
ensure_dirR?R@tdirnametloggertinfoR�R,tislinkR�tisfileR�RtcopyfileR�(R�tinfiletoutfiletchecktmsg((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	copy_file]s	
%cCs�|jtjj|��tjd||�|js�|dkrSt|d�}nt	j|dd|�}zt
j||�Wd|j�Xn|j
|�dS(NsCopying stream %s to %stwbtwtencoding(R�R?R@R�R�R�R�R,topenRqRtcopyfileobjtcloseR�(R�tinstreamR�R�t	outstream((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytcopy_streamns	cCs[|jtjj|��|jsJt|d��}|j|�WdQXn|j|�dS(NR�(R�R?R@R�R�R�R�R�(R�R@R~tf((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytwrite_binary_file}s
	cCsd|jtjj|��|jsSt|d��}|j|j|��WdQXn|j|�dS(NR�(	R�R?R@R�R�R�R�tencodeR�(R�R@R~R�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytwrite_text_file�s
	cCs�tjdkr|xj|D]_}|jr8tjd|�qtj|�j|B|@}tjd||�tj||�qWndS(Ntposixschanging mode of %sschanging mode of %s to %o(R?R&R�R�R�R�tst_modetchmod(R�tbitstmasktfilesR�tmode((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytset_mode�s
	cCs|jdd|�S(Nimi�(R�(R5R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt<lambda>�scCs�tjj|�}||jkr�tjj|�r�|jj|�tjj|�\}}|j|�tj	d|�|j
s�tj|�n|jr�|j
j|�q�ndS(NsCreating %s(R?R@R�R�R�R�R4R�R�R�R�tmkdirR�R�(R�R@RR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s"
		cCs�t||�}tjd||�|js|sD|j||�rf|sSd}qf|t|�}ntj|||t	�n|j
|�|S(NsByte-compiling %s to %s(RR�R�R�R�R,RBt
py_compiletcompileRYR�(R�R@toptimizetforceRMtdpathtdiagpath((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytbyte_compile�s		
cCstjj|�rtjj|�r�tjj|�r�tjd|�|js`tj	|�n|j
r||jkr�|jj|�q�qqtjj|�r�d}nd}tjd||�|js�tj|�n|j
r||j
kr|j
j|�qqndS(NsRemoving directory tree at %stlinktfilesRemoving %s %s(R?R@R�tisdirR�R�tdebugR�RR�R�R�R�R�(R�R@R5((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytensure_removed�s"%					cCsjt}x]|setjj|�r:tj|tj�}Pntjj|�}||kr\Pn|}q	W|S(N(R�R?R@R�taccesstW_OKR�(R�R@R6tparent((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytis_writable�s	
cCs |j|jf}|j�|S(sV
        Commit recorded changes, turn off recording, return
        changes.
        (R�R�R�(R�R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytcommit�s
cCs�|js�x9t|j�D](}tjj|�rtj|�qqWt|jdt	�}x\|D]Q}tj
|�}|r�tjj||d�}tj|�ntj|�qaWn|j
�dS(Ntreversei(R�tlistR�R?R@R�R�tsortedR�RYtlistdirR2trmdirR�(R�R�tdirsRtflisttsd((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytrollback�s	
N(R�R�R�R�R�R�R�RYR�R,R�R�R�R�tset_executable_modeR�R�R�R�R�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�:s 											
cCs�|tjkrtj|}nt|�}|dkr@|}nG|jd�}t||jd��}x|D]}t||�}qnW|S(Nt.i(RXtmodulest
__import__R,R4RZRF(tmodule_nametdotted_pathtmodR6tpartsRg((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytresolve�s	
tExportEntrycBs;eZd�Zed��Zd�Zd�ZejZRS(cCs(||_||_||_||_dS(N(R&RMRKR�(R�R&RMRKR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s			cCst|j|j�S(N(RRMRK(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�scCs d|j|j|j|jfS(Ns<ExportEntry %s = %s:%s %s>(R&RMRKR�(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__repr__
scCsdt|t�st}nH|j|jko]|j|jko]|j|jko]|j|jk}|S(N(RjRR�R&RMRKR�(R�totherR6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__eq__s	(	R�R�R�R�R�RRR�t__hash__(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s
			
s�(?P<name>(\w|[-.])+)
                      \s*=\s*(?P<callable>(\w+)([:\.]\w+)*)
                      \s*(\[\s*(?P<flags>\w+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])?
                      cCsStj|�}|sId}d|ks3d|krOtd|��qOn|j�}|d}|d}|jd�}|dkr�|d}}n4|dkr�td|��n|jd�\}}|d	}	|	dkrd|ks�d|kr	td|��ng}	n(g|	jd
�D]}
|
j�^q"}	t||||	�}|S(Nt[t]sInvalid specification %rR&tcallablet:iiR�t,(	tENTRY_REtsearchR,RRtcountR4R/R(t
specificationRR6RR&R@tcolonsRMRKR�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRw!s2




	(cCs|d
krd}ntjdkrHdtjkrHtjjd�}ntjjd�}tjj|�r�tj|tj	�}|s�t
jd|�q�nGytj|�t
}Wn-tk
r�t
jd|dt
�t}nX|s	tj�}t
jd	|�ntjj||�S(s�
    Return the default base location for distlib caches. If the directory does
    not exist, it is created. Use the suffix provided for the base directory,
    and default to '.distlib' if it isn't provided.

    On Windows, if LOCALAPPDATA is defined in the environment, then it is
    assumed to be a directory, and will be the parent directory of the result.
    On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home
    directory - using os.expanduser('~') - will be the parent directory of
    the result.

    The result is just the directory '.distlib' in the parent directory as
    determined above, or with the name specified with ``suffix``.
    s.distlibtnttLOCALAPPDATAs
$localappdatat~s(Directory exists but is not writable: %ssUnable to create %stexc_infos#Default location unusable, using %sN(R,R?R&R_R@t
expandvarst
expanduserR�R�R�R�twarningtmakedirsRYtOSErrorR�R�R�R2(RKR6tusable((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_cache_base@s&	



cCs`tjjtjj|��\}}|r?|jdd�}n|jtjd�}||dS(s
    Convert an absolute path to a directory name for use in a cache.

    The algorithm used is:

    #. On Windows, any ``':'`` in the drive is replaced with ``'---'``.
    #. Any occurrence of ``os.sep`` is replaced with ``'--'``.
    #. ``'.cache'`` is appended.
    Rs---s--s.cache(R?R@t
splitdriveR�R>RA(R@RRg((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytpath_to_cache_diris

$cCs|jd�s|dS|S(NR=(tendswith(R5((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytensure_slashzscCskd}}d|kr^|jdd�\}}d|krC|}q^|jdd�\}}n|||fS(Nt@iR(R,R4(tnetloctusernametpasswordRM((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytparse_credentials�s
	cCs tjd�}tj|�|S(Ni(R?tumask(R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_process_umask�s
cCsFt}d}x3t|�D]%\}}t|t�st}PqqW|S(N(RYR,t	enumerateRjRR�(tseqR6tiR5((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytis_string_sequence�ss3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)s
-py(\d\.?\d?)cCsd}d}tj|�}|rC|jd�}||j� }n|r�t|�t|�dkr�tjtj|�d|�}|r�|j	�}|| ||d|f}q�n|dkr�t
j|�}|r�|jd�|jd�|f}q�n|S(sw
    Extract name, version, python version from a filename (no extension)

    Return name, version, pyver or None
    is\biN(R,tPYTHON_VERSIONRRtstartRBtreR.tescapetendtPROJECT_NAME_AND_VERSION(tfilenametproject_nameR6tpyverRtn((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytsplit_filename�s "!'s-(?P<name>[\w .-]+)\s*\(\s*(?P<ver>[^\s)]+)\)$cCsRtj|�}|s(td|��n|j�}|dj�j�|dfS(s�
    A utility method used to get name and version from a string.

    From e.g. a Provides-Dist value.

    :param p: A value in a form 'foo (1.0)'
    :return: The name and version as a tuple.
    s$Ill-formed name/version string: '%s'R&tver(tNAME_VERSION_RER.RRR/Rb(RgRR((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytparse_name_and_version�s
	cCs	t�}t|pg�}t|p'g�}d|krS|jd�||O}nx�|D]�}|dkr||j|�qZ|jd�r�|d}||kr�tjd|�n||kr|j|�qqZ||kr�tjd|�n|j|�qZW|S(Nt*t-isundeclared extra: %s(R�R�R�t
startswithR�R(t	requestedt	availableR6trtunwanted((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
get_extras�s&	



cCs�i}yet|�}|j�}|jd�dkrFtjd�n$tjd�|�}tj|�}Wn&t	k
r�}tj
d||�nX|S(NsContent-Typesapplication/jsons$Unexpected response for JSON requestsutf-8s&Failed to get external data for %s: %s(R	R�tgetR�R�RqRrRtRuRxt	exception(R+R6tresptheaderstreaderte((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt_get_external_data�scCs*d|dj�|f}t|�}|S(Ns9https://www.red-dove.com/pypi/projects/%s/%s/project.jsoni(tupperRH(R&R+R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_project_data�scCs'd|dj�||f}t|�S(Ns<https://www.red-dove.com/pypi/projects/%s/%s/package-%s.jsoni(RIRH(R&tversionR+((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_package_data�stCachecBs)eZdZd�Zd�Zd�ZRS(s�
    A class implementing a cache for resources that need to live in the file system
    e.g. shared libraries. This class was moved from resources to here because it
    could be used by other modules, e.g. the wheel module.
    cCsvtjj|�s"tj|�ntj|�jd@dkrQtjd|�ntjjtjj	|��|_
dS(su
        Initialise an instance.

        :param base: The base directory where the cache should be located.
        i?isDirectory '%s' is not privateN(R?R@R�RR�R�R�RR�tnormpathRD(R�RD((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�	s
cCs
t|�S(sN
        Converts a resource prefix to a directory name in the cache.
        (R(R�RM((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
prefix_to_dirscCs�g}x�tj|j�D]�}tjj|j|�}yZtjj|�s^tjj|�rntj|�n"tjj|�r�t	j
|�nWqtk
r�|j|�qXqW|S(s"
        Clear the cache.
        (
R?R�RDR@R2R�R�R�R�RR�Rxtappend(R�tnot_removedtfn((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytclears$
(R�R�t__doc__R�RORS(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRMs		t
EventMixincBs>eZdZd�Zed�Zd�Zd�Zd�ZRS(s1
    A very simple publish/subscribe system.
    cCs
i|_dS(N(t_subscribers(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�2scCs\|j}||kr+t|g�||<n-||}|rK|j|�n
|j|�dS(s`
        Add a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be added (and called when the
                           event is published).
        :param append: Whether to append or prepend the subscriber to an
                       existing subscriber list for the event.
        N(RVRRPt
appendleft(R�teventt
subscriberRPtsubstsq((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�5s
	
cCs=|j}||kr(td|��n||j|�dS(s�
        Remove a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be removed.
        sNo subscribers: %rN(RVR�R�(R�RXRYRZ((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Is	cCst|jj|d��S(s�
        Return an iterator for the subscribers for an event.
        :param event: The event to return subscribers for.
        ((titerRVRB(R�RX((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytget_subscribersUscOs�g}xa|j|�D]P}y||||�}Wn$tk
rXtjd�d}nX|j|�qWtjd||||�|S(s^
        Publish a event and return a list of values returned by its
        subscribers.

        :param event: The event to publish.
        :param args: The positional arguments to pass to the event's
                     subscribers.
        :param kwargs: The keyword arguments to pass to the event's
                       subscribers.
        s"Exception during event publications/publish %s: args = %s, kwargs = %s, result = %sN(R]RxR�RCR,RPR�(R�RXtargstkwargsR6RYR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytpublish\s


	(	R�R�RTR�RYR�R�R]R`(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRU.s			t	SequencercBsheZd�Zd�Zed�Zd�Zd�Zd�Zd�Z	e
d��Ze
d��ZRS(	cCs"i|_i|_t�|_dS(N(t_predst_succsR�t_nodes(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�ws		cCs|jj|�dS(N(RdR�(R�tnode((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytadd_node|scCs
||jkr"|jj|�n|r	x3t|jj|d��D]}|j||�qDWx3t|jj|d��D]}|j||�qzWx6t|jj��D]\}}|s�|j|=q�q�Wx9t|jj��D]\}}|s�|j|=q�q�WndS(N(((RdR�R�RbRBRcR�Rv(R�RetedgesRgR5R�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytremove_nodes""""cCsB|jj|t��j|�|jj|t��j|�dS(N(Rbt
setdefaultR�R�Rc(R�tpredtsucc((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��scCs�y|j|}|j|}Wn!tk
rAtd|��nXy|j|�|j|�Wn'tk
r�td||f��nXdS(Ns%r not a successor of anythings%r not a successor of %r(RbRctKeyErrorR�R�(R�RjRktpredstsuccs((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s



cCs+||jkp*||jkp*||jkS(N(RbRcRd(R�tstep((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytis_step�scCs�|j|�s"td|��ng}g}t�}|j|�x�|r�|jd�}||kr�||kr�|j|�|j|�q�qG|j|�|j|�|jj|d�}|j	|�qGWt
|�S(NsUnknown: %ri((RpR�R�RPRFR�R�RbRBtextendtreversed(R�tfinalR6ttodotseenRoRm((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	get_steps�s"	
	


csydg�g�i�i�g�|j��������fd��x'�D]}|�krR�|�qRqRW�S(Nics@�d�|<�d�|<�dcd7<�j|�y�|}Wntk
r`g}nXxl|D]d}|�kr��|�t�|�|��|<qh|�krht�|�|��|<qhqhW�|�|kr<g}x3tr�j�}|j|�||kr�Pq�q�Wt|�}�j|�ndS(Nii(RPRxtminRYRFttuple(Ret
successorst	successortconnected_componentt	component(tgraphtindext
index_countertlowlinksR6tstackt
strongconnect(sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s.




"	
(Rc(R�Re((R}R~RR�R6R�R�sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytstrong_connections�s		!"
cCs�dg}xF|jD];}|j|}x%|D]}|jd||f�q-WqWx"|jD]}|jd|�q\W|jd�dj|�S(Nsdigraph G {s  %s -> %s;s  %s;t}s
(RbRPRdR2(R�R6RkRmRjRe((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytdot�s	


(
R�R�R�RfR�RhR�R�RpRvtpropertyR�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRavs				
		3s.tar.gzs.tar.bz2s.tars.zips.tgzs.tbzs.whlc
s���fd�}tjj���t���d}|dkr�|jd�rZd}q�|jd�rxd}d}q�|jd�r�d}d}q�|jd
�r�d}d}q�td|��nz|dkrt|d�}|rZ|j�}x|D]}||�q�WqZnBt	j
||�}|rZ|j�}x|D]}||�qCWn|dkr�tj
ddkr�xA|j�D]0}	t|	jt�s�|	jjd�|	_q�q�Wn|j��Wd|r�|j�nXdS(Ncs|t|t�s!|jd�}ntjjtjj�|��}|j��se|�tjkrxt	d|��ndS(Nsutf-8spath outside destination: %r(
RjRtdecodeR?R@R�R2R<RAR�(R@Rg(tdest_dirtplen(sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
check_paths
!#s.zips.whltzips.tar.gzs.tgzttgzsr:gzs.tar.bz2s.tbzttbzsr:bz2s.tarttarR?sUnknown format for %riisutf-8(s.zips.whl(s.tar.gzs.tgz(s.tar.bz2s.tbz(R?R@R�RBR,RR�RtnamelistttarfileR�tgetnamesRXRpt
getmembersRjR&RR�t
extractallR�(
tarchive_filenameR�tformatR�R�tarchiveR�tnamesR&ttarinfo((R�R�sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	unarchivesH				

c	Cs�tj�}t|�}t|d��}xutj|�D]d\}}}xR|D]J}tjj||�}||}	tjj|	|�}
|j||
�qPWq:WWdQX|S(s*zip a directory tree into a BytesIO objectR�N(	tiotBytesIORBRR?twalkR@R2R�(t	directoryR6tdlentzftrootR�R�R&tfulltrelRL((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytzip_dir:s

R$tKtMtGtTtPtProgresscBs�eZdZddd�Zd�Zd�Zd�Zd�Zed��Z	ed	��Z
d
�Zed��Zed��Z
RS(
tUNKNOWNiidcCs8||_|_||_d|_d|_t|_dS(Ni(RwtcurtmaxR,tstartedtelapsedR�tdone(R�tminvaltmaxval((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Qs
			cCsD||_tj�}|jdkr0||_n||j|_dS(N(R�ttimeR�R,R�(R�tcurvaltnow((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytupdateYs
	cCs|j|j|�dS(N(R�R�(R�tincr((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	incrementcscCs|j|j�|S(N(R�Rw(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR-gscCs/|jdk	r"|j|j�nt|_dS(N(R�R,R�RYR�(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytstopkscCs|jdkr|jS|jS(N(R�R,tunknown(R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytmaximumpscCsZ|jrd}nD|jdkr*d}n,d|j|j|j|j}d|}|S(Ns100 %s ?? %gY@s%3d %%(R�R�R,R�Rw(R�R6R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
percentagets			"
cCsU|dkr|jdks-|j|jkr6d}ntjdtj|��}|S(Nis??:??:??s%H:%M:%S(R�R,R�RwR�tstrftimetgmtime(R�tdurationR6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytformat_durations-	cCs�|jrd}|j}n�d}|jdkr9d}ne|jdksZ|j|jkrcd}n;t|j|j�}||j|j:}|d|j}d||j|�fS(NtDonesETA i����iis%s: %s(R�R�R�R,R�RwtfloatR�(R�RMtt((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytETA�s		!	cCsh|jdkrd}n|j|j|j}x(tD] }|dkrLPn|d:}q6Wd||fS(Nigi�g@�@s%d %sB/s(R�R�RwtUNITS(R�R6tunit((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytspeed�s	
(R�R�R�R�R�R�R-R�R�R�R�R�R�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Ns	
					s\{([^}]*)\}s[^/\\,{]\*\*|\*\*[^/\\,}]s^[^{]*\}|\{[^}]*$cCsZtj|�r(d}t||��ntj|�rPd}t||��nt|�S(sAExtended globbing function that supports ** and {opt1,opt2,opt3}.s7invalid glob %r: recursive glob "**" must be used alones2invalid glob %r: mismatching set marker '{' or '}'(t_CHECK_RECURSIVE_GLOBRR�t_CHECK_MISMATCH_SETt_iglob(t	path_globR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�sccsmtj|d�}t|�dkr~|\}}}x3|jd�D]4}x+tdj|||f��D]}|VqhWqCWn�d|kr�x�t|�D]}|Vq�Wn�|jdd�\}}|dkr�d}n|dkr�d}n|jd�}|jd�}x]tj|�D]L\}}}	tj	j
|�}x(ttj	j||��D]}
|
VqVWqWdS(	NiRR$s**R�R:R=s\(t	RICH_GLOBR4RBR�R2t	std_iglobRCR?R�R@RN(R�trich_path_globRMR�RKtitemR@tradicaltdirR�RR((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s(%		"tHTTPSConnectioncBseZdZeZd�ZRS(c
Cs�tj|j|jf|j�}t|dt�rI||_|j�nt	t
d�s�|jrmt
j}n	t
j
}t
j||j|jd|dt
jd|j�|_n�t
jt
j�}|jt
jO_|jr�|j|j|j�ni}|jrHt
j|_|jd|j�tt
dt�rH|j|d<qHn|j||�|_|jr�|jr�y0t|jj�|j�tjd	|j�Wq�tk
r�|jjtj�|jj ��q�XndS(
Nt_tunnel_hostt
SSLContextt	cert_reqstssl_versiontca_certstcafiletHAS_SNItserver_hostnamesHost verified: %s(!R�tcreate_connectionthosttportttimeoutRZR�tsockt_tunnelRWtsslR�t
CERT_REQUIREDt	CERT_NONEtwrap_sockettkey_filet	cert_filetPROTOCOL_SSLv23R�toptionstOP_NO_SSLv2tload_cert_chaintverify_modetload_verify_locationstcheck_domainRtgetpeercertR�R�Rtshutdownt	SHUT_RDWRR�(R�R�R�tcontextR_((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytconnect�s>!	
					

N(R�R�R,R�RYR�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��sRcBs&eZed�Zd�Zd�ZRS(cCs#tj|�||_||_dS(N(tBaseHTTPSHandlerR�R�R�(R�R�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s
	cOs7t||�}|jr3|j|_|j|_n|S(s�
        This is called to create a connection instance. Normally you'd
        pass a connection class to do_open, but it doesn't actually check for
        a class, and just expects a callable. As long as we behave just as a
        constructor would have, we should be OK. If it ever changes so that
        we *must* pass a class, we'll create an UnsafeHTTPSConnection class
        which just sets check_domain to False in the class definition, and
        choose which one to pass to do_open.
        (R�R�R�(R�R^R_R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt_conn_makers

	cCs_y|j|j|�SWnAtk
rZ}dt|j�krTtd|j��q[�nXdS(Nscertificate verify faileds*Unable to verify server certificate for %s(tdo_openR�RtstrtreasonRR�(R�treqRG((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt
https_opens(R�R�RYR�R�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRs	tHTTPSOnlyHandlercBseZd�ZRS(cCstd|��dS(NsAUnexpected HTTP request on what should be a secure connection: %s(R(R�R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	http_open0s(R�R�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�/siitHTTPcBseZddd�ZRS(R$cKs5|dkrd}n|j|j|||��dS(Ni(R,t_setupt_connection_class(R�R�R�R_((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�<s	N(R�R�R,R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�;stHTTPScBseZddd�ZRS(R$cKs5|dkrd}n|j|j|||��dS(Ni(R,R�R�(R�R�R�R_((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Cs	N(R�R�R,R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Bst	TransportcBseZdd�Zd�ZRS(icCs ||_tjj||�dS(N(R�RR�R�(R�R�tuse_datetime((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Js	cCs�|j|�\}}}tdkr<t|d|j�}nN|jsY||jdkr}||_|tj|�f|_n|jd}|S(NiiR�ii(ii(t
get_host_infot	_ver_infoR�R�t_connectiont_extra_headersR
tHTTPConnection(R�R�thtehtx509R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytmake_connectionNs	
(R�R�R�R	(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Ist
SafeTransportcBseZdd�Zd�ZRS(icCs ||_tjj||�dS(N(R�RR
R�(R�R�R((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�Zs	cCs�|j|�\}}}|s'i}n|j|d<tdkrUt|d|�}nT|jsr||jdkr�||_|tj|d|�f|_n|jd}|S(NR�iiii(ii(	RR�RR�R,RRR
R�(R�R�RRR_R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR	^s	
	
(R�R�R�R	(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR
YstServerProxycBseZd�ZRS(c	Ks�|jdd�|_}|dk	r�t|�\}}|jdd�}|dkr^t}nt}||d|�|d<}||_ntj	j
|||�dS(NR�Rithttpst	transport(RFR,R�RRBR
R�R
RRR�(	R�turiR_R�tschemet_RttclsR�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�os	(R�R�R�(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRnscKs:tjddkr |d7}n
d|d<t|||�S(NiitbR$tnewline(RXRpR�(RRR�R_((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	_csv_open�s

tCSVBasecBsGeZied�d6ed�d6ed�d6Zd�Zd�ZRS(Rt	delimitert"t	quotechars
tlineterminatorcCs|S(N((R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt	__enter__�scGs|jj�dS(N(R}R�(R�R((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__exit__�s(R�R�R�tdefaultsRR(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s

	t	CSVReadercBs)eZd�Zd�Zd�ZeZRS(cKs�d|krM|d}tjddkrAtjd�|�}n||_nt|dd�|_tj|j|j�|_dS(NR}iisutf-8R@R?(	RXRpRqRrR}RtcsvRFR(R�R_R}((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��s
cCs|S(N((R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__iter__�scCskt|j�}tjddkrgxBt|�D]1\}}t|t�s/|jd�||<q/q/Wn|S(Niisutf-8(tnextRFRXRpR(RjRR�(R�R6R*R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR �s(R�R�R�RR t__next__(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s			t	CSVWritercBseZd�Zd�ZRS(cKs1t|d�|_tj|j|j�|_dS(NR�(RR}RtwriterR(R�RRR_((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��scCsutjddkrag}x<|D]4}t|t�rG|jd�}n|j|�q W|}n|jj|�dS(Niisutf-8(RXRpRjRR�RPR#twriterow(R�trowR?R�((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR$�s
	(R�R�R�R$(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR"�s	tConfiguratorcBsHeZeej�Zded<dd�Zd�Zd�Zd�Z	RS(tinc_converttinccCs/tt|�j|�|p%tj�|_dS(N(tsuperR&R�R?R�RD(R�tconfigRD((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR��scs!��fd��|jd�}t|�s?�j|�}n|jdd�}|jdd�}|r�tg|D]}�|�^qs�}ng|D](}t|�r�|�||�f^q�}t|�}|||�}	|rx3|j�D]"\}
}t|	|
�|��q�Wn|	S(Ncs�t|ttf�rCt|�g|D]}�|�^q%�}njt|t�r�d|krp�j|�}q�i}x4|D]}�||�||<q}Wn�j|�}|S(Ns()(RjR�Rxttypetdicttconfigure_customtconvert(toR*R6R�(R.R�(sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR.�s.
s()R�s[]((	RFR
RR,RxRR,Rvtsetattr(R�R*RhtpropsR^R/R�RvR_R6R5R�((R.R�sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR-�s(5cCsI|j|}t|t�rEd|krE|j|�|j|<}n|S(Ns()(R*RjR,R-(R�RlR6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt__getitem__�s
cCsatjj|�s-tjj|j|�}ntj|ddd��}tj|�}WdQX|S(s*Default converter for the inc:// protocol.R?R�sutf-8N(	R?R@tisabsR2RDRqR�RtRu(R�R�R�R6((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR'�s
N(
R�R�R,Rtvalue_convertersR,R�R-R2R'(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR&�s
		tSubprocessMixincBs)eZedd�Zd�Zd�ZRS(cCs||_||_dS(N(tverbosetprogress(R�R6R7((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR�s	cCs�|j}|j}x{tr�|j�}|s1Pn|dk	rM|||�q|sftjjd�ntjj|jd��tjj	�qW|j
�dS(s�
        Read lines from a subprocess' output stream and either pass to a progress
        callable (if specified) or write progress information to sys.stderr.
        R�sutf-8N(R7R6RYtreadlineR,RXtstderrR�R�tflushR�(R�R}R�R7R6R5((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyRFs			cKs�tj|dtjdtj|�}tjd|jd|jdf�}|j�tjd|jd|jdf�}|j�|j	�|j
�|j
�|jdk	r�|jdd�n|j
r�tjjd�n|S(NtstdoutR9R�R^sdone.tmainsdone.
(t
subprocesstPopentPIPEt	threadingtThreadRFR;R-R9twaitR2R7R,R6RXR�(R�tcmdR_Rgtt1tt2((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pytrun_commands$
$



	N(R�R�R�R,R�RFRF(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyR5�s	(s.tar.gzs.tar.bz2s.tars.zips.tgzs.tbzs.whl(R$R�R�R�R�R�(ii(�RqtcollectionsRt
contextlibRtglobRR�R�RttloggingR?R�R.RR�R�R=RXR�R�R@tImportErrortdummy_threadingR�R$RtcompatRRRRRR	R
RRR
RR�RRRRRRRRt	getLoggerR�R�tCOMMAR�R3tIDENTtEXTRA_IDENTtVERSPECtRELOPtBARE_CONSTRAINTSt
DIRECT_REFtCONSTRAINTSt
EXTRA_LISTtEXTRAStREQUIREMENTR-tRELOP_IDENTR0R<RTR[RaR,RiRmR�R�tcontextmanagerR�R�R�R�R�R�R�RRtVERBOSER
RwRRR R%R'R+tIR1R,R6R8R9RARHRJRLRMRURatARCHIVE_EXTENSIONSRYR�R�R�R�R�R�R�R�R�R�RpRR�R�R�R
RRRRR"R&R5(((sI/opt/alt/python33/lib/python3.3/site-packages/pip/_vendor/distlib/util.pyt<module>s�
�
.	%		
					$	
		�		)					
						,H�6	]		!*)	
	:

Zerion Mini Shell 1.0