σ
    ΘμΣi­  γ                   σ2    S SK Jr  S SKJr   " S S\5      rg)ι   )Ϊ	NodeMixin©Ϊ_reprc                   σ(    \ rS rSrSrSS jrS rSrg)ΪAnyNodeι   u2
  
A generic tree node with any `kwargs`.

Keyword Args:
    parent: Reference to parent node.
    children: Iterable with child nodes.
    *: Any other given attribute is just stored as object attribute.

Other than :any:`Node` this class has no default identifier.
It is up to the user to use other attributes for identification.

The `parent` attribute refers the parent node:

>>> 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)

>>> root
AnyNode(id='root')
>>> s0
AnyNode(id='sub0')
>>> print(RenderTree(root))
AnyNode(id='root')
βββ AnyNode(id='sub0')
β   βββ AnyNode(bar=109, foo=4, id='sub0B')
β   βββ AnyNode(id='sub0A')
βββ AnyNode(id='sub1')
    βββ AnyNode(id='sub1A')
    βββ AnyNode(bar=8, id='sub1B')
    βββ AnyNode(id='sub1C')
        βββ AnyNode(id='sub1Ca')

>>> print(RenderTree(root))
AnyNode(id='root')
βββ AnyNode(id='sub0')
β   βββ AnyNode(bar=109, foo=4, id='sub0B')
β   βββ AnyNode(id='sub0A')
βββ AnyNode(id='sub1')
    βββ AnyNode(id='sub1A')
    βββ AnyNode(bar=8, id='sub1B')
    βββ AnyNode(id='sub1C')
        βββ AnyNode(id='sub1Ca')

Node attributes can be added, modified and deleted the pythonic way:

>>> root.new = 'a new attribute'
>>> s0b
AnyNode(bar=109, foo=4, id='sub0B')
>>> s0b.bar = 110  # modified
>>> s0b
AnyNode(bar=110, foo=4, id='sub0B')
>>> del s1b.bar
>>> print(RenderTree(root))
AnyNode(id='root', new='a new attribute')
βββ AnyNode(id='sub0')
β   βββ AnyNode(bar=110, foo=4, id='sub0B')
β   βββ AnyNode(id='sub0A')
βββ AnyNode(id='sub1')
    βββ AnyNode(id='sub1A')
    βββ AnyNode(id='sub1B')
    βββ AnyNode(id='sub1C')
        βββ AnyNode(id='sub1Ca')

The same tree can be constructed by using the `children` attribute:

>>> root = AnyNode(id="root", children=[
...     AnyNode(id="sub0", children=[
...         AnyNode(id="sub0B", foo=4, bar=109),
...         AnyNode(id="sub0A"),
...     ]),
...     AnyNode(id="sub1", children=[
...         AnyNode(id="sub1A"),
...         AnyNode(id="sub1B", bar=8),
...         AnyNode(id="sub1C", children=[
...             AnyNode(id="sub1Ca"),
...         ]),
...     ]),
... ])
Nc                 σb    U R                   R                  U5        Xl        U(       a  X l        g g ©N)Ϊ__dict__ΪupdateΪparentΪchildren)Ϊselfr   r   Ϊkwargss       ΪA/app/mltbenv/lib/python3.13/site-packages/anytree/node/anynode.pyΪ__init__ΪAnyNode.__init__]   s&    ΨΧΡVΤ$ΨήΨ$Mπ σ    c                 σ    [        U 5      $ r
   r   )r   s    r   Ϊ__repr__ΪAnyNode.__repr__c   s    άT{Πr   )r   r   )NN)Ϊ__name__Ϊ
__module__Ϊ__qualname__Ϊ__firstlineno__Ϊ__doc__r   r   Ϊ__static_attributes__© r   r   r   r      s    ρUτn%υr   r   N)Ϊ	nodemixinr   Ϊutilr   r   r   r   r   Ϊ<module>r!      s   πέ  έ τ_iυ _r   