
    ^j                         d Z d Zd Zd Zy)z
Utilities.c                      | D cg c]  }|j                    }}g }t        | D ];  }|d   t        fd|dd D              r|j                         1 t	        |      S  t	        |      S c c}w )aQ  
    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   &   K   | ]  }|u  
 y w)N ).0p
parentnodes     N/opt/ringagent/.cad-venv/lib/python3.12/site-packages/anytree/util/__init__.py	<genexpr>z"commonancestors.<locals>.<genexpr>   s     81zQ8s      N)	ancestorszipallappendtuple)nodesnoder   commonparentnodesr   s        @r	   commonancestorsr      s{    , -22D2I2FI  ^
8AB88MM*%= = 3s   A.c                 ~    | j                   r1| j                   j                  }|j                  |       }|r||dz
     S y)a  
    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#S1W%%    c                     | j                   r0| j                   j                  }|j                  |       }	 ||dz      S y# t        $ r Y yw xY w)a  
    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!   ?   sU    $ {{KK((	ood#	S1W%%   		s   > 	A
	A
N)__doc__r   r   r!   r   r   r	   <module>r#      s    B4r   