U ja1@sddlZddlZddlZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z mZmZddlmZmZddlmZddlmZddlmZz ddlZWnek rddlZYnXzddlmZWnek rdZYnXeZ ed Z!Gd d d eZ"erd d Z#ndd Z#ej$d"ddZ%ddZ&Gdddej'Z(ddZ)Gdddej*Z+Gdddej,j-Z.GdddeZ/GdddeZ0d d!Z1dS)#N)Filter)IOAnyCallableIteratorOptionalTextIOTypecast)VERBOSE getLogger)WINDOWS)DEPRECATION_MSG_PREFIX) ensure_dir)coloramazpip.subprocessorc@seZdZdZdS)BrokenStdoutLoggingErrorzO Raised if BrokenPipeError occurs for the stdout stream while logging. N)__name__ __module__ __qualname____doc__rrs/private/var/folders/k6/_7fsz4ts3b78x3b3xwrxjh_c8s8xv7/T/pip-unpacked-wheel-bug3gbve/pip/_internal/utils/logging.pyr!srcCs$|tkp"t|to"|jtjtjfkS)z(See the docstring for non-Windows below.)BrokenPipeError isinstanceOSErrorerrnoEINVALEPIPE exc_classexcrrr_is_broken_pipe_error.sr!cCs|tkS)z Return whether an exception is a broken pipe error. Args: exc_class: an exception class. exc: an exception instance. )rrrrrr!8s c cs6tt_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)get_indentation _log_state indentation)numrrr indent_logDs  r'cCs ttddS)Nr%r)getattrr$rrrrr#Tsr#cs:eZdZdZddfdd ZddZfdd ZZS) IndentingFormatterz%Y-%m-%dT%H:%M:%SF) add_timestampcs||_tj||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. N)r*super__init__)selfr*argskwargs __class__rrr,\s zIndentingFormatter.__init__cCs.|tjkrdS|trdS|tjkr*dSdS)zv Return the start of the formatted log message (not counting the prefix to add to each line). z WARNING: zERROR: )loggingWARNING startswithrERROR)r- formattedlevelnorrrget_message_startls   z$IndentingFormatter.get_message_startcslt|}|||j}||}d|jr<||ddt7dfdd|dD}|S)z Calls the standard formatter, but will indent all of the log message lines by our current indentation level. r2 csg|] }|qSrr).0lineprefixrr sz-IndentingFormatter.format..T) r+formatr9r8r* formatTimer#join splitlines)r-recordr7 message_startr0r=rr@}s zIndentingFormatter.format)rrrdefault_time_formatr,r9r@ __classcell__rrr0rr)Ys r)csfdd}|S)Ncsdt|tjjgS)Nr2)rBlistrStyle RESET_ALL)inpcolorsrrwrappedsz_color_wrap..wrappedr)rMrNrrLr _color_wraps rOcsteZdZer2ejeejjfej eejj fgZ ngZ d fdd Z ddZ ddZfdd Zfd d ZZS) ColorizedStreamHandlerNcs,t|||_tr(tr(t|j|_dSN)r+r, _no_colorr r AnsiToWin32stream)r-rTno_colorr0rrr,s zColorizedStreamHandler.__init__cCs.tr"tr"ttj|j}|jtjkS|jtjkS)zA Return whether the handler is using sys.stdout. )r rr rSrTrNsysstdout)r-rTrrr _using_stdouts z$ColorizedStreamHandler._using_stdoutcCsXtr |jrdSt|jtjs"|jn|jj}t|dr@|r@dStj ddkrTdSdS)NFisattyTTERMANSI) rrRrrTrSrNhasattrrYosenvironget)r- real_streamrrr should_colors  z#ColorizedStreamHandler.should_colorcs>t|}|r:|jD]\}}|j|kr||}q:q|SrQ)r+r@raCOLORSr8)r-rDmsglevelcolorr0rrr@s  zColorizedStreamHandler.formatcs@tdd\}}|r4|r4|r4t||r4tt|S)Nr")rVexc_inforXr!rr+ handleError)r-rDrr r0rrrgsz"ColorizedStreamHandler.handleError)NN)rrrrr3r6rOForeREDr4YELLOWrbr,rXrar@rgrGrrr0rrPs  rPcseZdZfddZZS)BetterRotatingFileHandlercsttj|jtSrQ)rr]pathdirname baseFilenamer+_open)r-r0rrroszBetterRotatingFileHandler._open)rrrrorGrrr0rrksrkc@seZdZddZddZdS)MaxLevelFiltercCs ||_dSrQ)rd)r-rdrrrr,szMaxLevelFilter.__init__cCs |j|jkSrQ)r8rdr-rDrrrfilterszMaxLevelFilter.filterN)rrrr,rrrrrrrpsrpcs eZdZdZfddZZS)ExcludeLoggerFilterzQ A logging Filter that excludes records from a logger (or its children). cst| SrQ)r+rrrqr0rrrrszExcludeLoggerFilter.filter)rrrrrrrGrrr0rrssrsc Cs|dkrtj}nD|dkrt}n6|dkr.tj}n&|dkr>tj}n|dkrNtj}ntj}t|}|dk }|rt|}d}nd}|}|d krd nd}d d d } ddd} dddg|rdgng} tj dddtjddt j ddt j ddt ddt dddd || d!|| d"d#d$gd%d&d | d!|| d'd#gd%d&|| d!|| d'd(gd%d&d| d)|d*dd+d,d-|| d.d/d0|iid1|S)2znConfigures and sets up all of the logging Returns the requested logging level, as its integer value. r"NDEBUGz /dev/null)INFOr6r4zext://sys.stdoutzext://sys.stderr)rWstderrz2pip._internal.utils.logging.ColorizedStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rTfileconsoleconsole_errorsconsole_subprocessuser_logFz*pip._internal.utils.logging.MaxLevelFilter)()rdzlogging.Filter)rnamez/pip._internal.utils.logging.ExcludeLoggerFilter)exclude_warningsrestrict_to_subprocessexclude_subprocessz %(message)s)rr@T)rr@r*)indentindent_with_timestamprTrWrrr)rdclassrUrTfilters formatterrzrr{zutf-8r)rdrfilenameencodingdelayr)r|r}r~r)rdhandlersz pip._vendorrd)versiondisable_existing_loggersr formattersrrootloggers) r3rxr r4r6CRITICALry getLevelNameconfig dictConfigsubprocess_loggerrr)) verbosityrU user_log_file level_numberrdinclude_user_logadditional_log_file root_levelvendored_log_level log_streamshandler_classesrrrr setup_logging s      % Ir)r")2 contextlibrr3logging.handlersr]rVrtypingrrrrrrr r Zpip._internal.utils._logr r pip._internal.utils.compatr pip._internal.utils.deprecationrpip._internal.utils.miscr threading ImportErrorZdummy_threading pip._vendorr Exceptionlocalr$rrr!contextmanagerr'r# Formatterr)rO StreamHandlerrPrRotatingFileHandlerrkrprsrrrrrsF (         6 V