
    cy                     x    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d
S )    )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	dS )	FixSyntax   c                 >    || _         || _        || _        || _        d S N)projectcoderesourcemaxfixes)selfr   r   r   r   s        6lib/python3.11/site-packages/rope/contrib/fixsyntax.py__init__zFixSyntax.__init__   s"    	      c                 L   d}| j         }d}	 	 |dk    rE| j        >| j                                        |k    r!| j                            | j        d          S t          j        | j        || j        d          S # t          j        $ r}||j	         d|j
         d|j         }|| j        k     rD|dz  }| j                            |j
                   d	                    | 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   : 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   sm    y	QJWW **,,4W
  <44T]QU4VVV1L$T    / 
 
 
 BZAA!(AAQZAAC4=( QJEN**1844499T^%9::DD$6
AH.Kc.K.K   DDDD
	s   A
A; !A; ;D!
BDD!c                 *    t          | j                  S r   )
_Commenterr   )r   s    r   r$   zFixSyntax.commenter)   s     $)$$$r   c                                                         fd}j        } fd}|                     j        d dz                      r
 |            S  |            }|
 |            S |S )Nc                  f   t          j        j        d          } |                               }|                    dd                              dd          }j                            dd          }                                                    |          }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88K$33F;;J#++FC88@@sKKJY__T1f55F&&((AA&IIE$UJ777r   c                  b    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&AAI)(I>>>r   r   )r   source_code
startswithr   )r   r9   r;   new_coder@   resultr:   s   ``    @r   	pyname_atzFixSyntax.pyname_at.   s    $$&&	8 	8 	8 	8 	8 	8 	8 '	? 	? 	? 	? 	? 	? 	? ty6A:677 	 :<< 	 :<<r   N)r   )
__name__
__module____qualname__r   r   saveitr   propertyr$   rE    r   r   r   r      s{        ! ! ! ! \  \8 
\% % \ X%    r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )r,   c                 2   || _         | j                             d          | _        | j                            d           t	          t          t          | j                  dz                       | _        dgt          | j                  dz   z  | _        d S )Nr   r   r   )	r   splitr'   appendlistrangelenorigsdiffs)r   r   s     r   r   z_Commenter.__init__H   sw    	Y__T**

$%DJ! 34455
SC
OOa/0


r   c                 8   t          | j        |d          dz
  }|                     |          }t          | j        |                   }d|k     r^|                     |dz
            }| j        |         }|                                                    d          rt          |          dz   }|                     |d|z  dz              t          |dz   |dz             D ]#}|                     || j        |                    $| 	                    ||           d S )	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!   tz6dCCCaG   ''#DJu$566u9 	;..uqy99K
;/I!!**3// ;+I66:		%w/000%!)S1W-- 	/ 	/DIIdDJu-....''88888r   c                 |    | j                             dd|          }t          | j        d |                   }||z   S )Nr   r   )r   r2   sumrT   )r   r9   r"   diffs       r   r=   z_Commenter.transferred_offset_   s;    q&114:gvg&''}r   c                     |dk    rQ| j         |                                         dk    r.|dz  }|dk    r#| j         |                                         dk    .|S )Nr    r   )r'   strip)r   ra   s     r   r\   z_Commenter._last_non_blankd   sh    ai 	DJu-3355; 	QJE ai 	DJu-3355; 	r   c                     |}t          | j        |                   }t          |dz   t          | j                            D ]#}t          | j        |                   |k    r|}# |S Nr   r[   r'   rQ   rR   )r   r"   end_linebase_indentsis        r   _get_block_endz_Commenter._get_block_endi   sj    (F);<<vz3tz??33 	 	A A//<? r   c                     t          | j        |                   }t          |dz   t          | j                            D ]'}t          | j        |                   |k    r|dz
  c S (|S rn   ro   )r   r"   rq   rr   s       r   rZ   z_Commenter._get_stmt_ends   sm    (F);<<vz3tz??33 	 	A A//<? 1ur   c                    |}|}|dk    r6t          j        t          | j                  |          dz
  }| j        |                                                             d          rt          | j        |                   }||k    r|}|                     |          }| j        |                                         }|                    d          se|                    d          sP|                    d          s;|                     |d|z  dz              |                     |dz   d|z  dz              |dk    4d S d S )	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   si   Ao 	L+,=dj,I,I;WW  z+&,,..99&AA L+DJ{,CDD\) & 88EE	z),2244OOJ//Ly11L y11L
 LLC'MJ,FGGGLLQg
0JKKK% Ao 	L 	L 	L 	L 	Lr   c                    t          | j        |                   }|dz   }|t          | j                  k     r| j        |         }|                                                    d          s8|                                dk    s t          | j        |                   |k    r|S |dz  }|t          | j                  k     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    #DJ{$;<<"QS__, 	:l+D::<<**3// (

8J ($TZ%=>>'I (''AL S__, 	 4:""r   c                     | j         | j        |         xx         t          |          t          | j        |                   z
  z  cc<   || j        |<   d S r   )rT   rS   rR   r'   r   r"   rf   s      r   r_   z_Commenter._set   sS    
4:f%&&&#d))c$*V:L6M6M*MM&&&!
6r   c                     | j         | j        |         xx         t          |          dz   z  cc<   | j                            || j        |                    | j                            ||           d S rn   )rT   rS   rR   insertr'   r   s      r   rx   z_Commenter._insert   sn    
4:f%&&&#d))a-7&&&
&$*V"4555
&$'''''r   N)rF   rG   rH   r   r%   r=   r\   rs   rZ   r`   rw   r_   rx   rK   r   r   r,   r,   G   s        1 1 19 9 9   
  
    L L L.
# 
# 
#" " "( ( ( ( (r   r,   Fc                    t          t          |                     }|rI|dz
  }|dk    r>|                    |          \  }}|||cxk    r|k     rn n|S ||k    rn|dz  }|dk    >|                    |          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         } AID Qh 	 ))&1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      s    P P P P P P P P P P P P P P P P F F F F F F F F? ? ? ? ? ? ? ?D]( ]( ]( ]( ]( ]( ]( ](@5 5 5 50 0 0 0 0r   