
    ^j                     &    d dl mZ  G d de      Zy)   )AbstractIterc                   0    e Zd ZdZed        Zed        Zy)LevelOrderGroupItera  
    Iterate over tree applying level-order 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`). The next level contains the children of the children, and so on.

    >>> from anytree import Node, RenderTree, AsciiStyle, LevelOrderGroupIter
    >>> 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 LevelOrderGroupIter(f)]
    [['f'], ['b', 'g'], ['a', 'd', 'i'], ['c', 'e', 'h']]
    >>> [[node.name for node in children] for children in LevelOrderGroupIter(f, maxlevel=3)]
    [['f'], ['b', 'g'], ['a', 'd', 'i']]
    >>> [[node.name for node in children]
    ...  for children in LevelOrderGroupIter(f, filter_=lambda n: n.name not in ('e', 'g'))]
    [['f'], ['b'], ['a', 'd', 'i'], ['c', 'h']]
    >>> [[node.name for node in children]
    ...  for children in LevelOrderGroupIter(f, stop=lambda n: n.name == 'd')]
    [['f'], ['b', 'g'], ['a', 'i'], ['h']]
    c              #      K   d}| rLt        fd| D               |dz  }t        j                  ||      ry t        j	                  | |      } | rKy y w)Nr   c              3   4   K   | ]  } |      s|  y wN ).0childfilter_s     ^/opt/ringagent/.cad-venv/lib/python3.12/site-packages/anytree/iterators/levelordergroupiter.py	<genexpr>z,LevelOrderGroupIter._iter.<locals>.<genexpr>0   s     F%wu~Fs   )tupler   _abort_at_levelr   _get_grandchildren)childrenr   stopmaxlevellevels    `   r   _iterzLevelOrderGroupIter._iter,   sS     F8FFFQJE++E8<*==hMH s   AAAc                 ^    g }| D ]%  }|t        j                  |j                  |      z   }' |S r   )r   _get_childrenr   )r   r   next_childrenr   s       r   r   z&LevelOrderGroupIter._get_grandchildren6   s:     	]E)L,F,Fu~~W[,\\M	]    N)__name__
__module____qualname____doc__staticmethodr   r   r	   r   r   r   r      s2    %N N N  r   r   N)abstractiterr   r   r	   r   r   <module>r!      s    &7, 7r   