HOME


sh-3ll 1.0
DIR:/usr/local/lib/python3.6/site-packages/xarray/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.6/site-packages/xarray/test/__pycache__/test_dataarray.cpython-36.pyc
3

���h��@s�ddlZddlZddlZddlmZddlmZddl	m
Z
mZmZm
Z
mZmZddlmZmZddlmZmZmZmZmZGdd	�d	e�ZdS)
�N)�deepcopy)�dedent)�align�	broadcast�Dataset�	DataArray�
Coordinate�Variable)�	iteritems�OrderedDict�)�TestCase�
ReturnItem�source_ndarray�unittest�
requires_daskc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zed%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dKdL�Z)dMdN�Z*dOdP�Z+dQdR�Z,dSdT�Z-dUdV�Z.dWdX�Z/dYdZ�Z0d[d\�Z1d]d^�Z2d_d`�Z3dadb�Z4dcdd�Z5dedf�Z6dgdh�Z7didj�Z8dkdl�Z9dmdn�Z:dodp�Z;dqdr�Z<dsdt�Z=dudv�Z>dwdx�Z?dydz�Z@d{d|�ZAd}d~�ZBeCjDd�d�d���ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�d��Zdd�d��Zed�S)��
TestDataArraycCsbddd�|_tjjd	�|_tddg|j�|_tddg|j|j�|_td|ji�|_|jd|_	dS)
NZvalue1iq)Zattr1Zattr2�
��x�y�foo)rr)
�attrs�np�randomrr	�v�var�ds�dv)�self�r �:/tmp/pip-build-5_djhm0z/xray/xarray/test/test_dataarray.py�setUpszTestDataArray.setUpcCsXtddgdddgdddggd	d
i�}t|dtjd�id
d�}td�}|j|t|��dS)N�timerr�����r�bar�otherrZmy_variable)�namea        <xarray.DataArray 'my_variable' (time: 2, x: 3)>
        array([[1, 2, 3],
               [4, 5, 6]])
        Coordinates:
            other    int64 0
          * time     (time) int64 0 1
          * x        (x) int64 0 1 2
        Attributes:
            foo: bar)r	rr�int64r�assertEqual�repr)rrZ
data_array�expectedr r r!�	test_reprs
$	zTestDataArray.test_reprcCsB|j|jj|j�|j|jj|jj�x(dD] }|jt|j|�t|j|��q,W|jt|j�t|j��|j|j|j�|j	t
|jj�t
|jj��x,t
|jj�D]\}}|j||jj|�q�W|jt��|jjWdQRX|j|jdj�tj�|jtd	��|jd
j�WdQRX|jt��|j|j_WdQRXdS)N�dims�dtype�shape�size�nbytes�ndimrrzmust be 1-dimensionalr)r1r2r3r4r5r6r)�assertVariableEqualr�variabler�assertArrayEqual�valuesr-�getattr�len�assertItemsEqual�list�coordsrr
�assertRaises�AttributeErrorZdataset�assertIsInstanceZto_index�pd�Index�assertRaisesRegexp�
ValueError)r�attr�krr r r!�test_properties%s 
 zTestDataArray.test_propertiescCsrttjd��}|j�}tjd�|_|jtjd�|j�dtjd�|_|jdtjd�|j�|j|j|j�dS)	Nr%r&r$)r%r&)r%r&)r%r&)r%r&)r%r&)rr�zeros�copy�onesr:r9�data)r�array�actualr r r!�test_data_property7sz TestDataArray.test_data_propertycCsx|j}|j|jd�|j�}d|_|j|jd�|j||�ttddg��}d|_tdgddgidd�}|j||�dS)Nrr)rr%r)r+)rr-r+rK�assertDataArrayEqualrr�assertDataArrayIdentical)r�arr�copiedrOr/r r r!�	test_name@szTestDataArray.test_namec	Cs6|j}|j|jd�|jtd��d|_WdQRXdS)Nrrzyou cannot assign�w�z)rr)rVrW)rr-r1rErA)rrSr r r!�	test_dimsNszTestDataArray.test_dimscCsXddi}d|jjd<|j||jj�ddi}||j_|j||jj�|j||jj�dS)Nrr)�bazr)r�encoding�assertEqualsZassertIsNot)rr/r r r!�
test_encodingUszTestDataArray.test_encodingcCs@tjjd�}t|�}tdddg|fi�d}|j||�t|ddgdddgg�}tddg|fdddgfddddgfd��d}|j||�t|tjddgd	d
�tjddd gdd
�g�}td	dg|fd	ddgfdd!d"d#gfd��d}|j||�ddgd$d%d&gg}t||d	dg�}|j||�tjddgd
d
�tjd'd(d)gdd
�g}t||d	dg�}|j||�ddgd*d+d,gd�}t||d	dg�}|j||�d	ddgfdd-d.d/gfg}t||�}|j||�t|t|��}|j||�td	dg|fd	ddgfd��d}t|d	ddgid	dg�}|j||�t|d	dgd�}tdd	dg|fi�d}|j||�t|d	dgdd�}tdd	dg|fi�d}|j||�t|dd
�}tdddg|fi�d}|j||�t|d	dgddid�}tdd	dg|ddifi�d}|j||�t|d	dgddid�}tdd	dg|iddifi�d}|j||�dS)0Nr$r%�dim_0�dim_1�a�br)Nr]r^r)r+r)Nrr�A�B)rr)Nr)r1r)r1r+r))r1r)r1rZ)r$r%���������rcrdrercrdrercrdrercrdrercrdrercrdrercrdre)rrrrrRrCrDr)rrMrOr/r?r r r!�test_constructor_sb


 zTestDataArray.test_constructorc Cs�tjjdd�}|jtd��t|dddggddg�WdQRX|jtd�� t|ddddgid	d
g�WdQRX|jtd��t|ddddgi�WdQRX|jtd��t|ddgd�WdQRXdS)
Nr%r$zcoords is not dict-likerrrrznot a subset of the .* dimr_r`zis not a string)r1)rr�randnrErFr�	TypeError)rrMr r r!�test_constructor_invalid�s"$z&TestDataArray.test_constructor_invalidcCs�ddgddgg}t|ddgddgd�d	d
gdddid
did�}t|�}|j||�t|j|j�}|j||�tj|tjddgd	d�tjddgd
d�d�}t|�}|j||�tj|dtjddgd
d�d�}t|�}|j|dj	d	dd�|�tj
d|i�}t|�}t|g|jdd	d
g�}|j||�t|ddgd d!gdd	d"dgfd�d	d
gd�}t|�}|j||�t|j|j�}|j||�td
d
ddgfi�d
}ttjddgd
d��}|j||�ttd
ddg��}|j||�dS)#Ng�������?�rr$r_r`r)rrrrZfoobarr)rr%)r?r1r+rrZ)r+)�index�columns)rkT)�dropr]g�?)rrr_rW)r?r1g��������rcrdrcrdrcrdrcrdg�)
rrRr:r?rQrC�	DataFramerD�Series�reset_coordsZPanelrr)rrMr/rO�frame�seriesZpanelr r r!�$test_constructor_from_self_described�sD z2TestDataArray.test_constructor_from_self_describedcCs,tdgdfi�d}td�}|j||�dS)Nr)rrrR)rr/rOr r r!�test_constructor_from_0d�sz&TestDataArray.test_constructor_from_0dcCs�ttjd�ddidd�}|}|j�}|j|j|��|j|j|��|jd�}|j|j|��|j|j|��|jddi�}|j|j|��|j|j|��|j�}d|j	d	<|j|j|��|j|j|��|j�}dtjd
�f|d<|j|j|��|j|j|��|j
dd�}|j|j|��|j|j|��|j�}tj|d
<|j�}|j|j|��|j|j|��tj|dd�<|j|j|��|j|j|��|j�}d|d<|j|j|��|j|j|��dS)Ng@r_�*r)r1rYZxxxr)rr'T)rmri��)rr�arangerK�
assertTrue�equals�	identical�rename�assertFalserrp�nan)r�origr/rOr r r!�test_equals_and_identical�sD


z'TestDataArray.test_equals_and_identicalcCsVttjd�ddidd�}|j|jtjd���|j|jd��|j|jdd	i��dS)
Ng@r_rur)r1r'�{rr$)rrrvr{rxry�broadcast_equals)rr}r r r!�test_equals_failuressz"TestDataArray.test_equals_failurescCs�tddgddidd�}tddgddddgfidd�}|j|j|��|j|j|��|j|j|��|j|j|��tdgddidd�}|j|j|��|j|j|��dS)Nrrr)r1)r?r1)rrwr�r{rxry)rr_r`�cr r r!�test_broadcast_equalssz#TestDataArray.test_broadcast_equalscCs�|j|j|jd�|jd}|jd}|j|jd|�|j|jd|�t�}x�|dd�|d||j||j|||||f||jd
k||jdk||dk||d
k|dkfg
D]}|j|j|j|�q�Wx�|d|dd�df|dd�dd�f||jdd�||jdd�||dd�||dd�|dd	�f||jdk||jdk||dk||dk|dkfgD]}|j|j||j|��q�WdS)Nrrr.rrr%r$r&rcrcrcrcrc)rRrrrr:r8r7r)rrr�I�ir r r!�test_getitems

2"(H<zTestDataArray.test_getitemcCs8|jtd�dd�}|jjtd�dd�}|j||�dS)Nr%r)rr)r�slice�iselrR)rrOr/r r r!�test_getitem_dict0szTestDataArray.test_getitem_dictc
Cs�tdgdggddgdgdddd	gfd
dgfd
dgdd
ggfd�dd
gd�}|j||dd��|j||dd�dd�f�|j||d�|j||dd�dd�f�|j||ddgdgf�|d}tdddddddd��}|j||�|ddd�f}tdgddgddd
dgfd
dgfd�d
d�}|j||�|dd�df}tddgddgddddd	gfdddd
gfd�dd�}|j||�dS)Nrrrr$r%r&rr_r`rr��d�e)rrrW�x2�y2Zxy)r1.r)rr)rrR)rr}rOr/r r r!�test_getitem_coords5s6
z!TestDataArray.test_getitem_coordscCs4ttjjd�dd�}tjtj|��}|j||�dS)Nr%�idr#)r1)r%r%)r�r#)rrr�pickle�loads�dumpsrR)rrM�roundtrippedr r r!�test_pickleVszTestDataArray.test_picklecCsxttjd��}|j|j�|j�}|j|jd	�|jdd�}|j|jd�|jdd�}|j|jd�|j|j�j�dS)Nr%r&r$r)�chunks)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�)rrrLZassertIsNoner��chunkr-�load)rZ	unblockedZblockedr r r!�
test_chunk[szTestDataArray.test_chunkcCs�|j|jd|jjdd��|j|j|jjtd�d��|j|jdd�|jjtd�d��|j|jdd�dd�f|jjtd�td�d��dS)Nr)rr%r')rr)rRrr�r�)rr r r!�	test_iselks
$zTestDataArray.test_iselcCsdtjtd��f|jd<|jd}|j||jtd�d��|j|d|jdd��|j|dd�|jtd�d��|j|dd�|jd	ddgd��|j|dd�dd
�f|j|jdd
kd��td�}|j|d|j|d��|j|dg|jt||�d��dS)
Nr�
abcdefghijr)rrr`r%r�r_r&r)r)rrNr>rrR�selr�r)r�dar`r r r!�test_selrs
 ".zTestDataArray.test_selcCs�ttjjdd�ddddgfdtd�fg�}|jd	d
gd�}|jdd
gdd�}|j||�tjdkr�|jddgd�}|jddgddd�}|j||�n,|j	t
d��|jddgddd�WdQRXdS)Nr%r&rrrr$rZabcdr_r`)r�abZba�pad)r�methodz0.17)rg�������?gffffff�?�backfill)rr��	tolerancer�)rrrrgr>r�rRrC�__version__rE�NotImplementedError)rrMr/rOr r r!�test_sel_methods
zTestDataArray.test_sel_methodc/s�d!}tjj|�}t|dddgd�}dd	g}d	d
g}|jdd�||f}|j||dd��d�jksdt��jdjt|�fks~t�t	�fd
d�d"D��s�t��j
d#ks�t�|j||d��d�jks�t�tjj�j
|�|jddgddgd	dgd�tjj|jdgdgdgd�jj�|d$j��|jddgd�d%d
g}d&dg}|jdd�||f}|j||d�j�tjj�j
|�|j|j||d�|j||d��|jtd��|jddgddd	gd�WdQRX|jtd��|jddgd�WdQRX|jtd��|jddgd�WdQRX|jtd��|jddd	gtd	�d�WdQRX|jtd��|jddd�WdQRX|jtd��|jddgddgdd�WdQRX|jddgddgdd gd��d�jk�s�t�dS)'Nrr'r(r#rr)r1rr%r�
test_coord)rr�dimc3s|]}|�kVqdS)Nr )�.0r)rOr r!�	<genexpr>�sz1TestDataArray.test_isel_points.<locals>.<genexpr>)rrZpointsr$r&)r#rr)r#)rrz$All indexers must be the same lengthz dimension bad_key does not exist)Zbad_keyzIndexers must be integersg�?g������@)rzIndexers must be 1 dimensionalz Existing dimension names are notrarb)rr'r()r#rrr�)r�r#)rr&r$rcrd)rrrr:Zisel_pointsr?�AssertionErrorr3r<�allr1ZtestingZassert_equal�TZassert_allclose�squeezerRrErFrhr�)rr3Znp_arrayr�rrr/r )rOr!�test_isel_points�sZ"""zTestDataArray.test_isel_pointscCs^dtjtd��f|jd<|jd}|j|dd�|jdd��|j|d|jd�|j|d|jddi�|j|d|jd�|j|dd�|jd	ddg�|j|dd�dd
�f|jd	ddgtjd
�f�|j|dd�dd
�f|jdd�|jdd
kf�d|jd	d
�<|jtj|j	dk��d|jdt
d	d
�i<|jtj|j	dk��dS)Nrr�rr%r�rr`.r_r&rr�jr$)r`.)rrNr>rrR�locrvrwr�r:r�)rr�r r r!�test_loc�s
 4zTestDataArray.test_loccCs>tddgddggd�}|j|jdd�|j|jdd�dS)NrrTF)r?)rr-r�)rrMr r r!�test_loc_single_boolean�sz%TestDataArray.test_loc_single_booleancCs�tjjtd�ddgg�}ttd�d|fg�}|j|jd
d�|jdd��|j|jdd�|jdd��|j|jd
gd�|jdgd��|j|jddgd�|jddgd��|j|jdd�|jt	d	�d��dS)N�abcrrr(rr_)rr�r$)r_r)r�rrc)r_r)r_r)r�rrc)
rCZ
MultiIndexZfrom_productr>r�rangerRr�r�r�)r�idxrMr r r!�test_multiindex�s zTestDataArray.test_multiindexcCsPtjddd�}ttjdd�d|fg�}|j|d|j�|j|jd|j�dS)Nz
2000-01-01r)�periodsr�r#ztime.dayofyear)rC�
date_rangerrrvr9r:r?)r�datesr�r r r!�test_time_components�sz"TestDataArray.test_time_componentscCsltdtjdd
gd��tdtjdddgd��g}ttjjdd�|dd	�}|jdt|j��|j	ddgt
|j��|j|dj|jd��|j|dj|jd��|j
d|j�|jd|j�|jd|j�|jt��|jdWdQRX|jt��|jdWdQRXtd
�}t|j�}|j||�|jtd��|d=WdQRX|jtd��|jd=WdQRXdS)Nrrr$r,rrr%r)r+z^        Coordinates:
          * x        (x) int64 -1 -2
          * y        (y) int64 0 1 2z
cannot deletercrd)rrrNrrrgr[r<r?r-r>rwryZassertInZassertNotInr@�KeyErrorrr.rErF)rr?r�r/rOr r r!�test_coords�s,
zTestDataArray.test_coordscCs�tddgddgdddgfdd	�dd
�}|jd}tddgddddgfddgd�ddd�}|j||�|jd
=|j|jd
dd�|�dddgf|jd<tddgddddgfddgd�ddd�}|j||�dS)Nrrrr$rr_r`r&)rr�rW)r1)rWr�r)r1r+r�T)rm�x3)rWr�r)rr?rRrp)rr}rOr/r r r!�test_coord_coordss 




zTestDataArray.test_coord_coordscCsttjd�ddddgfdtd�fd�ddgd	d
�}|j�}tddgtjd�fddddgfdtd�fd��}|j||�|jdd
g�}|j||�|jd�}tddgtjd�fddddgfd�d
dtd�fi�}|j||�|jdg�}|j||�|jdd�}ttjd�ddgd	d
�}|j||�|j�}|jddd�|j||�|jddd�}ttjd�d
dtd�fiddgd	d
�}|j||�|j	t
d��|jdd�WdQRX|j	t
d��|jd	dd�WdQRX|j	t
d��|jd�WdQRX|j	t
d��|jd�WdQRXdS)Nr%r&rr_r`r�r)r)rYr)r1r+)rr)rYr)rY)rr)T)rm)rm�inplacezcannot reset coord)r�zcannot be found�	not_foundzcannot remove index)r%r&)r%r&)r%r&)r%r&)r%r&)rrrJr�rpr�assertDatasetIdenticalrRrKrErF)rrMrOr/r r r!�test_reset_coords*sJ

zTestDataArray.test_reset_coordscCs�td�}|jdd�}tdddi�}|j||�tddddgdd	d
d
ddgfid	d�}|jd�jdd
�d�}|j�}d	ddddgf|jd<|j||�dS)Nrru)r�r�rr$r%r&rr)r1cSs|j�S)N)�mean)r_r r r!�<lambda>`sz2TestDataArray.test_assign_coords.<locals>.<lambda>)r�g�?g@r�)rZ
assign_coordsrR�groupbyrKr?)rrNrOr/r r r!�test_assign_coordsYs&z TestDataArray.test_assign_coordscCsvtdddgddddgfg�}tdddgddddgfg�}||jd<tdddgddtjddgfidd�}|j||�dS)	Nrr$r%rrr&�rhs)r?r1)rr?rr|rR)r�lhsr�r/r r r!�test_coords_alignmentes
z#TestDataArray.test_coords_alignmentcCs�|j}|jdd�dd�f}|j|j|�|�|j�}tj|dd�<||dd�dd�f<|j|j|�|�ttjjd�dgd�}ttj	d�dd�}|j
|d�}|j||�dS)Nr$r'r#)r1�time2)r#)rrR�reindex_likerKrr|rrrgrv�reindex)rrr)r/r�rOr r r!�test_reindexnszTestDataArray.test_reindexcCs�tddgdd�}dddg}tjdkr\|j|d	d
d�}tdtjtjgd|fgd�}|j||�td|i�}|j|d	d
�}tddtjgd|fgd�}|j	||�dS)Nrrr)r1g�������?g�?g�������?z0.17r�g�������?)rr�r�)r?)r�g��������)
rrCr�r�rr|rRrr�r�)rrrrOr/�altr r r!�test_reindex_method~s

z!TestDataArray.test_reindex_methodcCst|jjd�}|j|j�|jjddi��|j|jd�|jjddi�}|j|j�|jjddi��|j|jd�dS)Nr)r)rrzr��
to_datasetrr-r+)r�renamedr r r!�test_rename�szTestDataArray.test_renamecCs`ttjjd�ddtd�fid�}t|jtd�dtd�fd�dd�}|jddi�}|j||�dS)Nr%rrr�)rr)r1)	rrrrgr>r:r�Z	swap_dimsrR)rrNr/rOr r r!�test_swap_dims�s zTestDataArray.test_swap_dimscCs|jd}|j||j�dS)Nr)rrRr)rrr r r!�test_dataset_getitem�s
z"TestDataArray.test_dataset_getitemcCs�|jtj|j�|j�|j|jjt�|jjt��|j|jj	�|jj	��|j|jj
dd�|jj
dd��t|j�}tj
|j�|ddd�<|j|dtj
|j��|j|jtj|j|j��tddgtjd��}|j|jtj|j|��dS)	Nr$r%rrrrr)rr)r9r�asarrayrr�astype�floatrr7ZargsortZcliprr�sinrQ�maximumr	rJ)rr/r)r r r!�test_array_interface�s 
z"TestDataArray.test_array_interfacecCs�tjjd�jdd�}tj||dk<t|tjd�tjd�gddg�}ttj|�tjd�tjd�gddg�}|j	||j��|j	||j
��dS)Nrur'r(rrr)rr�RandomStatergr|rrvrCZisnullrRZnotnull)rr�originalr/r r r!�test_is_null�s"
zTestDataArray.test_is_nullcCs�|j}|j}|j}|j||
�|j||d�|j|d|�|j||d|�|j|d||�|j||d|�|j|d||�|j||d|�|j|d||�dS)Nr)rrrrQ)rrrr_r r r!�	test_math�szTestDataArray.test_mathcCs�ttd�dtd�fg�}ttd�dtdd�fg�}ttjd�dddddgfg�}|j|||�|jtd��(|jtd�d	�|jtdd�d	�WdQRXdS)
Nr'rrr(r&r$r%zno overlapping labels)r)	rr�rrLrRrErFr�r�)rr_r`r/r r r!�test_math_automatic_alignment�sz+TestDataArray.test_math_automatic_alignmentcCs\|j}|j}|j}|}|d7}|j||�|j|j|�|j|j|�|jt|j�|�dS)Nr)rrr�assertIsr8r9r:r)rrrr_r`r r r!�test_inplace_math_basics�sz&TestDataArray.test_inplace_math_basicscCsxttd�dtd�fg�}ttdd�dtdd�fg�}|jtd��||7}WdQRX|jtd��||7}WdQRXdS)Nr'rrr(znot aligned)rr�rErF)rr_r`r r r!�%test_inplace_math_automatic_alignment�sz3TestDataArray.test_inplace_math_automatic_alignmentcCs�|j}|j|
jd�|j|djd�|j||jd�jd�|j||jd�jd�|j||jd�|j|d
jd�|j|ddjd�|j||djd�dS)Nrrr)r)rr-r+r�rz)rr_r r r!�test_math_name�szTestDataArray.test_math_namecCsnddgdddgddgdddgdddggfdd
�}ttjjdd�|ddgd�}|d}t|jd|j�}|j||�d|}|j||�||d}td
d�|j�D��}t|j|jd|ddgd�}|j||�|d|}|j||�|d|d }t|jd!|jd$dd%i�}|j||�|dd�df|ddd�f}|dd�dfjdd�df|ddd�fjddd�f}t||ddgd�}|j||�|ddd�f|dd�df}|j|j	|�||j	}ttj
d&�|j�}|j||�|j	|}|j|j	|�tddgd'd(gddd�d�}||}|d}d|jd<|jd=|j||�||}|j||�dS))Nrr$r��cd�efrrr%i�)rr�latr�)r1rcss"|]\}}|dkr||fVqdS)r�Nr )r�rHrr r r!r�sz6TestDataArray.test_math_with_coords.<locals>.<genexpr>r�ri+)rr�r�r�rcrdrcrdrei���)rr)rr)rr)rrrcrc)rcrc)rrrcrc)rcrci���)r$r%rcrd)rrrrgr:r?rR�dict�itemsr�rJ)rr?r}rOr/Z
exp_coordsZ
exp_valuesr�r r r!�test_math_with_coords�sN
 < 


z#TestDataArray.test_math_with_coordscCs�ttd�ddd�}|d}tdtjd�dtd�fgdd�}|j||�|d|k}tdddgdtd�fgdd�}|j||�||dk}|j||�dS)	Nr%r)r1r+r)r?r+rFT)rr�rrvrR)rr}rOr/r r r!�test_index_math(szTestDataArray.test_index_mathcCs�tdtjd�fddtjd�fd�ddtjd�fdtdd�fd��}d|d	}tddtjd�|jd	d
�}|j||�|d	|d}tdtjd�|j�}|j||�tddtjd�fdd
tjd�fddtjd�fd��}|d|d}ttjd�|jdd
�}|j||�|d|d}|j||�|dj�}||d8}|j||�|j�}|d|d|d<tdtjd�fd|d	j	fd�|j�}|j
||�|j�}|d|d8<|j
||�dS)Nrr'r)�tmin�tmaxg�?r$r%)rr�r�)r+r�rr�)r�r�rrd)rrrvr�rr?rRrLrKr:r�)rZobsrOr/�simr r r!�test_dataset_math8s<zTestDataArray.test_dataset_mathcCsHtddgddggddgddid�}|jddgd	�jd
�}|j||�dS)Nrrr$r%rrr)r1r)rWrW)r�stack�unstackrR)rr}rOr r r!�test_stack_unstackbs"z TestDataArray.test_stack_unstackcCsftjtd�dddgdddgd��}|jddg�d	}t|j�d	d
�}t|dd�jd�}|j||�dS)
Nr%r_r`rr)rrrrrr)r+rW)r1)rCrnr�Z	set_indexrr�rR)rZdf�sr/rOr r r!�test_unstack_pandas_consistencygs
z-TestDataArray.test_unstack_pandas_consistencycCs|j|jjj�|jj��dS)N)r7rr8Z	transpose)rr r r!�test_transposepszTestDataArray.test_transposecCs|j|jjj�|jj��dS)N)r7rr8r�)rr r r!�test_squeezetszTestDataArray.test_squeezecCs�ttjjdd�ddgd�}|j�}d|jd<|jd�}|j||�|jt	��|jd�WdQRX|j
t	d��|jd�WdQRX|jd	�}|j
t	d��|jd	�WdQRXdS)
Nr$r%rr)r1rWz	not foundzcannot be foundr)rrrrgrKr?rmrRr@rFrErz)rr/rSrOr�r r r!�test_drop_coordinatesws


z#TestDataArray.test_drop_coordinatescCsPttjjdd�ddgd�}|jddgdd�}|dd�dd�f}|j||�dS)	Nr$r%rr)r1rr)r�)rrrrgrmrR)rrSrOr/r r r!�test_drop_index_labels�sz$TestDataArray.test_drop_index_labelscCs�tjjdd�}tj|ddd�df<t|ddgd�}|jd�}|ddd�}|j||�|jddd	�}|j||�|jddd
�}|j||�|jddd
�}|dd�dd�f}|j||�dS)Nr&r$rr_r`)r1rr�)�how)Zthreshr%)rrrgr|rZdropnarR)rrrSrOr/r r r!�test_dropna�s
zTestDataArray.test_dropnacCsvddgdddgddgdddgdddggfdd
�}tdddgdddgg|ddgd�}|j�}tdd
di�}|j||�|jddg�}|j||�|jd�}tdddg|ddd�d�}|j||�|jdg�}|j||�|jd�}tddg|ddd�d�}|j||�|j|jjtjd�|jjtjd��tddtjgdddgg|ddgd�}|j	�}tdd
di�}|j||�dS)Nrr$r�r�r�rrr%i�)rrr�r�r)r1r�)rr�)rr�r'rcrdrcrdrei���rcrei���rdi���i���i���)
rr�rRr7r�reducerrr|�count)rr?r}rOr/r r r!�test_reduce�s."

$zTestDataArray.test_reducecCsf|jj�}|jt|j�d�|j|jt��|jjdd�}|jt|j�t|j��|j|j|j�dS)NrT)�
keep_attrs)rr�r-r<rr)rZvmr r r!�test_reduce_keep_attrs�s
z$TestDataArray.test_reduce_keep_attrscCs�ttjdtjdgdd�}|jd�}td
dddgdd�}|j||�ttd�dd�}|j|�}|j�}|j||�|jtd��}|j||�|j|dd��}|j||�|j|dd��}|j||�|jtd��|jddi�WdQRX|jt	d��|jdd	g�WdQRXtddgd
d�}|j|�}tddgddgddgddggdd�}|j||�|j�}x(||gD]}dddddgf|j
d<�qnW|jd�jtdd	gdd��}|j||�dS)Nrr%r)r1r&rzfillna on a DataArrayrr$rr`rcrcrc)rr)rrr|ZfillnarRr�rKrErhrFr?r�)rr_rOr/r`Z
fill_value�targetr r r!�test_fillna�s6


$zTestDataArray.test_fillnacCs�xJt|jjd�|jjd��D],\\}}\}}|j||�|j|d|�qWx0t|jjd�|j�D]\\}}}|j||�qbWdS)Nrrr)�ziprr�rr-rR)rZact_xZact_dv�exp_xZexp_ds�_Zexp_dvr r r!�test_groupby_iter�s*"zTestDataArray.test_groupby_itercCsN|jj�}dtjdgddgdgd�f|jd<dd	|d|jd<|S)
Nrr_�	r�r`rr�r�d)rrKrrNr?)rr�r r r!�make_groupby_example_array�s
*z(TestDataArray.make_groupby_example_arraycCs@|j�jd�}tddddg�}|j||j�|jdt|��dS)Nr�r_r`r�r%)rr�r	r7Zunique_coordr-r<)r�groupedZexpected_uniquer r r!�test_groupby_properties�sz%TestDataArray.test_groupby_propertiesc	Csx|j�}|jd}dd�}xXddd|gD]H}xBd
D]:}x4dD],}|j||d�}|j||d	�}|j||�q<Wq2Wq(WdS)NrcSs|S)Nr )rr r r!�identity	sz;TestDataArray.test_groupby_apply_identity.<locals>.identityrr�FT)r�)�shortcut)FT)FT)rr?r��applyrR)	rr/r�r�grr�rrOr r r!�test_groupby_apply_identitys


z)TestDataArray.test_groupby_apply_identityc
s�|j���jd�}ttdgtj|jdd�dd�fj�|jdd�dd�fj�|jdd�dd�fj�g�j�tdgtjdddg��d��d}|j	||j
tj��|j	||j��t�fd	d
�td�tdd�tdd�gD�dddggdg�}�djd�j
tj�}|j	||��djd�j�}|j	||�tddgtj|jdd�dd�fjd
�|jdd�dd�fjd
�|jdd�dd�fjd
�g�jf|jdtdgtjdddg��d��d}|j	||j
tjd��|j	||jd��dS)Nr�rrr_r`r�)rr�rcsg|]}�dj|j��qS)r)r:�sum)r�r�)rNr r!�
<listcomp>sz2TestDataArray.test_groupby_sum.<locals>.<listcomp>rrr)rrr�)rr�rr	rrNrrr��assertDataArrayAllCloserrr�rr)rrZexpected_sum_allr/rOZexpected_sum_axis1r )rNr!�test_groupby_sums2
" "$""zTestDataArray.test_groupby_sumc
Csntddtjtjddgddddddddgfidd�}|jd�j�}tddd	gddddgfgd
�}|j||�dS)Nr�catrr_r`r�)r?r1rr$)r?)rrr|r�rrR)rrNrOr/r r r!�test_groupby_count0sz TestDataArray.test_groupby_countz6needs to be fixed for shortcut=False, keep_attrs=FalsecCs�|j�}d|jd<xjdD]b}x\d	D]T}td||f�|jd�jtj||d�}|jd�j�}|rjd|jd<|j||�q"WqWdS)
Nr)rTFzshortcut=%s, keep_attrs=%sr�)rr)TF)TF)rr�printr�rrr�rR)rrNrrrOr/r r r!�test_groupby_reduce_attrs8s




z'TestDataArray.test_groupby_reduce_attrscCs�dd�}|j�}|jd�}|j�}tj||jdd�dd�f�||jdd�dd�f�||jdd�dd�f�g�}ddg|f|d<|d}|j||j|��dS)	NcSs|tj|�S)N)rr�)rr r r!�centerHsz7TestDataArray.test_groupby_apply_center.<locals>.centerr�rrrrr)rr�r�rZhstackrrr)rr rNrZexpected_dsZexp_dataZexpected_centeredr r r!�test_groupby_apply_centerGs
z'TestDataArray.test_groupby_apply_centercCs.|j�}|jd�}|jtj�}|j||�dS)Nr�)rr�rrr�rQ)rrNrrOr r r!�test_groupby_apply_ndarrayVs
z(TestDataArray.test_groupby_apply_ndarraycCsDdd�}|j�}|jd�}|j|�}|j�}||�}|j||�dS)NcSs"|jdd|jd<d|jd<|S)Nrr$ZlemonZfruit)r?r)rr r r!�change_metadata^s
zJTestDataArray.test_groupby_apply_changes_metadata.<locals>.change_metadatar�)rr�rrKrQ)rr#rNrrOr/r r r!�#test_groupby_apply_changes_metadata]s

z1TestDataArray.test_groupby_apply_changes_metadatac	Csd|j�}x�dD]�}|jd|d�}||jd}||jd}|j||�|jd|}|j||�|jdjd�}||}||}|j||�||}|j||�qW|jd�}|j�tjd�j	d�}|t
td�ddd	d
gfg�}|jd�j�}|j||�|j
td��|dWdQRX|j
td��||WdQRX|j
td
��||7}WdQRXdS)NTFr)r��Xr�r%r_r`r�zonly support binary opsrzin-place operations)TF)rr�r?rRr�r�r�rrvrzrr�rrErh)	rrNr�rr/rOrZexpected_aggZ
actual_aggr r r!�test_groupby_mathjs2

zTestDataArray.test_groupby_mathcCsttd�ddddddgfidd�}tdgdd�}|jd�|}tddtjtjg|j�}|j||�tdgd	d
idd�}|jd�|}dgd
gdtjgdf|jd	<|j||�td
ddgfi�}|jd�|}td
dddtjtjgfi|j�}|j||�dS)Nr&r`rrr)r1rr�r�r)r?r1r$r_)	rr�r�rr|r?rRrr�)rrNr*rOr/r r r!�test_groupby_math_not_aligned�s""z+TestDataArray.test_groupby_math_not_alignedcCsjttjjdd�dtd�fdtd�fd�ddgd�}x2dD]*\}}|j|�jd	d
��}|j|j|�q8WdS)Nr'r%rr)r_r`)r?r1r_r`cSs|j�S)N)r�)rr r r!r��sz>TestDataArray.test_groupby_restore_dim_order.<locals>.<lambda>�rr�rr(�rr�rr*�r_r�r_r,�rr`�r`r.)r)r+r-r/)	rrrrgr�r�rr-r1)rrN�byZ
expected_dims�resultr r r!�test_groupby_restore_dim_order�sz,TestDataArray.test_groupby_restore_dim_ordercCstdddddgdd�}tdgdd	gddd
d�}tddgd
dd	gfg�}|j|�j�}|j||�tddgd
dd	gfg�}|j|�j�}|j||�ttjjdd�ddgd�}t|d
dgd
dd	gid
dg�}|j|�j�}|j||�|jd�j�}|}|j||�dS)Nrr$r%r&r'r)r1r_r`r�)r1r+rr)rr��firstrR�lastrrrg)rrNr0r/rOr r r!�test_groupby_first_and_last�s z)TestDataArray.test_groupby_first_and_lastcCs�tjdddd�}ttjd�d|fg�}|jddd�}|j||�|jddd�}t|j�jd��}|j||�|jddtjd�}|j||�|j	t
d	��|d
ddgjd
dd�WdQRXdS)Nz
2000-01-01�6Hr)�freqr�r#)r��24H)r�rzindex must be monotonicr$rr�1D)rCr�rrrv�resamplerR�	to_seriesr�rErF)r�timesrNrOr/r r r!�
test_resample�szTestDataArray.test_resamplecCs�tjdddd�}ttjd�d|fg�}|jdddd�}td	d
dgd|ddd
�fg�}|j||�|jdddd�}t|j�jddd
��}|j||�|jt	�}tj
|dd�<|jdddd�}tdd
dgd|ddd
�fg�}|j||�|jddddd�}ttj
d
dgd|ddd
�fg�}|j||�td|i�d}|jdddd�}tjdddg�}t|d|ddd
�fgdd�}|j||�dS)Nz
2000-01-01r6r)r7r�r#r9r3)r�rrr&�r8)rr$F)r�r�skipnar4z
2000-01-01T18z
2000-01-02T18z
2000-01-03T06)r+)
rCr�rrrvr:rRr;r�r�r|rZto_datetime)rr<rNrOr/Zexpected_timesr r r!�test_resample_first�s. 
 "z!TestDataArray.test_resample_firstcCsrtjdddd�}ttjd�d|fg�}tj|d<|jdddd	�}ttjddgd|ddd
�fg�}|j||�dS)Nz
2000-01-01r6r)r7r�r#rr9F)r�r?r&)rCr�rrrLr|r:rR)rr<rNrOr/r r r!�test_resample_skipna�s
"z"TestDataArray.test_resample_skipnacCs~tjdddd�}ttjd�d|fg�}tjdddd�}|j|d�}x6d	d
ddd
tjgD] }|jdd|d�}|j||�qVWdS)Nz
2000-01-01r9r')r7r�r#Z12Hr)r#r�Zmedianrr3r4)r)	rCr�rrrvr�r�r:rR)rr<rNZ
expected_timer/rrOr r r!�test_resample_upsampling�sz&TestDataArray.test_resample_upsamplingcCsfdtjtd��f|jd<t|j|jdd�dd�\}}|j||jdd��|j||jdd��dS)Nrr�r'�inner)�join)rrNr>rrrrR)rZdv1Zdv2r r r!�
test_alignszTestDataArray.test_aligncCsxtjd�}tjdd�}ttjjd�jtj�d|i�}ttjjd�jtj�d|i�}t||dd�\}}|j|jtj�dS)	N�r'�#r�outer)rD)rF)rF)	rrvrrr�Zfloat32rr-r2)rZx1r�r_r`r�r�r r r!�test_align_dtypes
zTestDataArray.test_align_dtypec	
CsNtddgdddgfgdd�}tddgdddgfgd	d�}t||�\}}dddgfdddgfg}tddgddgg|dd
�}tddgddgg|d	d
�}|j||�|j||�ttjjdd�ddgd�}ttjjdd�ddgd�}t||�\}}|}|j}|j||�|j||�tddgddd
gfgd�}|jtd��t||�WdQRXdS)Nrr$r_r)r?r+r`r%r&r)r+)r1rr)r?zcannot broadcastrcrdrcrdi����)	rrrRrrrgr�rErF)	rrrr�r��expected_coordsZexpected_x2Zexpected_y2rWr r r!�test_broadcast_arrayss$z#TestDataArray.test_broadcast_arraysc	Cs�tdddgtjd	�fi�}t|j|j|j�\}}}|j|j|�tjtj	d�tj	d�dd�\}}t
|ddgdd�}t
|ddgdd�}|j||�|j||�dS)
Nr_rrr'r(Zij)Zindexing)r1r+)r'r()rrrLrrrr_rRZmeshgridrvr)	rrZx_bcZy_bcZa_bcr%�YrZexp_yr r r!�test_broadcast_coordinates's z(TestDataArray.test_broadcast_coordinatesc	Csztd�j�}tjd�}|j||�tjjd�}tjdddgdd�}t||gd�}|j�}|j|j	|�|j|j
|�|j|j
jd�tjjdd	�}t|ddddgfd
ddgfgd
d�}|j�}|j|j	|�|j|j
dddg�|j|jddg�xNdD]F}t
d�dt|��}ttjj|�|d�}t|j��}|j||��q�W|jtd��"ttjjdd	ddd��j�WdQRXdS)Nrur%r_r`r�r)r+)r?r$rrrr)r?r+r&r'r�)r1zcannot convert�r%�r%r&�r%r&r')rNrOrP)r�	to_pandasrrNr9rrgrCrDr:rkr+rlr>r<rRrErF)	rrOr/r:rkr�r3r1r�r r r!�test_to_pandas3s0

zTestDataArray.test_to_pandasc	Cs.ttjjdd�ddddgfdtd�fgdd	�}|j�}|j�d}|j|j|j�|j|j	|j	�|j|j
j|j
j�ddd
dgf|jd
<|j�j�}dgddgddgd|d
<|d
dg}|j�}|j|j|j�|j|j
j|j
j�|j|j
j|j
j�d|_	|jtd��|j�WdQRXdS)Nr%r&rbrr$raZcdefr)r+�C�unnamedrcrdrercrdre)rrrrgr>r;�to_dataframer9r:r+rkr?�to_framerlrErF)rrSr/rOr r r!�test_to_dataframeUs$ "zTestDataArray.test_to_dataframecCs�tdddgddd�}|j�}|jdddg|j�|jdddg|jj�|jd|j�|jd|jj�|j�}|j�}|j	|j
|��dS)Nrr$r%r)r1r+r)rr;r9r:rkr-r+rUrVrwrx)rrSrrrqr/r r r!�&test_to_pandas_name_matches_coordinatemsz4TestDataArray.test_to_pandas_name_matches_coordinatecCs�|jj�d}|jj�}|j|j|j�|j|jj|jj�|jd|j�|j|jt	j
|��d|_|jjd�}|j|t	j
|��dS)Nr)rrUr;r9r:rkr-r+rRrZfrom_seriesrz)rr/rOZexpected_dar r r!�test_to_and_from_serieszs
z%TestDataArray.test_to_and_from_seriescCsLttd�stjd��tjtd�tjtd��d�}t|�}dt	|�ksHt
�dS)N�CategoricalIndexz%requires pandas with CategoricalIndexr'Zaabbc)rkz'a')�hasattrrCr�SkipTestror�rZr>rr.r�)rr�rSr r r!�test_series_categorical_index�s


z+TestDataArray.test_series_categorical_indexcCsztjjd�}|jdd�}tjj|dk|�}t|�}|j�}t|�}|j||�|j	||�|jdd�}|j
t|tjj��|j|j
|j
�|j|j|jtj��|j||jtj��|jdd�}d	|d<|j|dd	�|j|djd	�|j
|j|jk�|j|tjj�x:dtjddd
gD]&}	t|	�}|j�}
|j|
tjj��qWd}t|�}	t|	�}|j�}
|jt|
j
�|�dS)N�,rr)r4g�?T)rKFg$@rr&�4Zfour)rr)rr)rr)rr)rrr�Z
random_sample�maZmasked_whererZto_masked_arrayr9rQrw�
isinstanceZMaskedArray�maskr:Zfilledr|r-�baserBr�r<)r�rsrZx_maskedr�Z
x_masked_2Zda_2Zda_masked_arrayZmasked_arrayrr`�Nr r r!�test_to_masked_array�s8z"TestDataArray.test_to_masked_arrayc	Cs\yddl}Wntk
r*tjd��YnXttjd�jdd�dddgddifd	tj	d
dd�fgdd
did�}t
dddg�t
d	dddg�g}|j�}|j||�|j
|j|j�|j|j�|j�x8t|j�|�D]&\}}|j
|j|j�|j||j�q�W|j
|j|jd
�|jd�j�}|j
t|�d�|j
t|d�d�tj|�}|j||�dS)Nrzcdms2 not installedr(r$r%ZdistanceZunitsZmetersr#z
2000-01-01)r�rrYr)r+rrz2000-1-1 0:0:0.0rdrd)�cdms2�ImportErrorrr\rrrvZreshaperCr�rZto_cdms2r9r-r�r+r=Z
getAxisIdsr1r
ZgetAxisListr:rYrZgetAxisZasComponentTimer<�strZ
from_cdms2rR)	rrgr�rJrO�axisZcoordZcomponent_timesr�r r r!�test_to_and_from_cdms2�s.
z$TestDataArray.test_to_and_from_cdms2cCs�tddgdd�}|jtd��|j�WdQRX|jdd�}tddddgfi�}|j||�tddgddd�}|j�}tddddgfi�}|j||�td	dddgfi�}|jd
��|jd	�}WdQRX|j||�dS)Nrr$r)r1zunable to convert unnamedr)r+)r1r+r)zorder of the arguments)rrErFr�rr�ZassertWarns)rrTrOr/�namedr r r!�test_to_dataset_whole�sz#TestDataArray.test_to_dataset_wholec
Cs�tdddgdtd�fgddid�}ttdddg�ddid
�}|jd�}|j||�|jt��|jddd�WdQRX|jdd
�}|j	||�tdddgdd�}ttdddg��}|jd�}|j||�dS)Nrr$r%rr�r_)r?rr`r�)rr)r+)r�)r1�0�1�2)r_r)r`r$)r�r%)rnr)ror$)rpr%)
rr>rrr�r�r@rhZto_arrayrR)rrNr/rOr�r r r!�test_to_dataset_split�s

z#TestDataArray.test_to_dataset_splitcCs�ttjd�dddgd�}|jd|j��|jd	|jd
d�j��|jdd
d
�j�}|jd|kpdd|k�ttjd�ddgd�}|jd|j��dS)Nr&r%r$r_r`r�)r1�zc = 0r)r�r)r`r�zb = 1, c = 0zc = 0, b = 1zb = [0])r&r%r$)r&r)rrrLr-�_title_for_slicer�rw)rrN�titleZa2r r r!�test__title_for_slice�sz#TestDataArray.test__title_for_slicecCs^ttjd��}dd|jd<dd|jd<d}|j|d�}|j|t|��|j|jd��dS)Nr&r_rr`�P)�truncatez...)	rrrLr?rsr-r<rw�endswith)rrNZncharrtr r r!�test__title_for_slice_truncatesz,TestDataArray.test__title_for_slice_truncatecCsX|jd}|jd�}ttj|jdd�|dj|djdd�gddg�}|j||�dS)Nrrr)rjr)r�diffrrr:rQ)rr�rOr/r r r!�test_dataarray_diff_n1s


z$TestDataArray.test_dataarray_diff_n1cCsVttddd�dgtd�gd�}|jd}tdgddgtdd�gdd	�}|jd�}dS)
Nrrr$�lonr)r1r?rr)r1r?r+)rr�r?rz)rrSr|r/rOr r r!�test_coordinate_diffs

z"TestDataArray.test_coordinate_diffcCsztdddgdd�}|jdd�}ttjddgdd�}|j||�x6dD].}t|j�j|��}|j|d�}|j||�qDWdS)
Nrr$r%r)r1)rr'r���rdrc)r~rdrcrrr$r')r�shiftrr|rRrQ)rrSrOr/�offsetr r r!�
test_shift"s
zTestDataArray.test_shiftcCsLtdddgdd�}|jdd�}tdddgddddgfgd�}|j||�dS)	Nrr$r%r)r1)rr)r?)rZrollrR)rrSrOr/r r r!�	test_roll-szTestDataArray.test_rollcCs0td�}|j|jtd��|j|jtd��dS)Nry@r$y�?@)rrR�real�imag)rrNr r r!�test_real_and_imag3sz TestDataArray.test_real_and_imagcCsttdddiddid�}|jtd��d|_WdQRX|jtd��d|_WdQRX|jtd��d|_WdQRXdS)	Nr�scalarrrr))r?rzcannot set attrr$)rrErAr�rr*)rrNr r r!�test_setattr_raises8sz!TestDataArray.test_setattr_raisesN)f�__name__�
__module__�__qualname__r"r0rIrPrUrXr\rfrirsrtr~r�r�r�r�r�r�rr�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�rrrrr	r
rrrrrr�skiprr!r"r$r&r'r2r5r=r@rArBrErIrKrMrRrWrXrYr]rfrkrmrqruryr{r}r�r�r�r�r r r r!r
s�	
A,-!
<#/	
		4*	 %

!!	
	"
	*
r)ZnumpyrZpandasrCr�rKr�textwraprZxarrayrrrrrr	Zxarray.core.pycompatr
rrrr
rrrrrr r r r!�<module>s