a [f -@sddlZddlZddlZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z mZmZddlmZmZddlmZddlmZddlmZz ddlZWneyddlZYn0zddlmZWneydZYn0eZ ed Z!Gd d d eZ"ee#e#e$d d dZ%ej&d&e'e ddddZ(e'dddZ)Gdddej*Z+e,e e,ge,fdddZ-Gdddej.Z/Gdddej0j1Z2Gdd d eZ3Gd!d"d"eZ4e'e$e e,e'd#d$d%Z5dS)'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__rr?/usr/lib/python3.9/site-packages/pip/_internal/utils/logging.pyr!sr) exc_classexcreturncCs0|tur dStsdSt|to.|jtjtjfvS)NTF)BrokenPipeErrorr isinstanceOSErrorerrnoEINVALZEPIPE)rrrrr_is_broken_pipe_error's r )numrc csDtt_tj|7_zdVWtj|8_ntj|8_0dS)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)r"rrr indent_log4s r&rcCs ttddS)Nr%r)getattrr$rrrrr#Csr#csZeZdZdZddeeeddfddZeeedd d Z e j ed fd d Z Z S)IndentingFormatterz%Y-%m-%dT%H:%M:%SF) add_timestampN)argsr*kwargsrcs||_tj|i|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*r+r, __class__rrr.Js zIndentingFormatter.__init__) formattedlevelnorcCs.|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/r2r3rrrget_message_startYs   z$IndentingFormatter.get_message_startrecordrcslt|}|||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. r4 csg|] }|qSrr).0lineprefixrr vz-IndentingFormatter.format..T) r-formatr9r3r*Z formatTimer#join splitlines)r/r;r2Z message_startr0r?rrCis zIndentingFormatter.format)rrrZdefault_time_formatrboolr.strintr9r5 LogRecordrC __classcell__rrr0rr)Gsr))colorsrcsttdfdd }|S)N)inprcsdt|tjjgS)Nr4)rDlistrZStyleZ RESET_ALL)rLrKrrwrapped{sz_color_wrap..wrapped)rG)rKrOrrNr _color_wrapzsrPcseZdZer2ejeejjfej eejj fgZ ngZ de e eddfdd ZedddZeddd Zejed fd d Zejdd fd d ZZS)ColorizedStreamHandlerN)streamno_colorrcs,t|||_tr(tr(t|j|_dSN)r-r. _no_colorr r AnsiToWin32rR)r/rRrSr0rrr.s zColorizedStreamHandler.__init__r'cCs.tr"tr"ttj|j}|jtjuS|jtjuS)zA Return whether the handler is using sys.stdout. )r rr rVrRrOsysstdout)r/rRrrr _using_stdouts z$ColorizedStreamHandler._using_stdoutcCsXtr |jrdSt|jtjs"|jn|jj}t|dr@|r@dStj ddkrTdSdS)NFisattyTZTERMZANSI) rrUrrRrVrOhasattrrZosenvironget)r/Z real_streamrrr should_colors  z#ColorizedStreamHandler.should_colorr:cs>t|}|r:|jD]\}}|j|kr||}q:q|SrT)r-rCr_COLORSr3)r/r;msglevelZcolorr0rrrCs  zColorizedStreamHandler.formatcs@tdd\}}|r4|r4|r4t||r4tt|S)Nr!)rWexc_inforYr rr- handleError)r/r;rrr0rrrdsz"ColorizedStreamHandler.handleError)NN)rrrrr5r8rPZForeZREDr6ZYELLOWr`rrrFr.rYr_rIrGrCrdrJrrr0rrQs  rQcs&eZdZeedfdd ZZS)BetterRotatingFileHandlerr'csttj|jtSrT)rr\pathdirnameZ baseFilenamer-_open)r/r0rrrhszBetterRotatingFileHandler._open)rrrrrrhrJrrr0rresrec@s.eZdZeddddZejedddZdS)MaxLevelFilterN)rbrcCs ||_dSrT)rb)r/rbrrrr.szMaxLevelFilter.__init__r:cCs |j|jkSrT)r3rbr/r;rrrfilterszMaxLevelFilter.filter) rrrrHr.r5rIrFrkrrrrrisrics*eZdZdZejedfdd ZZS)ExcludeLoggerFilterzQ A logging Filter that excludes records from a logger (or its children). r:cst| SrT)r-rkrjr0rrrkszExcludeLoggerFilter.filter) rrrrr5rIrFrkrJrrr0rrlsrl) verbosityrS user_log_filerc Cs~|dkrtj}nD|dkrt}n6|dkr.tj}n&|dkr>tj}n|dkrNtj}ntj}t|}|du}|rt|}d}nd}|}|d vrd nd}d d d } ddd} gd|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-d.|iid/|S)0znConfigures and sets up all of the logging Returns the requested logging level, as its integer value. r!NDEBUGz /dev/null)INFOr8r6zext://sys.stdoutzext://sys.stderr)rXstderrz2pip._internal.utils.logging.ColorizedStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rRfile)consoleconsole_errorsconsole_subprocessuser_logFz*pip._internal.utils.logging.MaxLevelFilter)()rbzlogging.Filter)r{namez/pip._internal.utils.logging.ExcludeLoggerFilter)exclude_warningsrestrict_to_subprocessexclude_subprocessz %(message)s)r{rCT)r{rCr*)indentindent_with_timestamprRrXrr}r)rbclassrSrRfilters formatterrur~rvzutf-8r)rbrfilenameencodingZdelayr)rwrxryrz)rbhandlersz pip._vendorrb)versionZdisable_existing_loggersrZ formattersrrootZloggers) r5rsr r6r8ZCRITICALrtZ getLevelNameZconfigZ dictConfigsubprocess_loggerr|r)) rmrSrnZ level_numberrbZinclude_user_logZadditional_log_fileZ root_levelZvendored_log_levelZ log_streamsZhandler_classesrrrr setup_loggings      % Ir)r!)6 contextlibrr5Zlogging.handlersr\rWrtypingrrrrrrr r Zpip._internal.utils._logr r Zpip._internal.utils.compatr Zpip._internal.utils.deprecationrZpip._internal.utils.miscr threading ImportErrorZdummy_threadingZ pip._vendorr Exceptionlocalr$rr BaseExceptionrFr contextmanagerrHr&r#Z Formatterr)rGrPZ StreamHandlerrQrZRotatingFileHandlerrerirlrrrrrsB (        3Q