
    d,                        d dl mZ d dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZ d$d	Zej                            d
ddg          ej                            dddg          d                         Zej                            d
ddg          d             Zed             Zej                            ddej        ffdg          d%d            Zej        j        ej                            ddd          ej                            dd          ej                            dd          d$d                                                Zej                            ddej        ffdg          d%d            Zej                            ddd          ej                            dd          ej                            dd           d%d!                                    Z G d" d#          ZdS )&    )annotationsN)	DataArrayDatasetset_options)assert_allcloseassert_equalassert_identicalhas_daskraise_if_dask_computesrequires_cftimedsr   returnNonec                    t          j        t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Nznot found in Dataset.)match   foo)pytestraises
ValueErrorcoarsen)r   s    9lib/python3.11/site-packages/xarray/tests/test_coarsen.pytest_coarsen_absent_dims_errorr      s    	z)A	B	B	B  


q
                 s   A  AAdaskTF)boundaryside)trimleft)padrightc                   |rt           r|                     ddi          } |                     dd||                                          }t	          |d         | d                             d||                                                     t	          |d         | d                             d||	                                                     d S )
Nx   r      )timer#   r   r   z1)r#   r   r   r&   )r&   r   r   )r
   chunkr   maxr   mean)r   r   r   r   actuals        r   test_coarsen_datasetr,      s         XXsAhZZQ!hTZBBFFHHFtbh&&XD&IIMMOO   v6
**H4*PPUUWW        c           
        |rt           r|                     ddi          } |                     dddddi                                          }t	          |d	         | d	                             dd
                                                     t	          |d         | d                             dd                                                     t          j        t                    5  |                     d                                           d d d            n# 1 swxY w Y   | 	                    t          ddt          | d                   dz  z                                          d                                           t          j        t          j        ddd          ddt!          j        dd          i          }|                    d                                          }d S )Nr#   r$   r   r%   r   r&   r)   )r&   r#   r   
coord_funcr'   )r#   r   r&   r   )r#   r   m  il  )numz
1999-12-15periods)dimscoordsr&   )r
   r(   r   r)   r   r   r   r   r*   iselslicelenxrr   nplinspacepd
date_range)r   r   r+   das       r   test_coarsen_coordsrA   (   s        XXsAh ZZQ!f&%ZQQUUWWFr$x//!f/EEIIKKLLLF!3!3V!3!L!L!P!P!R!RSSS 
z	"	"  


Q
               GGeAqC3LLA-.//G008818==BBDDD 

As$$$lC@@@A
 
 
B
 ZZQZ$$&&FFFs   -)D""D&)D&c                 D   t          j        dd          } t          j        t          d          d| fg          }|                    d                                          }t          j        ddd	
          }t          j                            |j	        |           d S )N2000   r3   r&   r%   r7   z
2000-01-023Dr   )freqr4   )
r;   cftime_ranger   ranger   r*   r<   testingassert_array_equalr&   )timesr@   r+   expected_timess       r   test_coarsen_coords_cftimerM   A   s    OFA...E	eAhh&% 1	2	2BZZQZ$$&&F_\aHHHNJ!!&+~>>>>>r-   zfuncname, argumentreduce)r*    c                v   ddd}ddi}ddi}ddi}t          j        ddd	          }t          j        d
dd	          }t          d||fd||fddd||fi|          }t          |                    ddi          |           }	 |	| }
|
j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j	        dk    sJ |
j        j	        dk    sJ t          |                    ddi          |           }	 |	|ddi}
|
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j	        dk    sJ |
j        j	        dk    sJ t          |                    ddi          |           }	t          d          5   |	| }
d d d            n# 1 swxY w Y   |
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j	        dk    sJ |
j        j	        dk    sJ t          |                    ddi          |           }	t          d          5   |	|ddi}
d d d            n# 1 swxY w Y   |
j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j        |k    sJ |
j        j	        dk    sJ |
j        j	        dk    sJ t          |                    ddi          |           }	t          d          5   |	|ddi}
d d d            n# 1 swxY w Y   |
j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j        i k    sJ |
j        j	        dk    sJ |
j        j	        dk    sJ d S )NtestrI   )units	long_nameda_attrattrs_coordsda_not_coarsend_attr
      d      coordno_coord)r@   da_not_coarsend)	data_varsr6   attrs   dimr@   r]   
keep_attrsFrc   T)r<   r=   r   getattrr   r_   r@   r]   r[   namer   )funcnameargumentglobal_attrsda_attrsrU   da_not_coarsend_attrsdatar6   r   funcresults              r   test_coarsen_keep_attrsro   J   sf    $)<<L6"H"F+L3V<;r2s##D[B$$F	D(+ *D2GH
 
 '6<89
 
 
B 2::7A,://::DT8_F<<''''9?h&&&&!'+@@@@@<----9>T!!!!!&*;;;;; 2::7A,://::DT8...F<29?b    !'2----<####9>T!!!!!&*;;;;; 2::7A,://::D		&	&	& ! !x! ! ! ! ! ! ! ! ! ! ! ! ! ! ! <29?b    !'2----<####9>T!!!!!&*;;;;; 2::7A,://::D		&	&	& 2 2x1D112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 <<''''9?h&&&&!'+@@@@@<----9>T!!!!!&*;;;;;2::7A,://::D		%	%	% 3 3x2E223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 <29?b    !'2----<####9>T!!!!!&*;;;;;;;s6   ;GGG5	J

JJ2	MMM)rZ   r   )indirectwindow)rZ   r   r%   r$   rf   )sumr*   stdvarminr)   medianc                   |                      |d          }|                    t          t          d|                     } t          ||                      }t	          ||           t          | j                                                  t          |j                                                  k    sJ | j                                        D ]\  }}|j	        ||         j	        k    sJ d S )Nr   r0   nan)
r   rN   re   r<   r   listr^   keysitemsr5   )r   rq   rf   coarsen_objr+   expectedkeysrc_vars           r   test_coarsen_reducer      s     **&6*::K L$LL 9 9::F)w{D))++HFH%%% !!##$$V-=-B-B-D-D(E(EEEEE **,, 0 0W|vc{//////0 0r-   c                   ddi}ddi}t          j        ddd          }t          j        ddd          }t          |ddd||fi|d	
          }t          |                    ddi          |           } || }|j        |k    sJ |j        j        |k     |j        d	k    sJ t          |                    ddi          |           } ||ddi}|j        i k    sJ |j        j        i k     |j        d	k    sJ t          |                    ddi          |           }t          d          5   || }d d d            n# 1 swxY w Y   |j        i k    sJ |j        j        i k     |j        d	k    sJ t          |                    ddi          |           }t          d          5   ||ddi}d d d            n# 1 swxY w Y   |j        |k    sJ |j        j        i k     |j        d	k    sJ t          |                    ddi          |           }t          d          5   ||ddi}d d d            n# 1 swxY w Y   |j        i k    sJ |j        j        i k     |j        d	k    sJ d S )NrT   rQ   rU   rW   rX   rY   rZ   r[   rf   )r5   r6   r_   rf   r`   ra   rc   Frd   T)	r<   r=   r   re   r   r_   r[   rf   r   )	rg   rh   attrs_darU   rl   r6   r@   rm   rn   s	            r   test_coarsen_da_keep_attrsr      s    6"H"F+L;r2s##D[B$$F	'6<89
 
 
B 2::7A,://::DT8_F<8####HNl"";&     2::7A,://::DT8...F<2HNb;&     2::7A,://::D		&	&	& ! !x! ! ! ! ! ! ! ! ! ! ! ! ! ! !<2HNb;&     2::7A,://::D		&	&	& 2 2x1D112 2 2 2 2 2 2 2 2 2 2 2 2 2 2<8####HNb;&    2::7A,://::D		%	%	% 3 3x2E223 3 3 3 3 3 3 3 3 3 3 3 3 3 3<2HNb;&      s6   1EE
E.	GG
G.	II
Ir@   )rr   r*   rs   r)   c                b   |                                                                  dk    r|dk    rt          j        d           |                     |d          }|                    t          t          d|                     } t          ||                      }t          ||           d S )NrZ   z'These parameters lead to all-NaN slicesr   r0   rx   )	isnullrr   r   skipr   rN   re   r<   r   )r@   rq   rf   r|   r+   r}   s         r   test_coarsen_da_reducer      s     
yy{{11=>>> **&6*::K L$LL 9 9::F)w{D))++HFH%%%%%r-   c                  b    e Zd Zej                            dddg          d
d            Zd Zd	S )TestCoarsenConstructr   TFboolr   r   c           	     
   t          dt          j        d          ddifdt          j        d          ddifdt          j        d                              dd          ddifd	t          j        d
          fdt          j        d          t          j        d
          dddi          }|rt          r|                    ddd          }t          j         ddi          }d|j        j                            d          ddif|d<   d|j	        j                            d          ddif|d<   d|j
        j                            dddd
          ddif|d<   |j        |d<   d|j        j                            d          f|j        d<   t                      5  |                    d
d                              ddd          }d d d            n# 1 swxY w Y   t#          ||           t                      5  |                    d
d                              dd          }d d d            n# 1 swxY w Y   t#          ||           t                      5  |                    d
d                              dddd          }|D ]}||         j        i k    sJ |j        i k    sJ 	 d d d            n# 1 swxY w Y   t                      5  |j
                            d
d                              ddd          }d d d            n# 1 swxY w Y   t#          ||d                    t'          j        t*                    5  |                    d
                               d!           d d d            n# 1 swxY w Y   t'          j        t*                    5  |                    d
d                              d            d d d            n# 1 swxY w Y   t'          j        t*                    5  |                    d
                                            d d d            n# 1 swxY w Y   t'          j        t*                    5  |                    d
                               d            d d d            n# 1 swxY w Y   t'          j        t*                    5  |                    d
                               d"            d d d            d S # 1 swxY w Y   d S )#Nr&   0   abr#   rW   )r#   r&   i  y   )vartvarxvartxvary)r&   r   r   bar)r6   r_   r$   )r_   yearmonth)r   r   )r#   
x_reshaped)r   r`   r   )r#   r   r   r   r   r`   r   r   )r&   r#   Frd   r7   r   )r   )r   r<   arangereshaper
   r(   r;   r   rl   r   r   r   r&   r6   r   r   	constructr	   r_   r   r   r   )selfr   r   r}   r+   rt   s         r   test_coarsen_constructz+TestCoarsenConstruct.test_coarsen_construct   sM   2c
;bimmc3Z8'3)?)?B)G)G#sTbimm,	  IbMM	">>%.	
 	
 	
  	0H 	02..//B:UEN333GL  **#J
  GL  ))#J
 1HM!!!Q2..#J

 7#4bgl6J6J86T6T"U#%% 	 	ZZR1Z--77*1DEE F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	***#%% 	 	ZZR1Z--77&*= 8  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	***#%% 	& 	&ZZR1Z--77*1DEERW 8  F  / /c{(B.....<2%%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& $%% 	 	X%%2%33==*1DEE F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'!2333]:&& 	5 	5JJBJ))e)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 ]:&& 	G 	GJJB!J$$..4E.FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G ]:&& 	, 	,JJBJ))+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]:&& 	6 	6JJBJ))u)555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ]:&& 	9 	9JJBJ))x)888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   .GG G-H;;H?H?$AKK
K
3LL"%L"+NNN3,O++O/2O/)QQQ(+RR#&R#+S;;S?S?c                   t          j        t          j        d          dg          }|                    d|z            }|                    d                              d          }t          |j                  t          |j                  k    sJ |	                    d	
          }|                    d                              d          }t          |j                  t          |j                  k    sJ d S )N   r&   )r5   r1   )dayr   r7   r   T)rf   )
r;   r   r<   r   assign_coordsr   r   ry   r6   
to_dataset)r   r@   rn   r   s       r   'test_coarsen_construct_keeps_all_coordsz<TestCoarsenConstruct.test_coarsen_construct_keeps_all_coordsI  s    \")B--vh777#(++$$..4E.FFBI$v}"5"55555]]]$$$$..4E.FFBI$v}"5"5555555r-   N)r   r   r   r   )__name__
__module____qualname__r   markparametrizer   r   rO   r-   r   r   r      s]        [VdE]33I9 I9 I9 43I9V	6 	6 	6 	6 	6r-   r   )r   r   r   r   )r   r   ) 
__future__r   numpyr<   pandasr>   r   xarrayr;   r   r   r   xarray.testsr   r   r	   r
   r   r   r   r   r   r,   rA   rM   r*   ro   slowr   r   r   r   rO   r-   r   <module>r      s=   " " " " " "              2 2 2 2 2 2 2 2 2 2                  
 $//-0@BR/STT  UT 0/ $//' ' 0/'0 ? ? ? 	BG: G< G< G< G<T v55<00!VWW0 0 0 XW 10 65 0" 	BG: 2! 2! 2! 2!j v55<00!>??
& 
& 
& @? 10 65
&V6 V6 V6 V6 V6 V6 V6 V6 V6 V6r-   