3 (\-@sddlmZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZy ddlZWnek rddlZYnXyddlmZWnek rdZYnXejZde_Gd d d eZe re rd d Znd d Zne rdd Zndd Zejd#ddZddZGdddej Z!ddZ"Gdddej#Z$Gdddej%j&Z'GdddeZ(Gdd d eZ)d!d"Z*dS)$)absolute_importN)Filter)PY2)WINDOWS)DEPRECATION_MSG_PREFIX) ensure_dirsubprocess_logger)coloramac@seZdZdZdS)BrokenStdoutLoggingErrorzO Raised if BrokenPipeError occurs for the stdout stream while logging. N)__name__ __module__ __qualname____doc__rrn/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-k1a8l1r5/pip/pip/_internal/utils/logging.pyr #sr cCs|tko|jtjtjfkS)z1See the docstring for non-Windows Python 3 below.)IOErrorerrnoEINVALEPIPE) exc_classexcrrr_is_broken_pipe_error1srcCs"|tkp |tko |jtjtjfkS)z1See the docstring for non-Windows Python 3 below.)BrokenPipeErrorOSErrorrrr)rrrrrr7scCs|tko|jtjkS)z1See the docstring for non-Windows Python 3 below.)rrr)rrrrrr=scCs|tkS)z Return whether an exception is a broken pipe error. Args: exc_class: an exception class. exc: an exception instance. )r)rrrrrrBsc cs.tj|7_z dVWdtj|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)numrrr indent_logMs rcCs ttddS)Nrr)getattrrrrrrget_indentationZsr cs0eZdZfddZddZfddZZS)IndentingFormattercs$|jdd|_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__)selfargskwargs) __class__rrr%_szIndentingFormatter.__init__cCs.|tjkrdS|jtrdS|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_startis   z$IndentingFormatter.get_message_startcsltt|j|}|j||j}||}d|jr<|j|ddt7djfdd|j dD}|S)z Calls the standard formatter, but will indent all of the log messages by our current indentation level. r*z%Y-%m-%dT%H:%M:%S  csg|] }|qSrr).0line)prefixrr sz-IndentingFormatter.format..T) r$r!formatr1r0r" formatTimer join splitlines)r&recordr/Z message_start)r))r5rr7ys  zIndentingFormatter.format)r r r r%r1r7 __classcell__rr)r)rr!^s r!csfdd}|S)Ncsdjt|tjjgS)Nr*)r9listr Style RESET_ALL)inp)colorsrrwrappedsz_color_wrap..wrappedr)rArBr)rAr _color_wraps rCcsleZdZer2ejeejjfej eejj fgZ ngZ d ddZ ddZ ddZdd Zfd d ZZS) ColorizedStreamHandlerNcCs.tjj||||_tr*tr*tj|j|_dS)N)r+ StreamHandlerr% _no_colorrr AnsiToWin32stream)r&rHno_colorrrrr%szColorizedStreamHandler.__init__cCs"trtr|jjtjkS|jtjkS)zA Return whether the handler is using sys.stdout. )rr rHrBsysstdout)r&rrr _using_stdoutsz$ColorizedStreamHandler._using_stdoutcCsZt s |jrdSt|jtjs$|jn|jj}t|drB|jrBdStj j ddkrVdSdS)NFisattyTTERMANSI) r rF isinstancerHrGrBhasattrrMosenvironget)r& real_streamrrr should_colors z#ColorizedStreamHandler.should_colorcCsBtjj||}|jr>x&|jD]\}}|j|kr||}PqW|S)N)r+rEr7rVCOLORSr0)r&r;msglevelcolorrrrr7s zColorizedStreamHandler.formatcs@tjdd\}}|r0|jr0t||r0ttt|j|S)Nr)rJexc_inforLrr r$rD handleError)r&r;rr)r)rrr\s   z"ColorizedStreamHandler.handleError)NN)r r r r r+r.rCForeREDr,YELLOWrWr%rLrVr7r\r<rr)r)rrDs   rDc@seZdZddZdS)BetterRotatingFileHandlercCs ttjj|jtjjj|S)N) rrRpathdirname baseFilenamer+handlersRotatingFileHandler_open)r&rrrrfszBetterRotatingFileHandler._openN)r r r rfrrrrr`sr`c@seZdZddZddZdS)MaxLevelFiltercCs ||_dS)N)rY)r&rYrrrr%szMaxLevelFilter.__init__cCs |j|jkS)N)r0rY)r&r;rrrfilterszMaxLevelFilter.filterN)r r r r%rhrrrrrgsrgcs eZdZdZfddZZS)ExcludeLoggerFilterzQ A logging Filter that excludes records from a logger (or its children). cstt|j| S)N)r$rirh)r&r;)r)rrrhszExcludeLoggerFilter.filter)r r r rrhr<rr)r)rrisric Csf|dkrd}n.|d1krd}n |d2kr*d}n|d3kr8d}nd}tt|}|d k }|r\|}d}nd }|}|d4krpdnd}d d d } ddd} dddg|rdgng} tjjdddtjddtjddtjddtddtdddd || d!|| d"d#d$gd%d&d| d!|| d'd#gd%d&|| d!|| d'd(gd%d&d| d)|dd*d+d,|| d-d.d/|iid0|S)5znConfigures and sets up all of the logging Returns the requested logging level, as its integer value. DEBUGr,rr.CRITICALINFONz /dev/nullzext://sys.stdoutzext://sys.stderr)rKstderrz2pip._internal.utils.logging.ColorizedStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rHfileconsoleconsole_errorsconsole_subprocessuser_logFz*pip._internal.utils.logging.MaxLevelFilter)z()rYzlogging.Filter)z()namez/pip._internal.utils.logging.ExcludeLoggerFilter)exclude_warningsrestrict_to_subprocessexclude_subprocessz %(message)s)z()r7T)z()r7r")indentindent_with_timestamprHrKrxrvry)rYclassrIrHfilters formatterrorwrprz)rYr{filenamedelayr})rqrrrsrt)rYrdz pip._vendorrY)versiondisable_existing_loggersr| formattersrdrootloggers)rnr.)rr+config dictConfigr,rrur!) verbosityrIZ user_log_filerYZ level_numberZinclude_user_logZadditional_log_file root_levelZvendored_log_level log_streamsZhandler_classesrdrrr setup_loggings    r)r)+ __future__r contextlibrr+logging.handlersrRrJrpip._vendor.sixrZpip._internal.utils.compatrZpip._internal.utils.deprecationrZpip._internal.utils.miscrr threading ImportErrordummy_threading pip._vendorr Exceptionlocalrrr rcontextmanagerrr Formatterr!rCrErDrdrer`rgrirrrrrsN             /K