
    ^hK                     0   S SK r S SKrS SKrS SKrS SK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  S SK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Jr  S SK J!r!J"r"  S S	K#J$r$J%r%   S S
K&J'r'  \RT                  S:  a  S SKJ+r+  O\,r+\(       a  S SK-J.r.  \" S\'\)5      r/\S\$\4   r0\Rb                  " \25      r3\3Ri                  \Rj                  5         " S S5      r6 " S S\+5      r7   SS\\8\)4   S\9S\\\/      S\9S\64
S jjr:g! \( a    \)r' Nf = f)    N)TYPE_CHECKINGAnyDictIterableListOptionalSequenceSetTypeTypeVarUnion)compute_live_dead_symbol_refs)	Interface)	Timestamp)cells)flowshelltracer)SlicingContextslicing_ctx_var)IdTypeTimestampOrCounter)HTML)      )Protocol)Symbol
FormatTypeSliceableMixinc                       \ rS rSr\R
                   S3rSr  SS\\	\
4   S\S\\\      S\S	S4
S
 jjrS	\
4S jrS	\4S jrS	\
4S jrS rS	\\
\4   4S jrS rSrg)Slice6   _ipyflow_slice_func_r   N	raw_sliceblackenformat_typeinclude_cell_headersreturnc                    [        U5      U l        [        5       R                  R                  U l        Uc<  U R
                  [        R                  [        R                  4;   a  [        nO	[        nOUnXPl        X l        X@l        g N)dictr$   r   mut_settings	interfaceifacer   IPYTHONUNKNOWNstrr   r&   r%   r'   )selfr$   r%   r&   r'   fmts         O/home/james-whalen/.local/lib/python3.13/site-packages/ipyflow/slicing/mixin.py__init__Slice.__init__:   sg     iV((22
zzi//1B1BCC(+C-0$8!    c                    ^  T R                   (       a  SOSnUR                  U 4S j[        T R                  R	                  5       5       5       5      R                  5       $ )N


c              3   `   >#    U  H#  u  pTR                   (       a	  S U S3U-   OUv   M%     g7f)# Cell r:   N)r'   ).0cell_numcontentr2   s      r4   	<genexpr>3Slice._get_slice_text_from_slice.<locals>.<genexpr>P   s6      
%C! 150I0IghZr"W,wV%Cs   +.)r'   joinsortedr$   itemsstrip)r2   seps   ` r4   _get_slice_text_from_slice Slice._get_slice_text_from_sliceN   sK    11ftxx 
%+DNN,@,@,B%C
 
 %'	r7   c           
         [         [        L a  [        S5      eU R                  5       n/ nU R                  [
        R                  :X  a  SnO#U R                  [
        R                  :X  a  SnOS n[        U R                  R                  5       5       Hu  u  pE[        5       R                  U5      nUb8  UR                  (       a'  UR                  S:  a  SU SUR                   SU S3nOS	U 3nUR                  US
U 3-   5        Mw     S
R!                  S [        U R                  R                  5       5       5       5      nU R"                  (       a6  [$        R&                  " U[$        R(                  " 5       S9R+                  5       nU R                  [
        R                  :X  a  Sn	O#U R                  [
        R                  :X  a  Sn	OSn	[        [,        R.                  " S5      R1                  U	UR3                  S5      R5                  S5      UR3                  S5      R5                  S5      SR!                  U5      S95      $ )Nzipywidgets not availablez8javascript:document.getElementById('notebook-container')z|javascript:document.getElementById(document.querySelector('.jp-mod-current').dataset.id).children[2].children[0].children[0]r   z# <a href="z
.children[z].scrollIntoView()">Cell z</a>r<   r:   c              3   *   #    U  H	  u  pUv   M     g 7fr*    )r=   	_cell_numr?   s      r4   r@   +Slice._make_slice_widget.<locals>.<genexpr>v   s      (
.L*	G.L   modez6output_subarea output_text output_stream output_stdoutz7lm-Widget p-Widget jp-RenderedText jp-OutputArea-output a2  
            <div class="{classes}">
            <pre>
            <a href="javascript:navigator.clipboard.writeText('{copy_code}')">Copy code</a> | <a href="javascript:navigator.clipboard.writeText('{copy_cells}')">Copy cells</a>
     
            {code}
            </pre>
            </div>
            unicode_escapezutf-8r9   )classes	copy_code
copy_cellscode)r   r1   
ValueErrorrG   r.   r   JUPYTER
JUPYTERLABrC   r$   rD   r   
at_counteris_current_for_idpositionappendrB   r%   black
format_strFileModerE   textwrapdedentformatencodedecode)
r2   
slice_textslice_text_linked_cellscontainer_selectorr>   r?   cellrendered_cellslice_text_no_cellsrS   s
             r4   _make_slice_widgetSlice._make_slice_widgetU   s   3;788446
"$::***J  ZZ9///+  "&!'(<(<(>!?H7%%h/D".**MMQ& ""4!5Z O$:T+ 
 #*( 4#**=Ry>+IJ "@ #ii (
.4T^^5I5I5K.L(
 
 <<"'"2"2#%..*:#eg   ::***NGZZ9///OGGOO	 f-445EFMMgV%,,-=>EEgN[[!89	  
 	
r7   c                 "    U R                  5       $ r*   )rG   r2   s    r4   __str__Slice.__str__   s    ..00r7   c                 4    [        U R                  5       5      $ r*   )reprrG   ro   s    r4   __repr__Slice.__repr__   s    D33566r7   c                     U R                   [        L a  SU R                  5       0$ U R                   [        L a   U R	                  5       R
                  " S0 UD6$ [        SU R                    35      e)Nz
text/plainzUnknown format type rK   )r&   r1   rG   r   rl   _repr_mimebundle_rW   )r2   kwargss     r4   rw   Slice._repr_mimebundle_   si    s" $"A"A"CDD%**,>>HHH3D4D4D3EFGGr7   c                    U R                    U R                   3n[        U 5      R                  SS9n [        R
                  " US   5      n[        UR                  S   [        R                  5      (       a  SUS   -   US'   SR                  U5      nU R                  =R                  S-  sl        [        U[        5       R                  S9tpVU Vs1 s H%  owR                  R                   S   R"                  iM'     nnU V	s1 s H  n	[        U	[        5      (       d  M  U	iM     n
n	[%        U
5       H?  n	['        [(        U	5      (       d  U	[*        R,                  ;   d  M.  U
R/                  U	5        MA     [%        U
5      nS	/nU H!  n	UR1                  S
R3                  U	S95        M#     SR                  XR                  SS9-   5      n[5        5       R7                  [8        R:                  " SU SSR                  S U 5       5       S[<        R>                  " US5       3[A        5       RB                  S9U   5      $ ! [         a     GNf = fs  snf s  sn	f )NT)keependszreturn rQ      )scoper   zimport sys
zKif {arg} is None: {arg} = sys._getframe().f_back.f_back.f_globals['{arg}']
)argzdef (z, c              3   *   #    U  H	  o S 3v   M     g7f)z=NoneNrK   )r=   r   s     r4   r@   $Slice.to_function.<locals>.<genexpr>   s     ,KdsuE]drN   z):
z    )
global_env)"FUNC_PREFIX_func_counterr1   
splitlinesastparse
isinstancebodyExprSyntaxErrorrB   	__class__r   r   global_scoperefchainvaluelisthasattrbuiltinssysmodulesdiscardr]   rc   r   make_tracing_disabled_funcpycexecra   indentr   user_ns)r2   	func_name
code_lines	last_stmttext	live_refs_r   arg_set_rawr   arg_setargsprepend_liness                r4   to_functionSlice.to_function   s   ''(););(<=	Y))4)8
			*R.1I)..,chh77!*Z^!;
2 wwz"$$)$5d$&BUBUV	9BC#ww}}Q'--C"-F+3C1E3+F=Cx%%);$ ! G}'(C  ^ee f   ww}'EEFx22HHyk499,Kd,K#K"LDQYQ`Q`aegmQnPop 7?? 
 	
)  		
 DFs$   AI ,II$I
II)r%   r&   r.   r'   r$   NT)__name__
__module____qualname____firstlineno__r   PYCCOLO_BUILTIN_PREFIXr   r   r   intr1   boolr   r   r   r5   rG   r   rl   rp   rt   r   rw   r   __static_attributes__rK   r7   r4   r!   r!   6   s    //00DEKM 37%)9S>9 9 d:./	9
 #9 
9(C @
D @
D1 17HT#s(^ H 
r7   r!   c                      \ rS rSr% Sr\\\S   4   \S'   \\\S   4   \S'   \\\S   4   \S'   \\\S   4   \S'   \	S\S \S   4   4S	 j5       r
\	S\S \S   4   4S
 j5       r\	S\S \S   4   4S j5       r\	S\S \S   4   4S j5       r\	S\S \S   4   4S j5       r\	S\S \S   4   4S j5       r\SAS j5       r\ SBS\S\\   SS 4S jj5       r\ SBS\S\\   SS 4S jj5       r\S\SS 4S j5       r\S\S\S    4S j5       r\	S\4S j5       r\	S\\\4   4S j5       r\	S\S    4S j5       r\	S\4S j5       r\	S\ 4S j5       r!\S\"SS 4S j5       r#S\"S\S   SS4S  jr$S\"S!SSS4S" jr%S\"S\S   SS4S# jr&S\"S!SSS4S$ jr'S%\"S&\"SS4S' jr(S(\"S)\"SS4S* jr)\	S\\\S   4   4S+ j5       r*\*RV                  S,\\\S   4   SS4S- j5       r*\	S\\\S   4   4S. j5       r,\,RV                  S/\\\S   4   SS4S0 j5       r,S1\S    SS4S2 jr-S\.S    4S3 jr/\ SCS4\0\\S 4      S5\ S\.S    4S6 jj5       r1\2S1\3S    S\\\4   4S7 j5       r4\ SCS4\0\\S 4      S5\ S\\\4   4S8 jj5       r5S\\\4   4S9 jr6\2S4\0\\S 4      S\\   4S: j5       r7\    SDS4\0\\S 4      S;\ S5\ S<\\8\9      S=\ S\:4S> jj5       r;    SDS;\ S5\ S<\\8\9      S=\ S\:4
S? jjr<S@r=g)Er      zD
Common slicing functionality shared between CodeCell and Statement
r   raw_dynamic_parentsraw_dynamic_childrenraw_static_parentsraw_static_childrenr(   c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )r   rD   from_idr2   pidsymss      r4   dynamic_parentsSliceableMixin.dynamic_parents   E     6:5M5M5S5S5U
5U	DLLt#5U
 	
 
   A c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )r   rD   r   r2   cidr   s      r4   dynamic_childrenSliceableMixin.dynamic_children   sE     6:5N5N5T5T5V
5V	DLLt#5V
 	
 
r   c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )r   rD   r   r   s      r4   static_parentsSliceableMixin.static_parents   sE     6:5L5L5R5R5T
5T	DLLt#5T
 	
 
r   c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )r   rD   r   r   s      r4   static_childrenSliceableMixin.static_children   r   r   c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )raw_parentsrD   r   r   s      r4   parentsSliceableMixin.parents   s;    9=9I9I9O9O9QR9QICS!4'9QRRRr   c                     U R                   R                  5        VVs0 s H  u  pU R                  U5      U_M     snn$ s  snnf r*   )raw_childrenrD   r   r   s      r4   childrenSliceableMixin.children   s;    9=9J9J9P9P9RS9RICS!4'9RSSSr   c                     [         $ r*   NotImplemented)clss    r4   currentSliceableMixin.current       r7   Ntsstmt_numc                     [         $ r*   r   r   r   r   s      r4   at_timestampSliceableMixin.at_timestamp   s
     r7   c                      U R                  XS9$ )N)r   )r   r   s      r4   from_timestampSliceableMixin.from_timestamp   s     66r7   sidc                     [         $ r*   r   r   r   s     r4   r   SliceableMixin.from_id  r   r7   c                     g r*   rK   r   s     r4   from_id_nullableSliceableMixin.from_id_nullable	  s    JMr7   c                     [         $ r*   r   ro   s    r4   	timestampSliceableMixin.timestamp  r   r7   c                     [         $ r*   r   ro   s    r4   idSliceableMixin.id  r   r7   c                     [         $ r*   r   ro   s    r4   prevSliceableMixin.prev  r   r7   c                     [         $ r*   r   ro   s    r4   r   SliceableMixin.text  r   r7   c                     gr   rK   ro   s    r4   
is_currentSliceableMixin.is_current  s    r7   
parent_refc                     [        U[        5      (       a  U R                  U5      $ [        U[        [        45      (       a  U R                  U5      $ U$ r*   )r   r   r   r   r1   r   )r   r   s     r4   	_from_refSliceableMixin._from_ref#  sF    j),,##J//
S#J//;;z**r7   r   c                 b   U(       d  g U R                  U5      nUR                  nX@R                  ;   a  g X@R                  :X  a{  U R                  bm  U R                  R                  R                  5        HE  u  pVX&-  nU(       d  M  U R                  R                  U[        5       5      R                  U5        MG     g U R                  R                  U[        5       5      R                  U5        UR                  R                  U R                  [        5       5      R                  U5        g r*   )	r   r   r   r   r   rD   
setdefaultsetupdate)r2   r   r   parentr   prev_pid	prev_symscommons           r4   add_parent_edgesSliceableMixin.add_parent_edges,  s    
+ii###''>yy$+/99+@+@+F+F+H'H!-Fv((33HceDKKFS ,I ##C/66t<&&tww6==dCr7   symc                 (    U R                  X15        g r*   )r  r2   r   r  s      r4   add_parent_edgeSliceableMixin.add_parent_edge>  s    j%0r7   c                 *   U(       d  g U R                  U5      nUR                  nU R                  U4UR                  U R                  44 HD  u  pVUR	                  U[        5       5      nU(       d  M(  UR                  U5        U(       a  MB  XV	 MF     g r*   )r   r   r   r   getr   difference_update)r2   r   r   r  r   edgeseid	sym_edgess           r4   remove_parent_edges"SliceableMixin.remove_parent_edgesA  s}     
+ii ,,c2V5H5H$''4RSJE		#su-I''-9J Tr7   c                 (    U R                  X15        g r*   )r  r	  s      r4   remove_parent_edge!SliceableMixin.remove_parent_edgeP  s      U3r7   prev_parent_refnew_parent_refc                    U R                  U5      nU R                  U5      nU R                  R                  UR                  5      nUR                  R                  U R                  5        U R                  R                  UR                  [        5       5      R                  U5        UR                  R                  U R                  [        5       5      R                  U5        g r*   )r   r   popr   r   r   r   r   )r2   r  r  prev_parent
new_parentr   s         r4   replace_parent_edges#SliceableMixin.replace_parent_edgesS  s     nn_5^^N3
##KNN3  $$TWW-##JMM359@@F**477CE:AA$Gr7   prev_child_refnew_child_refc                    U R                  U5      nU R                  U5      nU R                  R                  UR                  5      nUR                  R                  U R                  5        U R                  R                  UR                  [        5       5      R                  U5        UR                  R                  U R                  [        5       5      R                  U5        g r*   )r   r   r  r   r   r   r   r   )r2   r  r   
prev_child	new_childr   s         r4   replace_child_edges"SliceableMixin.replace_child_edges]  s     ^^N3
NN=1	  $$Z]]3""477+$$Y\\359@@F((#%8??Er7   c                    [         R                  " 5       nU[        R                  :X  a  U R                  $ U[        R
                  :X  a  U R                  $ [        5       nUR                  (       a   eUR                  n0 nUR                  5        HZ  n[        U SU R                  5      R                  5        H.  u  pgUR                  U[        5       5      R!                  U5        M0     M\     U$ )Ndirectional_parents)r   r  r   DYNAMICr   STATICr   r   is_testr,   iter_slicing_contextsgetattrr   rD   r   r   r   )r2   ctxflow_settingsr   r   r   r   s           r4   r   SliceableMixin.raw_parentsg  s    !!#.(((+++N)))*** ==  %%/1//1A$+T-=-=eg	 ""3.55d; 2
 r7   new_parentsc                     [         R                  " 5       nUc   eU[        R                  :X  a  Xl        g U[        R
                  :X  a  Xl        g  er*   )r   r  r   r(  r   r)  r   )r2   r1  r-  s      r4   r   r0  {  sG    !!#.((('2$N)))&1#5r7   c                    [         R                  " 5       nU[        R                  :X  a  U R                  $ U[        R
                  :X  a  U R                  $ [        5       nUR                  (       a   eUR                  n0 nUR                  5        HZ  n[        U SU R                  5      R                  5        H.  u  pgUR                  U[        5       5      R!                  U5        M0     M\     U$ )Ndirectional_children)r   r  r   r(  r   r)  r   r   r*  r,   r+  r,  r   rD   r   r   r   )r2   r-  r.  r/  r   r   r   r   s           r4   r   SliceableMixin.raw_children  s    !!#.(((,,,N)))+++ ==  %%02//1A$,d.?.?eg	 ##C/66t< 2
 r7   new_childrenc                     [         R                  " 5       nUc   eU[        R                  :X  a  Xl        g U[        R
                  :X  a  Xl        g  er*   )r   r  r   r(  r   r)  r   )r2   r6  r-  s      r4   r   r5    sG    !!#.((((4%N)))'3$5r7   closurec                    X;   a  g UR                  U 5        [        5       R                  R                  5        H  nU R                  R                  5        Hz  nU R                  U5      nUR                  U R                  :  a;  [        USS5      (       a  O(UR                  nUR                  U R                  :  a  M;  UR                  U5        M|     M     g )NoverrideF)addr   r,   r+  r   keysr   r   r,  r   _make_slice_helper)r2   r8  r   r   r  s        r4   r=  !SliceableMixin._make_slice_helper  s    ?D$$::<A'',,.c*&&7vz599#[[F &&7 ))'2 / =r7   c                 &    U R                  U /5      $ r*   )make_multi_slicero   s    r4   
make_sliceSliceableMixin.make_slice  s    $$dV,,r7   seeds	seed_onlyc                     [        5       nU H\  n[        U[        [        45      (       a  U R	                  U5      OUnU(       a  UR                  U5        MK  UR                  U5        M^     [        US S9$ )Nc                     U R                   $ r*   )r   )deps    r4   <lambda>1SliceableMixin.make_multi_slice.<locals>.<lambda>  s    s}}r7   )key)r   r   r   r   r   r;  r=  rC   )r   rC  rD  r8  seed
slice_seeds         r4   r@  SliceableMixin.make_multi_slice  sk     *-D*4TIs;K*L*L  &RV  J'--g6  g#<==r7   c                    0 nU  HB  nUR                  UR                  R                  / 5      R                  UR                  5        MD     UR                  5        VVs0 s H  u  p4USR                  U5      _M     snn$ s  snnf )Nr:   )r   r   r>   r]   r   rD   rB   )r8  slice_text_by_cell_num	sliceabler>   r   s        r4   make_cell_dict_from_closure*SliceableMixin.make_cell_dict_from_closure  s     8: I"--i.A.A.J.JBOVV ! #9">">"@
"@ diio%"@
 	
 
s   B c                 >    U R                  U R                  XS95      $ )NrD  )rQ  r@  )r   rC  rD  s      r4   make_cell_dict_multi_slice)SliceableMixin.make_cell_dict_multi_slice  s(     ..   <
 	
r7   c                 &    U R                  U /5      $ r*   )rU  ro   s    r4   make_cell_dict_slice#SliceableMixin.make_cell_dict_slice  s    ..v66r7   c                    [        5       nU  H  n[        U[        [        45      (       d  UR                  n[        U[        [        45      (       d   e[        5       R                  U5      R                  nUS:X  a  UR                  U5        M  [        U[        5      (       a  UR                  U5        M  UR                  [        X2R                  5      5        M     U$ )Nr|   )
r   r   r   r   r   r   r   skipped_due_to_memoization_ctrr;  r   )rC  processed_seedsrK  mem_ctrs       r4   _process_memoized_seeds&SliceableMixin._process_memoized_seeds  s     475DdY$455~~dY$45555g**40OOG"}##D)dC((#''0#''	'==(IJ  r7   r%   r&   r'   c                 V    U R                  U5      n[        U R                  XS9UUUS9$ )NrT  r%   r&   r'   )r^  format_slicerU  )r   rC  r%   rD  r&   r'   s         r4   format_multi_slice!SliceableMixin.format_multi_slice  s;     ++E2**5*F#!5	
 	
r7   c                 *    U R                  U /UUUUS9$ )N)r%   rD  r&   r'   )rc  )r2   r%   rD  r&   r'   s        r4   rb  SliceableMixin.format_slice  s-     &&F#!5 ' 
 	
r7   )r   r   r   r   )r(   r   r*   )F)TFNT)>r   r   r   r   __doc__r   r   r
   __annotations__propertyr   r   r   r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r1   r   r   r   r   r   SliceRefTyper   r  r
  r  r  r  r$  r   setterr   r=  r   rA  r   r@  staticmethodr	   rQ  rU  rX  r^  r   r   r!   rc  rb  r   rK   r7   r4   r   r      sS    fc(m344vs8}455VS]233fc(m344
&6H&E!F 
 

 
$'7X'F"G 
 

 
%5s8}%D E 
 

 
&6H&E!F 
 

 S.H=> S S T$/X>? T T   ?C#/7}	 
 ?C7#7/7}7	7 7
 & %5   M6Mh7G.HM M9   E#s(O   h/0   c   D   < 4D  D< Ds8} DQU D$1, 1X 1$ 1&.1(m	4\ 4 4T 4H+H=IH	HF*F;GF	F T&#h-"78  & tFCM,A'B t   d63x=#89  & fc(m.C)D   3#.>*? 3D 3-D!12 -   >02BBCD> > 
		> >  
*+
	c3h
 
   
02BBCD
 
 
c3h	
 
7d38n 7 02BBCD		  $  26%)
02BBCD
 
 	

 d:./
 #
 

 
$ 26%)

 
 d:./	

 #
 

 
r7   r$   r%   r&   r'   r(   c                 P   [        U 5      n U(       a[  [        U R                  5       5       H>  u  pE [        R                  " U[        R
                  " 5       S9R                  5       X'   M@     [        U UUUS9$ ! [         a!  n[        R                  SU5         S nAMt  S nAff = f)NrO   z'call to black failed with exception: %sra  )r+   r   rD   r^   r_   r`   rE   	Exceptionloggerinfor!   )r$   r%   r&   r'   r>   r?   es          r4   rb  rb    s     YI!%ioo&7!8HJ&+&6&6%.."2'%' # "9 1	   JEqIIJs   8A::
B%B  B%)TNT);r   r   loggingr   ra   typingr   r   r   r   r   r   r	   r
   r   r   r   r^   pyccolor   ipyflow.analysis.live_refsr   ipyflow.configr   ipyflow.data_model.timestampr   ipyflow.modelsr   ipyflow.singletonsr   r   r   ipyflow.slicing.contextr   r   ipyflow.typesr   r   
ipywidgetsr   ro  r1   version_infor   objectipyflow.data_model.symbolr   r   rk  	getLoggerr   rp  setLevelWARNINGr!   r   r   r   rb  rK   r7   r4   <module>r     s5   
   
       D $ 2   2 2 C 4 vH0 \4-
%vy89 
		8	$   O
 O
dJ
X J
^
 .2!%	CH~ $z*+ 	
 g  Ds   *D
 
DD