
    cF                     0    d Z ddlmZ  G d d          ZdS )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dS )	ChangeStackmerged changesc                 0    || _         || _        g | _        d S N)projectdescriptionstack)selfr	   r
   s      8lib/python3.11/site-packages/rope/contrib/changestack.py__init__zChangeStack.__init__   s    &


    c                 n    | j                             |           | j                            |           d S r   )r   appendr	   do)r   changess     r   pushzChangeStack.push   s2    
'"""     r   c                     t          t          | j                            D ]"}| j        j                            d           #d S )NT)drop)rangelenr   r	   historyundo)r   is     r   pop_allzChangeStack.pop_all"   sJ    s4:'' 	1 	1AL %%4%0000	1 	1r   c                     t          j        | j                  }| j        D ]/}|                     |          D ]}|                    |           0|S r   )r   	ChangeSetr
   r   _basic_changes
add_change)r   resultr   cs       r   mergedzChangeStack.merged&   sd    !$"233z 	% 	%G((11 % %!!!$$$$%r   c              #      K   t          |t          j                  r'|j        D ]}|                     |          E d {V  d S |V  d S r   )
isinstancer   r   r   r   )r   r   childs      r   r   zChangeStack._basic_changes-   sn      gv/00 	  6 6..u55555555556 6 MMMMMr   N)r   )__name__
__module____qualname__r   r   r   r#   r    r   r   r   r      sd           
! ! !1 1 1      r   r   N)__doc__	rope.baser   r   r*   r   r   <module>r-      sU    (               r   