
    ^jm                     >    d dl mZ ddlmZ ddlmZ  G d de      Zy)    )
ASSERTIONS   )AbstractIter)LevelOrderGroupIterc                        e Zd ZdZed        Zy)ZigZagGroupItera  
    Iterate over tree applying Zig-Zag strategy with grouping starting at `node`.

    Return a tuple of nodes for each level. The first tuple contains the
    nodes at level 0 (always `node`). The second tuple contains the nodes at level 1
    (children of `node`) in reversed order.
    The next level contains the children of the children in forward order, and so on.

    >>> from anytree import Node, RenderTree, AsciiStyle, ZigZagGroupIter
    >>> f = Node("f")
    >>> b = Node("b", parent=f)
    >>> a = Node("a", parent=b)
    >>> d = Node("d", parent=b)
    >>> c = Node("c", parent=d)
    >>> e = Node("e", parent=d)
    >>> g = Node("g", parent=f)
    >>> i = Node("i", parent=g)
    >>> h = Node("h", parent=i)
    >>> print(RenderTree(f, style=AsciiStyle()).by_attr())
    f
    |-- b
    |   |-- a
    |   +-- d
    |       |-- c
    |       +-- e
    +-- g
        +-- i
            +-- h
    >>> [[node.name for node in children] for children in ZigZagGroupIter(f)]
    [['f'], ['g', 'b'], ['a', 'd', 'i'], ['h', 'e', 'c']]
    >>> [[node.name for node in children] for children in ZigZagGroupIter(f, maxlevel=3)]
    [['f'], ['g', 'b'], ['a', 'd', 'i']]
    >>> [[node.name for node in children]
    ...  for children in ZigZagGroupIter(f, filter_=lambda n: n.name not in ('e', 'g'))]
    [['f'], ['b'], ['a', 'd', 'i'], ['h', 'c']]
    >>> [[node.name for node in children]
    ...  for children in ZigZagGroupIter(f, stop=lambda n: n.name == 'd')]
    [['f'], ['g', 'b'], ['a', 'i'], ['h']]
    c              #      K   | rVt         rt        |       dk(  sJ t        | d   |||      }	 	 t        |       t	        t        t        |                   .y # t        $ r Y y w xY ww)Nr   r   )r   lenr   nexttuplereversedStopIteration)childrenfilter_stopmaxlevel_iters        Z/opt/ringagent/.cad-venv/lib/python3.12/site-packages/anytree/iterators/zigzaggroupiter.pyr   zZigZagGroupIter._iter0   su     8})))'WdHMEu+%e 566 	  % s(   +A+,A A+	A(%A+'A((A+N)__name__
__module____qualname____doc__staticmethodr        r   r   r      s    &P 
 
r   r   N)anytree.configr   abstractiterr   levelordergroupiterr   r   r   r   r   <module>r      s    % & 44l 4r   