ó
    6°hŠ  ã            	      ó  • S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	J
r
Jr  SSKJrJr  Sr0 r\R"                  " \5      r\
R$                  " 5       r " S	 S
5      rS rS r\" SSSS\" S5      4/\" S5      \R.                  SS9S 5       rg)a{  log repository events to a blackbox for debugging

Logs event information to .hg/blackbox.log to help debug and diagnose problems.
The events that get logged can be configured via the blackbox.track and
blackbox.ignore config keys.

Examples::

  [blackbox]
  track = *
  ignore = pythonhook
  # dirty is *EXPENSIVE* (slow);
  # each log entry indicates `+` if the repository is dirty, like :hg:`id`.
  dirty = True
  # record the source of log messages
  logsource = True

  [blackbox]
  track = command, commandfinish, commandexception, exthook, pythonhook

  [blackbox]
  track = incoming

  [blackbox]
  # limit the size of a log file
  maxsize = 1.5 MB
  # rotate up to N log files when the current one gets too big
  maxfiles = 3

  [blackbox]
  # Include microseconds in log entries with %f (see Python function
  # datetime.datetime.strftime)
  date-format = %Y-%m-%d @ %H:%M:%S.%f

é    )ÚannotationsN)Ú_)Úhex)ÚencodingÚloggingutilÚ	registrar)ÚdateutilÚprocutils   ships-with-hg-corec                  ó,   • \ rS rSrS rS rS rS rSrg)ÚblackboxloggeréJ   c                óú   • X l         [        UR                  SS5      5      U l        [        UR                  SS5      5      U l        UR                  SS5      U l        UR                  SS5      U l        SU l	        g )Nó   blackboxs   tracks   ignores   maxfiless   maxsizeF)
Ú_repoÚsetÚ
configlistÚ_trackedeventsÚ_ignoredeventsÚ	configintÚ	_maxfilesÚconfigbytesÚ_maxsizeÚ_inlog)ÚselfÚuiÚrepos      Ú0/usr/lib/python3/dist-packages/hgext/blackbox.pyÚ__init__Úblackboxlogger.__init__K   sb   € ØŒ
Ü! "§-¡-°¸XÓ"FÓGˆÔÜ! "§-¡-°¸YÓ"GÓHˆÔØŸ™ k°;Ó?ˆŒØŸ™ {°JÓ?ˆŒØˆ�ó    c                ót   • SU R                   ;   =(       a    XR                  ;  =(       d    XR                   ;   $ )Nó   *)r   r   )r   Úevents     r   ÚtrackedÚblackboxlogger.trackedS   s4   € à�D×'Ñ'Ñ'×L¨E×9LÑ9LÑ,L÷*à×)Ñ)Ñ)ð	*r    c                ó‚   • U R                   (       a  g SU l          U R                  XX45        SU l         g ! SU l         f = f)NTF)r   Ú_log)r   r   r#   ÚmsgÚoptss        r   ÚlogÚblackboxlogger.logX   s7   € ð �;�;ØØˆŒð	 Ø�I‰I�b Ô+àˆD�Kø˜%ˆD�Kús   ›5 µ	>c           	     ó”  • UR                  SS5      nUR                  SS5      nUR                  SS5      nU(       a  [        R                  " XV5      nO[        R                  " US5      S S n[
        R                  " 5       n	S[
        R                  " 5       -  n
S	nU R                  S    nUR                  5       nS
R                  U Vs/ s H  n[        UR                  5       5      PM     sn5      nUR                  SS5      (       a  UR                  SSSS9(       a  S
nUR                  SS5      (       a  SU-  nOS	n SnX‰XûU
UU4n[        R                  " UU R                  R                   SU R"                  U R$                  S9 nUU-  nUR'                  U5        U(       a  UR)                  U5        S S S 5        U [8        l        g s  snf ! , (       d  f       N= f! [*         aV  nU R,                  R/                  5         UR1                  S[2        R4                  " UR6                  5      -  5         S nAg S nAff = f)Ns   devels   default-dater   s   date-formats   debug.to-stderrs   %Y-%m-%d %H:%M:%S.%féýÿÿÿs   %dr    ó   +s   dirtyTF)ÚmissingÚmergeÚbranchs	   logsources    [%s]s   %s %s @%s%s (%s)%s> %só   blackbox.log)ÚnameÚmaxfilesÚmaxsizes*   warning: cannot write to blackbox.log: %s
)Ú
configdateÚconfigÚ
configboolr	   Údatestrr
   ÚgetuserÚgetpidr   ÚparentsÚjoinr   ÚnodeÚdirtyr   ÚopenlogfileÚvfsr   r   ÚwriteÚ	write_errÚOSErrorr   ÚclearÚdebugr   Ú
strtolocalÚstrerrorÚ_lastloggerÚlogger)r   r   r#   r(   r)   ÚdefaultÚ
dateformatÚdebug_to_stderrÚdateÚuserÚpidÚchangedÚctxr<   ÚpÚrevÚsrcÚfmtÚargsÚfpÚerrs                        r   r'   Úblackboxlogger._logd   sñ  € Ø—-‘- ¨/Ó:ˆØ—Y‘Y˜{¨NÓ;ˆ
ØŸ-™-¨Ð5GÓHˆÞÜ×#Ò# GÓ8‰Dô
 ×#Ò# GÐ-DÓEÀcÀrÐJˆDÜ×ÒÓ!ˆØ”h—o’oÓ'Ñ'ˆØˆØ�j‰j˜ÑˆØ—+‘+“-ˆØ�i‰i±Ó8²¨1œ˜QŸV™V›Xž±Ñ8Ó9ˆØ�=‰=˜ h×/Ñ/°C·I±IØ ¨eð 5>ö 5
ð ˆGØ�=‰=˜ l×3Ñ3Ø˜UÑ"‰CàˆCð	Ø+ˆCØ ¨c°3¸Ð<ˆDÜ×(Ò(ØØ—
‘
—‘Ø$ØŸ™ØŸ™òð Ø˜D‘j�Ø—‘˜”Þ"Ø—L‘L Ô%÷ð& "ŒÕùò? 9÷õ ûô ó 	à×Ñ×%Ñ%Ô'Ø�H‰HØ>Ü×%Ò% c§l¡lÓ3ñ4ôô ûð	ús>   Ã#GÅA	G' Æ/GÆ=G' Ç
G$Ç G' Ç$G' Ç'
IÇ1AIÉI)r   r   r   r   r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r$   r*   r'   Ú__static_attributes__© r    r   r   r   J   s   † òò*ò

 õ/"r    r   c                ó0   • U R                  S[        5        g )Nr   )Ú	setloggerrI   )r   s    r   Ú
uipopulaterc   –   s   € Ø‡L�L�œkÕ*r    c                óØ   • UR                  5       (       d  g [        X5      nU R                  SU5        [        R                  c  U[        l        UR
                  R                  S5        g )Nr   r2   )Úlocalr   rb   rI   rJ   Ú_wlockfreeprefixÚadd)r   r   rJ   s      r   Ú	reposetuprh   š   sV   € ð �:‰:�<‰<Øô ˜BÓ%€FØ‡L�L�˜fÔ%ô ×ÑÑ!Ø#ŒÔà×Ñ×Ñ˜oÕ.r    r   ó   ls   limité
   s   the number of events to shows   hg blackbox [OPTION]...T)ÚhelpcategoryÚ	helpbasicc                óÄ  • UR                   R                  S5      (       d  gUR                  S5      nUc   eUR                  SS5      nUR                  5       R	                  S5      nSn/ n[        U5       H<  n	Xt:¼  a    O6[        R                  " SU	5      (       a  US-  nUR                  U	5        M>     U R                  SR                  [        U5      5      5        g)	z!view the recent repository eventsr2   NÚlimitó   ró   
r   s8   ^\d{4}[-/]\d{2}[-/]\d{2} \d{2}:\d{2}:\d{2}(.\d*)? .*> .*é   )rA   ÚexistsÚgetÚreadÚsplitÚreversedÚreÚmatchÚappendÚstatusr=   )
r   r   Úrevsr)   rn   rX   ÚlinesÚcountÚoutputÚlines
             r   Úblackboxr€   ®   sÃ   € ð �8‰8�?‰?˜?×+Ñ+Øà�H‰H�WÓ€EØÑÐÐà	�‰�/ 4Ó	(€BØ�G‰G‹I�O‰O˜EÓ"€Eà€EØ€FÜ˜–ˆØ‹>Ùô �8Š8ØHÈ$÷
ñ 
ð �Q‰JˆEØ�‰�dÖñ  ð ‡I�Iˆe�j‰jœ &Ó)Ó*Õ+r    )Ú__doc__Ú
__future__r   rw   Úmercurial.i18nr   Úmercurial.noder   Ú	mercurialr   r   r   Úmercurial.utilsr	   r
   Ú
testedwithÚcmdtableÚcommandÚproxyloggerrI   r   rc   rh   ÚCATEGORY_MAINTENANCEr€   r`   r    r   Ú<module>rŒ      s³   ðñ"õH #ã 	å Ý ÷ñ ÷
ð #€
à€Ø
×
Ò
˜HÓ
%€à×%Ò%Ó'€÷I"ñ I"òX+ò/ñ( 	Øà	ˆx˜™QÐ>Ó?Ð@ðñ Ð Ó!Ø×-Ñ-Øññ,óñ,r    