-
@M=c       s:    d  Z  * , h  d d <d d <d d <d d <d	 d
 <d d <d d <d d <Z = y > e d i d  d Z Wn ? @ d Z n XE d k Z F d k Z K d k l Z R d f  d     YZ  e d e	 e i
 i d d    Z  e i Z  e i Z  e i Z  d e f d     YZ d S(   s|  A debugging trace module.

  This debugging trace module makes it easier to follow nested calls
  in output by varying the indention level for log messages.  The
  caller can simply trace 'into()' a new level when control passes
  into a function call, 'write()' debug messages at appropriate spots
  in the function, then call 'outof()' when returning from the
  function.

  The debug level is set via the environment variable 'HAPPYDOC_TRACE'.
  Level '0' or no value specified results in no output.  Positive
  integer values are used to control the verbosity of the output with
  higher numbers resulting in more output messages.

s   $RCSfile: trace.py,v $s   module_names:   $Id: trace.py,v 1.6 2002/08/04 12:04:16 doughellmann Exp $s   rcs_ids    Doug Hellmann <doug@hellfly.net>s   creators   UNSPECIFIEDs   projects   Mon, 29-Oct-2001 09:29:22 ESTs   createds   $Author: doughellmann $s   authors   $Revision: 1.6 $s   versions   $Date: 2002/08/04 12:04:16 $s   dates    i   s   0.0N(   s   StreamFlushTests   DebugTracerc      s   R T d Z  V e i d d d d  Z b d   Z f d   Z i d   Z n d	   Z v d
   Z { d d  Z	  d d  Z
  d d d  Z  d d  Z  e d d  Z RS(   Ns   No return value specified.s     i   i    c    sJ   V [ | |  _ \ | |  _ ] f  |  _ ^ | |  _ _ | |  _	 ` d  Sd  S(   N(
   s   outputStreams   selfs   outputs
   startLevels   levels   stacks   indentBys	   indent_bys   maxOutputLevels   max_output_level(   s   selfs   outputStreams   indentBys   maxOutputLevels
   startLevel(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   __init__V s   c    s   b c | |  _ d d  Sd  S(   N(   s   levels   selfs   max_output_level(   s   selfs   level(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   setVerbosityb s   c    s   f g |  i |  i Sd  S(   N(   s   selfs	   indent_bys   level(   s   self(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys	   getIndentf s   c    s6   i j |  i d |  _ k | |  i f |  _ l d  Sd  S(   Ni   (   s   selfs   levels   newStackTops   stack(   s   selfs   newStackTop(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys	   pushLeveli s   c    sP   n o |  i d |  _ p |  i o q |  i \ } |  _ n
 s f  } t | Sd  S(   Ni   (   s   selfs   levels   stacks   popped(   s   selfs   popped(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   popLeveln s
   	c    s   v w |  i | j Sd  S(   N(   s   selfs   max_output_levels   outputLevel(   s   selfs   outputLevel(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   checkOutputLevelv s   c    s   {   |  i |  o  |  i i |  i     |  i i d | | f   | i	   }  | i
    xC | D ]8 \ } }  |  i i d |  i   | t |  f  qu W |  i i d   |  i | | f  n  d Sd S(   sM  Enter a new debug trace level.
        
        Parameters

            'className' -- Name of the class.

            'functionName' -- The name of the function/method.

            'outputLevel=1' -- The debug level where this message should be printed.

            '**params' -- Parameters sent to the function.
        
        s   %s::%s (s   
%s	%s=%s, s   ) {
N(   s   selfs   checkOutputLevels   outputLevels   outputs   writes	   getIndents	   classNames   functionNames   paramss   itemss   sorts   names   values   reprs	   pushLevel(   s   selfs	   classNames   functionNames   outputLevels   paramss   values   name(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   into{ s   
 0c    s     |  i |  o  |  i i |  i     |  i o  |  i i d  n  t |  i  d j  o  d } nC  y  d |  i d d } Wn    t	 |  i d  } n X |  i i d t	 |  i   n  d  Sd  S(   Ns7   ERROR: trace.callerParent called when no stack present
i   s   Nones   %s::%si   i    s   Called by: %s
(
   s   selfs   checkOutputLevels   outputLevels   outputs   writes	   getIndents   stacks   lens   parents   str(   s   selfs   outputLevels   parent(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   callerParent s   $c    s     |  i |  o  | o  |  i i |  i    n  |  i i |   | i	   o|  | i	   }  | i
    xC | D ]8 \ } }  |  i i d |  i   | t |  f  q W |  i i d  n  |  i i d  n  d  Sd  S(   Ns	   
%s	%s=%ss   
(   s   selfs   checkOutputLevels   outputLevels   indents   outputs   writes	   getIndents   messages   varss   itemss   sorts   names   values   repr(   s   selfs   messages   indents   outputLevels   varss   names   value(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   write s   

 0c    s~     |  i |  o]  | i   }  | i    x7 | D ], \ } }  |  i d | t	 |  f  q< Wn  d  Sd  S(   Ns   %s=%s(
   s   selfs   checkOutputLevels   outputLevels	   variabless   itemss   sorts   names   values   writes   repr(   s   selfs   outputLevels	   variabless   names   value(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   writeVar s   
 (c    sk      |  i |  oG  |  i    |  i i |  i     |  i i d t |   n  | Sd S(   s   Exit the current debug trace level.
        
            Parameters

              'returnValue' -- Optional argument indicating
                               the value returned from the function.
        s   } %s
N(	   s   selfs   checkOutputLevels   outputLevels   popLevels   outputs   writes	   getIndents   reprs   returnValue(   s   selfs   returnValues   outputLevel(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   outof s   !(   s   NO_RETURN_VALUE_SPECIFIEDs   syss   stdouts   __init__s   setVerbositys	   getIndents	   pushLevels   popLevels   checkOutputLevels   intos   callerParents   writes   writeVars   Nones   outof(    (    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   DebugTracerR s   	s   maxOutputLevels   HAPPYDOC_TRACEi    s   TraceUnitTestc      s     d   Z  RS(   Nc    s    d k  l }  |   }  t d |  }  | i    | i d d d d d d  | i    | i d   | i d d	 d
 d d d  | i d   | i    | i    | i d   d }  | i
   }  t o | | j p t d |   d  Sd  S(   N(   s   StringIOs   outputStreams   __main__s   topLevels   as   bs   hi theres	   secondarys   secondLevels   cs   Cs   ds   Ds   inside second levels   string returneds]  ERROR: trace.callerParent called when no stack present
Called by: ()
__main__::topLevel (
	a='a', 
	b='b', ) {
  Called by: (('__main__', 'topLevel'), ())
  hi there
  secondary::secondLevel (
  	c='C', 
  	d='D', ) {
    inside second level
    Called by: (('secondary', 'secondLevel'), (('__main__', 'topLevel'), ()))
  } None
} 'string returned'
s'   Trace generated unexpected output [%s].(   s	   cStringIOs   StringIOs   buffers   DebugTracers   traces   callerParents   intos   writes   outofs   expected_values   getvalues   actual_outputs	   __debug__s   AssertionError(   s   selfs   expected_values   traces   StringIOs   buffers   actual_output(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys	   testTrace s    	%(   s	   testTrace(    (    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   TraceUnitTest s   (   s   __doc__s   __rcs_info__s   splits   __version__s   oss   syss   happydoclib.StreamFlushTests   StreamFlushTests   DebugTracers   ints   environs   gets   traces   intos   outofs   writes   TraceUnitTest(   s   TraceUnitTests   writes   traces   intos   DebugTracers   syss   outofs   StreamFlushTests   __version__s   oss   __rcs_info__(    (    sO   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/trace.pys   ?* s   Qz'