ó
†Å•Zc           @   s„  d  d l  Z  d  d l Z d  d l Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z d  d l m Z m Z d  d l m Z m Z m Z m Z m Z m Z d „  Z d „  Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ  e! d e# d „ Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d S(   iÿÿÿÿN(   t   pynamest	   pyobjectst   codeanalyzet
   taskhandlet   evaluatet   wordert   utilst   libutils(   t	   ChangeSett   ChangeContents(   t   occurrencest   renamet   sourceutilst   importutilst   movet   change_signaturec          c   s4   d }  x' t  r/ d t |  ƒ d V|  d 7}  q	 Wd  S(   Ni    t   __i   (   t   Truet   str(   t   n(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   unique_prefix   s    	c         C   sâ   t  |  | | ƒ } d } | d k r< t j j j | ƒ ‚ n  t | t j ƒ r] | j	 ƒ  } n  t | t j
 ƒ r t |  | | ƒ St | t j ƒ r¡ t |  | | ƒ St | j ƒ  t j ƒ rÉ t |  | | ƒ St j j j | ƒ ‚ d S(   s©   Create a refactoring object for inlining

    Based on `resource` and `offset` it returns an instance of
    `InlineMethod`, `InlineVariable` or `InlineParameter`.

    sP   Inline refactoring should be performed on a method, local variable or parameter.N(   t   _get_pynamet   Nonet   ropet   baset
   exceptionst   RefactoringErrort
   isinstanceR    t   ImportedNamet   _get_imported_pynamet   AssignedNamet   InlineVariablet   ParameterNamet   InlineParametert
   get_objectR   t
   PyFunctiont   InlineMethod(   t   projectt   resourcet   offsett   pynamet   message(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   create_inline%   s    t   _Inlinerc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sp   | |  _  t | | | ƒ |  _ t j | j ƒ  t ƒ } | j | ƒ |  _ | j	 | ƒ |  _
 | |  _ | |  _ d  S(   N(   R%   R   R(   R   t   Wordert   readR   t   get_primary_ranget   regiont   get_word_att   nameR'   t   original(   t   selfR%   R&   R'   t   range_finder(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   __init__?   s    		c         O   s   d  S(   N(    (   R3   t   argst   kwds(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   get_changesH   s    c         C   s   d S(   s1   Return either 'variable', 'method' or 'parameter'N(    (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   get_kindK   t    (   t   __name__t
   __module__R5   R8   R9   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR+   =   s   			R$   c           B   sk   e  Z d  „  Z d „  Z d „  Z e e d	 e j	 ƒ  d „ Z
 d „  Z d „  Z d „  Z d „  Z d „  Z RS(
   c         O   sœ   t  t |  ƒ j | | Ž  |  j j ƒ  |  _ |  j j ƒ  |  _ |  j j ƒ  j ƒ  |  _	 t
 j |  j |  j |  j ƒ |  _ t |  j |  j ƒ |  _ |  j ƒ  d  S(   N(   t   superR$   R5   R(   R"   t
   pyfunctiont
   get_modulet   pymodulet   get_resourceR&   R
   t   create_finderR%   R1   t   occurrence_findert   _DefinitionGeneratort   normal_generatort   _init_imports(   R3   R6   R7   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR5   Q   s    	c         C   s^   t  j |  j ƒ } t j |  j |  j | ƒ \ } } | |  _ t |  j |  j d | ƒ|  _	 d  S(   Nt   body(
   R   t   get_bodyR>   R   t   moving_code_with_importsR%   R&   t   importsRD   t   others_generator(   R3   RG   RJ   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRF   \   s    	c         C   s©   |  j  j ƒ  } |  j j } | j ƒ  } |  j  j re |  j  j } t | d d ƒ re | d j } qe n  | j | ƒ } t	 | j
 | j ƒ d t |  j j ƒ ƒ } | | f S(   Ni    t   linenoi   (   R>   t	   get_scopeR@   t   linest	   get_startt
   decoratorst   hasattrRL   t   get_line_startt   mint   get_line_endt   endt   lent   source_code(   R3   t   scopeRN   t
   start_lineRP   t   start_offsett
   end_offset(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   _get_scope_ranged   s    c         C   sž  t  d |  j ƒ } | d k r1 |  j j ƒ  } n  | r_ |  j g } | r_ | j |  j ƒ q_ n  | j d t	 | ƒ ƒ } x | D]} | j
 | j ƒ | |  j k rÈ | j |  j | d | d | ƒƒ nÄ d } | rï |  j | k rï |  j } n  t |  j | |  j | ƒ }	 t j |  j | |	 ƒ j ƒ  }
 |
 d k	 rŒt |  j |
 | |  j ƒ }
 | rst |  j |  j |
 | ƒ }
 n  | j t | |
 ƒ ƒ n  | j ƒ  q~ W| S(   sÓ   Get the changes this refactoring makes

        If `remove` is `False` the definition will not be removed.  If
        `only_current` is `True`, the the current occurrence will be
        inlined, only.
        s   Inline method <%s>s   Collecting Changest   removet   only_currentN(   R   R1   R   R%   t   get_python_filesR2   t   appendR&   t   create_jobsetRV   t   started_jobt   patht
   add_changet   _defining_file_changesR'   t#   _InlineFunctionCallsForModuleHandleRK   R   t   ModuleSkipRenamerRC   t   get_changed_modulet   _add_importsRJ   t   _remove_fromR(   R	   t   finished_job(   R3   R]   R^   t	   resourcest   task_handlet   changest   job_sett   filet   aimt   handlet   result(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR8   q   s<    	c         C   s´   |  j  j ƒ  } |  j j } |  j ƒ  \ } } | j ƒ  } xF t | d | j ƒ  ƒ D]+ } | j | ƒ j	 ƒ  d k r} | } qS PqS Wt
 | j | ƒ d t |  j j ƒ ƒ } | | f S(   Ni   R:   (   R>   RM   R@   RN   R\   t   get_endt   ranget   lengtht   get_linet   stripRS   RT   RV   RW   (   R3   RX   RN   t   startRU   t   end_linet   i(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   _get_removed_range™   s     	c   
      C   sÎ   |  j  ƒ  \ } } d  } | rX |  j |  j k r< |  j } qX t |  j j ƒ  ƒ d } n  t |  j |  j |  j	 d | ƒ} d  } | r” |  j
 ƒ  } n  t j |  j |  j | | | | ƒ j ƒ  }	 t |  j |	 ƒ S(   Nid   t
   aim_offset(   R|   R   R&   R2   R'   RV   R-   Rf   R%   RE   t   _get_method_replacementR   Rg   RC   Rh   R	   (
   R3   Rn   R]   R^   RZ   R[   Rq   Rr   t   replacementRs   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRe   §   s     c         C   sC   |  j  ƒ  r? t j |  j j |  j j ƒ  j ƒ  ƒ } d | d Sd S(   Nt    s   pass
R:   (   t   _is_the_last_method_of_a_classR   t   get_indentsR@   RN   R>   RM   RO   (   R3   t   indents(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR~   »   s
    !c         C   s   |  j  j } t | t j ƒ s" t St j | ƒ \ } } |  j j	 } |  j
 ƒ  \ } } | | | !j ƒ  d k r‹ | | | !j ƒ  d k r‹ t St S(   NR:   (   R>   t   parentR   R   t   PyClasst   FalseR   t   get_body_regionR@   RW   R\   Rx   R   (   R3   t   pyclasst   class_startt	   class_endt   sourcet
   func_startt   func_end(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR   Â   s    c         C   s   d S(   Nt   method(    (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR9   Î   s    N(   R;   R<   R5   RF   R\   R   R†   R   R   t   NullTaskHandleR8   R|   Re   R~   R   R9   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR$   O   s   				'				R   c           B   s\   e  Z d  „  Z d „  Z e e d e e j ƒ  d „ Z	 d „  Z
 d „  Z d „  Z d „  Z RS(   c         O   sY   t  t |  ƒ j | | Ž  |  j j ƒ  d |  _ |  j j ƒ  |  _ |  j ƒ  |  j	 ƒ  d  S(   Ni    (
   R=   R   R5   R(   t   get_definition_locationR@   RA   R&   t   _check_exceptional_conditionsRF   (   R3   R6   R7   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR5   Ô   s
    
c         C   s4   t  |  j j ƒ d k r0 t j j j d ƒ ‚ n  d  S(   Ni   s4   Local variable should be assigned once for inlining.(   RV   R(   t   assignmentsR   R   R   R   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR‘   Û   s    c         C   sn  | d  k r? t j |  j ƒ r- |  j g } q? |  j j ƒ  } n  | r |  j g } | r |  j |  j k r | j |  j ƒ q n  t	 d |  j
 ƒ } | j d t | ƒ ƒ } x½ | D]µ } | j | j ƒ | |  j k r|  j | | | ƒ }	 | j t |  j |	 ƒ ƒ nU |  j | | | ƒ }
 |
 d  k	 r\t |  j |
 | |  j ƒ }
 | j t | |
 ƒ ƒ n  | j ƒ  q± W| S(   Ns   Inline variable <%s>s   Calculating changes(   R   R   t	   _is_localR(   R&   R%   R_   R2   R`   R   R1   Ra   RV   Rb   Rc   t   _change_main_moduleRd   R	   t   _change_moduleRi   RJ   Rk   (   R3   R]   R^   Rl   t   docsRm   Rn   t   jobsetR&   R‹   Rs   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR8   à   s.    	c         C   s[   d  } | r* |  j |  j k r* |  j } n  t |  j |  j |  j |  j d | d | d | ƒS(   NR]   R/   R–   (	   R   R2   R&   R/   t   _inline_variableR%   R@   R(   R1   (   R3   R]   R^   R–   R/   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR”   ý   s    c         C   s@   t  |  j |  j ƒ } t j |  j |  j | ƒ \ |  _ |  _ d  S(   N(	   t
   _getvardefR@   R(   R   RI   R%   R&   t   importedRJ   (   R3   t   vardef(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRF     s    c            sÂ   t  j ƒ  t  j ˆ  j ƒ g } | rU | ˆ  j k rU ‡  f d †  } | j d | ƒ n  t  j ˆ  j ˆ  j d | ƒ} t	 j
 | ˆ  j d | d t ƒ} | r¾ | r¾ t ˆ  j ˆ  j | | ƒ } n  | S(   Nc            s8   |  j  ƒ  \ } } ˆ  j | k  s0 | ˆ  j k  r4 t Sd  S(   N(   R.   R'   R†   (   t
   occurrenceRy   RU   (   R3   (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt	   check_aim  s    i    t   filtersR&   t   replace_primary(   R
   t   NoImportsFiltert   PyNameFilterR(   R2   t   insertt   FinderR%   R1   R   t   rename_in_moduleRš   R   Rj   (   R3   R&   R]   R^   Rž   R   t   findert   changed(    (   R3   s3   lib/python2.7/site-packages/rope/refactor/inline.pyR•   
  s    	c         C   s   d S(   Nt   variable(    (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR9     s    N(   R;   R<   R5   R‘   R   R†   R   R   R   R8   R”   RF   R•   R9   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR   Ò   s   						R!   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         O   sk   t  t |  ƒ j | | Ž  |  j ƒ  \ } } |  j j } t j | ƒ g |  _ t j	 |  j
 | | ƒ |  _ d  S(   N(   R=   R!   R5   t   _function_locationR(   t   indexR   t   ArgumentDefaultInlinert   changerst   ChangeSignatureR%   t	   signature(   R3   R6   R7   R&   R'   R©   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR5   !  s    c         C   s^   |  j  j ƒ  \ } } | j ƒ  } | j j | ƒ } t j | j ƒ } | j | ƒ } | | f S(   N(	   R(   R   RA   RN   RR   R   R,   RW   t   find_function_offset(   R3   R@   RL   R&   Ry   t   word_finderR'   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR¨   )  s    c         K   s   |  j  j |  j |  S(   s–   Get the changes needed by this refactoring

        See `rope.refactor.change_signature.ChangeSignature.get_changes()`
        for arguments.
        (   R­   R8   R«   (   R3   R7   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR8   1  s    c         C   s   d S(   Nt	   parameter(    (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR9   9  s    (   R;   R<   R5   R¨   R8   R9   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR!     s   			c         C   se   g  } xI |  D]A } | j  ƒ  } | j d ƒ rA | d  j  ƒ  } n  | j | ƒ q Wd j | ƒ } | S(   Ns   \iÿÿÿÿR€   (   Rx   t   endswithR`   t   join(   RN   t   definition_linest   unchanged_linet   linet   joined(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   _join_lines=  s    RD   c           B   sz   e  Z e ƒ  Z d
 d  „ Z d „  Z d „  Z d „  Z g  e d „ Z	 d „  Z
 d „  Z d „  Z d „  Z e d	 „  ƒ Z RS(   c         C   s‹   | |  _  | |  _ | j ƒ  |  _ |  j j ƒ  |  _ |  j ƒ  |  _ |  j ƒ  |  _	 i  |  _
 | d  k	 rr | |  _ n t j |  j ƒ |  _ d  S(   N(   R%   R>   R?   R@   RA   R&   t   _get_definition_infot   definition_infot   _get_definition_paramst   definition_paramst   _calculated_definitionsR   RG   R   RH   (   R3   R%   R>   RG   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR5   K  s    			c         C   s   t  j j j j |  j ƒ S(   N(   R   t   refactort   functionutilst   DefinitionInfoR-   R>   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR¸   X  s    c         C   sž   |  j  } t g  | j D] } | ^ q ƒ } | j d  k	 sI | j d  k	 ra t j j j	 d ƒ ‚ n  |  j
 j ƒ  d k rš |  j
 j j ƒ  | | j d d <n  | S(   Ns9   Cannot inline functions with list and keyword arguements.t   classmethodi    (   R¹   t   dictt   args_with_defaultst   args_argR   t   keywords_argR   R   R   R   R>   R9   R„   t   get_name(   R3   R¹   t   pairt	   paramdict(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRº   [  s    	"$c         C   s   |  j  j ƒ  S(   N(   R>   RÅ   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   get_function_nameg  s    c         C   s   |  j  | | | | | ƒ S(   N(   t   _calculate_definition(   R3   t   primaryR(   t   callt	   host_varst   returns(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   get_definitionj  s    c         C   sï   t  j j j j | | |  j | ƒ } |  j } t  j j j |  j | ƒ } x' | j j	 ƒ  D] \ } } | | | <qX Wd }	 g  }
 xd | j	 ƒ  D]V \ } } | | k r‹ | d  k	 r‹ |	 | d | j d d ƒ d 7}	 |
 j | ƒ q‹ q‹ W|	 |
 f S(   NR:   s    = s   
R€   (   R   R½   R¾   t   CallInfoR-   R¹   R»   t   ArgumentMappingt
   param_dictt   itemsR   t   replaceR`   (   R3   RÊ   R(   RË   t	   call_infoRÇ   t   mappingt
   param_namet   valuet   headert   to_be_inlinedR1   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   _calculate_headerp  s    	"c         C   s½  |  j  | | | ƒ \ } } | |  j } t j |  j | ƒ }	 |	 j ƒ  j ƒ  }
 g  |
 D]( } t |
 | t j	 j
 j ƒ sV | ^ qV } t t | ƒ j t | ƒ ƒ ƒ d k r_t t j ƒ } t j |  j | |  j ƒ } g  | D] } | | ^ qÜ } xj | D]_ } | | } t j |  j | | ƒ } t j | | | d | ƒ} t j |  j | |  j ƒ } qù Wn  xK | D]C } t j |  j | |  j ƒ } | | } t |  j | | | ƒ } qfW|  j | | ƒ S(   Ni    R@   (   RÚ   RG   R   t   get_string_moduleR%   RM   t	   get_namesR   R   R   t   builtinst   BuiltinNameRV   t   sett   intersectiont   nextRD   R   R&   R
   RB   R   R¤   R˜   t   _replace_returns_with(   R3   RÊ   R(   RË   RÌ   RÍ   RØ   RÙ   R‹   t   modt	   name_dictt   xt	   all_namest   prefixt   guestt   itemRC   R1   R@   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRÉ   ‚  s4    
'
	
c         C   s  g  } d  } d } xHt j ƒ  j | ƒ D]1} x(| j ƒ  j ƒ  D]\ } } | rA | d k rA | j | | | j d ƒ !ƒ | rØ |  j | | j	 d ƒ ƒ | j	 d ƒ }	 t
 | |	 t | ƒ !j ƒ  ƒ } t | ƒ } qU| j	 d ƒ }
 x0 |
 t | ƒ k  r| |
 d k r|
 d 7}
 qê W|
 } |
 t | ƒ k sB| |
 d k rU| j d ƒ qUqA qA Wq( W| j | | ƒ d j | ƒ | f S(   Ni    t   returns    	i   s   
t   passR:   (   R   RD   t   _get_return_patternt   finditert	   groupdictRÒ   R`   Ry   t   _check_nothing_after_returnRU   R·   RV   t
   splitlinesR²   (   R3   R‹   RÍ   Rs   t   returnedt   last_changedt   matcht   keyR×   t   beg_idxt   current(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRâ   ¨  s0    	"c         C   sˆ   t  j | ƒ } | j | ƒ } t  j | ƒ } | j | ƒ d } | | j | ƒ t | ƒ !j ƒ  d k r„ t j	 j
 j d d ƒ ‚ n  d  S(   Ni   R:   s(   Cannot inline functions with statements s   after return statement.(   R   t   SourceLinesAdaptert   get_line_numbert   LogicalLineFindert   logical_line_inRT   RV   Rx   R   R   R   R   (   R3   R‹   R'   RN   RL   t   logical_lines(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRï   Ã  s    (c         C   st   t  |  d ƒ sm d „  } | d d g ƒ } | d t j ƒ  g ƒ } d } t j | d | d | ƒ |  _ n  |  j S(   Nt   _return_patternc         S   s   d |  d j  | ƒ d S(   Ns   (?P<%s>t   |t   )(   R²   (   R1   t   list_(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   named_patternÐ  s    t   comments   #[^\n]*t   strings   \b(?P<return>return)\bRý   (   RQ   R   t   get_string_patternt   ret   compileRü   (   t   clsR   t   comment_patternt   string_patternt   return_pattern(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRì   Í  s    	N(   R;   R<   R   R   R5   R¸   Rº   RÈ   R†   RÎ   RÚ   RÉ   Râ   Rï   RÀ   Rì   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRD   H  s   						&		
Rf   c           B   sw   e  Z d d  „ Z d „  Z d „  Z d „  Z e e j	 d „  ƒ ƒ Z
 e e j	 d „  ƒ ƒ Z e e j	 d „  ƒ ƒ Z RS(   c         C   s(   | |  _  | |  _ | |  _ | |  _ d S(   s‡   Inlines occurrences

        If `aim` is not `None` only the occurrences that intersect
        `aim` offset will be inlined.

        N(   R%   t	   generatorR&   Rq   (   R3   R%   R&   t   definition_generatorR}   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR5   Þ  s    			c         C   s(   | j  ƒ  s$ t j j j d ƒ ‚ n  d  S(   Ns1   Cannot inline functions that reference themselves(   t
   is_definedR   R   R   R   (   R3   t   change_collectorRœ   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   occurred_inside_skipë  s    c         C   s4  | j  ƒ  \ } } | j ƒ  r" d  S| j ƒ  sV t j j j d |  j j | f ƒ ‚ n  |  j	 d  k	 r‡ |  j	 | k  sƒ |  j	 | k r‡ d  S|  j |  j | d ƒ } |  j j | ƒ } |  j j j | ƒ \ } } |  j j | ƒ }	 |  j j | ƒ }
 |  j |	 | !j ƒ  d k p&|  j | |
 !j ƒ  d k } t j |  j | ƒ } | j ƒ  \ } } |  j } | j j | ƒ } |  j j | | |  j | | !| j ƒ  d | ƒ\ } } t |
 d t |  j ƒ ƒ } | j |	 | t j  | | ƒ ƒ | r0| } | d  k rþd } n  | j |
 | |  j |	 | !| |  j | | !ƒ n  d  S(   NsQ   Reference to inlining function other than function call in <file: %s, offset: %d>i   R:   RÍ   R   (!   R.   t   is_in_import_statementt	   is_calledR   R   R   R   R&   Rc   Rq   R   t   _find_end_parensR‹   RN   Rø   R@   Rû   Rú   RR   RT   Rx   R   R‚   t   get_primary_and_pynameRX   t   get_inner_scope_for_lineR
  RÎ   RÜ   RS   RV   Rd   t   fix_indentation(   R3   R  Rœ   Ry   RU   t
   end_parensRL   RY   Rz   t
   line_startt   line_endRÍ   Rƒ   RÊ   R(   t   hostRX   t
   definitionRñ   R1   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   occurred_outside_skipð  sD    -			c         C   s    t  j | ƒ } | j | ƒ d S(   Ni   (   R   R,   t   get_word_parens_range(   R3   R‹   R'   R¥   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR    s    c         C   s   |  j  j |  j ƒ S(   N(   R%   t   get_pymoduleR&   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR@     s    c         C   s*   |  j  d  k	 r |  j  j ƒ  S|  j j Sd  S(   N(   R&   R   R-   R@   RW   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR‹   "  s    c         C   s
   |  j  j S(   N(   R@   RN   (   R3   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRN   *  s    N(   R;   R<   R   R5   R  R  R  t   propertyR   t   saveitR@   R‹   RN   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRf   Ü  s   		)	c         C   sË   t  | | ƒ } t | | ƒ \ } }	 t j |  | | d | ƒ}
 t j |
 | d | d t d t d | ƒ} | d  k r | j	 } n  | rÁ t
 j | ƒ } | | j | ƒ  | | j |	 ƒ d } n | } | S(   NR–   R@   RŸ   t   writesR/   i   (   R™   t   _assigned_linenoR
   RB   R   R¤   R   R†   R   RW   R   R÷   RR   RT   (   R%   R@   R(   R1   R]   R/   R–   R  Ry   RU   RC   t   changed_sourceRN   R‹   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR˜   0  s    	c   	      C   s¢   | j  d } |  j } t |  | ƒ \ } } t g  t | | d ƒ D] } | j | ƒ ^ qB ƒ } | j r t j j	 j
 d ƒ ‚ n  | | j d ƒ d j ƒ  } | S(   Ni    i   s    Cannot inline tuple assignments.t   =(   R’   RN   R   R·   Ru   Rw   t   levelsR   R   R   R   R©   Rx   (	   R@   R(   t
   assignmentRN   Ry   RU   R   t   definition_with_assignmentR  (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR™   E  s    	2		c         C   s#   | j  d j j } |  j j | ƒ S(   Ni    (   R’   t   ast_nodeRL   Rû   Rú   (   R@   R(   t   definition_line(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR   S  s    c         C   s˜   | s
 | St  j |  | | ƒ } t j |  | ƒ } x | D] } | j | ƒ q8 W| j ƒ  } t  j |  | | ƒ } t j |  ƒ } | j | d t d t ƒS(   Nt   unusedt   sort(	   R   RÛ   R   t   get_module_importst
   add_importt   get_changed_sourcet   ImportToolst   organize_importsR†   (   R%   R‹   R&   RJ   R@   t   module_importt   import_infot   import_tools(    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRi   X  s    c         C   sF   |  j  | ƒ } t j | | ƒ } t | t j ƒ rB | j ƒ  } n  | S(   N(   R  R   t   eval_locationR   R    R   R   (   R%   R&   R'   R@   R(   (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyR   e  s
    c         C   s>   t  j |  | | ƒ } t j |  | ƒ } | j | ƒ | j ƒ  S(   N(   R   RÛ   R   R*  t   remove_pynameR,  (   R%   R(   R‹   R&   R@   R/  (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyRj   m  s    (*   R  t   rope.base.exceptionsR   t   rope.refactor.functionutilst	   rope.baseR    R   R   R   R   R   R   R   t   rope.base.changeR   R	   t   rope.refactorR
   R   R   R   R   R   R   R*   t   objectR+   R$   R   R!   R·   RD   Rf   R   R   R†   R˜   R™   R   Ri   R   Rj   (    (    (    s3   lib/python2.7/site-packages/rope/refactor/inline.pyt   <module>   s(   :.		ƒM	”U				