3 ] @sddlmZddlZddlZddlZddlZy ddlZWnek rTddlZYnXddl m Z ddl m Z yddl mZWnek rdZYnXejZde_ejdddZd d ZGd d d ejZd dZGdddejZGdddejjZGdddejZdS))absolute_importN)WINDOWS) ensure_dir)coloramac 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)numr 0/tmp/pip-build-8jg9gmni/pip/pip/utils/logging.py indent_logs r cCs ttddS)Nrr)getattrrr r r r get_indentation)src@seZdZddZdS)IndentingFormattercCs,tjj||}djdd|jdD}|S)z Calls the standard formatter, but will indent all of the log messages by our current indentation level. cSsg|]}dt|qS) )r).0liner r r 6sz-IndentingFormatter.format..T)logging Formatterformatjoin splitlines)selfrecord formattedr r r r/s zIndentingFormatter.formatN)__name__ __module__ __qualname__rr r r r r-srcsfdd}|S)Ncsdjt|tjjgS)Nr)rlistrStyle RESET_ALL)inp)colorsr r wrapped=sz_color_wrap..wrappedr )r$r%r )r$r _color_wrap<s r&c@sTeZdZer2ejeejjfej eejj fgZ ngZ dddZ ddZ ddZdS) ColorizedStreamHandlerNcCs(tjj||tr$tr$tj|j|_dS)N)r StreamHandler__init__rr AnsiToWin32stream)rr+r r r r)NszColorizedStreamHandler.__init__cCsRtsdSt|jtjs|jn|jj}t|dr:|jr:dStjj ddkrNdSdS)NFisattyTTERMANSI) r isinstancer+r*r%hasattrr,osenvironget)r real_streamr r r should_colorTsz#ColorizedStreamHandler.should_colorcCsBtjj||}|jr>x&|jD]\}}|j|kr||}PqW|S)N)rr(rr5COLORSlevelno)rrmsglevelcolorr r r ris zColorizedStreamHandler.format)N)rrrrrERRORr&ForeREDWARNINGYELLOWr6r)r5rr r r r r'Bs r'c@seZdZddZdS)BetterRotatingFileHandlercCs ttjj|jtjjj|S)N) rr1pathdirname baseFilenamerhandlersRotatingFileHandler_open)rr r r rFwszBetterRotatingFileHandler._openN)rrrrFr r r r r@usr@c@seZdZddZddZdS)MaxLevelFiltercCs ||_dS)N)r9)rr9r r r r)~szMaxLevelFilter.__init__cCs |j|jkS)N)r7r9)rrr r r filterszMaxLevelFilter.filterN)rrrr)rHr r r r rG|srG)r) __future__r contextlibrlogging.handlersr1 threading ImportErrordummy_threading pip.compatr pip.utilsr pip._vendorr Exceptionlocalrrcontextmanagerr rrrr&r(r'rDrEr@FilterrGr r r r s0      3