
    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Z	d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ  ed          Zej        d             Zej        d             Zej        d	             Z dadZ!ed             Z"eej#        $                    dg d          d                         Z%ed             Z&ed             Z'ed             Z(d Z)d Z*d Z+d Z,d Z-ed             Z.d Z/d Z0eej#        $                    dd dD                       d                         Z1ed              Z2ed!             Z3ed"             Z4d# Z5ed$             Z6ed%             Z7eeej#        $                    d&e8d'fe8d(fg          d)                                     Z9ed*             Z:d+ Z;ed,             Z<d- Z=ed.             Z>eeej#        $                    dd/d0g          d1                                     Z?ed2             Z@ed3             ZAed4             ZBed5             ZCd6 ZDed7             ZEed8             ZFeej#        $                    d9 ejG        d:          g d;g d<gg ejG        d:          d=z  g d>g d?ggg d@g dAg dBggg          dC                         ZHeej#        $                    dDe          dE                         ZIeej#        $                    dF eJdGdHgg dI                    dJ                         ZKedK             ZLej#        $                    dLg dMg dNf          dO             ZMej        dP             ZNdQ ZOeej#        $                    dRejP         ejQ        e	jR        eS          g          ej#        $                    dTdU dV g          ej#        $                    dWdX ejS        d=dY           ejT        dX          g          dZ                                                 ZUeej#        $                    d[ ejQ        dej#        V                                S           ejG        d\           ejG        d]          d^g          d_                         ZWed`             ZXdS )b    )annotationsN)NumpyInterpolatorScipyInterpolatorSplineInterpolator_get_nan_block_lengthsget_clean_interp_index)
array_type)	_CFTIME_CALENDARSassert_allcloseassert_array_equalassert_equalraise_if_dask_computesrequires_bottleneckrequires_cftimerequires_daskrequires_scipydaskc                     t          j        dt          j        ddt          j        dddt          j        ddgd	
          S )Nr                        timedimsxr	DataArraynpnan     9lib/python3.11/site-packages/xarray/tests/test_missing.pydar'   !   s4    <BFAq"&!Q261aHvVVVVr%   c                     dd} | S )N1Dc                    t          j        d|d|           }t          j        d          }t          j        |dd|i          S )Nz
1970-01-01
   )startfreqperiodscalendarr   r   r   coords)r    cftime_ranger"   aranger!   )r/   r-   timesvaluess       r&   _cf_dazcf_da.<locals>._cf_da(   sK    T2
 
 
 2|FFE?KKKKr%   )r)   r$   )r7   s    r&   cf_dar8   &   s!    L L L L Mr%   c                 4   t          j                    } t          j        dt          j        ddt          j        dddt          j        ddgd	
          | d<   t          j        dt          j        ddt          j        dddt          j        ddgd
          | d<   | S )Nr   r   r   r   r   r   r   r   r   r   var1r+                        xvar2)r    Datasetr!   r"   r#   dss    r&   rF   rF   2   s    	B	
BFAq"&!Q261a8v  BvJ 	RVRRVRRR@s  BvJ Ir%   90  Fc                d   t           j                            |          }|                    |           }|dk    rt           j        |d d <   n|dk    rnt          |j        |z            }t          j        | d                   }t          j        | d                   }|rct           j                            |           |d |         }t           j                            |           |d |         }t           j        |||f<   |r]t          j
        d|                    | d         d                    }	dt          j        d	          |	z                                   i}
ndt          j        d	d
| d                   i}
t          j        |d|
          }|                                }||fS )N)sizer   r   dr+   )rI   scale)unitdatar   z
2000-01-01Dr-   r.   r   rB   r1   )r"   randomRandomStatenormalr#   intrI   r4   shufflepdTimedeltaIndex	Timestampsort_values
date_ranger    r!   	to_pandas)shapefrac_nanseednon_uniformrsvals	n_missingysxsdeltasr2   r'   dfs                r&   make_interpolate_example_datarg   >   s   			t	$	$B99%9  D1}}&QQQ	Q	H,--	YuQx  YuQx   	"Ib!!!JYJBIb!!!JYJB6DRL S""))qQS)2T2TUUU2<55>KKMMN"-3aQQQR	dv	>	>	>B	Br6Mr%   c                    g d} g d}g d}t          j        | ||          D ]\  }}}t          ||          \  }}dD ]}|                    ||t          j                  }	|                    ||                    |          t          j        t          j        f          }
t          j        |
j        t          j
        |	j                  <   t          j                            |	j        |
j                   d S )N)   rj   )r      )rk   r   )d   rl   r         ?r   linearnearestzeroslinear	quadraticcubicrP   )methoddim
fill_valuerv   axisrx   	itertoolsproductrg   interpolate_nar"   r#   interpolateget_axis_numr6   rV   isnulltestingr   shapes	frac_nansmethodsr\   r]   rv   r'   rf   rw   actualexpecteds              r&   test_interpolate_pd_compatr   _   s	   333FILLLG#,#4VY#P#P G Gx.uh??B  	G 	GC&&f#"&&QQF~~BOOC$8$8bfbfEU &  H 9;HOBIfm445J&&v}hoFFFF	GG Gr%   rv   )barycentrickrogpchipsplineakimac                    t          ddd          \  }}|                    | d          }|                    d          |                    d          k                                    sJ d S )N)   r   g?Tr_   r   )rv   rw   )rg   r~   countall)rv   r'   _r   s       r&   test_scipy_methods_functionr   v   so    
 *(CTJJJEBf&99FHHVV 4 4499;;;;;;;r%   c                     g d} g d}g d}t          j        | ||          D ]\  }}}t          ||d          \  }}dD ]}|dk    r|dk    r|                    d|dt          j        	          }	|                    ||                    |          t          j        
          }
t          j        |
j        t          j
        |	j                  <   t          j                            |	j        |
j                   d S )Nri   rm   )r   indexr6   Tr   rP   r   rp   )rv   rw   use_coordinaterx   ry   r{   r   s              r&   ,test_interpolate_pd_compat_non_uniform_indexr      s(   333FI)))G#,#4VY#P#P G Gx.uhDQQQB  	G 	GCC6MM&&S"& '  F ~~BOOC$8$8RV &  H 9;HOBIfm445J&&v}hoFFFF!	GG Gr%   c            	     d   g d} g d}g d}t          j        | ||          D ]\  }}}t          ||          \  }}dD ]p}|                    d||d          }	|                    d||                    |                    }
t          j                            |	j	        |
j	                   qd S )	Nri   rm   r   r   r   rP   
polynomialF)rv   orderrw   r   )rv   r   rz   )
r|   r}   rg   r~   r   r   r"   r   r   r6   )r   r   ordersr\   r]   r   r'   rf   rw   r   r   s              r&   %test_interpolate_pd_compat_polynomialr      s    333FIYYF"+"3FIv"N"N 
G 
Gx.uh??B  	G 	GC&&#5c% '  F ~~#5rs7K7K &  H J&&v}hoFFFF	G
G 
Gr%   c                    t          j        g dt           j                  } t          j        | ddg di          }t          j        t          d          5  |                    dd	           d d d            d S # 1 swxY w Y   d S )
Nr   dtyperB   )r   r   r   r1   z*Index 'x' must be monotonically increasingmatchr   rw   rv   )	r"   arrayfloat64r    r!   pytestraises
ValueErrorr~   )ra   r   s     r&   &test_interpolate_unsorted_index_raisesr      s    8IIIRZ000D|DsC3CDDDH	z)V	W	W	W 9 9C8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   A>>BBc                    t          j        t          j        ddt          j        dgt          j                  d          } t          j        t          d          5  | 	                    d	
           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   rB   r   zdim is a required argumentr   rp   rv   )
r    r!   r"   r   r#   r   r   r   NotImplementedErrorr~   r'   s    r&   test_interpolate_no_dim_raisesr      s    	bh1bfa0
CCC#	N	N	NB	*2O	P	P	P + +
***+ + + + + + + + + + + + + + + + + +s   BB	Bc                     t          j        t          j        ddt          j        dgt          j                  d          } t          j        t          d          5  | 	                    dd	
           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   rB   r   znot a validr   foor   )
r    r!   r"   r   r#   r   r   r   r   r~   r   s    r&   ,test_interpolate_invalid_interpolator_raisesr      s    	bh1bfa0
CCC#	N	N	NB	z	8	8	8 1 1
c%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   BB
Bc                    t           j                            dd          } t          j        | dddgfdg dfg          }t          j        t          d	          5  |                    dd
           d d d            d S # 1 swxY w Y   d S )Nr   r   rB   ayr   r   r   r2   zIndex 'x' has duplicate valuesr   r   r   )	r"   rQ   randnr    r!   r   r   r   r~   )rM   r'   s     r&   (test_interpolate_duplicate_values_raisesr      s    9??1a  D	dS3*$5YYY7G#H	I	I	IB	z)J	K	K	K 1 1
c%0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   BBBc                 d   t           j                            dd          } t           j        | d<   t	          j        | dddgfdg dfg	          }|                    d
          }t          j        t          d          5  |
                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   rB   r   br   r   r   rB   r   )zz%Index 'z' must be castable to float64r   r   rw   )r"   rQ   r   r#   r    r!   stackr   r   	TypeErrorr~   )rM   r'   dass      r&   "test_interpolate_multiindex_raisesr      s    9??1a  DDJ	dS3*$5YYY7G#H	I	I	IB
((Z(
 
 C	y(P	Q	Q	Q $ $s###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   B%%B),B)c                    t          j        dt          j        d                              dd                    t          j        dt          j        d                              dd                    dz  d} t          j                            dd          }t          j        |d<   t          j        |d|           }t          j
        t          d	          5  |                    d
d           d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   r   r   r   r1   zinterpolation must be 1Dr   r   rB   rw   r   )r    Variabler"   r4   reshaperQ   r   r#   r!   r   r   r   r~   )r2   rM   r'   s      r&    test_interpolate_2d_coord_raisesr      s,   [RYq\\%9%9!Q%?%?@@[RYq\\%9%9!Q%?%?@@1D F
 9??1a  DDJ	dF	;	;	;B	z)D	E	E	E 7 7
c#6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   DDDc                    t          j        t          j        ddt          j        gt          j                  d          } t          j        t          j        g dt          j                  d          }|                     dd          }t          ||           t          j        t          j        g d	t          j                  d          }|                     dd
          }t          ||           d S )Nr   r   r   rB   r   )r   r   r   extrapolate)rw   rx   )r   r   r   )r    r!   r"   r   r#   r   r~   r   r'   r   r   s      r&   test_interpolate_kwargsr      s    	bh1bf~RZ@@@s	K	K	KB|BHYYYbjAAALLLH3=AAF"""|BH\\\DDD3OOOH3488F"""""r%   c                    t          j        g dt           j                  } |                                 }t           j        |d<   t          j        |d          }ddi|_        |                    dd	          }|j        ddik    sJ d S )
Nr   r   r   r   r   r   r   r   rB   r   testvalueT)rw   
keep_attrs)	r"   r   r   copyr#   r    r!   attrsr~   )ra   mvalsmissingr   s       r&   test_interpolate_keep_attrsr      s    8&&&bj999DIIKKEvE!Hl5s+++GW%GM###==F<FG,,,,,,,r%   c                 4   t          j        g dt           j                  } t          j        | d          }|                                 }t           j        |d<   t          j        |d          }|                    d          }t          ||           d S )Nr   r   rB   r   r   r   )	r"   r   r   r    r!   r   r#   r~   r   )ra   r   r   r   r   s        r&   test_interpolater      s    8&&&bj999D|Ds+++HIIKKEvE!Hl5s+++G###,,F"""""r%   zmethod,valsc           
     d   g | ]}d t          j        g dt           j                  fdt          j        dt           j        t           j        gt           j                  fdt          j        dt           j        t           j                  ffD ]!\  }}t          j        ||| d|           "S )	zno nansr   r   zone nanr   zall nansr   :)id)r"   r   r   r#   fullr   param).0rv   descra   s       r&   
<listcomp>r     s        !3!3!32:FFFG!RVRV!4BJGGGHBF"*===>
  T4 	VT&8&8&8&8999   r%   )rp   rq   rr   rs   rt   ru   r   c                    t          j        |d          }|                    d|           }t          ||           d S )NrB   r   r   )r    r!   r~   r   )rv   ra   r   r   s       r&   test_interp1d_fastrackr     sF    , |Ds+++H$$V$<<F"""""r%   c            
        t          j        t          j        ddt          j        t          j        t          j        dgt          j                  d          } |                     dd           }|                                                                dk    sJ |                     dd          }t          j        t          j        ddd	d
t          j        dgt          j                  d          }t          ||           d S )Nr   r   r   r   rB   r   )rw   limitr   r   r   )
r    r!   r"   r   r#   r   r~   r   sumr   )r'   r   r   s      r&   test_interpolate_limitsr     s    	
!Q2"*EEEC
 
 
B 3d33F==??  A%%%%3a00F|
!Q1bfa(
;;;#  H """""r%   c                    dD ]} i }t          j        t          j        dddt          j        t          j        t          j        dddg	t          j                  d	
          } |j        dd| i|}|                                                                dk    sJ  |j        d| dd|}|                                                                dk    sJ d S )Nro   r   r   r   r   r   rj   r   rB   r   rv   )rv   r   rB   )	r    r!   r"   r   r#   r   r~   r   r   )rv   kwargsr'   r   s       r&   test_interpolate_methodsr   /  s    P 
* 
*\HaArvrvrvq!Q?rzRRR
 
 
 #"@@v@@@}}""$$))))""IvQII&II}}""$$)))))
* 
*r%   c                    dt           fdt          fdt          ffD ]\  } }t          j        g dt          j                  }t          j        g dt          j                  }t          j        ddgt          j                  } ||||           } ||          }t          j        |                                          d	k    sJ d S )
Nrp   r   r   r   r   r   r   )ir   r+   rk   2   r   r   r   r   )	r   r   r   r"   r   r   rV   r   r   )rv   interpolatorxiyirB   fouts          r&   test_interpolatorsr   >  s     
$%	$%	%&! ) )
 X&&&bj999X***"*===HaV2:...LR///addy~~!!##q((((() )r%   c            
     X   t          j        dg d          } t          j        t          j        ddt          j        t          j        t          j        dgt          j                  dd| i          }|                    dd	
          }|                    d          }t          ||           |                    dd
          }|                    d          }t          ||           |                    dd
          }|                    d          }t          ||           d S )NrB   )rl      i,  i  i  iX  r   r   r   r   xcr1   Fr   r   )	r    r   r!   r"   r   r#   r   r~   r   )r   r'   r   r   s       r&   test_interpolate_use_coordinater   N  s'   	S888	9	9B	
!Q2"*EEEbz
 
 
B 3u==F  S ))H""" 3t<<F  S ))H""" 3s;;F  S ))H"""""r%   c                 T   t          dd          \  } }|                     ddi          } |                     d          }|                                                     d          }t	          |j        t                    sJ t          |                                |           |                     ddi          } |                     dd          }|                                                     dd          }t	          |j        t                    sJ t          ||           d S )N(   r   rn   rB   r   r   r   r   )	rg   chunkr~   load
isinstancerM   dask_array_typer   compute)r'   r   r   r   s       r&   test_interpolate_daskr  f  s   )(C88EB	3(		Bv&&Fwwyy''//Hfk?33333!!8,,, 
3(		BvQ//Fwwyy''a'88Hfk?33333"""""r%   c                     t          dd          \  } }|                     ddi          } t          j        t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )Nr   rn   r   r   zconsists of multiple chunksr   )rg   r   r   r   r   r~   )r'   r   s     r&   2test_interpolate_dask_raises_for_invalid_chunk_dimr  w  s    )(C88EB	61+		B	z)G	H	H	H " "
&!!!" " " " " " " " " " " " " " " " " "s   A))A-0A-zdtype, methodrp   rq   c           
        t          j        t          j        ddg|           dgt	          t          j        ddg                                                  t	          d                    }|                    t          j        g d          |	          }|j        |                                j        k    sJ d S )
Nr   r   r   r   r0   )rM   r   r2   r   )r   rn   r   r   )r   rv   )	r    r!   r"   r   dictr   interpr   r  )r   rv   r'   s      r&   $test_interpolate_dask_expected_dtyper
    s     
Xq!fE***X1a&))***
 
 
 eDaLLL	 
 
00	@	@B8rzz||)))))))r%   c                 >   t          j        t          j        ddt          j        gt          j                  d          } t          j        t          j        g dt          j                  d          }|                     d          }t          ||           d S )Nr   r   r   rB   r   )r   r   r   )r    r!   r"   r   r#   r   ffillr   r   s      r&   
test_ffillr    s}    	bh1bf~RZ@@@s	K	K	KB|BHYYYbjAAALLLHXXc]]F"""""r%   c                 p   t          j        t          j        ddt          j        gt          j                  d          } t          j        d          5  t          j        t                    5  | 
                    d           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 Nr   r   r   rB   r   Fuse_bottleneck)r    r!   r"   r   r#   r   set_optionsr   r   RuntimeErrorr  r   s    r&   test_ffill_use_bottleneckr       	bh1bf~RZ@@@s	K	K	KB	u	-	-	-  ]<(( 	 	HHSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 6   B+1BB+B	B+B	B++B/2B/c                    t          j        t          j        ddt          j        gt          j                  d          } |                     ddi          } t          j        d          5  t          j	        t                    5  |                     d           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 	Nr   r   r   rB   r   r   Fr  )r    r!   r"   r   r#   r   r   r  r   r   r  r  r   s    r&   test_ffill_use_bottleneck_daskr    /   	bh1bf~RZ@@@s	K	K	KB	3(		B	u	-	-	-  ]<(( 	 	HHSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 6   .CB*C*B.	.C1B.	2CC	Cc                 p   t          j        t          j        ddt          j        gt          j                  d          } t          j        d          5  t          j        t                    5  | 
                    d           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 r  )r    r!   r"   r   r#   r   r  r   r   r  bfillr   s    r&   test_bfill_use_bottleneckr    r  r  c                    t          j        t          j        ddt          j        gt          j                  d          } |                     ddi          } t          j        d          5  t          j	        t                    5  |                     d           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 r  )r    r!   r"   r   r#   r   r   r  r   r   r  r  r   s    r&   test_bfill_use_bottleneck_daskr     r  r  r  r  c                   t          dd          \  }}|                    ddi          }t          ||           }t          |                                |           }t	                      5   |d          }d d d            n# 1 swxY w Y    |d          }t          ||           t	                      5   |d          }d d d            n# 1 swxY w Y    |d          }t          ||           t	                      5   |dd          }d d d            n# 1 swxY w Y    |dd          }t          ||           t	                      5   |dd          }d d d            n# 1 swxY w Y    |dd          }t          ||           t	                      5   |dd	          }d d d            n# 1 swxY w Y    |dd	          }t          ||           d S )
Nr   rn   rB   r   r   r   r   r   )   )rg   r   getattrr  r   r   )rv   r'   r   dask_methodnumpy_methodr   r   s          r&   test_ffill_bfill_daskr&    sI    *(C88EB	3(		B"f%%K2::<<00L		!	! % %V$$% % % % % % % % % % % % % % %|F##H""" 
 	!	! " "S!!" " " " " " " " " " " " " " "|C  H""" 
 	!	! . .V1---. . . . . . . . . . . . . . .|F!,,,H""" 
 	!	! + +S***+ + + + + + + + + + + + + + +|Cq)))H""" 
 	!	! , ,S+++, , , , , , , , , , , , , , ,|Cr***H"""""sZ   +BB
B7CCCDD!$D!E--E14E1#F==GGc                    t          j        g dt           j                  } t          j        | d          }|                    d          }t          ||           |                    d          }t          ||           d S )Nr   r   rB   r   r   )r"   r   r   r    r!   r  r   r  ra   r   r   s      r&   test_ffill_bfill_nonansr)    s    8&&&bj999D|Ds+++H^^^$$F"""^^^$$F"""""r%   c                     t          j        dt           j        t           j                  } t	          j        | d          }|                    d          }t          ||           |                    d          }t          ||           d S )Nr   r   rB   r   r   )	r"   r   r#   r   r    r!   r  r   r  r(  s      r&   test_ffill_bfill_allnansr+    s|    71bfBJ///D|Ds+++H^^^$$F"""^^^$$F"""""r%   c                    |                      d          }|                                                                dk    sJ d S )Nr   r   )r  r   r   )r'   results     r&   test_ffill_functionsr.    s>    XXfF==??  A%%%%%%r%   c                    t          j        dt          j        t          j        t          j        t          j        dddt          j        ddgd          } |                     d          }t          j        g d	d          }t          ||           |                     dd
          }t          j        ddt          j        t          j        t          j        ddddddgd          }t          ||           d S )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r    r!   r"   r#   r  r   )r'   r-  r   s      r&   test_ffill_limitr0    s    		
BFBFBFBFAq!RVQB
 
 
B XXfF|===FKKKHvx(((XXfAX&&F|	
Arvrvrvq!Q1a8v  H vx(((((r%   c                    |                      d          }|d                             d          |j        d         k    sJ t          |d         | d                    d S )Nr   r   r:   rC   )r~   r   r   r   )rF   r   s     r&   test_interpolate_datasetr2    sb    6**F&>''6;v+>>>>> vf~r&z22222r%   c                2    |                      d           d S Nr   r   r  rE   s    r&   test_ffill_datasetr6        HHHr%   c                2    |                      d           d S r4  r5  rE   s    r&   test_bfill_datasetr9    r7  r%   zy, lengths_expected	   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   )	r   r      r;  r;  r;  r;  r;  r   )	r:  r:  r:  r   r:  r:  r   r   r   )	r   r   r   r   r   rj   r+   r<   r>   )	r   r   r<   r<   r<   r<   r<   r<   r   )	r   r   r   r   r   r   r   r   r   c           
        t           j        dt           j        t           j        t           j        t           j        t           j        t           j        dg	t           j        t           j        t           j        dt           j        t           j        dt           j        t           j        g	g}t          j        |ddgddg| d          }t	          |dd	          }t          |d|
          }|                    |          }t          ||           d S )Nr   r   rB   r   r   r   r1   Tr   )rw   r   rM   )r"   r#   r    r!   r   r   r   r   )r   lengths_expectedarrr'   r   r   r   s          r&   %test_interpolate_na_nan_block_lengthsr@    s    " 
BFBFBFBFBFBFAF	BFBFArvrvFC 
cc
!Qa3H3H	I	I	IB"23tDDDE#BCu===Fww,w--H"""""r%   r/   c                    t           | |          d          }t          j                            |t          j        d          dz  dz             dS )an  The index for CFTimeIndex is in units of days. This means that if two series using a 360 and 365 days
    calendar each have a trend of .01C/year, the linear regression coefficients will be different because they
    have different number of days.

    Another option would be to have an index in units of years, but this would likely create other difficulties.
    r   r   r+   g    eAiQ N)r   r"   r   r   r4   )r8   r/   is      r&   'test_get_clean_interp_index_cf_calendarrC  :  sN     	uuXF;;;AJ!!!RYr]]S%85%@AAAAAr%   )r/   r-   	gregorianproleptic_gregorian)r)   1M1Yc                (    | ||          }t          j        |j                                                                        d          |d<   t          |d          }t          |dd          }t          j                            ||           dS )zLIn the gregorian case, the index should be proportional to normal datetimes.)r-   r0   )rM   r   stimer   )r   N)	r    r   r   to_indexto_datetimeindexr   r"   r   r   )r8   r/   r-   ggisis         r&   test_get_clean_interp_index_dtrO  G  s     	hT"""A!&//"3"3"D"D"F"FYWWWAgJ	6	*	*B	6'	B	B	BBJ!!"b)))))r%   c            
         t          j        g dddt          j        ddd          i          } t          | d           d S )	Nr   r0   r   z
0000-01-01r   360_day)r.   r/   r1   )r    r!   r3   r   r   s    r&   .test_get_clean_interp_index_potential_overflowrR  U  sS    			a)TTTU
 
 
B
 2v&&&&&r%   r   )r   r   r   )r   r   r   c                P   t          j        g ddd| i          }t          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t          |dd          }t          j                            | |           |j	        t          j
        k    sJ d S )Nr   r   rB   r1   F)strict)r    r!   r   r   r   r   r"   r   r   r   r   )r   r'   cleans      r&   "test_get_clean_interp_index_strictrV  _  s    	iiifc5\	B	B	BB	z	"	" ( (r3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( #2s5999EJ!!%///;"*$$$$$$s   AAAc                     t          j        t          j        ddt          j        t          j        dt          j        t          j        t          j        t          j        dgdg          S )Nr   r   r   r+   tr   r   r$   r%   r&   da_timerY  k  sH    <	Arvrvq"&"&"&"&"MU   r%   c                "   t          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          j        dd	d
          | d<   t          j        t          d          5  |                     dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                     dd           d d d            d S # 1 swxY w Y   d S )Nz1max_gap not implemented for unlabeled coordinatesr   rX  r   max_gapzmax_gap must be a scalar.)r   
2001-01-01Hr;   rO   zExpected value of type strz"Expected integer or floating point1HF)r\  r   z&Could not convert 'huh' to timedelta64huh)r   r   r   r~   r   rV   rZ   r   )rY  s    r&   "test_interpolate_na_max_gap_errorsra  s  s   	#W
 
 
 / / 	sA.../ / / / / / / / / / / / / / /
 
z)E	F	F	F 2 2sD1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 =CDDDGCL	y(E	F	F	F / /sA.../ / / / / / / / / / / / / / / 
y(M	N	N	N H HsDGGGH H H H H H H H H H H H H H H 
z)R	S	S	S 3 3sE2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sY   A  AA&B

BB
C..C25C2D99D= D=FFFtime_range_func)marks	transformc                    | S )Nr$   r   s    r&   <lambda>rf    s     r%   c                .    |                      d          S )Nr   )name)
to_datasetr   s    r&   rf  rf    s    allPSl>T>T r%   r\  3Hhc                @    |ddd          | d<    ||                      t          j        dddd	d
t          j        t          j        t          j        t          j        dg                    } ||                               d|          }t	          ||           d S )Nr]  r^  r;   rO   rX  r   r   r   r   r   r+   r=  r[  )r   r"   r#   r~   r   )rY  r\  rd  rb  r   r   s         r&   *test_interpolate_na_max_gap_time_specifierrm    s     #?<c2FFFGCLy261aAq"&"&"&"&RTUVV H Yw..sG.DDFFH%%%%%r%   r2   r   r<   r   c                f   t           j        }t          j        dddd|d|||dd|g||d||d|||d||g||d||d|||d||g|ddd|d|||dd|ggdd	g| 
          }|                    d	d          }|                    dddddd|||dd|g||d||d|||d||g||d||d|||d||g|ddddd|||dd|gg          }t          ||           |                    d	dd          }|                    dddd|d|||dddg||d||d|||d||g||d||d|||d||gdddd|d|||dddgg          }t          ||           |                    dd          }t          j        dddd|d|||dd|g|ddd|d|||dd|g|ddd|d|||dd|g|ddd|d|||dd|ggdd	g| 
          }t          ||           d S )Nr   r   r   r   r   r+   r;   rB   r   r1   r[  r   r=  r   )r\  rx   r<   )r"   r#   r    r!   r~   r   r   )r2   nr'   r   
expected_yexpected_y_extra
expected_xs          r&   test_interpolate_na_2drs    s    	A	1aAq!QB21aAq!QAq11aAq!QAq11aAq!QB2		
 3Z	
 	
 	
B sA..F1aAq!QB21aAq!QAq11aAq!QAq11aAq!QB2	
   J $$$sA-HHFww1aAq!QB31aAq!QAq11aAq!QAq11aAq!QB3	
    )***sA..F1aAq!QB21aAq!QB21aAq!QB21aAq!QB2		
 3Z	 	 	J $$$$$r%   c                    t          j        g dt           j                  } t          j        d| z            }t          j        g dt           j                  }t          j        t           j        t           j        dz  z   t          j        d          t           j        t           j        dz  z   g|j                  }dt          fdt          ffD ].\  }} || ||          } ||          }t          ||           /dS )z-Ensure complex nans are used for complex datar   r   y              ?)r   r   rp   r   N)	r"   r   r   expr#   r   r   r   r   )r   r   rB   r   rv   r   r   r   s           r&   (test_interpolators_complex_out_of_boundsrw    s     
""""*	5	5	5B	RB
2:...Ax	"&2+	rvbzz26BFRK+?@  H
 
$%	$%! - - LR///168,,,,- -r%   )rG   F)Y
__future__r   r|   numpyr"   pandasrV   r   xarrayr    xarray.core.missingr   r   r   r   r   xarray.core.pycompatr	   xarray.testsr
   r   r   r   r   r   r   r   r   r  fixturer'   r8   rF   rg   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rT   r
  r  r  r  r  r   r&  r)  r+  r.  r0  r2  r6  r9  r4   r@  rC  ziprO  rR  rV  rY  ra  rZ   r   r3   timedelta64to_timedeltarm  xfailrs  rw  r$   r%   r&   <module>r     s   " " " " " "                               , + + + + +
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 *V$$ W W W         B G G G, #V#V#VWW< < XW < G G G4 G G G$ 9 9 9+ + +1 1 11 1 1$ $ $
7 
7 
7 # # #- - -	# 	# 	#  
   (# #)  *# # # #  * * * ) ) )# # #0 # # #  " " " C?S)<L*MNN* * ON  * # # #           GW#566"# "# 76  "#J # # # # # # & & &
 ) ) )3 3 3       	13335P5P5PQRBIaLL1...0K0K0KL	

 +**...0K0K0KL	

 	# 	#  	# %677B B 87 B ##{,ABDVDVDVWW * *  * ' ' ' 999iii"899% % :9%   3 3 3( ]LFLHHHI  {{4T4T&UVVnbnQ,,obod.C.CD & &  WV	  & T!2!2!4!4555bill2// .% .%  .%b - - - - -r%   