
    }f%                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ ddl	m
Z
 ddlmZmZ dd	lmZmZmZ d
Z ed       G d de             ZeZy)    )annotationsN)Mapping)	dataclass)Any   )AST)CommentInfo	ParseInfo)AsJSONMixinasjsonasjsonsz::F)eqc                  V    e Zd ZU dZded<   dZded<   dZded<   dZded	<   dZd
ed<   d% fd	Z	d Z
ed        Zed        Zed        Zd Zd Zed        Zed        Zed        Zed        Zed        Zed        Zd Zd Zd Zd Zd Z fdZd Zd  Zd! Zd" Z d# Z!d$ Z" xZ#S )&NodeNzNode | None_parentzlist[Node] | None	_childrenz
AST | Noneastr   ctxzParseInfo | None	parseinfoc                    t         |           t        |t              rt	        |      }|| _        |j                         D ]  \  }}t        | ||        | j                          y N)	super__init__
isinstancedictr   r   itemssetattr__post_init__)selfr   
attributesnamevalue	__class__s        P/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/objectmodel.pyr   zNode.__init__   s^    c4 c(C%++- 	'KD%D$&	' 	    c                l   | j                   }| j                  s!t        |t              r|j                  | _        t        |t              sy t        |      dhz
  D ]  }	 t        | |||           | j                         | _	        | j                  | `y y # t        $ r}t        d| d      |d }~ww xY w)Nr   'z' is a reserved name)
r   r   r   r   r   setr   AttributeErrorchildren_listr   )r   r   r!   es       r$   r   zNode.__post_init__"   s    hh~~*S#"6 ]]DN#w'H}, 	LDLdCI.	L ++->>! "	 " L$q.B%CD!KLs   B	B3B..B3c                    | j                   S r   )r   r   s    r$   parentzNode.parent5   s    ||r%   c                H    | j                   r| j                   j                  S y r   )r   liner-   s    r$   r0   z	Node.line9   s    >>>>&&&r%   c                H    | j                   r| j                   j                  S y r   )r   endliner-   s    r$   r2   zNode.endline?   s    >>>>)))r%   c                P    | j                   r| j                   j                         S y r   )r   
text_linesr-   s    r$   r4   zNode.text_linesE   s    >>>>,,..r%   c                6    | j                   j                         S r   )r   
line_indexr-   s    r$   r6   zNode.line_indexJ   s    ~~((**r%   c                J    | j                   r| j                   j                  S d S r   )	line_infocolr-   s    r$   r9   zNode.colM   s    %)^^t~~!!==r%   c                    | j                   S r   )r   r-   s    r$   contextzNode.contextQ   s    xxr%   c                    | j                   r9| j                   j                  j                  | j                   j                        S y r   )r   	tokenizerr8   posr-   s    r$   r8   zNode.line_infoU   s1    >>>>++55dnn6H6HIIr%   c                    | j                   sy| j                   j                  j                  }|| j                   j                  | j                   j                   S )N )r   r=   textr>   endpos)r   rA   s     r$   rA   z	Node.text[   sB    ~~~~'',,DNN&&(=(=>>r%   c                    | j                   r9| j                   j                  j                  | j                   j                        S t	        g g       S r   )r   r=   commentsr>   r	   r-   s    r$   rD   zNode.commentsb   s;    >>>>++44T^^5G5GHH2r""r%   c                    | S r    r-   s    r$   _derefzNode._derefh   s	     r%   c              #     K    fdfdt         j                         j                               }|s  j                        E d {    y |D ]'  \  }}|j	                  d      r |      E d {    ) y 7 27 	w)Nc                <    t        j                        | _        | S r   )weakrefproxyr   )noder   s    r$   with_parentz(Node._find_children.<locals>.with_parentn   s    "==.DLKr%   c              3    K   t        | t        j                  t        j                  z        ry t        | t              r |        y t        | t
              r;| j                         D ]'  \  }}|j                  d      r |      E d {    ) y t        | t        t        z        rfd| D        E d {    y y 7 37 w)N_c              3  P   K   | ]  }t        |t              s |        y wr   )r   r   ).0crM   s     r$   	<genexpr>z;Node._find_children.<locals>.children_of.<locals>.<genexpr>}   s#      '(Z45HKNs   &&)
r   rJ   ReferenceType	ProxyTyper   r   r   
startswithlisttuple)childr!   r"   children_ofrM   s      r$   rZ   z(Node._find_children.<locals>.children_ofr   s     %!6!69J9J!JKE4(!%((E7+#(;;= 2KD%s+ *51112 E4%<0,1   1 2s$   BCC,C;C<CCrO   )rW   _pubdictr   r   rV   )r   childrenr!   rY   rZ   rM   s   `   @@r$   _find_childrenzNode._find_childrenm   s|     		 --/0"488,,,' .e??3'&u---. -
 .s$   A
BB*B:B;BBc                d    | j                   | j                   S t        | j                               S r   )r   rW   r]   r-   s    r$   r*   zNode.children_list   s*    >>%>>!D'')**r%   c                4    t        | j                               S r   )r(   r*   r-   s    r$   children_setzNode.children_set   s    4%%'((r%   c                "    | j                         S r   )r*   r-   s    r$   r\   zNode.children   s    !!##r%   c                    t        |       S r   )r   r-   s    r$   r   zNode.asjson   s    d|r%   c                x    t         |          j                         D ci c]  \  }}|dvr|| c}}S c c}}w )N>   r   r   r.   r   )r   r[   r   )r   r!   r"   r#   s      r$   r[   zNode._pubdict   sG      %w/1779
e@@ %K
 	
 
s   6c                    t        |       S r   )r   r-   s    r$   __str__zNode.__str__   s    t}r%   c                :   | j                   t        | j                   t              rt        t	        | j                               S t        | j                   t
              rt        t        | j                               S t        | j                         S t        |       S r   )r   r   rW   hashrX   r   r   idr-   s    r$   __hash__zNode.__hash__   se    88$((D)E$((O,,DHHd+CM**DHH~%d8Or%   c                    t        |       t        |      k(  ry| j                  yt        |dd       sy| j                  |j                  k(  S )NTFr   )rh   r   getattr)r   others     r$   __eq__zNode.__eq__   sD    d8r%y XXt,88uyy((r%   c                    t        |       j                         D ci c]7  \  }}|dvr.t        |      t        j                  t        j
                  hvr||9 c}}S c c}}w )N>   r   r   )varsr   typerJ   rT   rU   )r   r!   r"   s      r$   _nonrefdictzNode._nonrefdict   sc      $Dz//1
e44K--w/@/@AB	 %K
 	
 
s   <Ac                "    | j                         S r   )rq   r-   s    r$   __getstate__zNode.__getstate__   s    !!r%   c                Z    | j                   j                  |       | j                          y r   )__dict__updater*   )r   states     r$   __setstate__zNode.__setstate__   s     U#r%   r   )$__name__
__module____qualname__r   __annotations__r   r   r   r   r   r   propertyr.   r0   r2   r4   r6   r9   r;   r8   rA   rD   rG   r]   r*   r`   r\   r   r[   re   ri   rm   rq   rs   rx   __classcell__)r#   s   @r$   r   r      s:   G[#'I 'CCO"&I&	&    
  

+ > >    
 ? ? # #
  .:+
)$
	)	
"r%   r   )
__future__r   rJ   collections.abcr   dataclassesr   typingr   r   r   infosr	   r
   utilr   r   r   BASE_CLASS_TOKENr   
ParseModelrF   r%   r$   <module>r      sQ    "  # !   ) . .  ex; x xv 
r%   