
    ^hI,                     "   % S SK r S SKrS SKJr  S SKJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJrJr  S SKJr  \(       a  S SKJr  \\\\   4   r\R2                  " \5      r " S S\5      r " S	 S
\S9r0 r\\ \\   4   \!S'   0 r"\\\\   4   \!S'   0 r#\\\\ 4   \\   4   \!S'    " S S\5      r$1 Skr% " S S\5      r& " S S\5      r' " S S\5      r( " S S\5      r) " S S\5      r* " S S\&5      r+ " S S\5      r, " S  S!\5      r-g)"    N)
ModuleType)TYPE_CHECKINGAnyCallableDictIterableListOptionalSetTupleTypeUnioncast)flowtracer)IMMUTABLE_PRIMITIVE_TYPES)Symbolc                       \ rS rSrSrS rSrg)
HasGetitem    z<
Mixin for indicating that a class has a __getitem__ method
c                     [         $ N)NotImplemented)clsitems     f/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/tracing/external_calls/base_handlers.py__getitem__HasGetitem.__getitem__%   s         N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r    r   r   r   r       s    r   r   c                      \ rS rSr% \" 5       rSr\\   \	S'   Sr
\\	S'   Sr\\	S'   \S   \	S'   \\S4   \	S'   Sr\\S	      \	S
'   \r\\	S'   \R(                  \	S'   S r\S-S j5       rS-S jrS\S    4S jrSSSSSS.S\\   S\S\S\\R4                     S\S	   SS4S jjrS r\S\\   4S j5       r\S\\   4S j5       r \S\S	   4S j5       r!S\SS4S jr"S.S jr#S\S   SS4S jr$S\S\SS4S jr%S\SSSS4S  jr&S\\S4   SS4S! jr'S\SS4S" jr(S/S# jr)S$\*SS4S% jr+S$\*SS4S& jr,S'\\   S$\*SS4S( jr-S)S	S$\*SS4S* jr.S\\/S	\0S	   4      4S+ jr1S,r2g)0ExternalCallHandler)   Nmodulecaller_selffunction_or_methodExternalCallArgumentargskwargsr   	_arg_symsreturn_value	stmt_nodec                 p    U [         L a  [        SU R                   S35      e[        R	                  U 5      $ )Nzonly children of 'z' may be instantiated)r(   	TypeErrorr!   object__new__)r   r.   r/   s      r   r6   ExternalCallHandler.__new__4   s4    %%0>STUU~~c""r   returnc                     UR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  SS 5      nU " UUUUUS9R                  " S0 UD6$ )Nr*   r+   r,   	call_nodecalling_symbolr*   r+   r,   r:   r;   r    )pop_initialize_impl)r   r/   r*   r+   r,   r:   r;   s          r   createExternalCallHandler.create9   s    Hd+jj5#ZZ(<dCJJ{D1	$4d;#1)
 
 % $% 	%r   c                     U nU R                   R                  5        H3  n[        US5      (       d    U$ UR                  " U40 UD6=(       d    UnM5     U$ )N
initialize)	__class__mrohasattrrB   )selfr/   retr   s       r   r>   $ExternalCallHandler._initialize_implH   sT    >>%%'C3--
 ..//63C ( 
r   c                     U $ r   r    )rF   _s     r   rB   ExternalCallHandler.initializeP   s    r   r<   r:   r;   c                    Xl         X l        X0l        / U l        0 U l        S U l        U R                  U l        X@l        XPl	        [        5       R                  R                  U l        g r   )r*   r+   r,   r.   r/   r0   not_yet_definedr1   r:   r;   r   prev_trace_stmt_in_cur_framer2   )rF   r*   r+   r,   r:   r;   s         r   __init__ExternalCallHandler.__init__S   sX     &"424	9;26!%!5!5",>>HHr   c                 *    U [         U R                  '   g r   )external_call_handler_by_namer!   )r   s    r   __init_subclass__%ExternalCallHandler.__init_subclass__g   s    69%cll3r   c                     U R                   b  U R                   R                  $ U R                  nUc  g [        USS 5      nUc  g [        USS 5      $ )NrC   r"   )r*   r!   r,   getattr)rF   r,   clazzs      r   modnameExternalCallHandler.modnamej   sW    ;;";;'''!44%*K>=ulD11r   c                 J    U R                   c  S $ [        U R                   5      $ r   )r+   idrF   s    r   caller_self_obj_id&ExternalCallHandler.caller_self_obj_idv   s#    ''/tIR8H8H5IIr   c                     U R                   cQ  [        5       R                  " S U R                  [	        U R
                  R                  5       5      -    5       6 U l         U R                   $ )Nc              3   *   #    U  H	  oS    v   M     g7f)   Nr    ).0args     r   	<genexpr>/ExternalCallHandler.arg_syms.<locals>.<genexpr>~   s     K$JSa&$Js   )r0   setunionr.   listr/   valuesr\   s    r   arg_symsExternalCallHandler.arg_symsz   sM    >>! U[[KDIIT[[5G5G5I0J$JKDN ~~r   rc   c                     g r   r    rF   rc   s     r   process_argExternalCallHandler.process_arg       r   c                 b    U R                   R                  U5        U R                  US   5        g Nr   )r.   appendrn   rm   s     r   _process_arg_impl%ExternalCallHandler._process_arg_impl   s&    		Q r   c                 8    U H  nU R                  U5        M     g r   )rt   )rF   r.   rc   s      r   process_args ExternalCallHandler.process_args   s    C""3' r   kwc                     g r   r    rF   ry   rc   s      r   process_kwarg!ExternalCallHandler.process_kwarg   rp   r   c                 H    X R                   U'   U R                  XS   5        g rr   )r/   r|   r{   s      r   _process_kwarg_impl'ExternalCallHandler._process_kwarg_impl   s    B21v&r   c                 X    UR                  5        H  u  p#U R                  X#5        M     g r   )itemsr   )rF   r/   ry   rc   s       r   process_kwargs"ExternalCallHandler.process_kwargs   s"    ||~GB$$R- &r   c                     Xl         g r   )r1   )rF   r1   s     r   process_return"ExternalCallHandler.process_return   s    (r   c                 4   U R                  5       nUb  U R                  c  g [        US5      (       a  [        [        S   U5      O[        SU5      /n[        5       R                  R                  [        U R                  5      / 5      R                  U5        g )N__iter__r   )
handler:   rE   r   r   r   node_id_to_loaded_symbols
setdefaultr[   extend)rF   resultsymbolss      r   _handle_impl ExternalCallHandler._handle_impl   s     >T^^3 vz** (#V,x() 	
 	**55b6H"MTT	
r   should_propagatec                    U R                   c  g U R                  b  U R                  U R                  US9  g U R                  Gb6  / n[	        U R                  R
                  [        R                  5      (       a  [	        U R                  R
                  R                  [        R                  5      (       a  [        5       R                  R                  U R                  =(       d    S/ 5       Vs/ s H?  nUR                  U R                  R
                  R                  R                  :X  d  M=  UPMA     nnU H  nU R                  X1S9  M     [!        U5      S:X  a  U R#                  U R                  US9  g g g s  snf )Nr   r   )r+   r;   _mutate_calling_symbolr:   
isinstancefuncast	AttributevalueNamer   aliasesgetr]   namer[   lenmutate_aliases)rF   r   syms_to_mutatesyms       r   mutate_caller!ExternalCallHandler.mutate_caller   sJ   #*''##6F (  ^^'N$..--s}}==*##))388C C
  $v~~11$2I2I2ORQST"Txx4>>#6#6#<#<#?#?? T  "
 &++C+S &>"a'##++>N $  ( (
"s   0<E<0E<c                 f    U R                   c  g U R                  [        U R                   5      US9  g )Nr   )r*   r   r[   )rF   r   s     r   mutate_module!ExternalCallHandler.mutate_module   s+    ;;Bt{{O>NOr   obj_idc                     [        5       R                  R                  U=(       d    S[        5       5      nU H  nU R	                  XBS9  M     g )Nr   r   )r   r   r   rf   r   )rF   r   r   mutated_symsr   s        r   r   "ExternalCallHandler.mutate_aliases   s;    v~~))&,B>C'''O  r   r   c                 >    UR                  U R                  SSUUS9  g )NFT)	overwritemutated"propagate_to_namespace_descendentsrefresh)update_depsrj   )rF   r   r   s      r   r   *ExternalCallHandler._mutate_calling_symbol   s&    MM/?$ 	 	
r   c                     g r   r    r\   s    r   r   ExternalCallHandler.handle   rp   r   )
r0   r.   r:   r+   r;   r,   r/   r*   r1   r2   )r8   r(   )rc   r-   r8   Nr8   N)3r!   r"   r#   r$   r5   rM   r*   r
   r   __annotations__r+   r   r,   r	   r   strr0   r   r1   r   stmtr6   classmethodr?   r>   rB   CallrO   rS   propertyrX   intr]   rj   rn   rt   rw   r|   r   r   r   r   boolr   r   r   r   r   r   r   r&   r    r   r   r(   r(   )   s   hO#'FHZ 'K""
%
&&,,--)-IxH&-'L#'xx#
 % %*?!@  (,"&(,-1I $I 	I
  I CHH%I !*I 
I(: 	2# 	2 	2 JHSM J J #h-  s t !(&<!= ($ ( # $ 'c '0F '4 '.T#/E*E%F .4 .)3 )4 )
d t 0Pd Pt P
PXc] Pd Pt P

( 
d 
t 
x(1C'C!DE r   r(   )	metaclassrR   REGISTERED_HANDLER_BY_FUNCTIONREGISTERED_HANDLER_BY_METHODc                       \ rS rSrSrg)NoopCallHandler   r    Nr!   r"   r#   r$   r&   r    r   r   r   r          r   r   >   altpltsnsplotaltairpyplotwidgetdisplayloggingseaborn
matplotlibc                   (    \ rS rSrSS jrSS jrSrg)StandardMutation   Nc                 p    U R                   b  U R                  U R                   La  g U R                  SS9  g NTr   )r1   r+   r   r\   s    r   _maybe_mutate_caller%StandardMutation._maybe_mutate_caller   s5    (T-=-=TEVEV-VD1r   c                    ^ U R                   b  U R                  5         g U R                  GbL  U R                  Gc=  U R	                  SS9  [        U R                  5      S:X  a  g U R                  R                  =(       d    SR                  S5      S   [        ;   a  g U R                  S   u  p[        U[        [        [        4[        -   5      (       a  g / nU R                  SS   HW  u  pEU V^s1 s H!  m[        U4S jU 5       5      (       d  M  TiM#     nn[        U5      S:  d  ME  UR!                  XG45        MY     U R                  S   /U-   U l        S U l        [$        R'                  U 5        g g g s  snf )NTr   r    .ra   c              3   @   >#    U  H  oTR                   ;   v   M     g 7fr   )parents)rb   	first_symr   s     r   rd   *StandardMutation.handle.<locals>.<genexpr>  s     T^	3^s   )r+   r   r*   r1   r   r   r.   r!   splitARG_MUTATION_EXCEPTED_MODULESr   rh   rf   dictr   anyrs   r0   	ArgMutater   )rF   first_arg_objfirst_arg_symsdepending_on_first_argobjsymsr   filtered_symss         ` r   r   StandardMutation.handle   s[   '%%'[[$):):)B5499~"$$*11#6./ ,0IIaL)M-$T):=V)VWW%'"!YYqr]	  $!#T^TT #  !
 }%)*1132FG + 1)??DI!DNT"1 *C$!s   3E;E;)r0   r.   r   )r!   r"   r#   r$   r   r   r&   r    r   r   r   r      s    2
#r   r   c                       \ rS rSrSS jrSrg)CallerMutationi  Nc                 "    U R                  SS9  g r   )r   r\   s    r   r   CallerMutation.handle      D1r   r    r   r!   r"   r#   r$   r   r&   r    r   r   r   r         2r   r   c                       \ rS rSrSS jrSrg)CallerUpserti  Nc                     [        5       R                  R                  [        U R                  5      / 5       HC  nUR                  U R                  SSSS9  [        5       R                  R                  US 5        ME     g NT)r   r   r   )
r   r   r   r[   r+   r   rj   r   pending_usage_updates_by_symr=   rF   
module_syms     r   r   CallerUpsert.handle  sh    &..,,R0@0@-A2FJ""37	 #  H1155j$G Gr   r    r   r   r    r   r   r   r         Hr   r   c                       \ rS rSrSS jrSrg)ModuleMutationi'  Nc                 "    U R                  SS9  g r   )r   r\   s    r   r   ModuleMutation.handle(  r   r   r    r   r   r    r   r   r   r   '  r   r   r   c                       \ rS rSrSS jrSrg)ModuleUpserti,  Nc                     [        5       R                  R                  [        U R                  5      / 5       HC  nUR                  U R                  SSSS9  [        5       R                  R                  US 5        ME     g r   )
r   r   r   r[   r*   r   rj   r   r   r=   r   s     r   r   ModuleUpsert.handle-  se    &..,,R_bAJ""37	 #  H1155j$G Br   r    r   r   r    r   r   r  r  ,  r   r   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )NamespaceCleari8  c                   > [         TU ]  5         [        5       R                  U R                  =(       d    S5      nUc  g UR
                  nUc  g [        S UR                  SSS9 5       SS S9 H  nUR                  USS9  M     g )Nr   c              3   :   #    U  H  nUR                   v   M     g 7fr   )r   )rb   r   s     r   rd   (NamespaceClear.handle.<locals>.<genexpr>B  s      C s   T)exclude_classis_subscriptc                     U =(       d    S$ )Nr   r    )ns    r   <lambda>'NamespaceClear.handle.<locals>.<lambda>I  s
    !'r'r   )reversekey)r
  )	superr   r   get_first_full_symbolr]   	namespacesortedall_symbols_this_indentationdelete_symbol_for_name)rF   mutated_symr  r   rC   s       r   r   NamespaceClear.handle9  s    f2243J3J3PbQ))	$AA"&T B  !	
D ,,T,E	
r   r    r   )r!   r"   r#   r$   r   r&   __classcell__)rC   s   @r   r  r  8  s    F Fr   r  c                       \ rS rSrSrg)$MutatingMethodEventNotYetImplementediN  r    Nr   r    r   r   r  r  N  r   r   r  c                       \ rS rSrSS jrSrg)r   iR  Nc                     U R                    H2  nUb  UR                  (       a  M  UR                  [        5       SSS9  M4     g )NFT)r   r   )rj   is_anonymousr   rf   )rF   r  s     r   r   ArgMutate.handleS  s:    ==K"k&>&> ##CEUD#I )r   r    r   r   r    r   r   r   r   R  s    Jr   r   ).r   r   typesr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   ipyflow.singletonsr   r   ipyflow.typesr   ipyflow.data_model.symbolr   r-   	getLoggerr!   loggertyper   r(   rR   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r    r   r   <module>r(     sU   
      , 30 c&k!12 
		8	$ mJ m` GI tC.A)B$BC HLN Xt4G/H%H I NRT d5s#3T:M5N#NO T	) 	
! !#* !#H2( 2
	H& 	H2( 2
	H& 	HF% F,	+> 	J# Jr   