
    du                    f   d dl mZ d dlmZmZ 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 d dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZ 	 d dlZn# e$ r Y nw xY wd^dZd Z ej!        "                    dddg          ej!        "                    dddg          ej!        "                    d	 ej#        d d           ej#        dd          g          d_d                                    Z$ej!        "                    dddg          d`d            Z%ej!        "                    dd d!g          dad#            Z&ej!        "                    d	 ej#        d$d           ej#        d%d&          g          dbd'            Z'edcd(            Z(edcd)            Z)ej!        "                    ddg          ej!        "                    d	 ej#        d d           ej#        dd          g          ddd*                        Z*ej!        "                    ddg          ej!        "                    d	 ej#        d$d           ej#        d%d&          g          ddd+                        Z+ej!        "                    dd!d g          dad,            Z,ej!        "                    dd!d g          dad-            Z-edcd.            Z.edcd/            Z/edcd0            Z0edcd1            Z1ej!        "                    d	 ej#        d d2           ej#        d$d3          g          dbd4            Z2edcd5            Z3eej!        "                    d6 e
j4        d7d$8          g d9f ej5         ej6        d:           ej6        d;          g          d<d=gfd:d;gd<d=gfg d>d<d=ej7        gfd:gd<f ej#        d:d<ej!        j8        ?          g          ej!        9                    d@          dcdA                                    Z:edcdB            Z;eedcdC                        Z<eedcdD                        Z=eedcdE                        Z>eedcdF                        Z?edcdG            Z@eedcdH                        ZAedcdI            ZBeedcdJ                        ZCeej!        "                    ddKdg          d`dL                        ZDeeej!        "                    dg dM          ej!        "                    d&d!d g          ej!        "                    dNdO  eEdd%          D                       dedP                                                            ZFeeej!        "                    dddKg          ej!        9                    dQ          d`dR                                                ZGedcdS            ZHeej!        "                    dTdU ej5        dVdWg          d!fd ej5        g dX           eIdYZ          fd fg          dfd\                        ZJedcd]            ZKdS )g    )annotations)combinationspermutations)castN)_parse_array_of_cftime_strings)InterpOptions)assert_allcloseassert_equalassert_identicalhas_dask	has_scipyrequires_cftimerequires_daskrequires_scipy)create_test_datacaseintreturnxr.DataArrayc           	        | dk    rt          j        ddd          }t          j        ddd          }t          j        t          j        |d d t           j        f                   t          j        |          z  ddg||d|dz  fd	
          S | dk    r$t          d                              ddi          S | dk    r%t          d                              ddd          S | dk    rt          j        ddd          }t          j        ddd          }t          j        ddd          }t          j        t          j        |d d t           j        t           j        f                   t          j        |d d t           j        f                   z  |z  g d||d|dz  f|d
          S | dk    r$t          d                              ddi          S t          d          )Nr      d   皙?   xy   r   r   x2dimscoords      r   r   皙?
   r   r   zr   r   r   r)      r)      zcase must be 1-4)
nplinspacexr	DataArraysinnewaxiscosget_example_datachunk
ValueError)r   r   r   r)   s       8lib/python3.11/site-packages/xarray/tests/test_interp.pyr4   r4      s   qyyK1c""K3##|F1QQQ
]#$$rvayy0s31+66
 
 
 	

 
""((#q222	""((r):):;;;	K1c""K3##KS"%%|F1QQQ
BJ./0026!AAArzM:J3K3KKaO 31+A>>
 
 
 	

 
""((#q222+,,,    c                     t           st          j        d           t          d          } t	          |                     ddg          |                     dddgi                     d S )Nscipy is not installed.r         ?g?r   r   )r   pytestskipr4   r
   interpdas    r7   test_keywargsrB   @   se     /-...	!		Bc3Z(("))S3*4E*F*FGGGGGr8   methodlinearcubicdimr   r   no_chunk)idr   chunk_yr   strNonec                    t           st          j        d           t          s|dv rt          j        d           t	          |          t          j        ddd          }                     |i          } fd}d	k    r|d
         d	 |d         |          fd}nd	         |d         d}t          j	         ||          d	d
g|          }t          ||           d S )Nr:   r   )dask is not installed in the environment.        ?P   rC   r"   c           	         t          j                                     | j        |                               dt
          j                  |          S NF)axisbounds_error
fill_valuekindscipyinterpolateinterp1ddataget_axis_numr-   nanobjnew_xrA   rF   rC   s     r7   funcz!test_interpolate_1d.<locals>.funcY   Z     ))sGH!!#&&v * 
 
   	r8   r   r   r   r   r    )r   r=   r>   r   r4   r-   r.   r?   r/   r0   r	   )	rC   rF   r   xdestactualrc   r"   expectedrA   s	   ``      @r7   test_interpolate_1drh   H   s$     /-... A?@@@	$		BKS"%%EYYfc5\Y::F       czz2c73RXu8M8M2NOO#wU"T(;;|DDUOO3*VLLLHFH%%%%%r8   zeroc                r    t           st          j        d           t          d          dt	          j        ddd          }                     |i          } fd}|d	         d |d
         |          fd}t          j         ||          dd	g|          }t          ||           d S )Nr:   r   r   rO   rP   rQ   rR   c           	         t          j                                     | j        |                               dt
          j                  |          S rT   rY   r`   s     r7   rc   z)test_interpolate_1d_methods.<locals>.funcx   rd   r8   r   r   r   r    )
r   r=   r>   r4   r-   r.   r?   r/   r0   r	   )rC   re   rf   rc   r"   rg   rA   rF   s   `     @@r7   test_interpolate_1d_methodsrl   l   s     /-...	!		B
CKS"%%EYYfc5\Y::F       r#wsDDD54I4I.JKKF|DDUOO3*VLLLHFH%%%%%r8   use_daskFTboolc                >   t           st          j        d           t          s| rt          j        d           fd}t	          d          | r                    ddi          t          j        t          j	        ddd	          d
t          j
                            d	          d
t          j
                            d	          fd          }                    |d          }t          j         |d|          d
dg|d
         |d         d         d
|j        fd
 |d         d|          fd          }t          ||                    d
dd                     t          j        t          j	        ddd	                              dd          d
dgt          j
                            d          t          j
                            d          d
t          j
                            d          fd          }                    |d          }t          j         |d|          g d|d
         |d         |d         d         d|j        fd |d         d|          fd          }t          ||                    d
ddd                     d S )Nr:   rN   c                     fdt           j                  D             }|j        d d d         D ]+}|                                                   |           ,t	          j                                      j                                       dt          j	                  |          
                    |          S )Nc                L    g | ] \  }}|                               k    |!S  )r^   ).0isrF   ra   s      r7   
<listcomp>z<test_interpolate_vectorize.<locals>.func.<locals>.<listcomp>   s5    RRRtq!qC<L<LS<Q<Q7Q7Q7Q7Q7Qr8   FrU   rV   rW   )	enumerateshapeinsertr^   rZ   r[   r\   r]   r-   r_   reshape)ra   rF   rb   rz   ru   rA   s   ``   r7   rc   z(test_interpolate_vectorize.<locals>.func   s    RRRRRy33RRRTTrT" 	3 	3ALL))#..2222 ))sGH!!#&&v * 
 
   	 r8   r   r   r,   r   rP   r   r)   )r)   z2r    rD   r   rC   r   r}   r   )r)   r}   r   r   r   T)transpose_coords   w)r)   r   r}   )r)   r   r   )r)   r   )r)   r   r}   r   r   r   )r   r=   r>   r   r4   r5   r/   r0   r-   r.   randomrandnr?   valuesr	   	transposer|   r]   )rm   rc   re   rf   rg   rA   s        @r7   test_interpolate_vectorizer      s    /-... A A?@@@          
!		B  XXsAh L
Cb!!Y__R((bioob6I6I0JKK  E YYxY00F|Re3Zs+Cu|$RXsE223
 

 
 
H FH..sC$.OOPPP L
Cb!!))!Q//3Z####	**+
 
  E YYxY00F|Re__ss+Cej)ttBtHc599:
 
  H FH..sCt.TTUUUUUr8   r#   r+   chunkedc           
        t           st          j        d           t          s| dk    rt          j        d           t	          |           }t          j        ddd          }t          j        ddd	          }|                    ||d
          }|                    |d
          }|                    |d
          }t          |	                    ddd          |	                    ddd                     t          j        t          j        ddd          d          }t          j        t          j        ddd          d          }|                    ||d
          }t          j                            |d         |d         f|	                    ddd          j        d
dt
          j                  t          j        ||gd                    }t          j        |ddg|d         |d|j        f|d                             |          d          }t          |	                    dd          |           |                    ||d
          }t          |	                    dd          |           d S )Nr:   r+   rN   r         ?   rO   r&   r'   rD   r   r   rC   r~   r   rC   r   r   r)   r!   FrC   rV   rW   rw   rU   r   r<   )r)   r   r   r   r    r   r   rC   )r   r=   r>   r   r4   r-   r.   r?   r	   r   r/   r0   rZ   r[   RegularGridInterpolatorr   r_   stack)	r   rA   xdestnpydestnprf   rg   re   ydestexpected_datas	            r7   test_interpolate_ndr      sq     /-... A		?@@@	$		B k#sB''Gk#sB''GYYGHY==F yy78y44H::HF$$S#s33X5G5GSRU5V5VWWW LS#r22===ELS#r22===EYY%Y99F %==	C"S'
S#s##*6 >   	hu~B''') )M |3ZCu|$T(//E/**	
 
	 	 	H F$$S#..999 YY%Y99FF$$S#..99999r8   c                 <   ddg} g d}t          j        t          j        d                              dd          d| |d          }dg}||d	}t          j        g d
gd|          }|                    |          }t          j        g dgd|          }t           j                            |                    d          |           t          j
        t                    5  dg|d	}t          j        dggd|          }|                    |           ddd           n# 1 swxY w Y   t          j
        t                    5  g d|d	}t          j        dggd|          }|                    |           ddd           dS # 1 swxY w Y   dS )<Interpolate nd array with an nd indexer sharing coordinates.r   r   r   r   r   r   r#   )ar   r    r'   r%   r   r   r   r   r   r   )      ?r+   r,   r   r   N)r,   r      )r/   r0   r-   aranger|   r?   testingr	   	drop_varsr=   raisesr6   )r   r   rA   r   ciaoutrg   s           r7   test_interpolate_nd_ndr     s)    
AA		A	
	!Q""!!<L<L
 
 
B
 
AaA	yyyk
1	=	=	=B
))b)//C|[[[M
1EEEHJs}}S118<<< 
z	"	"  #A\A3%j;;;
		B	              
 
z	"	"  ))!$$\A3%j;;;
		B	                 s$   '6D))D-0D-7FFFc                    g d} ddg}| |d}t          j        dt                                        dd          }t           j        |d	<   t          j        |d
|          }t          j        g dddg di          }|                    |          }t          j        dt           j        dgddt           j        ggd
|          }t
          j        	                    |
                    d          |           d|z  }t          j        ||d          }	|	                    |          }
t          j        |d|z  d          }t
          j        	                    |

                    d          |           dS )z9Interpolate an array with an nd indexer and `NaN` values.r   r'      r%   r   dtyper   r#   )r   r   r   r    r   r   )r   r   r+   r   r   g       @)rA   dbN)r-   r   floatr|   r_   r/   r0   r?   r   r	   r   Dataset)r   r   r   r   r   rA   r   rg   r   dsout2expected_dss               r7   test_interpolate_nd_with_nanr   %  sl   
 			A	RAaA
	!5!!!))!Q//AfAdG	aj	3	3	3B	iiisS)))4D	E	E	EB
))b)//C|
rvs	c3/0z!  H Js}}S118<<<	
RB	2R((	)	)B99r9??D*HALAABBKJt~~c22K@@@@@r8   c                r   t           st          j        d           t          s|dv rt          j        d           t	          |          d}                    ||           }fd}|d          |d         |          d	}t          j         ||          dg|
          }t          ||           d S )Nr:   rM   rN   皙?r~   c                    t          j                            d         | j        |                     d          dt
          j                  |          S )Nr   Frx   rY   )ra   rb   rA   s     r7   rc   z%test_interpolate_scalar.<locals>.funcP  sW     ))sGH!!#&&v * 
 
   	r8   r   r   r   r    )	r   r=   r>   r   r4   r?   r/   r0   r	   )rC   r   re   rf   rc   r"   rg   rA   s          @r7   test_interpolate_scalarr   ?  s    
  /-... A?@@@	$		BEYYvY..F     r#wdd2d8U.C.CDDF|DDUOO3%GGGHFH%%%%%r8   c           	     b   t           st          j        d           t          s|dv rt          j        d           t	          |          }d}d}|                    |||           }t          j                            |d         |d         f|	                    ddd	          j
        d
dt          j                  t          j        ||gd                    }|||d                             |          |d	         d}t          j        |d         d	g|          }t!          ||           d S )Nr:   )r+   rN   r   g?r   r   r   r)   rD   Fr   rw   r   r   r<   r*   r   r    )r   r=   r>   r   r4   r?   rZ   r[   r   r   r   r-   r_   r   r/   r0   r	   )	rC   r   rA   re   r   rf   r   r"   rg   s	            r7   test_interpolate_nd_scalarr   ^  s9   
  /-... A?@@@	$		BEEYY%Y77F%==	C"S'
S#s##*6 >   	hu~B''') )M uBtHOOeO,D,D2c7SSF|M!,C5HHHHFH%%%%%r8   c                j   t           st          j        d           t          j        ddt
          j        dgddt          d          i          }t          s*| r(t          j        d           |	                                }|
                    d	d
g          }|                                dk    sJ d S )Nr:   r   r   r   r   r+   r    rN   r;   r   r<   )r   r=   r>   r/   r0   r-   r_   ranger   r5   r?   count)rm   rA   rf   s      r7   	test_nansr   |  s     /-...	q!RVQ'c3a/	J	J	JB  ?@@@XXZZYY#sY$$F<<>>Ar8   c                   t           st          j        d           t          j        ddt
          j        dgddt          d          i          }t          s*| r(t          j        d           |	                                }d	D ]L}t          j
        t                    5  |                    d
dg|           d d d            n# 1 swxY w Y   M| rt          d          }nt          d          }|                    g dddi          }t          j        |j                                                  rJ |                    g d          }t          j        |j                                                  sJ t          j
        t                    5  |                    ddgd           d d d            n# 1 swxY w Y   t          j
        t                    5  |                    ddgd           d d d            n# 1 swxY w Y   t          j        g dddg di          }t          j
        t"                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr:   r   r   r   r   r+   r    rN   )akimaspliner;   r   r~   r#   )rw   r   r#   rW   rO   )r   kwargsr<   boor   r   br   r   )r   r=   r>   r/   r0   r-   r_   r   r   r5   r   r6   r?   r4   isnanr   any	TypeError)rm   rA   rC   results       r7   test_errorsr     sQ    /-... 
q!RVQ'c3a/	J	J	JB  ?@@@XXZZ% 3 3]:&& 	3 	3IIc
6I222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3  !a  a  YY\3,?Y@@Fx&&**,,,,,YYY$$F8FM""&&((((( 
z	"	" * *
		QF5	)))* * * * * * * * * * * * * * *	z	"	" * *
		QF5	)))* * * * * * * * * * * * * * * 
oooCiii8H	I	I	IB	y	!	!  
		A	                 sH   CC	C	F==GG!HHHI,,I03I0c            	     *   t          dt          j        g d          fdt          j        g dt                    fdt          j        g dt                    f          } t          j        g dt
                    }t          j        | t          |          	          }t          j        d
 |                                 D             t          |ddg                   	          }|	                    |d          }t          ||           d S )Ntime)r   g      ?r   )TTFr   )startr   endr   )r         ?r   r   r"   c                4    i | ]\  }\  }}|||d dg         fS )r   rw   rr   )rs   krF   arrs       r7   
<dictcomp>ztest_dtype.<locals>.<dictcomp>  s/    GGGMAzSS#q"g,GGGr8   r   rw   rD   )r   rC   )dictr-   arrayrn   rJ   r   r/   r   itemsr?   r   )	data_varsr   rg   rf   s       r7   
test_dtyper     s   28LLL))
*28///t<<<
=28555SAAA
B  I
 8LLL...Dz)DdOOO<<<HZGGY__5F5FGGGq"g'''  F ]]X]66FXv&&&&&r8   c            	        t           j                            d          } t           j                            d          }t          j        ddd          dz  }t	          j        t          j        | d d t           j        t           j        f                   t          j        |d d t           j        f                   z  |z  g d| |d| d	z  f|d
          }t          j        ddd          }t          j        ddd          }|                    d          }t          |
                    |          |
                    |d                     |                    ddg          }t          |
                    ||          |
                    ||d                     t          j        t                    5  |
                    g dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r&   r'   g      @r(   r   r   r*   r    r   r   r   r<   T)r   assume_sortedr   r%   )r   r   r   r   )r-   r   r   r.   r/   r0   r3   r2   sortbyr	   r?   r=   r   r6   )r   r   r)   rA   x_newy_new	da_sorteds          r7   test_sortedr     s    		A
	A
Cb!!C'A	
qBJ
*+,,rva2:6F/G/GG!K__QsAqDk::
 
 
B K1b!!EK1b!!E		#IBIII&&	(8(85PT(8(U(UVVV		3*%%I
		EU	##5E>>  
 
z	"	" 3 3
		IIIT	2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   =G$$G(+G(c                    t          j        t          j        d                              dd          ddgdg di          } |                                 }t          j        d          |d<   t          |                     g d	          |                    g d	                     t          |                     g dd
g          |                    g dd
g                     d S )N   r#   r+   r   r   )r   r   r   r#   r    )r   r&   333333?r<   r;   r%   )r/   r0   r-   r   r|   copyr
   r?   )rA   
da_w_coords     r7   test_dimension_wo_coordsr     s    	
	"a##3*c<<<=P
 
 
B JillJsO___--z/@/@???/@/S/STTT
		OOOu	--OOOu55    r8   c                    t                      } d| j        d<   d| d         j        d<   t          j        g dd          }|                     |	          }t          |d         | d                             |	                     |d
                             | d
                   sJ d|d         d d df<   d|d         d d df<   d|d
         d d df<   |d                             | d                   rJ |d                             | d                   rJ |d
                             | d
                   rJ |j        d         dk    sJ |d         j        d         dk    sJ d S )Nvarfoovar2var1buz)g)\(?gzG?gףp=
?r)   r   dim2var3r   r   )r   attrsr/   r0   r?   r	   equals)r   new_dim2interpolateds      r7   test_datasetr     s   			BBHUO$BvJU|...S999H99(9++LL("V**;*;*;*J*JKKK&&r&z22222 "%LA!$LA!$LAF#**2f:66666F#**2f:66666F#**2f:66666e$----%e,666666r8   2D3Dc                8   t           st          j        d           t          |           }t	          j        g dd          }|                    |          j        |                    |d          j        k    sJ t	          j        g dd          }|                    ||	          j        }|                    ||d
          j        }||k    sJ |                    ||          j        }|                    ||d          j        }||k    sJ t	          j        g dd          }|                    |          j        |                    |d          j        k    sJ |                    |          j        |                    |d          j        k    sJ t	          j        g dd          }|                    ||	          j        }|                    ||d
          j        }||k    sJ t	          j        dgdgdggddg          }|                    |          j        |                    |d          j        k    sJ |                    |          j        |                    |d          j        k    sJ | dk    rt	          j        dgdgdggddg          }t	          j        dgdgdggddg          }|                    ||          j        }|                    ||d          j        }||k    sJ |                    ||          j        }|                    ||d          j        }||k    sJ |                    d|          j        }|                    d|d          j        }||k    sJ dS dS )zAMake sure the resultant dimension order is consistent with .sel()r:   r   r   r   r<   nearestr~   r   r%   r   r   r   r   )r   r   r   r   r   r   r#   )r   r)   )r   r)   rC   )r)   r   )r)   r   rC   r;   N)	r   r=   r>   r4   r/   r0   r?   r!   sel)r   rA   rb   new_yrf   rg   new_zs          r7   test_interpolate_dimorderr     s     /-...	$		BL---E99u9"bffuYf&G&G&LLLLLL---EYY%Y((-Fvvyv99>HXYY%Y((-Fvvyv99>HXL---E99u9"bffuYf&G&G&LLLLL99u9"bffuYf&G&G&LLLLLL---EYY%Y((-Fvvyv99>HXL1#sQCSz:::E99u9"bffuYf&G&G&LLLLL99u9"bffuYf&G&G&LLLLLqyyqcA3_C:>>>qcA3_C:>>>Ue,,166EU96==B!!!!Ue,,166EU96==B!!!!SE**/66C56;;@!!!! y "!r8   c                 @   t                      } d| j        d<   d| d         j        d<   t          j        t          j                            d          dgdg di	          }|                     |          }t          |d         | d         	                    |d         
                     t          |d         | d                             |                     |d         
                    | d                   sJ |j        d         dk    sJ |d         j        d         dk    sJ t          j        t          j                            d          dgdg di	          }|                     |          }|                     |          }t          ||           d S )Nr   r   r   r   r   r#   r   r   r    r   r   dim3r   )r   r   r/   r0   r-   r   r   interp_liker	   r?   r   reindex_like)r   otherr   rf   rg   s        r7   test_interp_liker  5  s   			BBHUO$BvJUL++6(FIIICVWWWE>>%((LL("V**;*;v*;*O*OPPPL("V**@*@*G*GHHH&&r&z22222 e$----%e,6666L
	&6???2K  E ^^E""Fu%%HFH%%%%%r8   zx_new, expectedz
2000-01-02periodsr   r   r#   2000-01-01T12:002000-01-02T12:00r;   r   )r  r  NaT)marksz ignore:Converting non-nanosecondc           	     r   t          j        t          j        d          ddt	          j        dd          i          }|                    |           }t          j        t          j        |          dgdt          j        |                               d          i          }t          ||           d S )N   r   
2000-01-01r  r    r   zdatetime64[ns])
r/   r0   r-   r   pd
date_ranger?   
atleast_1dastyper	   )r   rg   rA   rf   expected_das        r7   test_datetimer  O  s    & 

	"lB???@
 
 
B YYEY""F,
hXu--445EFFH  K FK(((((r8   c            	        t          j        t          j        d          ddt	          j        dd          i          } |                     d          }t          j        d          }t          |                    d          |           d S )	Nr  r   r  r  r    r  r   r;   )	r/   r0   r-   r   r  r  r?   r	   r   )rA   rf   rg   s      r7   test_datetime_single_stringr  r  s    	
	"lB???@
 
 
B
 YY.Y//F|C  HF$$V,,h77777r8   c                 8   t          j        ddd          } t          j        t          j        d          | gd          }t          j        ddd          }|                    |	          }t          j        g d
|gdg          }t          ||           d S )N2000r  Dr  freqr   r"   r!   2000-01-01T12:00:00r#   r   r;   r         @)r/   cftime_ranger0   r-   r   r?   r	   )timesrA   	times_newrf   rg   s        r7   test_cftimer!    s     OFBS999E	bimmUG&	A	A	AB 5qsKKKIYYIY&&F|OOOYKvhOOOHFH%%%%%r8   c                 H   t          j        ddd          } t          j        t          j        d          | gd          }t          j        dddd	
          }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  r   r  r  r#   noleapr  r  calendarr   	r/   r  r0   r-   r   r=   r   r   r?   )r  rA   r   s      r7   test_cftime_type_errorr'    s     OFBS999E	bimmUG&	A	A	ABqsX  I 
y	!	! " "
		y	!!!" " " " " " " " " " " " " " " " " "s   3BBBc                 d   ddl m}  t          j        dddd          }t          j        t          j        d          |gd	          }g d
}|                    |          }t          t          j	        |          |           }t          j        g d|gdg	          }t          ||           d S )Nr   DatetimeProlepticGregorianr  r  r  proleptic_gregorianr$  r   r  )r  r  z2000-01-03T12:00r   r  cftimer*  r/   r  r0   r-   r   r?   r   r   r	   r*  r  rA   r   rf   times_new_arrayrg   s          r7   test_cftime_list_of_stringsr0    s     211111O/D  E 
bimmUG&	A	A	ABLLLIYYIY&&F4
7 O |OOO_4EVHUUUHFH%%%%%r8   c                 Z   ddl m}  t          j        dddd          }t          j        t          j        d          |gd	          }d
}|                    |          }t          t          j	        |          |           }t          j        dd|i          }t          ||           d S )Nr   r)  r  r  r  r+  r$  r   r  r  r   r;   r   r,  r.  s          r7   test_cftime_single_stringr2    s     211111O/D  E 
bimmUG&	A	A	AB"IYYIY&&F4
7 O |C(ABBBHFH%%%%%r8   c            	        t          j        t          j        d          ddt	          j        dd          i          } t          j        t                    5  | 	                    d           d d d            d S # 1 swxY w Y   d S )Nr  r   r  r  r    r;   r   )
r/   r0   r-   r   r  r  r=   r   r   r?   r@   s    r7   #test_datetime_to_non_datetime_errorr4    s    	
	"lB???@
 
 
B
 
y	!	!  
		s	                 s   A==BBc                    t          j        ddd          } t          j        t          j        d          | gd          }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr  r  r  r  r   r  r;   r   r&  r  rA   s     r7   test_cftime_to_non_cftime_errorr7    s     OFBS999E	bimmUG&	A	A	AB	y	!	!  
		s	                 s   A??BBc            
     v   t          j        t          j        d                              dd          ddgg dt          j        ddd	          d
          } t          j        t          j        ddd          dgdt          j        ddd	          i          }|                     ||j	        
           d S )N   r#   r   r   r   r  z
01-01-2001r  r  )r   r   r    r   2   H)
r/   r0   r-   r   r|   r  r  r.   r?   r   )r   xis     r7   test_datetime_interp_noerrorr=    s     	
	"a##6]M,DDD
 
	 	 	A 

Aq"XlBSIIIJ
 
 
B
 HHrH     r8   c                     t          j        ddd          } t          j        t          d          dg| g          }|                    dg           d S )	N0001r#   500Yr  r   r    z
0002-05-01r   )r/   r  r0   r   r?   r6  s     r7   	test_3641rA    sV     OFAF;;;E	eAhhfXug	>	>	>BIIL>I"""""r8   r   c                   t          j        t          j        d                              dd          ddgg dddgd	
          }t          j        g ddg          }t          j        ddgdg          }t          j        ||          \  }}|j        dk    sJ |                    |||                               d	          }|                    |||                               d	          }t          ||           d S )Nr   r#   r   r   r   r   gg333333ӿr%   r    r  x1r   g333333ÿ      пy1r   )
r/   r0   r-   r   r|   	broadcastndimr?   r   r	   )rC   rA   r   r   x_broadcasty_broadcastrf   rg   s           r7   test_decomposerJ    s    

	!Q""3ZYYdD\22
 
 
B
 Lv666EL%tf555E!|E599Kq    YY%Y77AA*MMFyy;+fyEEOO H FH%%%%%r8   )rD   r   ri   slinear	quadraticrE   zdata_ndim,interp_ndim,nscalarc                p    g | ]3}t          d |d z             D ]}t          d|d z             D ]}|||f4S )r   r   )r   )rs   	data_ndiminterp_ndimnscalars       r7   rv   rv     sy        IM22  Qa00	   
K)    r8   c                   t          j        ddd          }t          j        ddd          }t          j        ddd	          }t          j        t          j        |d
d
t           j        t           j        f                   t          j        |d
d
t           j        f                   z  t          j        |          z  d|fd|fd|fg          ddi}t          j	        |          D ]
                    fdj	        D                                           d t          j	                  D                       t          j	        |          D ]y}	t          |	|          D ]e}
i }|	D ]}||
v r.dj        |         d         j        |         d         z   z  ||<   5dj        |         d         z  j        |         d         z
  }dj        |         d         z  j        |         d         z
  }t          t          j        t          j        ||t!          j        |                   dz                      ||<   |r>t          j        ||         |g          ||<   ||                             d          ||<    j        dd| i|d|i}                                 j        dd| i|d|i}t'          ||              d
S d
S )zkInterpolate nd array with multiple independent indexers

    It should do a series of 1d interpolation
    r   r   r,   r   r+   r   g      r;   r   Nr   r   r)   r]   r"   rW   extrapolatec                T    i | ]$}|v|t          j        |                   d z  %S )r   )lenr"   )rs   rF   rA   	data_dimss     r7   r   z-test_interpolate_chunk_1d.<locals>.<dictcomp>.  s8    VVVsIAUAUS#bin%%*AUAUAUr8   c                     i | ]\  }}||d z   S rM   rr   )rs   rt   rF   s      r7   r   z-test_interpolate_chunk_1d.<locals>.<dictcomp>2  s"    JJJVQc1q5JJJr8   )chunksrw      )r]   r!   rC   r   rr   )r-   r.   r/   r0   r1   r2   r3   expr   r!   iselr5   ry   r   r"   r   rU  r?   computer   )rC   rN  rO  rP  r   r   r   r)   r   interp_dimsscalar_dimsdestrF   beforeafterrf   rg   rA   rV  s                    @@r7   test_interpolate_chunk_1drc    s   0 	Aq!A
Aq!A
D#r""A	VAaaaRZ/011
&111bj=!
"
"#
&)) a3(S!H-	
 
 
B M*F ""'955 & &	WWVVVVVbgVVV
 

 XXJJy7I7IJJJXKK (== 	 	K+KAA  & ; ;Ck))$'29S>!+<ry~b?Q+Q$RS		 "#RYs^A%6!639J!J !BIcN2$6 639K K$(LKs29S>7J7JR7OPP% %S	 # ;(*$s)3%(P(P(PDI(,S	(:(:DI"HH&HDHHHHH.2::<<.TTfTTTVTTT 222 M& &r8   z"ignore:Increasing number of chunksc                   t          j        ddd          }t          j        ddd          }t          j        ddd          }t          j        ddd          }t          j        ddd          }t          j        t          j        |d	d	t           j        t           j        t           j        t           j        f                   t          j        |d	d	t           j        t           j        t           j        f                   z  t          j        |d	d	t           j        t           j        f                   z  |d	d	t           j        f         z  |z   d
|||||dd          }t          j        ddt           j        z  d          }t          j        ddd          }t          j        d|d	d	t           j        f         t          j        |          z  z   d|fd|fg          }	|	t          j        |          z  }
|	t          j        |          z  }t          j        |d	d	t           j        f         t          j        |          z  d|fd|fg          }dd	i}|	                    d|
||||           }|
                    d          }|

                    d          }
|
                    d          }|	                    d|
||||           }t          ||           d	S )r   rw   r   r,   r   r   r   rZ     N)r   r   r)   tq
dummy_attr)r   r   r)   rf  rg  label)r]   r!   r"   r   rD  r   r   thetarR  rW   r;   )rf  r   r   r)   r   rC   r#   )r-   r.   r/   r0   r1   r2   r3   r[  pir?   r5   r   )rC   r   r   r)   rf  rg  rA   rj  r   rxdaydazdar   rg   rf   s                   r7   test_interpolate_chunk_advancedrp  T  s    	B1A
B1A
B2A
Aq"A
Aq"A	VAaaaRZRZGHII
&111bj"*bj89
:
:;
&111bj"*,-
.
./ AAArzM
 	
 'QQQQNN
 
 
B K1ru9a((E
E4##A
111bj=!BF5MM11a7E*+	 	 	A
 bfUmm
C
bfUmm
C
,qqq"*}u-a7E*+  C
 D!Fyy3#F6yRRH	!B
))A,,C
))A,,CYYsc&YPPFVX&&&&&r8   c                    t          j        t          j        dt          j        d          z            dt          j        d          fg          } t          j        t                    5  |                     dt          d                     ddd           n# 1 swxY w Y   |                     d	           dS )
z7Ensure exception on bounds error is raised if requestedr   r+   r         @T)rV   r   r   Nr   )
r/   r0   r-   r1   r   r=   r   r6   r?   r   r@   s    r7   test_interp1d_bounds_errorrt    s     

sRYq\\!""
")A,,	 
 
B
 
z	"	" < <
		s4T#:#:#:	;;;< < < < < < < < < < < < < < < II3Is   +&BB!$B!zx, expect_same_attrs)r  Tr  r,   )r   r;   r   r   ru   )unitexpect_same_attrsc                   t          d          }t          j        t          dt          j        d          z            ddt          j        d          |fi          }|                    |           j        j        |k    }||k    sJ d S )	Nbar)r   r   r,   r   r   )r   r"   r<   )r   r/   r   r-   r   r?   r   r   )r   rv  
base_attrsr   has_same_attrss        r7   test_coord_attrsr{    s     %J	RYq\\)***c29Q<<45
 
 
B
 YYY^^%+z9N......r8   c                 r   t          j        t          j        dt          j        d          z            dt          j        d          fg          } |                     dt          t          j        t          j        dz  z                       }|                     d          }t          ||           d	S )
z'Ensure complex nans are used by defaulty        333333?r+   r   rr  y              ?)rW   rs  r   N)	r/   r0   r-   r[  r   r?   r   r_   r   )rA   rg   rf   s      r7   #test_interp1d_complex_out_of_boundsr}    s     

tbill"##
")A,,	 
 
B
 yyc$"&26B;:N*O*O*OyPPHYYCY  FVX&&&&&r8   )r   r   r   r   )rC   r   rF   rJ   r   r   r   rK   )rC   r   r   rK   )rm   rn   r   rK   )r   r   r   rK   )r   rK   )rC   r   r   r   r   rK   )rC   r   r   rn   r   rK   )rv  rn   r   rK   )L
__future__r   	itertoolsr   r   typingr   numpyr-   pandasr  r=   xarrayr/   xarray.coding.cftimeindexr   xarray.core.typesr   xarray.testsr	   r
   r   r   r   r   r   r   xarray.tests.test_datasetr   rZ   ImportErrorr4   rB   markparametrizeparamrh   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   
datetime64r_   xfailfilterwarningsr  r  r!  r'  r0  r2  r4  r7  r=  rA  rJ  r   rc  rp  rt  r   r{  r}  rr   r8   r7   <module>r     sB
   " " " " " " 0 0 0 0 0 0 0 0                    D D D D D D + + + + + +	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 7 6 6 6 6 6	LLLL 	 	 	D	- - - -BH H H Hg#677c
++
\V\!
+++\V\!	-J-J-JK & & &  ,+ 87
&> GV#455& & & 65&4 eT]33HV HV HV 43HVV 
\V\!
+++\V\!	-J-J-JK .: .: .: .:b    : A A A A2 H:..
\V\!
+++\V\!	-J-J-JK & & &  /.&6 H:..
\V\!
+++\V\!	-J-J-JK & & &  /.&4 dE]33   43 dE]33" " " 43"J ' ' ' '  3 3 3 34     7 7 7 7. ,&,qT":":":LFLt<T<T<T!UVV," ," ," WV,"^ & & & &2 	|Q	/	/	/;BH122MBMBT4U4UV  #J		
 0	1C:>	8	8	83RV:LM
	s#'FK4EFFF   >??) ) ) @?!  $)" 	8 	8 	8 	8 & & &  & " " "  " & & &  && & & &  &&          ! ! ! !$ # # #  # Ix#899& & & :9 &$ LLL  T5M22# q!   ; ; ;  32   ;| Hi#899@AA(' (' (' BA :9  ('V     	3(		T"
xrx''3	8%@ / / /  / 	' 	' 	' 	' 	' 	's   A AA