
    Æey                     j    d dl mZmZmZmZmZmZ d dlmZm	Z	  G d d      Z
 G d d      Zd
dZd Zy	)    )codeanalyzeevaluate
exceptionslibutilsutilsworder)ArrayLinesAdapterLogicalLineFinderc                   l    e Zd ZddZej
                  d        Zeej
                  d               Zd Z	y)	FixSyntaxc                 <    || _         || _        || _        || _        y N)projectcoderesourcemaxfixes)selfr   r   r   r   s        8/usr/lib/python3/dist-packages/rope/contrib/fixsyntax.py__init__zFixSyntax.__init__   s    	      c                    d}| j                   }d}	 	 |dk(  rP| j                  D| j                  j                         |k(  r'| j                  j	                  | j                  d      S t        j                  | j                  || j                  d      S # t        j                  $ r}|(|j                   d|j                   d|j                   }|| j                  k  rP|dz  }| j                  j                  |j                         d	j                  | j                  j                         }n.t        j                  |j                  |j                  d
|       Y d}~nd}~ww xY w\)zGet a `PyModule`Nr   T)force_errors)r   r   :    
zFailed to fix error: )r   r   readr   get_pymoduler   get_string_moduler   ModuleSyntaxErrorfilenamelinenomessage_r   	commentercommentjoinlines)r   msgr   trieses        r   r   zFixSyntax.get_pymodule   s>    yyQJ1**,4<<44T]]QU4VV11LL$T  // 
;ZZL!((1QZZLAC4==(QJENN**188499T^^%9%9:D$66

AHH0EcU.K  
 s   AB (,B E)(B7E$$E)c                 ,    t        | j                        S r   )
_Commenterr   )r   s    r   r$   zFixSyntax.commenter)   s     $))$$r   c                       j                          fd}j                  } fd}|j                   j                  d dz          r |       S  |       }| |       S |S )Nc                  N   t        j                  j                  d      } | j                        }|j	                  dd      j	                  dd      }j                  j                  dd      }j                         j                  |      }t        j                  ||      S )NTz\
r   r   r   )
r   Worderr   get_primary_atreplacecount	get_scopeget_inner_scope_for_liner   eval_str)word_finder
expressionr"   scopeoffsetpymoduler   s       r   
old_pynamez'FixSyntax.pyname_at.<locals>.old_pyname1   s     --		48K$33F;J#++FC8@@sKJYY__T1f5F&&(AA&IE$$UJ77r   c                  f    j                   j                        } t        j                  |       S r   )r$   transferred_offsetr   eval_location)	newoffsetr9   r:   r   s    r   
new_pynamez'FixSyntax.pyname_at.<locals>.new_pyname;   s*    99&AI))(I>>r   r   )r   source_code
startswithr   )r   r9   r;   new_coder@   resultr:   s   ``    @r   	pyname_atzFixSyntax.pyname_at.   sh    $$&	8 ''	? tyy6A:67<><r   N)r   )
__name__
__module____qualname__r   r   saveitr   propertyr$   rE    r   r   r   r      sD    ! \\ 8 
\\%  %r   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)r,   c                 (   || _         | j                   j                  d      | _        | j                  j                  d       t	        t        t        | j                        dz               | _        dgt        | j                        dz   z  | _        y )Nr   r   r   )	r   splitr'   appendlistrangelenorigsdiffs)r   r   s     r   r   z_Commenter.__init__H   sh    	YY__T*


$%DJJ! 345
SC

Oa/0
r   c                    t        | j                  |d      dz
  }| j                  |      }t        | j                  |         }d|k  rP| j	                  |dz
        }| j                  |   }|j                         j                  d      rt        |      dz   }| j                  |d|z  dz          t        |dz   |dz         D ]!  }| j                  || j                  |          # | j                  ||       y )	NT)
check_prevr   r   r      r   pass)
_logical_startr'   _get_stmt_end_get_line_indents_last_non_blankrstripendswith_setrQ   _fix_incomplete_try_blocks)r   r"   startendindentslast_lineno	last_linelines           r   r%   z_Commenter.commentO   s    tzz6dCaG   '#DJJu$56u9..uqy9K

;/I!**3/+I6:		%w/0%!)S1W- 	/DIIdDJJu-.	/''8r   c                 v    | j                   j                  dd|      }t        | j                  d |       }||z   S )Nr   r   )r   r2   sumrT   )r   r9   r"   diffs       r   r=   z_Commenter.transferred_offset_   s7    q&14::gv&'}r   c                     |dkD  rK| j                   |   j                         dk(  r+|dz  }|dkD  r!| j                   |   j                         dk(  r+|S )Nr    r   )r'   strip)r   ra   s     r   r\   z_Commenter._last_non_blankd   sR    aiDJJu-335;QJE aiDJJu-335;r   c                     |}t        | j                  |         }t        |dz   t        | j                              D ]"  }t        | j                  |         |k\  r|}! |S  |S Nr   r[   r'   rQ   rR   )r   r"   end_linebase_indentsis        r   _get_block_endz_Commenter._get_block_endi   se    (F);<vz3tzz?3 	A A/<?	
 r   c                     t        | j                  |         }t        |dz   t        | j                              D ]$  }t        | j                  |         |k  s|dz
  c S  |S rn   ro   )r   r"   rq   rr   s       r   rZ   z_Commenter._get_stmt_ends   s\    (F);<vz3tzz?3 	A A/<?1u	 r   c                 @   |}|}|dkD  rt        j                  t        | j                        |      dz
  }| j                  |   j	                         j                  d      rt        | j                  |         }||kD  r||}| j                  |      }| j                  |   j	                         }|j                  d      sU|j                  d      sD|j                  d      s3| j                  |d|z  dz          | j                  |dz   d|z  dz          |dkD  ry y )	Nr   r   ztry:zfinally:zexcept zexcept:r   z    pass)	r   get_block_startr	   r'   rl   rB   r[   _find_matching_deindent_insert)r   r"   rc   block_startlast_indents	block_endrf   s          r   r`   z%_Commenter._fix_incomplete_try_blocksz   s   Ao++,=djj,I;W  zz+&,,.99&A+DJJ{,CD\)& 88E	zz),224OOJ/y1y1LLC'MJ,FGLLQg
0JK% Aor   c                    t        | j                  |         }|dz   }|t        | j                        k  r|| j                  |   }|j                         j	                  d      s0|j                         dk(  st        | j                  |         |k  r|S |dz  }|t        | j                        k  r|t        | j                        dz
  S )Nr   #rk   )r[   r'   rR   rl   rB   )r   line_numberrc   current_linerf   s        r   rw   z"_Commenter._find_matching_deindent   s    #DJJ{$;<"QS_,::l+D::<**3/

8J$TZZ%=>'I''AL S_, 4::""r   c                     | j                   | j                  |   xx   t        |      t        | j                  |         z
  z  cc<   || j                  |<   y r   )rT   rS   rR   r'   r   r"   rf   s      r   r_   z_Commenter._set   sD    

4::f%&#d)c$**V:L6M*MM&!

6r   c                     | j                   | j                  |   xx   t        |      dz   z  cc<   | j                  j                  || j                  |          | j                  j                  ||       y rn   )rT   rS   rR   insertr'   r   s      r   rx   z_Commenter._insert   sX    

4::f%&#d)a-7&

&$**V"45

&$'r   N)rF   rG   rH   r   r%   r=   r\   rs   rZ   r`   rw   r_   rx   rK   r   r   r,   r,   G   s5    19 

L.
#"(r   r,   c                     t        t        |             }|rB|dz
  }|dkD  r8|j                  |      \  }}|||cxk  r|k  r|S  n|S ||k  rn|dz  }|dkD  r8|j                  |      d   S )Nr   r   )r
   r	   logical_line_in)r'   r"   rV   logical_finderprevra   rb   s          r   rY   rY      s    &'8'?@NzQh'77=JE3{ev33 4}AID Qh ))&1!44r   c                 ,    t        j                  |       S r   )r   count_line_indents)rf   s    r   r[   r[      s    ))$//r   N)F)	rope.baser   r   r   r   r   r   rope.base.codeanalyzer	   r
   r   r,   rY   r[   rK   r   r   <module>r      s0    P P F? ?D]( ](@50r   