File: //opt/alt/python27/lib/python2.7/site-packages/raven/utils/stacks.pyc
�
��Yc           @`  s�   d  Z  d d l m Z 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	 m
 Z
 d d l m Z e j
 d � Z d d d � Z d d � Z d	 �  Z d
 �  Z d d � Z e
 d d
 � Z d d � Z d d � Z e
 e d d � Z d S(   s�   
raven.utils.stacks
~~~~~~~~~~~~~~~~~~~~~~~~~~
:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i    (   t   absolute_importt   divisionN(   t	   transform(   t	   iteritemss   coding[:=]\s*([-\w.]+)c         C`  s�  d } | d k	 rr t | d � rr y | j | � } Wn t t f k
 rS d } n X| d k	 rr | j �  } qr n  | d k r� y t j |  � } Wq� t t f k
 r� d SXn  | s� d St	 d | | � } t
 | d | t | � � } ym g  | | | !D] } | j d � ^ q� }	 | | j d � }
 g  | | d | !D] } | j d � ^ q:} Wn t
 k
 rjd SXt |	 � t |
 � t | � f S(	   s�   
    Returns context_lines before and after lineno from file.
    Returns (pre_context_lineno, pre_context, context_line, post_context).
    t
   get_sourcei    i   s   
N(   NNN(   NNN(   NNN(   t   Nonet   hasattrR   t   ImportErrort   IOErrort
   splitlinest	   linecachet   getlinest   OSErrort   maxt   mint   lent   stript
   IndexErrort   slim_string(   t   filenamet   linenot
   context_linest   loadert   module_namet   sourcet   lower_boundt   upper_boundt   linet   pre_contextt   context_linet   post_context(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/stacks.pyt   get_lines_from_file   s8    
&.
		c         C`  s%   y |  | SWn t  k
 r  | SXd S(   s�   
    f_locals is not guaranteed to have .get(), but it will always
    support __getitem__. Even if it doesn't, we return ``default``.
    N(   t	   Exception(   t   f_localst   keyt   default(    (    sC   /opt/alt/python27/lib/python2.7/site-packages/raven/utils/stacks.pyt   _getitem_from_frameU   s    
c         `  s_   t  �  d � r �  j } n'