
    #h%                        S SK Jr  S SKrS SKJr  S SKJr  S SKJr  SSK	J
r
  SSKJrJr  SS	KJrJrJr  S
r\" SS9 " S S\5      5       r\rg)    )annotationsN)Mapping)	dataclass)Any   )AST)CommentInfo	ParseInfo)AsJSONMixinasjsonasjsonsz::F)eqc                  d  ^  \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS	\S
'   Sr	S\S'   S'U 4S jjr
S r\S 5       r\S 5       r\S 5       rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS rS rS rS rU 4S jrS  rS! rS" r S# r!S$ r"S% r#S&r$U =r%$ )(Node   NzNode | None_parentzlist[Node] | None	_childrenz
AST | Noneastr   ctxzParseInfo | None	parseinfoc                   > [         TU ]  5         [        U[        5      (       a  [	        U5      nXl        UR                  5        H  u  p4[        XU5        M     U R                  5         g N)	super__init__
isinstancedictr   r   itemssetattr__post_init__)selfr   
attributesnamevalue	__class__s        Q/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/objectmodel.pyr   Node.__init__   sV    c4  c(C%++-KDD& . 	    c                   U R                   nU R                  (       d&  [        U[        5      (       a  UR                  U l        [        U[        5      (       d  g [        U5      S1-
   H  n [        XX   5        M     U R                  5       U l	        U R                  c  U ?g g ! [         a  n[        SU S35      UeS nAff = f)Nr   'z' is a reserved name)
r   r   r   r   r   setr   AttributeErrorchildren_listr   )r    r   r"   es       r%   r   Node.__post_init__"   s    hh~~*S#"6"6 ]]DN#w''H},DLCI. - ++->>! "	 " L$q.B%CD!KLs   -B%%
C/B??Cc                    U R                   $ r   )r   r    s    r%   parentNode.parent5   s    ||r'   c                R    U R                   (       a  U R                   R                  $ g r   )r   liner0   s    r%   r4   	Node.line9   s    >>>>&&&r'   c                R    U R                   (       a  U R                   R                  $ g r   )r   endliner0   s    r%   r7   Node.endline?   s    >>>>)))r'   c                Z    U R                   (       a  U R                   R                  5       $ g r   )r   
text_linesr0   s    r%   r:   Node.text_linesE   s    >>>>,,..r'   c                6    U R                   R                  5       $ r   )r   
line_indexr0   s    r%   r=   Node.line_indexJ   s    ~~((**r'   c                T    U R                   (       a  U R                   R                  $ S $ r   )	line_infocolr0   s    r%   rA   Node.colM   s    %)^^t~~!!==r'   c                    U R                   $ r   )r   r0   s    r%   contextNode.contextQ   s    xxr'   c                    U R                   (       a9  U R                   R                  R                  U R                   R                  5      $ g r   )r   	tokenizerr@   posr0   s    r%   r@   Node.line_infoU   s1    >>>>++55dnn6H6HIIr'   c                    U R                   (       d  gU R                   R                  R                  nXR                   R                  U R                   R                   $ )N )r   rG   textrH   endpos)r    rL   s     r%   rL   	Node.text[   s@    ~~~~'',,NN&&(=(=>>r'   c                    U R                   (       a9  U R                   R                  R                  U R                   R                  5      $ [	        / / 5      $ r   )r   rG   commentsrH   r	   r0   s    r%   rP   Node.commentsb   s;    >>>>++44T^^5G5GHH2r""r'   c                    U $ r    r0   s    r%   _derefNode._derefh   s	     r'   c              #  ,  ^ ^^#    U 4S jmUU4S jm[        T R                  5       R                  5       5      nU(       d  T" T R                  5       S h  vN   g U H-  u  p#UR	                  S5      (       a  M  T" U5       S h  vN   M/     g  N9 N7f)Nc                >   > [         R                  " T5      U l        U $ r   )weakrefproxyr   )noder    s    r%   with_parent(Node._find_children.<locals>.with_parentn   s    "==.DLKr'   c              3    >#    [        U [        R                  [        R                  -  5      (       a  g [        U [        5      (       a  T" U 5      v   g [        U [
        5      (       aB  U R                  5        H-  u  pUR                  S5      (       a  M  T" U5       S h  vN   M/     g [        U [        [        -  5      (       a  U4S jU  5        S h  vN   g g  N; N7f)N_c              3  b   >#    U  H$  n[        U[        5      (       d  M  T" U5      v   M&     g 7fr   )r   r   ).0cr[   s     r%   	<genexpr>;Node._find_children.<locals>.children_of.<locals>.<genexpr>}   s%      ,1qZ45HNKNNEs   //)
r   rX   ReferenceType	ProxyTyper   r   r   
startswithlisttuple)childr"   r#   children_ofr[   s      r%   rj   (Node._find_children.<locals>.children_ofr   s     %!6!69J9J!JKKE4((!%((E7++#(;;=KDs++ *5111 $1 E4%<00,1   1 2s$   BC""C#4C"C C" C"r^   )rg   _pubdictr   r   rf   )r    childrenr"   ri   rj   r[   s   `   @@r%   _find_childrenNode._find_childrenm   sv     		 --/0"488,,,'??3''&u---  ( -
 .s$   ABB/BB
BBc                f    U R                   b  U R                   $ [        U R                  5       5      $ r   )r   rg   rn   r0   s    r%   r,   Node.children_list   s*    >>%>>!D'')**r'   c                4    [        U R                  5       5      $ r   )r*   r,   r0   s    r%   children_setNode.children_set   s    4%%'((r'   c                "    U R                  5       $ r   )r,   r0   s    r%   rm   Node.children   s    !!##r'   c                    [        U 5      $ r   )r   r0   s    r%   r   Node.asjson   s    d|r'   c                   > [         TU ]  5       R                  5        VVs0 s H  u  pUS;  d  M  X_M     snn$ s  snnf )N>   r   r   r1   r   )r   rl   r   )r    r"   r#   r$   s      r%   rl   Node._pubdict   sJ      %w/1779
9@@ DK9
 	
 
s   ;;c                    [        U 5      $ r   )r   r0   s    r%   __str__Node.__str__   s    t}r'   c                P   U R                   b  [        U R                   [        5      (       a  [        [	        U R                   5      5      $ [        U R                   [
        5      (       a  [        [        U R                   5      5      $ [        U R                   5      $ [        U 5      $ r   )r   r   rg   hashrh   r   r   idr0   s    r%   __hash__Node.__hash__   sk    88$((D))E$((O,,DHHd++CM**DHH~%d8Or'   c                    [        U 5      [        U5      :X  a  gU R                  c  g[        USS 5      (       d  gU R                  UR                  :H  $ )NTFr   )r   r   getattr)r    others     r%   __eq__Node.__eq__   sG    d8r%y XXt,,88uyy((r'   c                    [        U 5      R                  5        VVs0 s H>  u  pUS;  d  M  [        U5      [        R                  [        R
                  1;  d  M<  X_M@     snn$ s  snnf )N>   r   r   )varsr   typerX   rd   re   )r    r"   r#   s      r%   _nonrefdictNode._nonrefdict   sm      $Dz//1
144  K--w/@/@AB	 DK1
 	
 
s   A&+A&A&c                "    U R                  5       $ r   )r   r0   s    r%   __getstate__Node.__getstate__   s    !!r'   c                Z    U R                   R                  U5        U R                  5         g r   )__dict__updater,   )r    states     r%   __setstate__Node.__setstate__   s     U#r'   )r   r   r   r   )&__name__
__module____qualname____firstlineno__r   __annotations__r   r   r   r   r   r   propertyr1   r4   r7   r:   r=   rA   rD   r@   rL   rP   rT   rn   r,   rs   rm   r   rl   r|   r   r   r   r   r   __static_attributes____classcell__)r$   s   @r%   r   r      s?   G[#'I 'CCO"&I&	&    
  

+ > >    
 ? ? # #
  .:+
)$
	)	
" r'   r   )
__future__r   rX   collections.abcr   dataclassesr   typingr   r   r   infosr	   r
   utilr   r   r   BASE_CLASS_TOKENr   
ParseModelrS   r'   r%   <module>r      sQ    "  # !   ) . .  ex; x xv 
r'   