ó
¦V]c           @@  sè   d  d l  m Z d  d l Z d  d l Z d  d l Z y d  d l m Z e Z Wnm e	 k
 r½ e
 Z y d  d l m Z Wq¾ e	 k
 r¹ y d  d l m Z Wqº e	 k
 rµ d Z qº Xq¾ Xn Xd d l m Z d e f d	 „  ƒ  YZ d S(
   i    (   t   absolute_importN(   t   etree(   t   cElementTree(   t   ElementTreei   (   t   Errorst   CythonDebugWriterc           B@  s>   e  Z d  Z d „  Z d d „ Z d „  Z d „  Z d „  Z RS(   s¥   
    Class to output debugging information for cygdb

    It writes debug information to cython_debug/cython_debug_info_<modulename>
    in the build directory.
    c         C@  st   t  d  k r t j ƒ  ‚ n  t j j | p0 t j d ƒ |  _ t  j	 ƒ  |  _
 d  |  _ |  j d d t d d ƒ ƒd  S(   Nt   cython_debugt   attrst   versions   1.0(   R   t   NoneR   t   NoElementTreeInstalledExceptiont   ost   patht   joint   curdirt
   output_dirt   TreeBuildert   tbt   module_namet   startt   dict(   t   selfR   (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyt   __init__   s    !	c         C@  s   |  j  j | | p i  ƒ d  S(   N(   R   R   (   R   t   nameR   (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyR   )   s    c         C@  s   |  j  j | ƒ d  S(   N(   R   t   end(   R   R   (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyR   ,   s    c         K@  s'   |  j  j | | ƒ |  j  j | ƒ d  S(   N(   R   R   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyt	   add_entry/   s    c         C@  s  |  j  j d ƒ |  j  j d ƒ |  j  j ƒ  } y t j |  j ƒ Wn+ t k
 rp } | j t j k rq ‚  qq n Xt	 j
 | ƒ } i  } t r™ t | d <n  d |  j } | j t j j |  j | ƒ d d | t j j |  j d ƒ } t | d ƒ  } | j t j ƒ Wd  QXd  S(	   Nt   ModuleR   t   pretty_printt   cython_debug_info_t   encodings   UTF-8t   interpretert   w(   R   R   t   closeR   t   makedirsR   t   OSErrort   errnot   EEXISTR   R   t	   have_lxmlt   TrueR   t   writeR   R   t   opent   syst
   executable(   R   t   xml_root_elementt   et   ett   kwt   fnt   interpreter_patht   f(    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyt	   serialize3   s"    
(N(	   t   __name__t
   __module__t   __doc__R   R	   R   R   R   R2   (    (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyR      s   	
		(   t
   __future__R    R   R)   R#   t   lxmlR   R&   R%   t   ImportErrort   Falset	   xml.etreeR   R   R	   t   CompilerR   t   objectR   (    (    (    s:   lib/python2.7/site-packages/Cython/Debugger/DebugWriter.pyt   <module>   s"   
