
    i                     &    S SK Jr   " S S\5      rg)   )AbstractIterc                   8    \ rS rSrSr\S 5       r\S 5       rSrg)LevelOrderGroupIter   aQ  
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              #      ^#    SnU (       aW  [        U4S jU  5       5      v   US-  n[        R                  " XC5      (       a  g [        R	                  X5      n U (       a  MV  g g 7f)Nr   c              3   F   >#    U  H  nT" U5      (       d  M  Uv   M     g 7fN ).0childfilter_s     R/app/mltbenv/lib/python3.13/site-packages/anytree/iterators/levelordergroupiter.py	<genexpr>,LevelOrderGroupIter._iter.<locals>.<genexpr>0   s     F8%wu~8s   !	!)tupler   _abort_at_levelr   _get_grandchildren)childrenr   stopmaxlevellevels    `   r   _iterLevelOrderGroupIter._iter,   sS     F8FFFQJE++E<<*==hMH hs   AA%#A%c                 d    / nU  H'  nU[         R                  " UR                  U5      -   nM)     U$ r	   )r   _get_childrenr   )r   r   next_childrenr   s       r   r   &LevelOrderGroupIter._get_grandchildren6   s3    E)L,F,Fu~~W[,\\M     r
   N)	__name__
__module____qualname____firstlineno____doc__staticmethodr   r   __static_attributes__r
   r   r   r   r      s2    %N N N  r   r   N)abstractiterr   r   r
   r   r   <module>r'      s    &7, 7r   