
    =	fBH                     t    d dl Z ddlmZ ddlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d ZdZ G d de      Zy)	    N   )_thread)binary_typec                     | S N )ss    /usr/share/hplip/base/logger.py	printabler   %   s    H    infoc                   2   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZeeeeeeeeee
e
eed	Zd
ZdZdZdZdZdZi Zded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded <   d!ed"<   d#ed$<   d%ed&<   d'eed(d)fd*Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Z e ee      Z!dSd4Z"d5 Z#d6 Z$d7 Z%e%Z&d8 Z'e'Z(d9 Z)e)Z*d: Z+d;Z,dTd<Z-dUd=Z.e.Z/d> Z0e0Z1d? Z2e2Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:dG Z;dH Z<dI Z=dJ Z>	 dKefdLZ?efdMZ@dN ZAedOdPfdQZBdR ZCy))VLoggerc   (         
         r   )nonefatafatalerroerrorwarnr   debugdbgdebug2dbg2debug3dbg3r   z[0mresetz[01mboldz[36;06mtealz[36;01m	turquoisez[35;01mfusciaz[35;06mpurplez[34;01mbluez[34;06mdarkbluez[32;01mgreenz[32;06m	darkgreenz[33;01myellowz[33;06mbrownz[31;01mredz[31;06mdarkred FNc                     || _         || _        d | _        || _        t	        j
                         | _        || _        t        j                         | _
        d| _        | j                  |       y )NT)_where	_log_file_log_file_f_log_datetimer   allocate_lock_lockmoduleosgetpidpidfmt	set_level)selfr9   levelwherelog_datetimelog_files         r
   __init__zLogger.__init__i   sY     !)**,
99;ur   c                     t        |t              r|j                         }|t        t        j
                  j                               v r4t        j
                  j                  |t        j                        | _	        y| j                  d|z         yt        |t              r\t        j                  |cxk  rt        j                  k  rn n|| _	        y t        j                  | _	        | j                  d|z         yy)NTzInvalid logging level: %sFzInvalid logging level: %d)
isinstancestrlowerlistr   logging_levelskeysgetLOG_LEVEL_INFO_levelr   intLOG_LEVEL_DEBUG3LOG_LEVEL_FATALLOG_LEVEL_ERROR)r?   r@   s     r
   r>   zLogger.set_levelw   s    eS!KKMEV22779::$3377v?T?TU

6>?s#&&%I63I3II#$44

6>? r   c                 D    || _         t        j                         | _        y r   )r9   r:   r;   r<   )r?   r9   s     r
   
set_modulezLogger.set_module   s    99;r   c                     d| _         y )NF)r=   r?   s    r
   no_formattingzLogger.no_formatting   s	    r   c                     || _         	 t        | j                   d      | _        y # t        $ r& d | _         d | _        t        j
                  | _        Y y w xY w)Nw)r4   openr5   IOErrorr   LOG_TO_SCREENr3   )r?   rC   s     r
   set_logfilezLogger.set_logfile   sL    !	/#DNNC8D 	/!DN#D ..DK	/s   % ,AAc                     | j                   S r   )r4   rV   s    r
   get_logfilezLogger.get_logfile   s    ~~r   c                     || _         y r   r3   )r?   rA   s     r
   	set_wherezLogger.set_where   s	    r   c                     | j                   S r   ra   rV   s    r
   	get_wherezLogger.get_where       {{r   c                     | j                   S r   )rN   rV   s    r
   	get_levelzLogger.get_level   re   r   c                 <    | j                   t        j                  k  S r   )rN   r   rP   rV   s    r
   is_debugzLogger.is_debug   s    {{f5555r   c                 t   | j                   |k  r| j                  t        j                  t        j                  fv r	 | j
                  j                          |t        j                  k\  rt        j                  }nt        j                  }	 |j                  |       |r|j                  d       |j                          | j
                  j!                          y y y # t        $ r# |j                  |j                  d             Y kw xY w# t        $ r Y Ww xY w# | j
                  j!                          w xY w)Nutf-8
)rN   r3   r   LOG_TO_CONSOLELOG_TO_CONSOLE_AND_FILEr8   acquireLOG_LEVEL_WARNsysstderrstdoutwriteUnicodeEncodeErrorencodeflushr[   release)r?   messager@   newlineouts        r
   logz
Logger.log   s    ;;%{{v44f6T6TUU)JJ&&( 5 55!jj!jj;		'* 		$IIK JJ&&() V   . ;		'.."9:;   JJ&&(sH   AD C #D )D	D D		D 	DD DD D7c                 R   | j                   |	 | j                  j                          | j                   j                  |j	                  dd             | j                   j                  d       | j                  j                          y y # | j                  j                          w xY w)Nr1   rl   )r5   r8   ro   rt   replacerx   r?   ry   s     r
   log_to_filezLogger.log_to_file   s    '%

""$  &&wvr'BC  &&t, 

""$ ( 

""$s   A B
 
B&c                 
   	 | j                   j                          t        j                  j	                  | j
                  d|d       | j                   j                          y # | j                   j                          w xY w)Nz: rl   )r8   ro   rq   rr   rt   r9   rx   r   s     r
   rr   zLogger.stderr   sS    	!JJ JJ4;;@AJJ DJJ s   A	A& &Bc                 n   | j                   t        j                  k  rd| j                  | j                  |fz  }| j                  | j                  |d      t        j                         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )N%s[%d]: debug: %sr)   rN   r   LOG_LEVEL_DEBUGr9   r<   r|   colorr4   r3   LOG_TO_FILErn   r   r?   ry   txts      r
   r   zLogger.debug   s    ;;&000%dhh(HHCHHTZZV,f.D.DE~~) 2 2F4R4RSS  % T *	 1r   c                 n   | j                   t        j                  k  rd| j                  | j                  |fz  }| j                  | j                  |d      t        j                         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nz%s[%d]: debug2: %sr)   )rN   r   LOG_LEVEL_DEBUG2r9   r<   r|   r   r4   r3   r   rn   r   r   s      r
   r   zLogger.debug2       ;;&111&$++txx)IICHHTZZV,f.E.EF~~) 2 2F4R4RSS  % T *	 2r   c                 n   | j                   t        j                  k  rd| j                  | j                  |fz  }| j                  | j                  |d      t        j                         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nz%s[%d]: debug3: %sr)   )rN   r   rP   r9   r<   r|   r   r4   r3   r   rn   r   r   s      r
   r!   zLogger.debug3   r   r   c                 $   | j                   t        j                  k  rd| j                  | j                  |fz  }| j                  | j                  |d      t        j                         | j                  | j                  |d      t        j                         | j                  j| j                  t        j                  t        j                  fv r=| j                  || j                  | j                  |fz         | j                  |       y y y y )Nz%s[%d]: debug: %s:r)   r   )r?   titleblocklines       r
   debug_blockzLogger.debug_block  s    ;;&000'4;;5*IIDHHTZZf-v/E/EFHHTZZv.0F0FG~~) 2 2F4R4RSS  dhh(F!FG  ' T * 1r   za !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  c                 \   | j                   t        j                  k  r]|rt        |t              r	 |j                  d      }d|d| }}|rdj                  d|z  dj                  |D cg c]  }dt        |      z   c}      d|dz  dt        |      z  z
  z  dj                  |D cg c]  }d	|f|t        j                  v     c}      g      }| j                  | j                  d
| j                  | j                  |fz  d      t        j                         ||z  }||||z    }|ry y | j                  | j                  d
| j                  | j                  dfz  d      t        j                         y y # t        t        f$ r |j                  d      }Y \w xY wc c}w c c}w )Nrk   zlatin-1r    z%04x: z%02xr   r1   .r   r)   z0000: (no data))rN   r   r   rF   r   decodeUnicodeDecodeErrorru   joinordlenr   r|   r   r9   r<   )r?   datawidthindexr   dir   s           r
   log_datazLogger.log_data  s   ;;&000dK06#{{73  at((Hu$4chhY]?^TUQ?^6_U1WQs4y[01277ei;j`aS!HQ&JZJZEZ<[;j3k$m nC HHTZZ(;t{{TXXWZ>[([]cd..0 UNEeEk2D  $74;;Sd:e$egmn..0' 1
 /0BC 6#{{956
 @_;js   E= +F$+F)= F! F!c                 J   | j                   t        j                  k  r| j                  |t        j                         | j                  Y| j
                  t        j                  t        j                  fv r,| j                  d| j                  | j                  |fz         y y y y )Nz%s[%d]: info: :%s)rN   r   rM   r|   r4   r3   r   rn   r   r9   r<   r   s     r
   r   zLogger.info)  s    ;;&///HHWf334~~) 2 2F4R4RSS  !4TXXw7W!WX T * 0r   c                    | j                   t        j                  k  rd|z  }| j                  | j	                  |d      t        j                         t        j
                  t
        j                  d| j                  | j                  |fz         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nzwarning: %sr'   
%s[%d]: %s)rN   r   rp   r|   r   syslogLOG_WARNINGr9   r<   r4   r3   r   rn   r   r   s      r
   r   zLogger.warn4  s    ;;&///')CHHTZZX.0E0EFMM&,,ldkk488UX=Y.YZ~~) 2 2F4R4RSS  % T * 0r   c                 @   | j                   t        j                  k  rd|z  }| j                  | j	                  |d      t        j                         | j
                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nznote: %sr+   )
rN   r   rp   r|   r   r4   r3   r   rn   r   r   s      r
   notezLogger.noteB  s    ;;&///w&CHHTZZW-v/D/DE~~) 2 2F4R4RSS  % T *	 0r   c                    | j                   t        j                  k  rd|z  }| j                  | j	                  |d      t        j                         t        j
                  t
        j                  d| j                  | j                  |fz         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nz	error: %sr/   r   )rN   r   rR   r|   r   r   	LOG_ALERTr9   r<   r4   r3   r   rn   r   r   s      r
   r   zLogger.errorN  s    ;;&000'CHHTZZU+V-C-CDMM&**LDKKSV;W,WX~~) 2 2F4R4RSS  % T * 1r   c                    | j                   t        j                  k  rd| j                  z  }| j	                  | j                  |d      t        j                         t        j                  t        j                  d| j                  | j                  |fz         | j                  ?| j                  t        j                  t        j                  fv r| j                  |       y y y y )Nzfatal error: :%sr/   r   )rN   r   rQ   r9   r|   r   r   r   r   r<   r4   r3   r   rn   r   r   s      r
   r   zLogger.fatalZ  s    ;;&000$t{{2CHHTZZU+V-C-CDMM&**LDKKSV;W,WX~~) 2 2F4R4RSS  % T * 1r   c                     t        j                         \  }}}d}t        j                  |      t        j                  ||      z   }|dj                  |d d       dd|d   z   }| j                  |       y )NzTraceback (innermost last):
r1   20r   )rq   exc_info	traceback	format_tbformat_exception_onlyr   r   )r?   typvaluetbbodylsts         r
   	exceptionzLogger.exceptionf  sh    UB.!!"%	(G(GU(SSBGGCH$5s2w@@

4r   c                     | j                   rCdj                  t        j                  j	                  |d      |t        j                  d   g      S |S )Nr1   r$   r#   )r=   r   r   codesrL   )r?   textr   s      r
   r   zLogger.colorn  s?    8877FLL,,UF;T6<<PWCXYZZr   c                 &    | j                  |d      S )Nr$   r   r?   r   s     r
   r$   zLogger.boldt      zz$''r   c                 &    | j                  |d      S )Nr/   r   r   s     r
   r/   z
Logger.redx  s    zz$&&r   c                 &    | j                  |d      S )Nr+   r   r   s     r
   r+   zLogger.green|  s    zz$((r   c                 &    | j                  |d      S )Nr(   r   r   s     r
   r(   zLogger.purple      zz$))r   c                 &    | j                  |d      S )Nr-   r   r   s     r
   r-   zLogger.yellow  r   r   c                 &    | j                  |d      S )Nr,   r   r   s     r
   r,   zLogger.darkgreen  s    zz$,,r   c                 &    | j                  |d      S )Nr)   r   r   s     r
   r)   zLogger.blue  r   r   d   c                 R   |j                         rnd}d}t        |      D ]  }|dz   }|dz   } 	 t        j                  d|      d   }t        j                  d|      d   }	t        j                  d|      }
| j	                  ||z   |d       t        ||z         }|
D ]  }|
j                  |      dz   t        |
      k(  r|t        |	      z   }|t        |      z   dz   |kD  rJ| j	                  d	|d       | j	                  dt        ||z         dz   z  |d       t        ||z         dz   }n| j	                  d|d       |dz   }| j	                  ||d       |t        |      z   } | j	                  |	d	z   |d       y y # t        $ r | j	                  ||z   d	z   |d       Y y w xY w)
Nr1   r   r   r   z(\<\W{0,1}\w+) ?z([?|\]\]]*\>)z(\S*?\=\".*?\")Frl   )striprangerefindallr|   r   r   
IndexError)r?   indent_levelr   r   r@   startnumber_charsl
elem_startelem_finishedattrsattrs               r
   _pprint_linezLogger._pprint_line  s   ::<EL<( 0+a/0"<ZZ(;TB1E
 "

+;T B1 E

#5t<z)5%8"5:#56! <DD)A-#e*<'3c-6H'H$s4y014=ue4 c%**<&=&A!BE5Q'*5:+='>'B eU3'3a'7HHT5%0#/#d)#;L'<* -ue<G J  < ,eU;<s   EF "F&%F&c                 ~    |j                         r-| j                  d|z  |d       | j                  |dz   |d       y y )Nr   Frl   )r   r|   )r?   r   r   r@   s       r
   _pprint_elem_contentzLogger._pprint_elem_content  s=    ::< HHS%ue4 HHTD[%/ r   c                 6   |j                  d      }|j                  d      dz   }||| }|j                  d      }||j                  d      k  rd}|dkD  xr) |j                  d      |z
  ||j                  d      z
  k  }|j                  d      dkD  }|j                  d      dkD  }|r;|j                  d	      dkD  }	|	rD|j                  d
      }|dkD  r.|t        d
      z   }n|r|j                  d      t        d      z   }|xs |}
|
xs |}|||dkD  |fS )N<>r   /"r   z<!z<?z	<![CDATA[z]]>z?>)findrfindr   )r?   r   	start_posend_posretvalstoppersingleignore_exclignore_questioncdataignore	no_indents               r
   _get_next_elemzLogger._get_next_elem  s,   IIcN	))C.1$i(,,s#V\\$''GB,`V[[%5%?GfkkZ]N^D^$_kk$'",!;;t,r1KK,r1E))E*R<%E
2GiioD	1G/$f	 bL 	r      P   c                 X   |}d}| j                  |      \  }}}	}
|dkD  r|dkD  r| j                  ||d| j                         |       ||d }|	r|
s||z
  }| j                  ||d||z
   ||       |||z
  d }|	s|
s||z   }|sy| j                  |      \  }}}	}
|dkD  r|dkD  ryyyy)zQPretty print xml.
        Use indent to select indentation level. Default is 4   r   r   N)r@   )r   r@   )r   r   r   r   )r?   xmlr@   indentr   r   r   r   r   is_stopr   s              r
   r   z
Logger.xml  s     262E2Ed2K.	7GYB7R<%%lD)4D4J4J4LTY%Z	
#Dy+f4l1g	12#5  2 )+,-D9+f4:>:M:Md:S6	7GY# B7R<<r   c                 L    | j                  t        j                  |             y r   )r   pprintpformat)r?   r   s     r
   r   zLogger.pprint$  s    		&..&'r   )T)   )r1   )D__name__
__module____qualname__LOG_LEVEL_NONErQ   rR   rp   rM   rP   LOG_LEVEL_DBG3r   LOG_LEVEL_DBG2r   LOG_LEVEL_DBGrJ   LOG_TO_DEV_NULLrm   r\   r   rn   LOG_TO_BOTHr   rD   r>   rT   rW   r]   r_   rb   rd   rg   ri   propertyr@   r|   r   rr   r   r   r   r    r!   r"   r   r   r   r   informationr   warningr   noticer   r   r   r   r$   r/   r+   r(   r-   r,   r)   r   r   r   r   r   r   r   r
   r   r   +   s;   NOONNNNOM- /!0 /!0 . .!0 /"2 0"2 0N ONMKK
 EE'NE&ME&M$E+!E(O!E(OE&M#E* E'N$E+!E(O E'NE%L"E) !>U#d,
/6 Y	*E)2%!& C& D& D
( zI00Y K	& G& F	&	&(')**-(#@ 69 )<X >M 0D -Qb T8(r   r   )rq   sixext.movesr   sixextr   r   r   stringr:   r   r   r   DEFAULT_LOG_LEVELobjectr   r   r   r
   <module>r     s=   .  !     	 	   z(V z(r   