
    ÆeF                     (    d Z ddlmZ  G d d      Zy)a  For performing many refactorings as a single command

`changestack` module can be used to perform many refactorings on top
of each other as one bigger command.  It can be used like::

  stack = ChangeStack(project, 'my big command')

  #..
  stack.push(refactoring1.get_changes())
  #..
  stack.push(refactoring2.get_changes())
  #..
  stack.push(refactoringX.get_changes())

  stack.pop_all()
  changes = stack.merged()

Now `changes` can be previewed or performed as before.
    )changec                   ,    e Zd ZddZd Zd Zd Zd Zy)ChangeStackc                 .    || _         || _        g | _        y N)projectdescriptionstack)selfr   r	   s      :/usr/lib/python3/dist-packages/rope/contrib/changestack.py__init__zChangeStack.__init__   s    &
    c                 p    | j                   j                  |       | j                  j                  |       y r   )r
   appendr   do)r   changess     r   pushzChangeStack.push   s$    

'" r   c                     t        t        | j                              D ](  }| j                  j                  j                  d       * y )NT)drop)rangelenr
   r   historyundo)r   is     r   pop_allzChangeStack.pop_all"   s9    s4::' 	1ALL  %%4%0	1r   c                     t        j                  | j                        }| j                  D ])  }| j	                  |      D ]  }|j                  |        + |S r   )r   	ChangeSetr	   r
   _basic_changes
add_change)r   resultr   cs       r   mergedzChangeStack.merged&   sZ    !!$"2"23zz 	%G((1 %!!!$%	% r   c              #      K   t        |t        j                        r+|j                  D ]  }| j	                  |      E d {     y | y 7 wr   )
isinstancer   r   r   r   )r   r   childs      r   r   zChangeStack._basic_changes-   sI     gv//0  6..u5556 M 6s   >A AAN)zmerged changes)__name__
__module____qualname__r   r   r   r"   r    r   r   r   r      s    
!1r   r   N)__doc__	rope.baser   r   r)   r   r   <module>r,      s   (  r   