Ë
    Ñwìió'  ã                   óÜ   — d Z ddlZddlmZ  ej                  dd«      Z G d„ d«      Z G d	„ d
e«      Z G d„ de«      Z e«       Z	 G d„ de«      Z
 G d„ de«      Z G d„ d«      Zd„ Zd„ Zy)z¦
Tree Rendering.

* :any:`RenderTree` using the following styles:
    * :any:`AsciiStyle`
    * :any:`ContStyle`
    * :any:`ContRoundStyle`
    * :any:`DoubleStyle`
é    Né   )Ú
ASSERTIONSÚRow)ÚpreÚfillÚnodec                   ó8   ‡ — e Zd ZdZˆ fd„Zed„ «       Zd„ Zˆ xZS )ÚAbstractStylez¨
    Tree Render Style.

    Args:

        vertical: Sign for vertical line.

        cont: Chars for a continued branch.

        end: Chars for the last branch.
    c                 óÌ   •— t         ‰| �  «        || _        || _        || _        t
        r:t        |«      t        |«      cxk(  rt        |«      k(  sn J d|› d|› d|› d�«       ‚y y )NÚ'z', 'z' and 'z' need to have equal length)ÚsuperÚ__init__ÚverticalÚcontÚendr   Úlen)Úselfr   r   r   Ú	__class__s       €ú_/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/anytree/render.pyr   zAbstractStyle.__init__   sj   ø€ Ü‰ÑÔØ ˆŒØˆŒ	ØˆŒÝÜ�t“9¤ H£Ô9´°S³Ô9ð Ø�H�:˜T $  w¨s¨eÐ3NÐOóÑ9ð ó    c                 ó2   — dt        | j                  «      z  S )zEmpty string as placeholder.Ú )r   r   ©r   s    r   ÚemptyzAbstractStyle.empty)   s   € ð ”S˜Ÿ™“]Ñ"Ð"r   c                 ó8   — | j                   j                  }|› d�S )Nz())r   Ú__name__)r   Ú	classnames     r   Ú__repr__zAbstractStyle.__repr__.   s   € Ø—N‘N×+Ñ+ˆ	Ø�˜BÐÐr   )	r   Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r   Ú__classcell__©r   s   @r   r
   r
      s&   ø„ ñ
ôð ñ#ó ð#ö r   r
   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú
AsciiStyleaÃ  
    Ascii style.

    >>> from anytree import Node, RenderTree
    >>> root = Node("root")
    >>> s0 = Node("sub0", parent=root)
    >>> s0b = Node("sub0B", parent=s0)
    >>> s0a = Node("sub0A", parent=s0)
    >>> s1 = Node("sub1", parent=root)

    >>> print(RenderTree(root, style=AsciiStyle()))
    Node('/root')
    |-- Node('/root/sub0')
    |   |-- Node('/root/sub0/sub0B')
    |   +-- Node('/root/sub0/sub0A')
    +-- Node('/root/sub1')
    c                 ó(   •— t         ‰| �  ddd«       y )Nz|   z|-- z+-- ©r   r   ©r   r   s    €r   r   zAsciiStyle.__init__F   s   ø€ Ü‰Ñ˜ ¨Õ0r   ©r   r   r    r!   r   r#   r$   s   @r   r&   r&   3   s   ø„ ñ÷$1ð 1r   r&   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú	ContStyleuð  
    Continued style, without gaps.

    >>> from anytree import Node, RenderTree
    >>> root = Node("root")
    >>> s0 = Node("sub0", parent=root)
    >>> s0b = Node("sub0B", parent=s0)
    >>> s0a = Node("sub0A", parent=s0)
    >>> s1 = Node("sub1", parent=root)

    >>> print(RenderTree(root, style=ContStyle()))
    Node('/root')
    â”œâ”€â”€ Node('/root/sub0')
    â”‚   â”œâ”€â”€ Node('/root/sub0/sub0B')
    â”‚   â””â”€â”€ Node('/root/sub0/sub0A')
    â””â”€â”€ Node('/root/sub1')
    c                 ó(   •— t         ‰| �  ddd«       y )Nõ   â”‚   õ
   â”œâ”€â”€ u
   â””â”€â”€ r(   r)   s    €r   r   zContStyle.__init__]   ó   ø€ Ü‰Ñ˜Ð&;Ð=RÕSr   r*   r$   s   @r   r,   r,   J   ó   ø„ ñ÷$Tð Tr   r,   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚContRoundStyleu  
    Continued style, without gaps, round edges.

    >>> from anytree import Node, RenderTree
    >>> root = Node("root")
    >>> s0 = Node("sub0", parent=root)
    >>> s0b = Node("sub0B", parent=s0)
    >>> s0a = Node("sub0A", parent=s0)
    >>> s1 = Node("sub1", parent=root)

    >>> print(RenderTree(root, style=ContRoundStyle()))
    Node('/root')
    â”œâ”€â”€ Node('/root/sub0')
    â”‚   â”œâ”€â”€ Node('/root/sub0/sub0B')
    â”‚   â•°â”€â”€ Node('/root/sub0/sub0A')
    â•°â”€â”€ Node('/root/sub1')
    c                 ó(   •— t         ‰| �  ddd«       y )Nr.   r/   u
   â•°â”€â”€ r(   r)   s    €r   r   zContRoundStyle.__init__w   r0   r   r*   r$   s   @r   r3   r3   d   r1   r   r3   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚDoubleStyleuó  
    Double line style, without gaps.

    >>> from anytree import Node, RenderTree
    >>> root = Node("root")
    >>> s0 = Node("sub0", parent=root)
    >>> s0b = Node("sub0B", parent=s0)
    >>> s0a = Node("sub0A", parent=s0)
    >>> s1 = Node("sub1", parent=root)

    >>> print(RenderTree(root, style=DoubleStyle))
    Node('/root')
    â• â•�â•� Node('/root/sub0')
    â•‘   â• â•�â•� Node('/root/sub0/sub0B')
    â•‘   â•šâ•�â•� Node('/root/sub0/sub0A')
    â•šâ•�â•� Node('/root/sub1')

    c                 ó(   •— t         ‰| �  ddd«       y )Nu   â•‘   u
   â• â•�â•� u
   â•šâ•�â•� r(   r)   s    €r   r   zDoubleStyle.__init__�   r0   r   r*   r$   s   @r   r6   r6   {   s   ø„ ñ÷&Tð Tr   r6   c                   óP   — e Zd ZdZeedfd„Zd„ Zd
d„Ze	d„ «       Z
d„ Zd„ Zdd	„Zy)Ú
RenderTreeuN  
    Render tree starting at `node`.

    Keyword Args:
        style (AbstractStyle): Render Style.
        childiter: Child iterator.
        maxlevel: Limit rendering to this depth.

    :any:`RenderTree` is an iterator, returning a tuple with 3 items:

    `pre`
        tree prefix.

    `fill`
        filling for multiline entries.

    `node`
        :any:`NodeMixin` object.

    It is up to the user to assemble these parts to a whole.

    >>> from anytree import Node, RenderTree
    >>> root = Node("root", lines=["c0fe", "c0de"])
    >>> s0 = Node("sub0", parent=root, lines=["ha", "ba"])
    >>> s0b = Node("sub0B", parent=s0, lines=["1", "2", "3"])
    >>> s0a = Node("sub0A", parent=s0, lines=["a", "b"])
    >>> s1 = Node("sub1", parent=root, lines=["Z"])

    Simple one line:

    >>> for pre, _, node in RenderTree(root):
    ...     print("%s%s" % (pre, node.name))
    root
    â”œâ”€â”€ sub0
    â”‚   â”œâ”€â”€ sub0B
    â”‚   â””â”€â”€ sub0A
    â””â”€â”€ sub1

    Multiline:

    >>> for pre, fill, node in RenderTree(root):
    ...     print("%s%s" % (pre, node.lines[0]))
    ...     for line in node.lines[1:]:
    ...         print("%s%s" % (fill, line))
    c0fe
    c0de
    â”œâ”€â”€ ha
    â”‚   ba
    â”‚   â”œâ”€â”€ 1
    â”‚   â”‚   2
    â”‚   â”‚   3
    â”‚   â””â”€â”€ a
    â”‚       b
    â””â”€â”€ Z

    `maxlevel` limits the depth of the tree:

    >>> print(RenderTree(root, maxlevel=2))
    Node('/root', lines=['c0fe', 'c0de'])
    â”œâ”€â”€ Node('/root/sub0', lines=['ha', 'ba'])
    â””â”€â”€ Node('/root/sub1', lines=['Z'])

    The `childiter` is responsible for iterating over child nodes at the
    same level. An reversed order can be achieved by using `reversed`.

    >>> for row in RenderTree(root, childiter=reversed):
    ...     print("%s%s" % (row.pre, row.node.name))
    root
    â”œâ”€â”€ sub1
    â””â”€â”€ sub0
        â”œâ”€â”€ sub0A
        â””â”€â”€ sub0B

    Or writing your own sort function:

    >>> def mysort(items):
    ...     return sorted(items, key=lambda item: item.name)
    >>> for row in RenderTree(root, childiter=mysort):
    ...     print("%s%s" % (row.pre, row.node.name))
    root
    â”œâ”€â”€ sub0
    â”‚   â”œâ”€â”€ sub0A
    â”‚   â””â”€â”€ sub0B
    â””â”€â”€ sub1

    :any:`by_attr` simplifies attribute rendering and supports multiline:

    >>> print(RenderTree(root).by_attr())
    root
    â”œâ”€â”€ sub0
    â”‚   â”œâ”€â”€ sub0B
    â”‚   â””â”€â”€ sub0A
    â””â”€â”€ sub1
    >>> print(RenderTree(root).by_attr("lines"))
    c0fe
    c0de
    â”œâ”€â”€ ha
    â”‚   ba
    â”‚   â”œâ”€â”€ 1
    â”‚   â”‚   2
    â”‚   â”‚   3
    â”‚   â””â”€â”€ a
    â”‚       b
    â””â”€â”€ Z

    And can be a function:

    >>> print(RenderTree(root).by_attr(lambda n: " ".join(n.lines)))
    c0fe c0de
    â”œâ”€â”€ ha ba
    â”‚   â”œâ”€â”€ 1 2 3
    â”‚   â””â”€â”€ a b
    â””â”€â”€ Z
    Nc                 ój   — t        |t        «      s |«       }|| _        || _        || _        || _        y )N)Ú
isinstancer
   r   ÚstyleÚ	childiterÚmaxlevel)r   r   r<   r=   r>   s        r   r   zRenderTree.__init__  s/   € Ü˜%¤Ô/Ù“GˆEØˆŒ	ØˆŒ
Ø"ˆŒØ ˆ�r   c                 ó:   — | j                  | j                  d«      S )N© )Ú_RenderTree__nextr   r   s    r   Ú__iter__zRenderTree.__iter__  s   € Ø�{‰{˜4Ÿ9™9 bÓ)Ð)r   c              #   óB  K  — t         j                  ||| j                  «      –— |dz  }| j                  �|| j                  k  rV|j                  }|rG| j                  |«      }t        |«      D ]'  \  }}| j                  |g |¢| ‘­|¬«      E d {  –—†  Œ) y y y 7 Œ	­w)Nr   )Úlevel)r9   Ú_RenderTree__itemr<   r>   Úchildrenr=   Ú_is_lastrA   )r   r   Ú	continuesrD   rF   ÚchildÚis_lasts          r   Ú__nextzRenderTree.__next  s    è ø€ Ü×Ñ  i°·±Ó<Ò<Ø�‰
ˆØ�=‰=Ð  E¨D¯M©MÒ$9Ø—}‘}ˆHÙØŸ>™>¨(Ó3�Ü&.¨xÖ&8‘N�E˜7Ø#Ÿ{™{¨5Ð2K°IÐ2KÀ7¸{Ñ2KÐSX˜{ÓY×YÑYñ '9ð ð %:ð
 Zús   ‚BBÂBÂ
Bc                 ó   — |st        dd| «      S |D �cg c]  }|r|j                  n|j                  ‘Œ }}dj                  |d d «      }|d   r|j                  n|j
                  }||z   }dj                  |«      }t        ||| «      S c c}w )NÚ éÿÿÿÿ)r   r   r   Újoinr   r   )	r   rH   r<   r   ÚitemsÚindentÚbranchr   r   s	            r   Ú__itemzRenderTree.__item  s‹   € áÜ�r˜2˜tÓ$Ð$ÙENÓOÁY¸T¡4�—’¨U¯[©[Ñ8ÀYˆÐOØ—‘˜˜s ˜Ó$ˆØ(¨š}�—’°%·)±)ˆØ�v‰oˆØ�w‰w�u‹~ˆÜ�3˜˜dÓ#Ð#ùò Ps   ”!Bc                 ó:   ‡ — ˆ fd„}dj                   |«       «      S )Nc               3   óÎ   •K  — ‰D ][  } t        | j                  «      j                  «       xs dg}| j                  › |d   › �–— |dd  D ]  }| j                  › |› �–— Œ Œ] y ­w©NrM   r   r   )Úreprr   Ú
splitlinesr   r   )ÚrowÚlinesÚliner   s      €r   ÚgetzRenderTree.__str__.<locals>.get(  sh   øè ø€ Û�Ü˜SŸX™X›×1Ñ1Ó3Ò;¸°t�ØŸ™˜	 %¨¡( Ð,Ò,Ø! ! "›I�DØ ŸX™X˜J t fÐ-Ó-ñ &ñ ùs   ƒA"A%Ú
©rO   )r   r\   s   ` r   Ú__str__zRenderTree.__str__'  s   ø€ ô	.ð �y‰y™›ÓÐr   c                 óÔ   — | j                   j                  }t        | j                  «      d| j                  ›�d| j
                  ›�g}dj                  |dj                  |«      «      S )Nzstyle=z
childiter=z{}({})z, )r   r   rW   r   r<   r=   ÚformatrO   )r   r   Úargss      r   r   zRenderTree.__repr__1  sU   € Ø—N‘N×+Ñ+ˆ	Ü�T—Y‘Y“ 6¨$¯*©*¨Ð!8¸JÀtÇ~Á~ÐFXÐ:YÐZˆØ�‰˜y¨$¯)©)°D«/Ó:Ð:r   c                 ó>   ‡ ‡— ˆˆ fd„}dj                   |«       «      S )ub  
        Return rendered tree with node attribute `attrname`.

        >>> from anytree import AnyNode, RenderTree
        >>> root = AnyNode(id="root")
        >>> s0 = AnyNode(id="sub0", parent=root)
        >>> s0b = AnyNode(id="sub0B", parent=s0, foo=4, bar=109)
        >>> s0a = AnyNode(id="sub0A", parent=s0)
        >>> s1 = AnyNode(id="sub1", parent=root)
        >>> s1a = AnyNode(id="sub1A", parent=s1)
        >>> s1b = AnyNode(id="sub1B", parent=s1, bar=8)
        >>> s1c = AnyNode(id="sub1C", parent=s1)
        >>> s1ca = AnyNode(id="sub1Ca", parent=s1c)
        >>> print(RenderTree(root).by_attr('id'))
        root
        â”œâ”€â”€ sub0
        â”‚   â”œâ”€â”€ sub0B
        â”‚   â””â”€â”€ sub0A
        â””â”€â”€ sub1
            â”œâ”€â”€ sub1A
            â”œâ”€â”€ sub1B
            â””â”€â”€ sub1C
                â””â”€â”€ sub1Ca

        c               3   óì   •K  — t        ‰«      r.‰D ](  }  ‰| j                  «      }t        | |«      E d {  –—†  Œ* y ‰D ]-  } t        | j                  ‰d«      }t        | |«      E d {  –—†  Œ/ y 7 Œ:7 Œ	­w)NrM   )Úcallabler   Ú_format_row_anyÚgetattr)rY   ÚattrÚattrnamer   s     €€r   r\   zRenderTree.by_attr.<locals>.getQ  sp   øè ø€ Ü˜Ô!Û�CÙ# C§H¡HÓ-�DÜ.¨s°DÓ9×9Ñ9ñ  ó  �CÜ" 3§8¡8¨X°rÓ:�DÜ.¨s°DÓ9×9Ñ9ñ  ð :øð :ús!   ƒ2A4µA0¶2A4Á(A2Á)A4Á2A4r]   r^   )r   ri   r\   s   `` r   Úby_attrzRenderTree.by_attr6  s   ù€ õ6	:ð �y‰y™›ÓÐr   )r   )Úname)r   r   r    r!   Ú
CONT_STYLEÚlistr   rB   rA   ÚstaticmethodrE   r_   r   rj   r@   r   r   r9   r9   “   sE   „ ñqðf $.¸Èó !ò*óZð ñ$ó ð$ò ò;ô
% r   r9   c              #   óæ   K  — t        |t        t        f«      r|xs dg}nt        |«      j	                  «       xs dg}| j
                  › |d   › �–— |dd  D ]  }| j                  › |› �–— Œ y ­wrV   )r;   rm   ÚtupleÚstrrX   r   r   )rY   rh   rZ   r[   s       r   rf   rf   ^  sr   è ø€ Ü�$œœu˜Ô&Ø’˜˜‰ä�D“	×$Ñ$Ó&Ò.¨2¨$ˆØ�W‰WˆI�e˜A‘h�ZÐ
 Ò Ø�a�b“	ˆØ—‘�
˜4˜&Ð!Ó!ñ ùs   ‚A/A1c              #   ó°   K  — t        | «      }	 t        |«      }|}	 	 t        |«      }|df–— |}Œ# t        $ r	 |df–— Y y w xY w# t        $ r Y y w xY w­w)NTF)ÚiterÚnextÚStopIteration)ÚiterableÚiter_ÚnextitemÚitems       r   rG   rG   h  s{   è ø€ Ü�‹N€EðÜ˜“;ˆð ˆØðÜ ›;�Ø˜E�kÒ!ð ˆDð øô !ò Ø �nÒ$Ùðûô ò ÙðüsG   ‚A�A šAž2 ¯A²AÁAÁAÁAÁ	AÁAÁAÁA)r!   ÚcollectionsÚconfigr   Ú
namedtupler   r
   r&   r,   rl   r3   r6   r9   rf   rG   r@   r   r   Ú<module>r}      sˆ   ðñó å à€k×Ñ˜UÐ$;Ó<€÷ ñ  ôB1�ô 1ô.T�ô Tñ. ‹[€
ôT�]ô Tô.T�-ô T÷0H ñ H òV"ór   