
    i                         S r S rS rS rg)z
Utilities.c                     ^ U  Vs/ s H  oR                   PM     nn/ n[        U6  H8  nUS   m[        U4S jUSS  5       5      (       a  UR                  T5        M8    O   [	        U5      $ s  snf )a	  
Determine common ancestors of `nodes`.

>>> from anytree import Node, util
>>> udo = Node("Udo")
>>> marc = Node("Marc", parent=udo)
>>> lian = Node("Lian", parent=marc)
>>> dan = Node("Dan", parent=udo)
>>> jet = Node("Jet", parent=dan)
>>> jan = Node("Jan", parent=dan)
>>> joe = Node("Joe", parent=dan)

>>> util.commonancestors(jet, joe)
(Node('/Udo'), Node('/Udo/Dan'))
>>> util.commonancestors(jet, marc)
(Node('/Udo'),)
>>> util.commonancestors(jet)
(Node('/Udo'), Node('/Udo/Dan'))
>>> util.commonancestors()
()
    c              3   ,   >#    U  H	  nTUL v   M     g 7f)N ).0p
parentnodes     B/app/mltbenv/lib/python3.13/site-packages/anytree/util/__init__.py	<genexpr>"commonancestors.<locals>.<genexpr>   s     81zQs      N)	ancestorszipallappendtuple)nodesnoder   commonparentnodesr   s        @r	   commonancestorsr      sn    , -22EDEI2FI ^
8AB888MM*% ' = 3s   A.c                     U R                   (       a5  U R                   R                  nUR                  U 5      nU(       a  XS-
     $ g)ap  
Return Left Sibling of `node`.

>>> from anytree import Node, util
>>> dan = Node("Dan")
>>> jet = Node("Jet", parent=dan)
>>> jan = Node("Jan", parent=dan)
>>> joe = Node("Joe", parent=dan)
>>> print(util.leftsibling(dan))
None
>>> print(util.leftsibling(jet))
None
>>> print(util.leftsibling(jan))
Node('/Dan/Jet')
>>> print(util.leftsibling(joe))
Node('/Dan/Jan')
r   N)parentchildrenindexr   	pchildrenidxs      r	   leftsiblingr   %   s;    $ {{KK((	ood#1W%%    c                     U R                   (       a/  U R                   R                  nUR                  U 5      n XS-      $ g! [         a     gf = f)au  
Return Right Sibling of `node`.

>>> from anytree import Node, util
>>> dan = Node("Dan")
>>> jet = Node("Jet", parent=dan)
>>> jan = Node("Jan", parent=dan)
>>> joe = Node("Joe", parent=dan)
>>> print(util.rightsibling(dan))
None
>>> print(util.rightsibling(jet))
Node('/Dan/Jan')
>>> print(util.rightsibling(jan))
Node('/Dan/Joe')
>>> print(util.rightsibling(joe))
None
r   N)r   r   r   
IndexErrorr   s      r	   rightsiblingr"   ?   sS    $ {{KK((	ood#	1W%%   		s   A 
AAN)__doc__r   r   r"   r   r   r	   <module>r$      s    B4r   