????

Your IP : 216.73.216.152


Current Path : /usr/lib/python2.7/site-packages/pip/_internal/utils/
Upload File :
Current File : //usr/lib/python2.7/site-packages/pip/_internal/utils/ui.pyc

�
}�\]c@`ssddlmZmZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlmZddl
mZmZddlmZmZmZddlmZddlmZdd	lmZdd
lmZddlmZer%ddlmZm Z m!Z!nydd
lm"Z"Wne#k
rRdZ"nXej%e&�Z'd�Z(e(ee�Z)de*fd��YZ+defd��YZ,defd��YZ-de*fd��YZ.de*fd��YZ/de/e+e.fd��YZ0de0e)fd��YZ1de0e,fd��YZ2de0efd ��YZ3d!e0efd"��YZ4d#e0e-fd$��YZ5d%e/e+e.efd&��YZ6ie2e2fd'6e1e6fd(6e3e6fd)6e4e6fd*6e5e6fd+6Z7dd,�Z8ej9d-��Z:d.e*fd/��YZ;d0e*fd1��YZ<d2e<fd3��YZ=d4e<fd5��YZ>ej9d6��Z?dS(7i(tabsolute_importtdivisionN(tSIGINTtdefault_int_handlertsignal(tsix(tHIDE_CURSORtSHOW_CURSOR(tBartFillingCirclesBartIncrementalBar(tSpinner(tWINDOWS(tget_indentation(tformat_size(tMYPY_CHECK_RUNNING(tAnytIteratortIO(tcoloramacC`s�t|jdd�}|s|St|dtj��t|dtj��g}|tt|dg��7}y tj�j|�j|�Wntk
r�|SX|SdS(Ntencodingt
empty_filltfilltphases(	tgetattrtfiletNoneRt	text_typetlisttjointencodetUnicodeEncodeError(t	preferredtfallbackRt
characters((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt_select_progress_class!s 
tInterruptibleMixincB`s)eZdZd�Zd�Zd�ZRS(s�
    Helper to ensure that self.finish() gets called on keyboard interrupt.

    This allows downloads to be interrupted without leaving temporary state
    (like hidden cursors) behind.

    This class is similar to the progress library's existing SigIntMixin
    helper, but as of version 1.2, that helper has the following problems:

    1. It calls sys.exit().
    2. It discards the existing SIGINT handler completely.
    3. It leaves its own handler in place even after an uninterrupted finish,
       which will have unexpected delayed effects if the user triggers an
       unrelated keyboard interrupt some time after a progress-displaying
       download has already completed, for example.
    cO`sMtt|�j||�tt|j�|_|jdkrIt|_ndS(s=
        Save the original SIGINT handler for later.
        N(	tsuperR$t__init__RRt
handle_siginttoriginal_handlerRR(tselftargstkwargs((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&QscC`s'tt|�j�tt|j�dS(s�
        Restore the original SIGINT handler after finishing.

        This should happen regardless of whether the progress display finishes
        normally, or gets interrupted.
        N(R%R$tfinishRRR((R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR,ascC`s|j�|j||�dS(s�
        Call self.finish() before delegating to the original SIGINT handler.

        This handler should only be in place while the progress display is
        active.
        N(R,R((R)tsignumtframe((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR'ks
(t__name__t
__module__t__doc__R&R,R'(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR$?s		
t	SilentBarcB`seZd�ZRS(cC`sdS(N((R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytupdatexs(R/R0R3(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR2vstBlueEmojiBarcB`s eZdZdZdZdZRS(s
%(percent)d%%t u🔹u🔷u🔵(u🔹u🔷u🔵(R/R0tsuffixt
bar_prefixt
bar_suffixR(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR4|stDownloadProgressMixincB`sJeZd�Zed��Zed��Zed��Zdd�ZRS(cO`s8tt|�j||�dt�d|j|_dS(NR5i(R%R9R&R
tmessage(R)R*R+((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&�scC`s
t|j�S(N(Rtindex(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt
downloaded�scC`s(|jdkrdStd|j�dS(Ngs...is/s(tavgR(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytdownload_speed�scC`s|jrd|jSdS(Nseta %st(tetateta_td(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt
pretty_eta�s	icc`s1x |D]}|V|j|�qW|j�dS(N(tnextR,(R)tittntx((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytiter�s
(R/R0R&tpropertyR<R>RBRG(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR9�s
	tWindowsMixincB`seZd�ZRS(c`s�tr�jrt�_ntt��j||�tr�tr�tj�j��_�fd��j_	�fd��j_
ndS(Nc`s�jjj�S(N(Rtwrappedtisatty((R)(s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt<lambda>�sc`s�jjj�S(N(RRJtflush((R)(s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRL�s(Rthide_cursortFalseR%RIR&RtAnsiToWin32RRKRM(R)R*R+((R)s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&�s(R/R0R&(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRI�stBaseDownloadProgressBarcB`seZejZdZdZRS(s
%(percent)d%%s0%(downloaded)s %(download_speed)s %(pretty_eta)s(R/R0tsyststdoutRR:R6(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRQ�s	tDefaultDownloadProgressBarcB`seZRS((R/R0(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRT�stDownloadSilentBarcB`seZRS((R/R0(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRU�stDownloadBarcB`seZRS((R/R0(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRV�stDownloadFillingCirclesBarcB`seZRS((R/R0(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRW�stDownloadBlueEmojiProgressBarcB`seZRS((R/R0(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRX�stDownloadProgressSpinnercB`s)eZejZdZd�Zd�ZRS(s!%(downloaded)s %(download_speed)scC`s4t|d�s'tj|j�|_nt|j�S(Nt_phaser(thasattrt	itertoolstcycleRRZRC(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt
next_phase�scC`sm|j|}|j�}|j|}dj||r;dnd||rMdnd|g�}|j|�dS(NR?R5(R:R^R6Rtwriteln(R)R:tphaseR6tline((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR3�s

(R/R0RRRSRR6R^R3(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRY�s		tofftontasciitprettytemojicC`sF|dks|dkr*t|d�jSt|dd|�jSdS(Niitmax(Rt	BAR_TYPESRG(tprogress_barRg((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytDownloadProgressProviderscc`sctrdVnQ|j�s0tj�tjkr8dVn'|jt�z	dVWd|jt�XdS(N(	RRKtloggertgetEffectiveLeveltloggingtINFOtwriteRR(R((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt
hidden_cursors"
	tRateLimitercB`s#eZd�Zd�Zd�ZRS(cC`s||_d|_dS(Ni(t_min_update_interval_secondst_last_update(R)tmin_update_interval_seconds((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&)s	cC`s&tj�}||j}||jkS(N(ttimeRsRr(R)tnowtdelta((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytready.s
cC`stj�|_dS(N(RuRs(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytreset4s(R/R0R&RxRy(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRq(s		tSpinnerInterfacecB`seZd�Zd�ZRS(cC`s
t��dS(N(tNotImplementedError(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytspin:scC`s
t��dS(N(R{(R)tfinal_status((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR,>s(R/R0R|R,(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyRz9s	tInteractiveSpinnercB`s5eZdddd�Zd�Zd�Zd�ZRS(s-\|/g�?cC`s�||_|dkr!tj}n||_t|�|_t|_t	j
|�|_|jjdt
�|jd�d|_dS(NR5s ... i(t_messageRRRRSt_fileRqt
_rate_limiterROt	_finishedR\R]t_spin_cycleRoR
t_width(R)R:Rt
spin_charsRt((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&Ds			"cC`sy|jst�d|j}|jj|d|j|�|jj|�t|�|_|jj�|jj�dS(NsR5(	R�tAssertionErrorR�R�RotlenRMR�Ry(R)tstatustbackup((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt_writeSs

cC`s:|jr
dS|jj�s dS|jt|j��dS(N(R�R�RxR�RCR�(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR|_s
	cC`sD|jr
dS|j|�|jjd�|jj�t|_dS(Ns
(R�R�R�RoRMtTrue(R)R}((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR,gs	

N(R/R0RR&R�R|R,(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR~Cs

		tNonInteractiveSpinnercB`s/eZdd�Zd�Zd�Zd�ZRS(i<cC`s2||_t|_t|�|_|jd�dS(Ntstarted(RROR�RqR�t_update(R)R:Rt((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR&vs		cC`s7|jst�|jj�tjd|j|�dS(Ns%s: %s(R�R�R�RyRktinfoR(R)R�((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR�}s
cC`s1|jr
dS|jj�s dS|jd�dS(Nsstill running...(R�R�RxR�(R)((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR|�s
	cC`s.|jr
dS|jd|f�t|_dS(Nsfinished with status '%s'(R�R�R�(R)R}((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR,�s	(R/R0R&R�R|R,(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyR�us		cc`s�tjj�r3tj�tjkr3t|�}nt|�}yt	tj��
|VWdQXWnAt
k
r�|jd��n.tk
r�|jd��nX|jd�dS(Ntcanceledterrortdone(
RRRSRKRkRlRmRnR~R�RptKeyboardInterruptR,t	Exception(R:tspinner((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pytopen_spinner�s$



(@t
__future__RRt
contextlibR\RmRRRuRRRtpip._vendorRtpip._vendor.progressRRtpip._vendor.progress.barRR	R
tpip._vendor.progress.spinnerRtpip._internal.utils.compatRtpip._internal.utils.loggingR
tpip._internal.utils.miscRtpip._internal.utils.typingRttypingRRRRR�Rt	getLoggerR/RkR#t_BaseBartobjectR$R2R4R9RIRQRTRURVRWRXRYRhRjtcontextmanagerRpRqRzR~R�R�(((s5/tmp/pip-install-ewDPok/pip/pip/_internal/utils/ui.pyt<module>sl

	7	
	




2