
    ^hB                         S SK r S SKrS SKJrJrJrJrJrJr  S SK	J
r
  S SKJrJr  \(       a  S SKJr  \R                   " \5      r\R'                  \R(                  5         " S S\ R*                  5      rg)    N)TYPE_CHECKINGDictListOptionalSetTuple)fast)AugmentationSpecAugmentationType)
BaseTracerc            	          \ rS rSrSSS\\\\\\4      4   4S jr	\
S\R                  S\\   4S j5       r\
S\R                  S\\   4S	 j5       r\
S\R                  S\\   4S
 j5       r\
S\R                  S\\   4S j5       rS\S\R                  S\\   4S jrS\R                  SS4S jr SS\R                  S\\R                     S\\\R                  4   4S jjrS\R                  SS4S jrSrg)StatementMapper   tracerszList[BaseTracer]augmented_positions_by_specc                 *    Xl         X l        / U l        g N_tracersr   	traversal)selfr   r   s      M/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/stmt_mapper.py__init__StatementMapper.__init__   s    
 -4+F((*    nodereturnc                    [        U [        R                  5      (       a  U R                  $ [        U [        R                  5      (       a  [        U R                  SS5      S-   $ [        U [        R                  5      (       a  U R                  S-   $ [        U [        R                  5      (       a  U R                  S-   $ [        U [        R                  5      (       a  U R                  S-   $ [        U [        R                  [        R                  45      (       a  [        U R                  5      S:X  a  [        U [        R                  5      (       a  SO S[        U R                  =(       d    S	5      -   nU R                  S
   nU R                  U-   UR                  c  S
-   $ [        UR                   5      S-   -   $ g )Nend_col_offset         
          r   )
isinstanceastName
col_offset	AttributegetattrvalueFunctionDefClassDefAsyncFunctionDefImport
ImportFromlennamesmoduleasnamename)r   base_offsetr8   s      r   _get_prefix_col_offset_for*StatementMapper._get_prefix_col_offset_for   sY   dCHH%%??"cmm,,4::'7<q@@coo..??Q&&cll++??Q&&c2233??R''szz3>>:;;DJJST@T  cjj11rC@Qr<R7R  ::a=D+1E 25TYY!1CE r   c                    [        U [        R                  5      (       a"  U R                  [	        U R
                  5      -   $ [        U [        R                  5      (       a0  [        U R                  SS5      [	        U R                  5      -   S-   $ [        U [        R                  5      (       a%  U R                  S-   [	        U R                  5      -   $ [        U [        R                  5      (       a%  U R                  S-   [	        U R                  5      -   $ [        U [        R                  5      (       a%  U R                  S-   [	        U R                  5      -   $ [        U [        R                  [        R                  45      (       a  [	        U R                   5      S:X  a  U R                   S   n[        U [        R                  5      (       a  SO S	[	        U R"                  =(       d    S
5      -   nU R                  U-   nUR$                  c  U[	        UR                  5      -  nU$ U[	        UR                  5      S-   [	        UR$                  5      -   -  nU$ g )Nr   r!   r"   r#   r$   r   r%   r&   r'   )r(   r)   r*   r+   r4   idr,   r-   r.   attrr/   r8   r0   r1   r2   r3   r5   r6   r7   )r   r8   r9   r+   s       r   _get_suffix_col_offset_for*StatementMapper._get_suffix_col_offset_for8   s   dCHH%%??S\11cmm,,4::'7<s499~MPQQQcoo..??Q&TYY77cll++??Q&TYY77c2233??R'#dii.88szz3>>:;;DJJST@T::a=D  cjj11rC@Qr<R7R  ;6J{{"c$))n,
  c$))nq03t{{3CCC
r   c                 p    [        U [        R                  5      (       a  [        U R                  SS5      $ g )Nr   r=   )r(   r)   r,   r-   r.   r   s    r   _get_dot_col_offset_for'StatementMapper._get_dot_col_offset_forV   s*    dCMM**4::'7<<r   c                 v    [        U [        R                  5      (       a  [        U R                  SS5      S-   $ g )Nr   r    r!   )r(   r)   BinOpr-   leftrC   s    r   _get_binop_col_offset_for)StatementMapper._get_binop_col_offset_for]   s/    dCII&&499&6;a??r   aug_typec                 >   U[         R                  :X  a  U R                  U5      $ U[         R                  :X  a  U R	                  U5      $ U[         R
                  :X  a  U R                  U5      $ U[         R                  :X  a  U R                  U5      $ [        5       er   )
r   prefixr:   suffixr@   dotrD   binoprI   NotImplementedError)r   rK   r   s      r   _get_col_offset_for#StatementMapper._get_col_offset_ford   s     '...22488)00022488)---//55)///11$77%''r   ncNc                 J   U R                   R                  5        H  u  p#U R                  UR                  U5      nUc  M&  UR                  U4U;   d  M:  U R
                   H;  nX%R                  ;   d  M  UR                  U   R                  [        U5      5        M=     M     g r   )
r   itemsrR   rK   linenor   syntax_augmentation_specsaugmented_node_ids_by_specaddr>   )r   rT   specmod_positionsr+   tracers         r   _handle_augmentations%StatementMapper._handle_augmentationsr   s    #'#C#C#I#I#KD11$--DJ!		:&-7"mmF???99$?CCBrFK , $Lr   	copy_nodec                    U R                   R                  5         U R                  U5        U R                   R                  5         U R                  U5        U R                   n/ U l         U R                  U=(       d    [        R                  " U5      5        U R                   n0 n[        X45       H6  u  pgXu[        U5      '   [        US5      (       d  M%  U R                  U5        M8     U$ )NrW   )	r   clearvisitr	   copy_astzipr>   hasattrr^   )r   r   r`   orig_traversalcopy_traversalorig_to_copy_mappingnorT   s           r   __call__StatementMapper.__call__|   s     	

4

4

93d 34!.9FB+-B(r8$$**2. : $#r   c                    U R                   R                  U5        [        R                  " U5       H  u  p#[	        U[        R
                  5      (       a  U R                  U5        M7  [	        U[        5      (       d  MN  U H5  n[	        U[        R
                  5      (       d  M$  U R                  U5        M7     M     g r   )r   appendr)   iter_fieldsr(   ASTrc   list)r   r   r8   field
inner_nodes        r   rc   StatementMapper.visit   sz    d#??40KD%))

5!E4(("'J!*cgg66

:. #(	 1r   r   r   )__name__
__module____qualname____firstlineno__r   r
   r   r   intr   staticmethodr)   rp   r   r:   r@   rD   rI   r   rR   r^   rk   rc   __static_attributes__ r   r   r   r      so   +#+ &**:Cc3h<P*P%Q+  Xc]  8  Xc]  : cgg (3-    HSM  (((03(	#(L LD L (,$gg$ CGG$$ 
c377l		$,/#'' /d /r   r   )r)   loggingtypingr   r   r   r   r   r   pyccolor	   pyccolo.syntax_augmentationr
   r   pyccolo.tracerr   	getLoggerru   loggersetLevelWARNINGNodeVisitorr   r|   r   r   <module>r      sQ    
  B B  J) 
		8	$   I/coo I/r   