
    uki(                    |   U d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ  ej(                  e       ej,                  Z G d de      Ze	j0                  j3                  e	j0                  j3                  e            e	j4                  z    ej6                  d	      e	j0                  j3                  ej*                        gZd
ed<   ej<                  d6d       Zd7dZg Z d
ed<   ej<                  d6d       Z!d7dZ" G d de      Z# G d de      Z$ ejJ                  d       G d d             Z&d8d9dZ' G d d      Z(d:dZ)ej<                  d;d       Z*d<dZ+d=dZ, ejZ                  d !      d>d"       Z.d?d#Z/d@dAd$Z0 G d% d&ejb                        Z2 e2       Z3d:d'Z4 G d( d)e5      Z6d*Z7d+ Z8 G d, d-      Z9e9Z:dBd.Z; G d/ d0ejx                        Z=e=Z> G d1 d2ejx                        Z?e?Z@ej                  dCd3       ZB G d4 d5ejx                        ZCeCZDy)D    )annotations)IteratorN)
NamedTuple)
xla_client)traceback_utilc                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   y	)
Framestr	file_namefunction_nameint
start_linestart_columnend_line
end_columnN)__name__
__module____qualname____annotations__     T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/source_info_util.pyr	   r	   %   s"    ./-/r   r	   stdlib	list[str]_exclude_pathsc                     t        t              dkD  sJ t        j                  dj	                  d t        D                    S )Nr   |c              3  L   K   | ]  }d t        j                  |         yw)^N)reescape).0paths     r   	<genexpr>z&_exclude_path_regex.<locals>.<genexpr><   s      Ntq4 12Ns   "$)lenr   r    compilejoinr   r   r   _exclude_path_regexr(   8   s5     
^	q	  	 	CHHN~NN	OOr   c                ~    t         j                  |        t        j                          t        j                          y N)r   appendr(   cache_clearis_user_filenamer#   s    r   register_exclusionr/   ?   (    !!# r   _include_pathsc                     t         D  cg c]  } dt        j                  |         }} |j                  d       t        j                  dj                  |            S c c} w )Nr   z	_test.py$r   )r1   r    r!   r+   r&   r'   )r#   patternss     r   _include_path_regexr4   H   sO    0>?"))D/"#?(?
//+	CHHX&	'' @s   Ac                ~    t         j                  |        t        j                          t        j                          y r*   )r1   r+   r4   r,   r-   r.   s    r   register_inclusionr6   N   r0   r   c                       e Zd ZU ded<   ddZy)Scoper
   namec                :    |j                  | j                         y r*   )r+   r9   selfstacks     r   wrapz
Scope.wrapW   s    	LLr   Nr=   r   r   r   r   r   r>   r   r   r   r8   r8   T   s    )r   r8   c                       e Zd ZU ded<   ddZy)	Transformr
   r9   c                v    |r| j                    d|d    d|d<   y |j                  | j                    d       y )N()z())r9   r+   r;   s     r   r>   zTransform.wrap]   s:    YYKqr1-eBilldii[#$r   Nr?   r@   r   r   r   rB   rB   Z   s    )%r   rB   T)frozenc                  R    e Zd ZU dZded<   ddZddZddZd ZddZ	dd	Z
dd
Zy)	NameStackr   ztuple[Scope | Transform, ...]r=   c                H    t        g | j                  t        |            S r*   )rI   r=   r8   r<   r9   s     r   extendzNameStack.extendh   s     /tzz/5;/00r   c                H    t        g | j                  t        |            S r*   )rI   r=   rB   )r<   transform_names     r   	transformzNameStack.transformk   s!    =tzz=9^#<=>>r   c                2    t        | j                  |         S r*   rI   r=   )r<   idxs     r   __getitem__zNameStack.__getitem__n   s    TZZ_%%r   c                ,    t        | j                        S r*   )r%   r=   r<   s    r   __len__zNameStack.__len__q   s    tzz?r   c                F    t        | j                  |j                  z         S r*   rQ   r<   others     r   __add__zNameStack.__add__t   s    TZZ%++-..r   c                F    t        |j                  | j                  z         S r*   rQ   rX   s     r   __radd__zNameStack.__radd__w   s    U[[4::-..r   c                    g }| j                   d d d   D ]  }|j                  |        dj                  t        |            S )NrE   /)r=   r>   r'   reversed)r<   scopeelems      r   __str__zNameStack.__str__z   sB    E

4R4  
ii88HUO$$r   Nr9   r
   returnrI   )rN   r
   rd   rI   )rR   slicerd   rI   )rY   rI   rd   rI   )rd   r
   )r   r   r   r=   r   rL   rO   rS   rV   rZ   r\   rb   r   r   r   rI   rI   d   s0    )+%	&+1?&//%r   rI   c                @    t               }| r|j                  |       }|S r*   )rI   rL   )r9   
name_stacks     r   new_name_stackrh      s"    {*	""4(J	r   c                  H    e Zd ZU ded<   ded<   ddgZd	dZddd	 	 	 d
dZy)
SourceInfoTraceback | None	tracebackrI   rg   c                     || _         || _        y r*   rl   rg   r<   rl   rg   s      r   __init__zSourceInfo.__init__   s    DN DOr   Nrn   c               Z    t        || j                  n||| j                        S |      S r*   )rj   rl   rg   ro   s      r   replacezSourceInfo.replace   s6    #+%- 3= r   )rl   rk   rg   rI   )rl   rk   rg   NameStack | Nonerd   rj   )r   r   r   r   	__slots__rp   rr   r   r   r   rj   rj      s<     L))! 6:%)".8r   rj   c                 *    t        d t                     S r*   )rj   rI   r   r   r   new_source_inforv      s    	D)+	&&r   c                r    t               j                  |       duxs t               j                  |       du S )zHHeuristic that guesses the identity of the user's code in a stack trace.N)r4   searchr(   )filenames    r   r-   r-      s:     

&
&x
0
< < "))(3t;=r   c                    t         j                  j                  | |      }|\  }}}}t        | j                  | j
                  ||||      S )N)r   r   r   r   r   r   )r   	Tracebackcode_addr2locationr	   co_filenameco_qualname)codelastilocr   r   r   r   s          r   raw_frame_to_framer      sP    //e<#360*lHj	)) ,,#,J
8 8r   c                t    | r| j                         ng g f\  fdt        t                    D        S )z?Iterator over the user's frames, filtering jax-internal frames.c              3  r   K   | ].  }t        |   j                        rt        |   |          0 y wr*   )r-   r}   r   )r"   ir   r   s     r   r$   zuser_frames.<locals>.<genexpr>   s9      
4Ad1g112 T!WeAh
/ 
4s   47)
raw_framesranger%   )rl   r   r   s    @@r   user_framesr      s9     +4	$$&"b+$
4s4y9I 
4 4r   @   )maxsizec                ,    t        t        |       d       S r*   )nextr   rl   s    r   
user_framer      s    	k)$d	++r   c                    | j                   dk7  r6| j                   d| j                   d| j                    d| j                   dS | j                   d| j                   d| j                   dS )Nr   :z (rF   )r   r   r   r   )frames    r   _summarize_framer      s    
1q!1!1 2!E4F4F3G H##$A' ( ooa 0 01E4G4G3HJJr   c                    t        j                  t        | j                        |      }|D cg c]  }|rt	        |      nd }}dj                  t        |            S c c}w )Nunknown
)	itertoolsislicer   rl   r   r'   r_   )source_info
num_framesframesr   
frame_strss        r   	summarizer      sb    K(=(=>
K&#% ,1 'i? %* %	8J'	((%s   A c                      e Zd ZU ded<   d Zy)_SourceInfoContextrj   contextc                "    t               | _        y r*   )rv   r   rU   s    r   rp   z_SourceInfoContext.__init__   s    "$DLr   N)r   r   r   r   rp   r   r   r   r   r      s    %r   r   c                     t         j                  } | j                  s.| j                  t        j
                  j                               } | S )Nr   )_source_info_contextr   rl   rr   r   r{   get_traceback)r   s    r   currentr      s>    $,,+			%%
0D0D0R0R0T%UK	r   c                      e Zd Zy)!JaxStackTraceBeforeTransformationN)r   r   r   r   r   r   r   r      s    r   r   zThe preceding stack trace is the source of the JAX operation that, once transformed by JAX, triggered the following exception.

--------------------c                H    |  t        | t              ry| j                  } |  y)NTF)
isinstancer   	__cause__)es    r   has_user_contextr      s*    	!67	A 	
 
r   c                  0    e Zd Zg dZdd	 ddZd Zd Zy)UserContextManager)rl   rg   prevNrg   c                    || _         || _        y r*   rn   ro   s      r   rp   zUserContextManager.__init__   s    DN DOr   c                    t         j                  | _        t         j                  j                  | j                  | j
                        t         _        y )Nrn   )r   r   r   rr   rl   rg   rU   s    r   	__enter__zUserContextManager.__enter__   s<    $,,DI#7#?#?#G#G..T__ $H $> r   c                   | j                   t        _        ||y | j                  t	        |      ry t        j                  | j                  j                               }|r|t        j                  |      }| dt         }t        |      j                  |      }|j                  |_        |j                  |_        |j                  |_        d |_        ||_        y y )Nz

)r   r   r   rl   r   r   filter_tracebackas_python_tracebackformat_exception_only_messager   with_traceback__context__r   __suppress_context__)r<   exc_type	exc_valuerl   filtered_tbmsgexps          r   __exit__zUserContextManager.__exit__   s    #'99 9,~~!1)!< 11$..2T2T2VWK00;ce4z"c-c2AA+Nc!--co))cm!*!?!?c"ii r   )rl   rk   rg   rs   r   r   r   rt   rp   r   r   r   r   r   r   r      s#    1) /3!+!
>
 r   r   c                 6    t         j                  j                  S r*   )r   r   rg   r   r   r   current_name_stackr   	  s    		%	%	0	00r   c                  (    e Zd ZddgZddZd Zd Zy)ExtendNameStackContextManagerr9   r   c                    || _         y r*   r9   rK   s     r   rp   z&ExtendNameStackContextManager.__init__  	    DIr   c                    t         j                  x| _        }|j                  j	                  | j
                        }|j                  |      t         _        |S Nr   )r   r   r   rg   rL   r9   rr   r<   r   rg   s      r   r   z'ExtendNameStackContextManager.__enter__  sF    +333DI''		2J#'<<:<#F r   c                .    | j                   t        _        y r*   r   r   r   r<   r   r   rl   s       r   r   z&ExtendNameStackContextManager.__exit__      #'99 r   Nr9   r
   r   r   r   r   r   r         v)-r   r   c                  (    e Zd ZddgZddZd Zd Zy)SetNameStackContextManagerrg   r   c                    || _         y r*   r   )r<   rg   s     r   rp   z#SetNameStackContextManager.__init__"  s	     DOr   c                |    t         j                  x| _        }|j                  | j                        t         _        y r   )r   r   r   rr   rg   )r<   r   s     r   r   z$SetNameStackContextManager.__enter__%  s,    +333DI#'<<4??<#K r   c                .    | j                   t        _        y r*   r   r   s       r   r   z#SetNameStackContextManager.__exit__)  r   r   N)rg   rI   r   r   r   r   r   r     s    V$)!L-r   r   c               #  d   K   t        t                     5  d  d d d        y # 1 sw Y   y xY wwr*   )set_name_stackrI   r   r   r   reset_name_stackr   4  s'     ik" 
	
 
 
s   0$	0-0c                  (    e Zd ZddgZddZd Zd Zy) TransformNameStackContextManagerr9   r   c                    || _         y r*   r   rK   s     r   rp   z)TransformNameStackContextManager.__init__=  r   r   c                    t         j                  x| _        }|j                  j	                  | j
                        }|j                  |      t         _        |S r   )r   r   r   rg   rO   r9   rr   r   s      r   r   z*TransformNameStackContextManager.__enter__@  sF    +333DI**4995J#'<<:<#F r   c                .    | j                   t        _        y r*   r   r   s       r   r   z)TransformNameStackContextManager.__exit__F  r   r   Nr   r   r   r   r   r   r   :  r   r   r   )rd   zre.Pattern[str])r#   r
   ) rc   )rd   rj   )ry   r
   rd   bool)r   ztypes.CodeTyper   r   rd   r	   )rl   rk   rd   zIterator[Frame])rl   rk   rd   zFrame | None)r   r	   rd   r
   )   )r   rj   rd   r
   )rd   rI   )rd   zIterator[None])E
__future__r   collections.abcr   
contextlibdataclasses	functoolsr   os.pathosr    	sysconfig	threadingtypestypingr   jax._src.libr   jax._srcr   r/   __file__r{   r	   r#   dirnamesepget_pathr   r   cacher(   r1   r4   r6   r8   rB   	dataclassrI   rh   rj   rv   r-   r   r   	lru_cacher   r   r   localr   r   r   	Exceptionr   r   r   r   user_contextr   ContextDecoratorr   extend_name_stackr   r   contextmanagerr   r   transform_name_stackr   r   r   <module>r      sU   # $      	     # # ! ! !( +   	J  GGOOBGGOOH-.7 Ix GGOOJ''(	  P P! 	 
( (
!J %
 % d#% % $%8 $' = =8
4 R , !,K)% % *+  9	 8 	
   @ "1-J$?$? - 2 -!<!< - , 
 

-z'B'B - 8 r   