
    uki                         d dl Z d dlZd dlZd dlZ G d dej                        Z e       ZddZe j                  d        Z	e j                  d        Z
e j                  deddedz  d	efd
       Zd Zy)    Nc                       e Zd ZdZd Zy)_WarningContextz<Thread-local state that contains a list of warning handlers.c                     g | _         y N)handlers)selfs    U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/test_warning_util.py__init__z_WarningContext.__init__#   s	    DM    N)__name__
__module____qualname____doc__r
    r   r	   r   r       s
    @r   r   c           	      l    t        t        j                        D ]  } || |||||      s y   ||       r   )reversed_contextr   )messagecategoryfilenamelinenofilelinehandlers          r	   _showwarningr   ,   s>    (++, gw(FD$? 	r   c               #     K   t         j                  t        ur7t        j                         5  t        j                  d       d ddd       ydd} t
        j                  j                  |        	 d t
        j                  j                          y# 1 sw Y   yxY w# t
        j                  j                          w xY ww)z@Context manager that raises an exception if a warning is raised.errorNc                      ||       r   r   )r   r   r   r   r   r   s         r	   r   z"raise_on_warnings.<locals>.handler<   s    
7
r   NN	warningsshowwarningr   catch_warningssimplefilterr   r   appendpop)r   s    r	   raise_on_warningsr'   3   s      -		 	 	" G$  7#	  s4   +CB,C4B# 8CB C# CCc               #     K   t         j                  t        ur9t        j                  d      5 } t        j                  d       |  ddd       yg dfd	}t
        j                  j                  |       	  t
        j                  j                          y# 1 sw Y   yxY w# t
        j                  j                          w xY ww)z?Context manager that yields a list of warnings that are raised.T)recordalwaysNc           
      X    j                  t        j                  | |||||             y)NT)r%   r!   WarningMessage)r   r   r   r   r   r   logs         r	   r   z record_warnings.<locals>.handlerQ   s(    JJx&&w(FDRVWXr   r   r    )wr   r-   s     @r	   record_warningsr/   F   s      -		 	 	- H%g 
# 7#
I  s4   -CB
0C;B* ?CB'#C* C

Cr   r   r   r   c              #     K   t         j                  t        ur>t        j                         5  t        j                  d| dn| |       d ddd       y| rt        j                  |       nd|dfd	}t        j                  j                  |       	 d t        j                  j                          y# 1 sw Y   yxY w# t        j                  j                          w xY ww)z3Context manager that ignores any matching warnings.ignoreN r0   c                     t        | t              rt        |       n| }j                  |      rt	        |      ryy)NTF)
isinstanceWarningstrmatch
issubclass)	r   r   r   r   r   r   textcategory_cls
message_res	          r	   r   zignore_warning.<locals>.handlerm   s>    %gw73w<WDj..t4*,; r   r   )r!   r"   r   r#   filterwarningsrecompiler   r   r%   r&   )r   r   r   r;   r<   s      @@r	   ignore_warningr@   \   s      -		 	 	" "WxQ G$JJ, 7#	3 * s5   +C.!B?AC.C  C.?CC. C++C.c                  L    t         t        _        t        j                  d       y )Nr*   )r   r!   r"   r$   r   r   r	   #install_threadsafe_warning_handlersrB   |   s     &(
 !r   r   )
contextlibr>   	threadingr!   localr   r   r   contextmanagerr'   r/   r6   r7   typer@   rB   r   r   r	   <module>rH      s   4  	  ioo  
  $  * ,07 sTz D  >"r   