
     e                         d Z ddlmZmZmZ ddlZddlZddlm	Z	 ddl
mZmZ ddlmZmZmZ ddlZd Zed             Zed	             Zed
             Zed             ZdS )z
Tests used to verify running PyWavelets transforms in parallel via
concurrent.futures.ThreadPoolExecutor does not raise errors.
    )divisionprint_functionabsolute_importN)partial)assert_array_equalassert_allclose)uses_futuresfuturesmax_workersc                 ~   t          |           t          |          k    rdS t          | |          D ]\  }}t          |t                    r't          ||          D ]\  }}t	          ||           At          |t
                    r1|                                D ]\  }}t	          |||                     dS dS )NFT)lenzip
isinstancetupler   dictitems)coefs1coefs2c1c2a1a2kvs           :lib/python3.11/site-packages/pywt/tests/test_concurrent.py_assert_all_coeffs_equalr      s    
6{{c&kk!!u'' 
 
Rb%   		b"++ + +B"2r****+D!! 	

 - -1"1be,,,,- 554    c            
         t          j                    5  t          j        dt                     t	          t
          j        t
          j        t
          j        gt          j
        d          t          j        d          t          j        d          g          D ]\  } t          | dd          }t          d          D ]r}fdt          d	          D             }t          j        t           
          5 }t#          |                    ||                    }d d d            n# 1 swxY w Y   s |          }t'          ||d                    d d d            d S # 1 swxY w Y   d S )Nignore      haar   waveletlevel
   c                 8    g | ]}                                 S  copy.0_xs     r   
<listcomp>z'test_concurrent_swt.<locals>.<listcomp>/   s!    555Q555r   d   r   )warningscatch_warningssimplefilterFutureWarningr   pywtswtswt2swtnnponeseyer   ranger
   ThreadPoolExecutorr   listmapr   )swt_func	transformr.   arrsexresultsexpected_resultr/   s          @r   test_concurrent_swtrI   #   s   
 
	 	"	" ? ?h666$)TY? "

BF2JJr

CE E 	< 	<KHa&BBBI2YY < <5555%**555/KHHH <B"266)T#:#:;;G< < < < < < < < < < < < < < << $)A,, '"+>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s6   C"E"7$D'	E"'D++E".D+/&E""E&)E&c            	      R   t          t          j        t          j        t          j        gt          j        d          t          j        d          t          j        d          g          D ]\  } t          | dd          }t          d          D ]r}fdt          d          D             }t          j        t          	          5 }t          |                    ||                    }d d d            n# 1 swxY w Y   s |          }t          ||d
                    d S )Nr    r!   r"      r$   r'   c                 8    g | ]}                                 S r)   r*   r,   s     r   r0   z+test_concurrent_wavedec.<locals>.<listcomp>@   !    111AFFHH111r   r1   r2   r3   )r   r8   wavedecwavedec2wavedecnr<   r=   r>   r   r?   r
   r@   r   rA   rB   r   )wavedec_funcrD   r.   rE   rF   rG   rH   r/   s          @r   test_concurrent_wavedecrR   8   sO    dmT]K "

BF2JJr

CE E 
? 
?aL&BBB	r 	8 	8A1111eCjj111D+DDD 8rvvi66778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 $)A,, '"+>>>>
? 
?s   	$C99C= C=c            	      T   t          t          j        t          j        t          j        gt          j        d          t          j        d          t          j        d          g          D ]\  } t          | d          }t          d          D ]r}fdt          d          D             }t          j        t                    5 }t          |                    ||                    }d d d            n# 1 swxY w Y   s |          }t          |g|d	         g           d S )
Nr    r!   r"   )r%   r'   c                 8    g | ]}                                 S r)   r*   r,   s     r   r0   z'test_concurrent_dwt.<locals>.<listcomp>Q   rM   r   r1   r2   r3   )r   r8   dwtdwt2dwtnr<   r=   r>   r   r?   r
   r@   r   rA   rB   r   )dwt_funcrD   r.   rE   rF   rG   rH   r/   s          @r   test_concurrent_dwtrY   I   sV    DHdi;GAJJr

BF2JJ?A A 
G 
G!Hf555	r 	8 	8A1111eCjj111D+DDD 8rvvi66778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 $)A,, /!4wr{oFFFF
G 
Gs   $C88C<?C<c                  L   dx} }t           j                                        \  }|d         |d         z
  }t          t           j        t          j        dd          d|          }t          d          D ]r}fdt          d	          D             }t          j	        t          
          5 }t          |                    ||                    }d d d            n# 1 swxY w Y   s |          }	t          |	|d                   D ]\  }
}t          |
|| |           d S )Ng+=rK   r      z	cmor1.5-1)scalesr%   sampling_periodr'   c                 8    g | ]}                                 S r)   r*   )r-   r.   ssts     r   r0   z'test_concurrent_cwt.<locals>.<listcomp>b   s!    ...q

...r   2   r2   r3   )atolrtol)r8   dataninor   cwtr<   aranger?   r
   r@   r   rA   rB   r   r   )ra   rb   timedtrD   r.   rE   rF   rG   rH   r   r   r_   s               @r   test_concurrent_cwtri   Z   sf   D4	  ID#	aaB1a+(*, , ,I2YY 4 4....E"II...'K@@@ 	4B266)T2233G	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4  innOowr{33 6 6BBT555556 6s   .$CC"	%C"	)__doc__
__future__r   r   r   r4   numpyr<   	functoolsr   numpy.testingr   r   pywt._pytestr	   r
   r   r8   r   rI   rR   rY   ri   r)   r   r   <module>rp      s   
 A @ @ @ @ @ @ @ @ @            = = = = = = = = ; ; ; ; ; ; ; ; ; ;   $ ? ? ?( ? ? ?  G G G  6 6 6 6 6r   