
    c                     P    d dl mZ d Zd Zd ZdededefdZd	 Zd
 Z	d Z
d ZdS )    )codeanalyzec                 P    t          j        |                     |                    S )N)r   count_line_indentsget_line)lineslinenos     9lib/python3.11/site-packages/rope/refactor/sourceutils.pyget_indentsr
      s    )%..*@*@AAA    c                     d}|                      d          }|D ]=}|                                dk    rt          |t          j        |                    }>|S )NP   
 )splitstripminr   r   )source_coderesultr   lines       r	   find_minimum_indentsr      sd    Fd##E C C::<<2 	V[;DAABBMr   c                    |dk    r| S |                      d          }g }|D ]}|                                dk    r|                    d           0|dk     rSt          j        |          }|                    t          d||z             dz  |                                z              |                    d|z  |z              d                    |          S )Nr   Tr   r    )
splitlinesr   appendr   r   maxlstripjoin)r   amountr   r   r   indentss         r	   indent_linesr       s    { ""4((EF / /::<<2 	MM$A: 	/!4T::GMM#a6!122S84;;==HIIIIMM#,-....776??r   codenew_indentsreturnc                 F    t          |           }t          | ||z
            S )z1Change the indentation of `code` to `new_indents`)r   r    )r!   r"   min_indentss      r	   fix_indentationr&   #   s$    &t,,KkK7888r   c                    | j         }| j        }|                                }|                                r,|                                d                                         }|                    |          }dd                    |          z   }t          |t          ||                                          t          | j
        j                  z             }g }	|	                    |d |                    |	                    |           |	                    ||d                     d                    |	          S )Nz

r   )r   r   get_end
get_scopesget_line_endr   r&   r
   	get_start
get_indentpycoreprojectr   )
pymoduleclass_scopemethods_sourcesr   r   insertion_lineinsertion_offsetmethodsindented_methodsr   s
             r	   add_methodsr7   )   s*   &KNE ((**N @$//11"5==??)).99v{{?333G&E;002233
X_,
-
-	. 
 F
MM+///0111
MM"###
MM+.//0111776??r   c                     |                                  }t          |           \  }}t          |j        ||         d          S )zReturn unindented function bodyr   )
get_moduleget_body_regionr&   r   )
pyfunctionr0   startends       r	   get_bodyr>   =   sB     $$&&H ,,JE38/c	:A>>>r   c                    |                                  }|                                 }|j        }|                                 }|j        }|                                 |j        d         j        }n*t          |j                  dk    r|j        d         j        }|                    |          }|j	        
                    |j                  }|d         |k    ra|j                            d|          dz   }|j        |                                         r$|dz  }|j        |                                         $t          |                    |j                  dz   t          |j                            }||fS )z1Return the start and end offsets of function bodyNr      :)	get_scoper9   r   get_astr   get_docbodylenget_line_startlogical_lineslogical_line_inr<   r   indexisspacer   r+   r=   )	definedscoper0   r   node
start_liner<   scope_startr=   s	            r	   r:   r:   E   s]   E!!##HNE??DJ )Yq\(

	TY!	 )Yq\(
  ,,E(88EEK1~#  $**366:"5)1133 	QJE "5)1133 	
e  ++a/X5I1J1J
K
KC#:r   c                 8    | j                             dd          S )Nindent_size   )prefsget)r/   s    r	   r-   r-   \   s    =]A...r   N)	rope.baser   r
   r   r    strintr&   r7   r>   r:   r-    r   r	   <module>rZ      s    ! ! ! ! ! !B B B    "9# 9C 9C 9 9 9 9  (? ? ?  ./ / / / /r   