î “Reï$ã@s¦dZddlZddlZddlZddlmZddlmZmZdd„Z ej ej fdd„Z d d „Z Gd d „d eƒZeƒZdS) zLogging éN)Úbackwardcompat)ÚcoloramaÚ pkg_resourcescs‡fdd†}|S)Ncs#djtˆƒ|tjjgƒS)NÚ)ÚjoinÚlistrÚStyleÚ RESET_ALL)Úinp)Úcolors©ú"/tmp/pip-ztkk0jow-build/pip/log.pyÚwrapped sz_color_wrap..wrappedr )r rr )r r Ú _color_wrap srcCsmt|tjƒs|n|j}||kr1dSt|dƒrP|jƒrPdS|jdƒdkridSdS)NFÚisattyTÚTERMÚANSI)Ú isinstancerÚ AnsiToWin32rÚhasattrrÚget)ÚconsumerÚenvironÚstdÚ real_consumerr r r Ú should_colors  rcCs dj|jdƒdd…ƒ}dj|jdƒdd…ƒ}|jdƒ\}}tt|ƒdƒ}dj||gƒ}tj|ƒtj|ƒkS)NÚ.éé)rÚsplitÚstrÚintrÚ parse_version)Úcurrent_versionÚremoval_versionÚmajorÚminorÚ warn_versionr r r Ú should_warn&s"" r(c@s²eZdZdZejdZejZejZejejdZ ejZZ ej Z ej Z eeee ee e gZ ieejjƒe6eejjƒe 6eejjƒe 6Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zddd„Z dd d!„Z!d"d#„Z"d$d%„Z#d&d'„Z$e%d(d)„ƒZ&d*d+„Z'dS),ÚLoggerz‰ Logging object for use in command-line script. Allows ranges of levels, to avoid some redundancy of displayed information. rrcCs1g|_d|_d|_d|_d|_dS)NrF)Ú consumersÚindentÚexplicit_levelsÚ in_progressÚin_progress_hanging)Úselfr r r Ú__init__Ls     zLogger.__init__cGs‡tjjdƒrsxn|D]S\}}t|dƒrV|jj|tj|ƒfƒq|jj||fƒqWn|jj|ƒdS)NÚwinÚwrite) ÚsysÚplatformÚ startswithrr*ÚappendrrÚextend)r/r*Úlevelrr r r Ú add_consumersSs zLogger.add_consumerscOs|j|j|||ŽdS)N)ÚlogÚDEBUG)r/ÚmsgÚargsÚkwr r r Údebug_sz Logger.debugcOs|j|j|||ŽdS)N)r:ÚINFO)r/r<r=r>r r r Úinfobsz Logger.infocOs|j|j|||ŽdS)N)r:ÚNOTIFY)r/r<r=r>r r r Únotifyesz Logger.notifycOs|j|j|||ŽdS)N)r:ÚWARN)r/r<r=r>r r r Úwarnhsz Logger.warncOs|j|j|||ŽdS)N)r:ÚERROR)r/r<r=r>r r r Úerrorksz Logger.errorcOs|j|j|||ŽdS)N)r:ÚFATAL)r/r<r=r>r r r Úfatalnsz Logger.fatalcOsLddlm}t||ƒr5|j|||Žn|j|||ŽdS)a… Logs deprecation message which is log level WARN if the ``removal_version`` is > 1 minor release away and log level ERROR otherwise. removal_version should be the version that the deprecated feature is expected to be removed in, so something that will not exist in version 1.7, but will in 1.6 would have a removal_version of 1.7. r)Ú __version__N)ÚpiprJr(rErG)r/r$r<r=ÚkwargsrJr r r Ú deprecatedqs zLogger.deprecatedc Osx|r|rtdƒ‚qn|p'|}|r=||}n|}d|j|}|jrpd||f}nx|jD]ö\}}|j||ƒrz|jrâ|tjtjfkrâd|_tjj dƒtjj ƒnt |dƒrc|d}t |t jƒr7|jj|dd„ƒ} | |ƒ}n|j |ƒt |d ƒrm|j ƒqmqp||ƒqzqzWdS) Nz6You may give positional or keyword arguments, not bothú z%02i %sFÚ r2cSs|S)Nr )Úxr r r ÚŸszLogger.log..Úflush)Ú TypeErrorr+r,r*Ú level_matchesr.r3ÚstdoutÚstderrr2rRrrÚosrÚCOLORSr) r/r8r<r=r>ÚrenderedÚconsumer_levelrÚ write_contentÚ colorizerr r r r:‚s6       z Logger.logcCs|j|jƒotjjƒS)z$Should we display download progress?)Ústdout_level_matchesrBr3rUr)r/r r r Ú_show_progress¨szLogger._show_progresscCs‚|j s#td||jfƒ‚|jƒrctjjd|j|ƒtjjƒd|_n d|_||_d|_ dS)Nz0Tried to start_progress(%r) while in_progress %rrNTF) r-ÚAssertionErrorr^r3rUr2r+rRr.Ú last_message)r/r<r r r Ústart_progress¬s      zLogger.start_progresszdone.cCs­|jstdƒ‚|jƒr—|jsYtjjd|j|dƒtjjƒq—tj dƒtj dƒtjj|dƒtjjƒnd|_d|_dS)Nz,Tried to end_progress without start_progressz...rOrF) r-r_r^r.r3rUr2rRÚloggerÚ show_progress)r/r<r r r Ú end_progress¹s       zLogger.end_progressNcCs´|jr°|dkr5tjjdƒtjjƒq°|jrgdtdt|jƒt|ƒƒ}nd}tjjdd|j|j ||fƒtjjƒ||_ndS)zaIf we are in a progress scope, and no log messages have been shown, write out another '.'NrrNrrz %s%s%s%s) r.r3rUr2rRr`ÚmaxÚlenr+r-)r/ÚmessageÚpaddingr r r rcÊs   )  zLogger.show_progresscCs|j||jƒƒS)z9Returns true if a message at this level will go to stdout)rTÚ _stdout_level)r/r8r r r r]ÛszLogger.stdout_level_matchescCs4x*|jD]\}}|tjkr |Sq W|jS)z%Returns the level that stdout runs at)r*r3rUrH)r/r8rr r r rißszLogger._stdout_levelcCslt|tƒr^|j|j}}|dk r>||kr>dS|dk sV||krZdSdS||kSdS)am >>> l = Logger() >>> l.level_matches(3, 4) False >>> l.level_matches(3, 2) True >>> l.level_matches(slice(None, 3), 3) False >>> l.level_matches(slice(None, 3), 2) True >>> l.level_matches(slice(1, 3), 1) True >>> l.level_matches(slice(2, 3), 1) False NFT)rÚsliceÚstartÚstop)r/r8rZrkrlr r r rTæszLogger.level_matchescCs?|j}|dkr|dS|t|ƒkr7|dS||S)Nrréÿÿÿÿ)ÚLEVELSrf)Úclsr8Úlevelsr r r Úlevel_for_integers   zLogger.level_for_integercCs–g}g}xR|jD]G\}}|tjkr|j||fƒ|j|tjfƒqqWx|D]}|jj|ƒqhW|jj|ƒdS)N)r*r3rUr6rVÚremover7)r/Ú to_removeÚto_addrZrÚitemr r r Úmove_stdout_to_stderr s zLogger.move_stdout_to_stderr)(Ú__name__Ú __module__Ú __qualname__Ú__doc__Úloggingr;Ú VERBOSE_DEBUGr@rDrBÚWARNINGrFrHrnrrÚForeÚYELLOWÚREDrXr0r9r?rArCrErGrIrMr:r^rardrcr]rirTÚ classmethodrqrvr r r r r)7s@                &      r))rzr3rWr{rKrÚ pip._vendorrrrrUrVrr(Úobjectr)rbr r r r Ús     Ý