U ÀÒ.eé2ã@sÂddlmZddlZddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m Z ddlmZddlmZz ddlZWnek r¤ddlZYnXzddlmZWnek rÎdZYnXdd lmZeZe ¡Zde_e d ƒZGd d „d eƒZe �r&e �rd d„Z ndd„Z ne �r6dd„Z ndd„Z ej!d%dd„ƒZ"dd„Z#Gdd„dej$ƒZ%dd„Z&Gdd„dej'ƒZ(Gdd„dej)j*ƒZ+Gdd „d eƒZ,Gd!d"„d"eƒZ-d#d$„Z.dS)&é)Úabsolute_importN)ÚFilterÚ getLogger)ÚPY2)ÚWINDOWS)ÚDEPRECATION_MSG_PREFIX)Ú ensure_dir)Úcolorama)ÚForezpip.subprocessorc@seZdZdZdS)ÚBrokenStdoutLoggingErrorzO Raised if BrokenPipeError occurs for the stdout stream while logging. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrú?/usr/lib/python3.8/site-packages/pip/_internal/utils/logging.pyr ;sr cCs|tko|jtjtjfkS©z1See the docstring for non-Windows Python 3 below.)ÚIOErrorÚerrnoÚEINVALÚEPIPE©Ú exc_classÚexcrrrÚ_is_broken_pipe_errorIsÿrcCs"|tkp |tko |jtjtjfkSr)ÚBrokenPipeErrorÚOSErrorrrrrrrrrOsþcCs|tko|jtjkSr)rrrrrrrrUscCs|tkS)z£ Return whether an exception is a broken pipe error. Args: exc_class: an exception class. exc: an exception instance. )rrrrrrZséc cs.tj|7_z dVW5tj|8_XdS)zv A context manager which will cause the log output to be indented for any log messages emitted inside it. N)Ú _log_stateÚ indentation)ZnumrrrÚ indent_loges r cCs ttddƒS)Nrr)ÚgetattrrrrrrÚget_indentationrsr"cs0eZdZ‡fdd„Zdd„Z‡fdd„Z‡ZS)ÚIndentingFormattercs$| dd¡|_tt|ƒj||ŽdS)zÎ A logging.Formatter that obeys the indent_log() context manager. :param add_timestamp: A bool indicating output lines should be prefixed with their record's timestamp. Ú add_timestampFN)Úpopr$Úsuperr#Ú__init__)ÚselfÚargsÚkwargs©Ú __class__rrr'xszIndentingFormatter.__init__cCs.|tjkrdS| t¡rdS|tjkr*dSdS)zv Return the start of the formatted log message (not counting the prefix to add to each line). Úz WARNING: zERROR: )ÚloggingÚWARNINGÚ startswithrÚERROR)r(Ú formattedÚlevelnorrrÚget_message_start‚s   z$IndentingFormatter.get_message_startcsztt|ƒ |¡}| ||j¡}||}d‰|jrJ| |d¡}d||jf‰ˆdtƒ7‰d  ‡fdd„|  d¡Dƒ¡}|S)z† Calls the standard formatter, but will indent all of the log message lines by our current indentation level. r-z%Y-%m-%dT%H:%M:%Sz%s,%03d ú csg|] }ˆ|‘qSrr)Ú.0Úline©ÚprefixrrÚ ¡sÿz-IndentingFormatter.format..T) r&r#Úformatr4r3r$Z formatTimeZmsecsr"ÚjoinÚ splitlines)r(Úrecordr2Z message_startÚtr+r8rr;’s þzIndentingFormatter.format)r r rr'r4r;Ú __classcell__rrr+rr#vs r#cs‡fdd„}|S)Ncsd tˆƒ|tjjg¡S)Nr-)r<Úlistr ZStyleZ RESET_ALL)Zinp©ÚcolorsrrÚwrapped©sz_color_wrap..wrappedr)rCrDrrBrÚ _color_wrap¨s rEcsheZdZer.ejeejƒfej eej ƒfgZ ngZ d dd„Z dd„Z dd„Zdd „Z‡fd d „Z‡ZS) ÚColorizedStreamHandlerNcCs.tj ||¡||_tr*tr*t |j¡|_dS©N)r.Ú StreamHandlerr'Ú _no_colorrr Ú AnsiToWin32Ústream)r(rKÚno_colorrrrr'ºszColorizedStreamHandler.__init__cCs"trtr|jjtjkS|jtjkS)zA Return whether the handler is using sys.stdout. )rr rKrDÚsysÚstdout©r(rrrÚ _using_stdoutÁsz$ColorizedStreamHandler._using_stdoutcCsXtr |jrdSt|jtjƒs"|jn|jj}t|dƒr@| ¡r@dStj   d¡dkrTdSdS)NFÚisattyTZTERMZANSI) r rIÚ isinstancerKrJrDÚhasattrrQÚosÚenvironÚget)r(Z real_streamrrrÚ should_colorËs þz#ColorizedStreamHandler.should_colorcCs@tj ||¡}| ¡r<|jD]\}}|j|kr||ƒ}qÚmsgÚlevelZcolorrrrr;às zColorizedStreamHandler.formatcs@t ¡dd…\}}|r0| ¡r0t||ƒr0tƒ‚tt|ƒ |¡S)Nr)rMÚexc_inforPrr r&rFÚ handleError)r(r>rrr+rrr\ìs  ÿz"ColorizedStreamHandler.handleError)NN)r r rr r.r1rEr ZREDr/ZYELLOWrXr'rPrWr;r\r@rrr+rrF®sý   rFc@seZdZdd„ZdS)ÚBetterRotatingFileHandlercCs ttj |j¡ƒtjj |¡SrG) rrTÚpathÚdirnameZ baseFilenamer.ÚhandlersÚRotatingFileHandlerÚ_openrOrrrrbûszBetterRotatingFileHandler._openN)r r rrbrrrrr]ùsr]c@seZdZdd„Zdd„ZdS)ÚMaxLevelFiltercCs ||_dSrG)rZ)r(rZrrrr'szMaxLevelFilter.__init__cCs |j|jkSrG)r3rZ©r(r>rrrÚfilterszMaxLevelFilter.filterN)r r rr'rerrrrrcsrccs eZdZdZ‡fdd„Z‡ZS)ÚExcludeLoggerFilterzQ A logging Filter that excludes records from a logger (or its children). cstt|ƒ |¡ SrG)r&rfrerdr+rrreszExcludeLoggerFilter.filter)r r rrrer@rrr+rrf srfc Csf|dkrd}n.|dkrd}n |dkr*d}n|dkr8d}nd }tt|ƒ}|d k }|r\|}d}nd }|}|d krpdnd}d ddœ} dddœ} dddg|ršdgng} tj dddtjdœdtjdœdtjdœdœtddœtdd d!œd"œ|| d#|| d$d%d&gd'd(œd| d#|| d)d%gd'd(œ|| d#|| d)d*gd'd(œd| d+|d d,d-œd.œ|| d/œd0d1|iid2œ¡|S)3znConfigures and sets up all of the logging Returns the requested logging level, as its integer value. éÚDEBUGéÿÿÿÿr/éþÿÿÿr1éýÿÿÿZCRITICALÚINFONz /dev/null)rlr1zext://sys.stdoutzext://sys.stderr)rNÚstderrz2pip._internal.utils.logging.ColorizedStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rKÚfileÚconsoleÚconsole_errorsÚconsole_subprocessÚuser_logFz*pip._internal.utils.logging.MaxLevelFilter)ú()rZzlogging.Filter)rsÚnamez/pip._internal.utils.logging.ExcludeLoggerFilter)Úexclude_warningsÚrestrict_to_subprocessÚexclude_subprocessz %(message)s)rsr;T)rsr;r$)ÚindentÚindent_with_timestamprKrNrwrurx)rZÚclassrLrKÚfiltersÚ formatterrmrvrnry)rZrzÚfilenameZdelayr|)rorprqrr)rZr`z pip._vendorrZ)ÚversionZdisable_existing_loggersr{Z formattersr`ÚrootZloggers)r!r.ZconfigZ dictConfigr/Úsubprocess_loggerrtr#) Ú verbosityrLZ user_log_filerZZ level_numberZinclude_user_logZadditional_log_fileZ root_levelZvendored_log_levelZ log_streamsZhandler_classesr`rrrÚ setup_loggingsª þþ ÿþþþ÷þýû ú ú ú ûå$þÿÿ½Jr‚)r)/Z __future__rÚ contextlibrr.Zlogging.handlersrTrMrrZpip._vendor.sixrZpip._internal.utils.compatrZpip._internal.utils.deprecationrZpip._internal.utils.miscrZ threadingÚ ImportErrorZdummy_threadingZ pip._vendorr Z _coloramaÚ ExceptionZpip._vendor.coloramar Zlocalrrr€r rÚcontextmanagerr r"Z Formatterr#rErHrFr`rar]rcrfr‚rrrrÚsT              2K