3 Pf @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)Znumr /usr/lib/python3.6/logging.py indent_logs r cCs ttddS)Nrr)getattrrr r r r get_indentation)sr c@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)selfrecordZ formattedr r r r/s zIndentingFormatter.formatN)__name__ __module__ __qualname__rr r r r r-srcsfdd}|S)Ncsdjt|tjjgS)Nr)rlistrZStyleZ RESET_ALL)Zinp)colorsr r wrapped=sz_color_wrap..wrappedr )rr r )rr _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)NFisattyTZTERMZANSI) r isinstancer&r%r hasattrr'osenvironget)rZ real_streamr r r should_colorTsz#ColorizedStreamHandler.should_colorcCsBtjj||}|jr>x&|jD]\}}|j|kr||}PqW|S)N)rr#rr-COLORSlevelno)rrmsglevelZcolorr r r ris zColorizedStreamHandler.format)N)rrrrrZERRORr!ZForeZREDZWARNINGZYELLOWr.r$r-rr r r r r"Bs r"c@seZdZddZdS)BetterRotatingFileHandlercCs ttjj|jtjjj|S)N) rr*pathdirnameZ baseFilenamerhandlersRotatingFileHandler_open)rr r r r7wszBetterRotatingFileHandler._openN)rrrr7r r r r r2usr2c@seZdZddZddZdS)MaxLevelFiltercCs ||_dS)N)r1)rr1r r r r$~szMaxLevelFilter.__init__cCs |j|jkS)N)r/r1)rrr r r filterszMaxLevelFilter.filterN)rrrr$r9r r r r r8|sr8)r) Z __future__r contextlibrZlogging.handlersr*Z threading ImportErrorZdummy_threadingZ pip.compatrZ pip.utilsrZ pip._vendorr ExceptionZlocalrrcontextmanagerr r rrr!r#r"r5r6r2Filterr8r r r r s0      3