
    ^h                        S SK r S SKrS SKJrJrJrJr  S SKJrJ	r	J
r
  \R                  " \5      r " S S\\	\
\ R                  5      rS\\\ R"                  4   S\\\\\ R"                  4   \ R"                  4      4S jrg)	    N)ListSequenceTupleUnion)SaveOffAttributesMixinSkipUnboundArgsMixinVisitListsMixinc                     ^  \ rS rSrSS jrS\R                  S\\\	\
\R                  4   \R                  4      4S jrU 4S jrS rS\	\R                  \\R                     4   4U 4S jjrS	 rS
 rS rS rS rS rS rS rS rS rS rS\R6                  4S jrS\R:                  4S jrS\R>                  4S jr S\	\R:                  \R>                  4   4S jr!Sr"U =r#$ )GetSymbolEdges   returnc                     / U l         g Nedges)selfs    W/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/analysis/symbol_edges.py__init__GetSymbolEdges.__init__   s	    @B
    nodec                 p    U R                  U5        U R                  R                  5         U R                  $ r   )visitr   reverser   r   s     r   __call__GetSymbolEdges.__call__   s*    

4 	

zzr   c                    > [        [        S5      (       a1  [        U[        [        S5      5      (       a  U R	                  U5        g [
        TU ]  U5        g )N	NamedExpr)hasattrast
isinstancegetattrvisit_NamedExprsupergeneric_visitr   r   	__class__s     r   
visit_exprGetSymbolEdges.visit_expr   s>    3$$D'#{:S)T)T  &G!$'r   c                     U R                   R                  UR                  UR                  45        U R	                  UR                  5        g r   r   appendtargetvaluer   r   s     r   r$   GetSymbolEdges.visit_NamedExpr#   1    

4;;

34

4::r   c                    > Uc  g [        U[        R                  5      (       a  U R                  U5        g [        TU ]  U5        g r   )r"   r!   exprr)   r%   r&   r'   s     r   r&   GetSymbolEdges.generic_visit'   s5    <chh''OOD!G!$'r   c                     U R                   R                  UR                  UR                  45        U R	                  UR                  5        g r   r,   r   s     r   visit_AugAssign_or_AnnAssign+GetSymbolEdges.visit_AugAssign_or_AnnAssign0   r1   r   c                 &    U R                  U5        g r   r6   r   s     r   visit_AnnAssignGetSymbolEdges.visit_AnnAssign4       ))$/r   c                 &    U R                  U5        g r   r9   r   s     r   visit_AugAssignGetSymbolEdges.visit_AugAssign7   r<   r   c                     U R                   R                  UR                  UR                  45        U R	                  UR                  5        g r   )r   r-   r.   iterr   r   s     r   	visit_ForGetSymbolEdges.visit_For:   s1    

4;;		23

499r   c                 :    U R                  UR                  5        g r   )r   testr   s     r   visit_IfGetSymbolEdges.visit_If?   s    

499r   c                     U R                   R                  UR                  U45        U R                  UR                  5        U R                  UR
                  5        g r   )r   r-   namer   argsdecorator_listr   s     r   %visit_FunctionDef_or_AsyncFunctionDef4GetSymbolEdges.visit_FunctionDef_or_AsyncFunctionDefC   s?    

499d+,

499

4&&'r   c                 &    U R                  U5        g r   rL   r   s     r   visit_FunctionDef GetSymbolEdges.visit_FunctionDefH       2248r   c                 &    U R                  U5        g r   rO   r   s     r   visit_AsyncFunctionDef%GetSymbolEdges.visit_AsyncFunctionDefK   rR   r   c                     U R                   R                  UR                  U45        U R                  UR                  5        U R                  UR
                  5        g r   )r   r-   rI   r   basesrK   r   s     r   visit_ClassDefGetSymbolEdges.visit_ClassDefN   s?    

499d+,

4::

4&&'r   c                 :    U R                  UR                  5        g r   )r   itemsr   s     r   
visit_WithGetSymbolEdges.visit_WithS   s    

4::r   c                     UR                   nUbl  [        U[        5      (       a0  U H)  nU R                  R	                  X1R
                  45        M+     g U R                  R	                  X!R
                  45        g g r   )optional_varsr"   listr   r-   context_expr)r   r   aliasesaliass       r   visit_withitemGetSymbolEdges.visit_withitemW   sg    $$'4(($EJJ%%u.?.?&@A % 

!!7,=,=">? r   c                     UR                   b@  UR                  b2  U R                  R                  UR                   UR                  45        g g g r   )rI   typer   r-   r   s     r   visit_ExceptHandler"GetSymbolEdges.visit_ExceptHandlera   s<    99 TYY%:JJtyy$))45 &; r   c                 &    U R                  U5        g r   visit_Import_or_ImportFromr   s     r   visit_ImportGetSymbolEdges.visit_Importf       ''-r   c                 &    U R                  U5        g r   rk   r   s     r   visit_ImportFromGetSymbolEdges.visit_ImportFromi   ro   r   c                     UR                    H`  nUR                  c)  U R                  R                  UR                  U45        M9  U R                  R                  UR                  U45        Mb     g r   )namesasnamer   r-   rI   )r   r   rI   s      r   rl   )GetSymbolEdges.visit_Import_or_ImportFroml   sP    JJD{{"

!!499d"34

!!4;;"56	 r   r   )r   N)$__name__
__module____qualname____firstlineno__r   r!   ASTr   r   r   strr   r)   r$   r   r&   r6   r:   r>   rB   rF   rL   rP   rT   rX   r\   rd   ExceptHandlerrh   Importrm   
ImportFromrq   rl   __static_attributes____classcell__)r(   s   @r   r   r      s    CSWW eE#sww,4G4P.Q)R ((%#''1B(B"C (00
(
99(
@6(9(9 6
. ..S^^ .7uSZZ5O/P 7 7r   r   r   r   c                     [        U [        5      (       a#  [        R                  " U 5      R                  S   n [        5       " U 5      $ )Nr   )r"   r|   r!   parsebodyr   )r   s    r   get_symbol_edgesr   t   s7     $yy##A&D!!r   )r!   loggingtypingr   r   r   r   ipyflow.analysis.mixinsr   r   r	   	getLoggerrw   loggerNodeVisitorr   r|   r{   r    r   r   <module>r      s    
  / /  
		8	$b70/3??b7J"
SWW
"	%c377l#SWW,
-."r   