ó
è¾bc           @   s™   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l  m Z m Z m Z m Z m	 Z	 m
 Z
 d d d d g Z e Z e Z e Z d d d „  ƒ  YZ d S(	   iÿÿÿÿN(   t
   WHAT_ENTERt	   WHAT_EXITt   WHAT_LINENOt   WHAT_DEFINE_FILEt   WHAT_DEFINE_FUNCt   WHAT_ADD_INFOt	   LogReadert   ENTERt   EXITt   LINEc           B   sw   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d d	 „ Z
 d
 „  Z d „  Z d „  Z RS(   c         C   s˜   i  |  _  i  |  _ t j | ƒ |  _ |  j j |  _ |  j j |  _ d |  j k rd |  j d |  _	 n	 d  |  _	 g  |  _ |  j j |  _ |  j j |  _ d  S(   Ns   current-directory(   t   _filemapt   _funcmapt   _hotshott	   logreadert   _readert   nextt	   _nextitemt   infot   _infot   cwdt   Nonet   _stackt   appendt   _appendt   popt   _pop(   t   selft   logfn(    (    s!   /usr/lib/python2.7/hotshot/log.pyt   __init__   s    				c         C   s   |  j  j ƒ  d  S(   N(   R   t   close(   R   (    (    s!   /usr/lib/python2.7/hotshot/log.pyR   /   s    c         C   s   |  j  j ƒ  S(   s8   Return the file descriptor of the log reader's log file.(   R   t   fileno(   R   (    (    s!   /usr/lib/python2.7/hotshot/log.pyR   2   s    c         C   s   d S(   sò  This method is called for each additional ADD_INFO record.

        This can be overridden by applications that want to receive
        these events.  The default implementation does not need to be
        called by alternate implementations.

        The initial set of ADD_INFO records do not pass through this
        mechanism; this is only needed to receive notification when
        new values are added.  Subclasses can inspect self._info after
        calling LogReader.__init__().
        N(    (   R   t   keyt   value(    (    s!   /usr/lib/python2.7/hotshot/log.pyt   addinfo6   s    c         C   s0   y |  j  | SWn t k
 r+ t d ‚ n Xd  S(   Ns   unknown fileno(   R
   t   KeyErrort
   ValueError(   R   R   (    (    s!   /usr/lib/python2.7/hotshot/log.pyt   get_filenameD   s    c         C   s   |  j  j ƒ  S(   N(   R
   t   values(   R   (    (    s!   /usr/lib/python2.7/hotshot/log.pyt   get_filenamesJ   s    c         C   s[   t  j j t  j j | ƒ ƒ } x- |  j j ƒ  D] \ } } | | k r. | Sq. Wt d ‚ d  S(   Ns   unknown filename(   t   ost   patht   normcaset   normpathR
   t   itemsR#   (   R   t   filenameR   t   name(    (    s!   /usr/lib/python2.7/hotshot/log.pyt
   get_filenoM   s
    c         C   s6   y |  j  | | f SWn t k
 r1 t d ‚ n Xd  S(   Ns   unknown function location(   R   R"   R#   (   R   R   t   lineno(    (    s!   /usr/lib/python2.7/hotshot/log.pyt   get_funcnameT   s    i    c   
      C   s—  x|  j  ƒ  \ } } } } | t k rh |  j | | ƒ \ } } | | | f } |  j | ƒ | | | f S| t k r¨ y | |  j ƒ  | f SWq¨ t k
 r¤ t ‚ q¨ Xn  | t k rà |  j	 d \ } }	 } | | | | f | f S| t
 k rt j j t j j | ƒ ƒ } | |  j | <q | t k rO|  j | } | | f |  j | | f <q | t k r†| d k rs| |  _ n  |  j | | ƒ q t d ‚ q Wd  S(   Niÿÿÿÿs   current-directorys   unknown event type(   R   R    t   _decode_locationR   R   R   t
   IndexErrort   StopIterationR   R   R   R'   R(   R)   R*   R
   R   R   R   R   R!   R#   (
   R   t   indext   whatt   tdeltaR   R/   R,   t   funcnamet   tt   firstlineno(    (    s!   /usr/lib/python2.7/hotshot/log.pyR   _   s4    c         C   s   |  S(   N(    (   R   (    (    s!   /usr/lib/python2.7/hotshot/log.pyt   __iter__†   s    c         C   s±   y |  j  | | f SWn t k
 r¦ |  j | ƒ rA d  } } n  y |  j  | | f \ } } Wq§ t k
 r¢ |  j j | ƒ } d  } | | f |  j  | | f <q§ Xn X| | f S(   N(   R   R"   t	   _loadfileR   R
   t   get(   R   R   R/   R,   R7   (    (    s!   /usr/lib/python2.7/hotshot/log.pyR1      s    !c         C   s’  y |  j  | } Wn t k
 r. d G| GHd SX| d  k r? d St j j t j j |  j | ƒ ƒ } y t | ƒ } Wn t	 k
 r‡ d  SXt
 j | j ƒ  ƒ } | j ƒ  t j } t j } | j d ƒ g } xÀ | r| j ƒ  }	 y |	 d }
 Wn t t f k
 r
qÎ n X|
 | k rC| |	 d d f |  j | |	 d d f <n0 |
 | k rs| d f |  j | |	 d d f <n  | j t |	 d ƒ ƒ qÎ Wd  S(   Ns   Could not identify fileIdi   i    i   s   <lambda>(   R
   R"   R   R'   R(   R)   t   joinR   t   opent   IOErrort   parsert   suitet   readR   t   symbolt   funcdeft   lambdeft   totupleR   R2   t	   TypeErrorR   t   extendt   list(   R   R   R,   t   absnamet   fpt   stRD   RE   t   stackt   treet   sym(    (    s!   /usr/lib/python2.7/hotshot/log.pyR;       s8    	$
			,$(   t   __name__t
   __module__R   R   R   R!   R$   R&   R.   R0   R   R:   R1   R;   (    (    (    s!   /usr/lib/python2.7/hotshot/log.pyR      s   								'		(    (   R   t   os.pathR'   R@   RC   R    R   R   R   R   R   t   __all__R   R   R	   R   (    (    (    s!   /usr/lib/python2.7/hotshot/log.pyt   <module>   s   .	