ó
†Å•Zc           @   s³   d  d l  Z d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l  m Z m	 Z	 d e
 f d „  ƒ  YZ d	 e
 f d
 „  ƒ  YZ e d „ Z d „  Z d S(   iÿÿÿÿN(   t
   exceptions(   t   libutils(   t   utils(   t   worder(   t   ArrayLinesAdaptert   LogicalLineFindert	   FixSyntaxc           B   sG   e  Z d  d „ Z e j d „  ƒ Z e e j d „  ƒ ƒ Z d „  Z RS(   i   c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t   projectt   codet   resourcet   maxfixes(   t   selfR   R   R	   R
   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt   __init__   s    			c         C   sA  d } |  j } d } x%t r<yo | d k rj |  j d k	 rj |  j j ƒ  | k rj |  j j |  j d t ƒSt j |  j | d |  j d t ƒSWq t	 j
 k
 r8} | d k rÍ d | j | j | j f } n  | |  j k  r| d 7} |  j j | j ƒ d j |  j j ƒ } q9t	 j
 | j | j d j | ƒ ƒ ‚ q Xq Wd S(	   s   Get a `PyModule`i    t   force_errorsR	   s   %s:%s %si   s   
s   Failed to fix error: {0}N(   t   NoneR   t   TrueR	   t   readR   t   get_pymoduleR   t   get_string_moduleR    t   ModuleSyntaxErrort   filenamet   linenot   message_R
   t	   commentert   commentt   joint   linest   format(   R   t   msgR   t   triest   e(    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR      s,    		
c         C   s   t  |  j ƒ S(   N(   t
   _CommenterR   (   R   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR   -   s    c            s€   ˆ j  ƒ  ‰ ‡  ‡ ‡ f d †  } ˆ j } ‡  ‡ ‡ f d †  } | j ˆ j ˆ  d  ƒ r` | ƒ  S| ƒ  } | d  k r| | ƒ  S| S(   Nc             s…   t  j ˆ j t ƒ }  |  j ˆ  ƒ } | j d d ƒ j d d ƒ } ˆ j j d d ˆ  ƒ } ˆ j ƒ  j | ƒ } t	 j
 j j | | ƒ S(   Ns   \
t    s   
i    (   R   t   WorderR   R   t   get_primary_att   replacet   countt	   get_scopet   get_inner_scope_for_linet   ropet   baset   evaluatet   eval_str(   t   word_findert
   expressionR   t   scope(   t   offsett   pymoduleR   (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt
   old_pyname5   s    c             s(   ˆ j  j ˆ  ƒ }  t j j j ˆ |  ƒ S(   N(   R   t   transfered_offsetR'   R(   R)   t   eval_location(   t	   newoffset(   R.   R/   R   (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt
   new_pyname>   s    i   (   R   t   source_codet
   startswithR   R   (   R   R.   R0   t   new_codeR4   t   result(    (   R.   R/   R   s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt	   pyname_at2   s    		(	   t   __name__t
   __module__R   R   t   saveitR   t   propertyR   R9   (    (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR   
   s
   R   c           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         C   sq   | |  _  |  j  j d ƒ |  _ |  j j d ƒ t t t |  j ƒ d ƒ ƒ |  _ d g t |  j ƒ d |  _ d  S(   Ns   
i   i    (	   R   t   splitR   t   appendt   listt   ranget   lent   origst   diffs(   R   R   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR   K   s
    	"c         C   sú   t  |  j | d t ƒd } |  j | ƒ } t |  j | ƒ } d | k  r• |  j | d ƒ } |  j | } | j ƒ  j d ƒ r• t | ƒ d } q• n  |  j | d | d ƒ x6 t	 | d | d ƒ D] } |  j | |  j | ƒ qÅ W|  j
 | | ƒ d  S(   Nt
   check_previ   i    t   :i   R    t   pass(   t   _logical_startR   R   t   _get_stmt_endt   _get_line_indentst   _last_non_blankt   rstript   endswitht   _setRA   t   _fix_incomplete_try_blocks(   R   R   t   startt   endt   indentst   last_linenot	   last_linet   line(    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR   R   s    c         C   s3   |  j  j d d | ƒ } t |  j |  ƒ } | | S(   Ns   
i    (   R   R$   t   sumRD   (   R   R.   R   t   diff(    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR1   b   s    c         C   s:   x3 | d k r5 |  j  | j ƒ  d k r5 | d 8} q W| S(   Ni    t    i   (   R   t   strip(   R   RP   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRK   g   s    (c         C   sg   | } t  |  j | ƒ } xG t | d t |  j ƒ ƒ D]) } t  |  j | ƒ | k r^ | } q6 Pq6 W| S(   Ni   (   RJ   R   RA   RB   (   R   R   t   end_linet   base_indentst   i(    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt   _get_block_endl   s    #	c         C   s_   t  |  j | ƒ } xE t | d t |  j ƒ ƒ D]' } t  |  j | ƒ | k r0 | d Sq0 W| S(   Ni   (   RJ   R   RA   RB   (   R   R   R[   R\   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRI   v   s
    #c         C   s  | } | } x| d k rt  j j j t |  j ƒ | ƒ d } |  j | j ƒ  j d ƒ r t |  j | ƒ } | | k r q n  | } |  j	 | ƒ } |  j | j ƒ  } | j d ƒ pÓ | j d ƒ pÓ | j d ƒ s|  j
 | d | d ƒ |  j
 | d d | d ƒ qq q Wd  S(	   Ni    i   s   try:s   finally:s   except s   except:R    s       pass(   R'   R(   t   codeanalyzet   get_block_startR   R   RY   R6   RJ   t   _find_matching_deindentt   _insert(   R   R   RR   t   block_startt   last_indentst	   block_endRU   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRO   }   s"    c         C   sª   t  |  j | ƒ } | d } xy | t |  j ƒ k  r˜ |  j | } | j ƒ  j d ƒ r‹ | j ƒ  d k r‹ t  |  j | ƒ | k r‹ | Sn  | d 7} q  Wt |  j ƒ d S(   Ni   t   #RX   (   RJ   R   RB   RY   R6   (   R   t   line_numberRR   t   current_lineRU   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR`      s    
)c         C   sB   |  j  |  j | c t | ƒ t |  j | ƒ 7<| |  j | <d  S(   N(   RD   RC   RB   R   (   R   R   RU   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRN   œ   s    1c         C   sU   |  j  |  j | c t | ƒ d 7<|  j j | |  j | ƒ |  j j | | ƒ d  S(   Ni   (   RD   RC   RB   t   insertR   (   R   R   RU   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRa       s    $(   R:   R;   R   R   R1   RK   R]   RI   RO   R`   RN   Ra   (    (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyR   I   s   					
				c         C   s¤   t  t |  ƒ ƒ } | r“ | d } xn | d k r | j | ƒ \ } } | d  k sn | | k oi | k  n rr | S| | k r‚ Pn  | d 8} q% Wn  | j | ƒ d S(   Ni   i    (   R   R   t   logical_line_inR   (   R   R   RE   t   logical_findert   prevRP   RQ   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRH   ¦   s    
(c         C   s   t  j j j |  ƒ S(   N(   R'   R(   R^   t   count_line_indents(   RU   (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyRJ   ´   s    (   t   rope.base.codeanalyzeR'   t   rope.base.evaluatet	   rope.baseR    R   R   R   R   R   t   objectR   R   t   FalseRH   RJ   (    (    (    s5   lib/python2.7/site-packages/rope/contrib/fixsyntax.pyt   <module>   s   ?]