
    0h                          S SK r S SKrS SKrSSKJr  \" S5      u  rrr " S S\	5      r
 " S S\	5      rSS	 jrSS
 jrSS jrSS jrSS jrS rSS jrSS jrg)    N   )break_on_debug_flag   c                   b    \ rS rSrSrSrSS jrS rS rS r	S	 r
S
 rS rS rS rS rS rSrg)Position!   zI
Represents a position in the source file which we
want to inform about.
filenamelinecolumn
is_typedefNc                 4    Xl         X l        X0l        X@l        g Nr	   )selfr
   r   r   r   s        //lib/gobject-introspection/giscanner/message.py__init__Position.__init__)   s     	$    c                     U" U R                   U R                  U R                  4UR                   UR                  UR                  45      $ r   )r
   r   r   )r   otherops      r   _comparePosition._compare/   s:    4==$))T[[9>>5::u||<> 	>r   c                 B    U R                  U[        R                  5      $ r   )r   operatorltr   r   s     r   __lt__Position.__lt__3       }}UHKK00r   c                 B    U R                  U[        R                  5      $ r   )r   r   gtr   s     r   __gt__Position.__gt__6   r    r   c                 B    U R                  U[        R                  5      $ r   )r   r   ger   s     r   __ge__Position.__ge__9   r    r   c                 B    U R                  U[        R                  5      $ r   )r   r   ler   s     r   __le__Position.__le__<   r    r   c                 B    U R                  U[        R                  5      $ r   )r   r   eqr   s     r   __eq__Position.__eq__?   r    r   c                 B    U R                  U[        R                  5      $ r   )r   r   ner   s     r   __ne__Position.__ne__B   r    r   c                 Z    [        U R                  U R                  U R                  45      $ r   )hashr
   r   r   r   s    r   __hash__Position.__hash__E   s     T]]DIIt{{;<<r   c                     S[         R                  R                  U R                  5      U R                  =(       d    SU R
                  =(       d    S4-  $ )Nz<Position %s:%d:%d>)ospathbasenamer
   r   r   r7   s    r   __repr__Position.__repr__H   s@    $(8(8(G(,		R(,(9r(; ; 	;r   c                     [         R                  R                  [         R                  R                  U R                  5      [         R                  R                  U5      5      nU R                  b  SX R                  U R                  4-  $ U R                  b  SX R                  4-  $ U< S3$ ! [
         a,    [         R                  R                  U R                  5      n Nf = f)Nz%s:%d:%dz%s:%d:)r<   r=   relpathrealpathr
   
ValueErrorr   r   )r   cwdr
   s      r   formatPosition.formatM   s    	7wwrww'7'7'F')ww'7'7'<>H
 ;;"99dkk BBBYY"h		444$''  	7ww''6H	7s   A$B1 13C'&C')r   r
   r   r   )NNNF)__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   r#   r'   r+   r/   r3   r8   r?   rG   __static_attributes__ r   r   r   r   !   sE    
 =I%>111111=;
(r   r   c                   ~    \ rS rSrSrSS jr\S 5       rS r\	S 5       r
S r\	S 5       rS	 rSS
 jrSS jrS rSrg)MessageLogger_   Nc                     Uc  [         R                  n[        R                  " 5       U l        X l        Xl        SU l        SU l        SU l	        g )NFr   )
sysstderrr<   getcwd_cwd_output
_namespace_enable_warnings_enable_strict_warning_count)r   	namespaceoutputs      r   r   MessageLogger.__init__b   s?    >ZZFIIK	# %#r   c                 N    U R                   c  U " U0 UD6U l         U R                   $ r   )	_instance)clsargskwargss      r   getMessageLogger.getl   s'    == 00CM}}r   c                 $    [        U5      U l        g r   )boolr[   r   values     r   enable_warningsMessageLogger.enable_warningsr   s     $Ur   c                     U R                   $ r   )r[   r7   s    r   warnings_enabledMessageLogger.warnings_enabledu   s    $$$r   c                 $    [        U5      U l        g r   )ri   r\   rj   s     r   enable_strictMessageLogger.enable_stricty   s    "5kr   c                     U R                   $ r   )r\   r7   s    r   strict_enabledMessageLogger.strict_enabled|   s    """r   c                     U R                   $ r   )r]   r7   s    r   get_warning_countMessageLogger.get_warning_count   s    """r   c           
         [        S5        U =R                  S-  sl        U R                  (       d  U[        [        4;   a  g[        U[        5      (       a  [        U5      n[        U[        5      (       a  U/nU(       d  [        S5      /nUSS  H9  nU R                  R                  UR                  U R                  S9< S35        M;     US   R                  U R                  S9nU[        :X  a  Sn	OU[        :X  a  S	n	OU[        :X  a  S
n	Ub  Ub  U< SU< SSU-  S-   < 3nU(       aO  U R                  (       a+  U< SW	< SU R                  R                  < SU< SU< S3
nOYU< SW	< SU< SU< S3nOFU R                  (       a'  U< SW	< SU R                  R                  < SU< S3nOU< SW	< SU< S3nU R                  R                  U5        U[        :X  a  [        S5        [!        U5      eg)z{
Log a warning, using optional file positioning information.
If the warning is related to a ast.Node type, see log_node().
warningr   Nz	<unknown>r;   )rF   z:
WarningErrorFatal
 ^: fatal)r   r]   r[   WARNINGERROR
isinstancesetlistr   rY   writerG   rX   FATALrZ   name
SystemExit)
r   log_typetext	positionsprefix
marker_posmarker_linepositionlast_position
error_types
             r   logMessageLogger.log   s   
 	I&q $$gu5E)Ei%%YIi**"I!+./I!#2HLL(//dii/*HKL '!",,,;w"J J J!k&=#'cJ6F6LMD2?26//2F2FPTV /<Z.4d< .;Z.2oo.B.BDJ +8TJ4 u(T"" r   c                    U(       a  ON[        USS5      (       a  UR                  nO/U(       a  UR                  (       a  UR                  nO
[        5       nU(       a  [        USUR                  5      < SU< 3nODU(       d=  [	        US5      (       a,  SUR
                  R                  < SUR                  < SU< 3nU R                  XU5        g)a"  
Log a warning, using information about file positions from
the given node.  The optional context argument, if given, should be
another ast.Node type which will also be displayed.  If no file position
information is available from the node, the position data from the
context will be used.
file_positionsNsymbolr   r   ())getattrr   r   r   hasattr	__class__rI   r   )r   r   noder   contextr   s         r   log_nodeMessageLogger.log_node   s     T+T22++I//..II&w',,GNDwtV44#'>>#:#:DIItLD+r   c                 X    U R                  XUR                  SUR                  < S3S9  g)z1Log a warning in the context of the given symbol.zsymbol='')r   N)r   r   ident)r   r   r   r   s       r   
log_symbolMessageLogger.log_symbol   s%    )/8 	 	:r   )rX   r\   r[   rZ   rY   r]   NNNNNN)rI   rJ   rK   rL   rb   r   classmethodrf   rl   propertyro   rr   ru   rx   r   r   r   rO   rP   r   r   rR   rR   _   sg    I   
, % %* # ##4#l,0:r   rR   c                 N    [         R                  5       nUR                  XX#US9  g N)r   r   )rR   rf   r   )r   r   r   r   r   mls         r   r   r      s"    				BKKKKr   c                 \    [         R                  5       nUR                  [        XX#U5        g r   )rR   rf   r   r   r   r   r   r   r   r   s         r   warnr      s"    				BFF7DVEr   c                 "    [        [        XX#S9  g r   )r   r   r   r   r   r   s       r   	warn_noder      s    Wd'Gr   c                 "    [        [        XX#S9  g r   )r   r   r   s       r   
error_noder      s    UDEr   c                 z    [         R                  5       nUR                  (       a  UR                  [        XX#S9  g g r   )rR   rf   ru   r   r   )r   r   r   r   r   s        r   strict_noder      s0    				B	
GTN r   c                 X    [         R                  5       nUR                  [        X5        g r   )rR   rf   r   r   )r   r   r   s      r   warn_symbolr      s    				BMM'6(r   c                 \    [         R                  5       nUR                  [        XX#U5        g r   )rR   rf   r   r   r   s         r   errorr      "    				BFF5$6{Cr   c                 \    [         R                  5       nUR                  [        XX#U5        g r   )rR   rf   r   r   r   s         r   r   r      r   r   r   r   )r<   rU   r   utilsr   ranger   r   r   objectr   rR   r   r   r   r   r   r   r   r   rP   r   r   <module>r      st   , 
 
  & (;(v ;(|u:F u:pL
F
HFO)
D
Dr   