
    >ie              
         d Z ddlmZ ddlZddlmZ ddlZddlZddlm	Z	 ed             Z
d Zd Zd	 Zej                            d
dg dfg g dfdgg dfdgddgfdgddgfg          d             Z	 ddlZn# e$ r dZY nw xY wej                            dg d          d             Zej                            dg d          d             Zd Zd ZdS )zTests on traceback shortening heuristics

See Also
--------
distributed/tests/test_client.py::test_short_tracebacks
distributed/tests/test_client.py::test_short_tracebacks_async
    )annotationsN)contextmanager)shorten_tracebackc              #  4  K   t          j        t                    5 }d V  d d d            n# 1 swxY w Y   t          t	          j        |j                            }d |D             }|d         dk    s
J |            |dd          | k    s
J |            d S )Nc                2    g | ]}|d          j         j        S )r   )f_codeco_name).0frames     9lib/python3.11/site-packages/dask/tests/test_traceback.py
<listcomp>z$assert_tb_levels.<locals>.<listcomp>   s!    ???u58?*???    r   assert_tb_levels   )pytestraisesZeroDivisionErrorlist	tracebackwalk_tbtb)expecteframesframe_namess       r   r   r      s      	(	)	) Q              )#AD))**F?????Kq>///////qrr?f$$$k$$$$$s   -11c                     ddz  S )Nr   r    r   r   r   f1r      s    q5Lr   c                 $    t                      dz   S )N   )r   r   r   r   f2r!   !       44!8Or   c                 $    t                      dz   S )Nr   )r!   r   r   r   f3r$   %   r"   r   zregexes,expect)test_shorten_tracebackr$   r!   r   nomatchz.*r%   r   testsc                0   t           j                            d| i          5  t          |          5  t	                      5  t                       ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z
    See also
    --------
    test_distributed.py::test_shorten_traceback_excepthook
    test_distributed.py::test_shorten_traceback_ipython
    admin.traceback.shortenN)daskconfigsetr   r   r$   )regexesr   s     r   r%   r%   )   sO   ( 
3W=	>	>  f%% 	 	"$$                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sX   BA3AA3A  A3#A $A3'B3A7	7B:A7	;BBB	scheduler)threads	processessyncc                    t          j        t                                }d}| dk    rt          sdg}ng d}|dg|}t	          |          5  t          j         |            |            d d d            n# 1 swxY w Y   |ddg|}t	          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Ntest_compute_shorten_tracebackr0   reraiser$   r!   r   computer.   )r*   delayedr$   tblibr   r6   r.   d	TEST_NAMEremote_stackr   s        r   r3   r3   I   h   RA0IK!{)))2\2F	&	!	! / /QQSSI..../ / / / / / / / / / / / / / / I==F	&	!	! ' '			I	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '$   A99A= A=B>>CCc                    t          j        t                                }d}| dk    rt          sdg}ng d}|dg|}t	          |          5  t          j         |            |            d d d            n# 1 swxY w Y   |ddg|}t	          |          5  |                    |            d d d            d S # 1 swxY w Y   d S )Ntest_persist_shorten_tracebackr0   r4   r5   persistr7   )r*   r8   r$   r9   r   rB   r:   s        r   rA   rA   \   r>   r?   c                 L   t          j        d          } |                     dd          5   t          j        t
                                }t          j        |          \  }|                                }d}|dddd	g}t          |          5  t          j         |                       d d d            n# 1 swxY w Y   |ddddd	g}t          |          5  |                                 d d d            n# 1 swxY w Y   |dddd	g}t          |          5  t          j        |           d d d            n# 1 swxY w Y   |ddddd	g}t          |          5  |                                 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
NdistributedFz:0)r0   dashboard_address"test_distributed_shorten_tracebackr6   r$   r!   r   )	r   importorskipClientr*   r8   r$   rB   r   r6   )rD   r;   dp1dp2r<   r   s         r   rF   rF   o   s   %m44K			et		D	D  DLaiikk8	YdD9f%% 	 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Y	4tDf%% 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 YdD9f%% 	 	L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Y	4tDf%% 	 	KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	)                 s   A$FB9-F9B=	=F B=	FC<0F<D 	 FD 	FD>2F>E	FE	F F5FF	FF		FF Fc                ^   i }t           j                            |           t           j                            d|          }t	          |t
                    rt          |          dk    sJ i }t          | dz  d          5 }|                    d           ddd           n# 1 swxY w Y   t          j
        t                    5  t           j                            || g           ddd           n# 1 swxY w Y   t           j                            d|          }|d	gk    sJ dS )
z@Test config override in the format between 2023.6.1 and 2023.8.1)r+   r)      z	dask.yamlwz
            admin:
              traceback:
                shorten:
                  when:
                    - dask/base.py
                  what:
                    - dask/core.py
            N)r+   pathszdask/core.py)r*   r+   refreshget
isinstancer   lenopenwriter   warnsFutureWarning)tmp_pathr;   actualfhs       r   test_deprecated_configrZ      s   
AKq!!![__6q_AAFfd##7Fa
A	h$c	*	* 
b

	
 
	
 
	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
m	$	$ 8 81XJ7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8[__6q_AAFn%%%%%%%s$   B%%B),B)	#C88C<?C<)__doc__
__future__r   r   
contextlibr   r   r*   
dask.utilsr   r   r   r!   r$   markparametrizer%   r9   ImportErrorr3   rA   rF   rZ   r   r   r   <module>rb      s    # " " " " "     % % % % % %   ( ( ( ( ( ( 2 2 2       	;;;<	999:
BBBC *D12
-t45	 
 
 
LLLL   EEE &F&F&FGG' ' HG'$ &F&F&FGG' ' HG'$  4& & & & &s   6A; ;BB