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_dataset.cpython-36.pyc
3

���h~u�@sddlmZmZddlmZyddlZWnek
rDddlZYnXyddljZ	Wnek
rhYnXddl
ZddlZ
ddlmZmZmZmZmZmZmZmZmZmZmZmZddlmZmZddlmZm Z ddl!m"Z"m#Z#m$Z$m%Z%m&Z&dd	d
�Z'Gdd�dej(�Z)Gd
d�de"�Z*dS)�)�copy�deepcopy)�dedentN)�align�	broadcast�concat�conventions�backends�Dataset�	DataArray�Variable�
Coordinate�auto_combine�open_dataset�set_options)�indexing�utils)�	iteritems�OrderedDict�)�TestCase�unittest�InaccessibleArray�UnexpectedDataAccess�
requires_daskcs
tjj|�}ddgddgddgd�}dddd��t�}d	tjd
dd�f|d	<dtj�dd
d�f|d<ddtj�d�f|d<dtd�f|d<xHt|j	��D]8\}}|j
t�fdd�|D��d�}||ddif||<q�Wdtjddddddddddg
d
d�f|j
d<|S)N�dim1�dim2�dim3)�var1�var2�var3��	�
)rrr�timez
2000-01-01�)�periods�int64)�dtypeg�?�
abcdefghijc3s|]}�|VqdS)N�)�.0�d)�_dimsr*�8/tmp/pip-build-5_djhm0z/xray/xarray/test/test_dataset.py�	<genexpr>&sz#create_test_data.<locals>.<genexpr>)�size�foo�variablerr���numbers)�np�randomZRandomStater
�pd�
date_range�arange�list�sorted�itemsZnormal�tuple�array�coords)�seed�rsZ_vars�obj�v�dims�datar*)r-r.�create_test_datas rGc@seZdZdd�ZdS)�InaccessibleVariableDataStorecs$dd��t�fdd�t|j�D��S)NcSs tjt|j��}t|j||j�S)N)rZLazilyIndexedArrayr�valuesrrE�attrs)�xrFr*r*r.�lazy_inaccessible/szFInaccessibleVariableDataStore.get_variables.<locals>.lazy_inaccessiblec3s|]\}}|�|�fVqdS)Nr*)r+�krD)rLr*r.r/2sz>InaccessibleVariableDataStore.get_variables.<locals>.<genexpr>)�dictrZ
_variables)�selfr*)rLr.�
get_variables.sz+InaccessibleVariableDataStore.get_variablesN)�__name__�
__module__�__qualname__rPr*r*r*r.rH-srHc@s�eZdZdd�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$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zed3d4��Zed5d6��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~�ZBdd��ZCd�d��ZDd�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�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�S)��TestDatasetcCs^tdd�}d|jd<td�|dj}djdd	�t|�jd�D��}t|�|j||�t	d
d��:t
ttt|�jd���}d|ko�d
kns�t
�WdQRXtd
�}djdd	�tt��jd�D��}t|�|j||�tddtjd�fi�j�}td�}djdd	�t|�jd�D��}t|�|j||�tdddid�}|jtt|��dk�dS)N�{)rA�barr1a�        <xarray.Dataset>
        Dimensions:  (dim1: 8, dim2: 9, dim3: 10, time: 20)
        Coordinates:
          * time     (time) datetime64[ns] 2000-01-01 2000-01-02 2000-01-03 ...
          * dim1     (dim1) int64 0 1 2 3 4 5 6 7
          * dim2     (dim2) float64 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
          * dim3     (dim3) %s 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j'
            numbers  (dim3) int64 0 1 2 0 0 1 1 2 2 3
        Data variables:
            var1     (dim1, dim2) float64 -1.086 0.9973 0.283 -1.506 -0.5786 1.651 ...
            var2     (dim1, dim2) float64 1.162 -1.097 -2.123 1.04 -0.4034 -0.126 ...
            var3     (dim3, dim1) float64 0.5565 -0.2121 0.4563 1.545 -0.2397 0.1433 ...
        Attributes:
            foo: barr�
css|]}|j�VqdS)N)�rstrip)r+rKr*r*r.r/Jsz(TestDataset.test_repr.<locals>.<genexpr>�d)Z
display_width�Zz�        <xarray.Dataset>
        Dimensions:  ()
        Coordinates:
            *empty*
        Data variables:
            *empty*css|]}|j�VqdS)N)rX)r+rKr*r*r.r/YsrKr#z�        <xarray.Dataset>
        Dimensions:  ()
        Coordinates:
            *empty*
        Data variables:
            foo      float64 1.0css|]}|j�VqdS)N)rX)r+rKr*r*r.r/fsi�)rJ)rGrJrr(�join�repr�split�print�assertEqualr�max�map�len�AssertionErrorr
r6�ones�mean�
assertTrue)rOrF�expected�actual�max_lenr*r*r.�	test_repr7s.

& zTestDataset.test_reprcCs,tdd�}tjdddd�|jd<t|�dS)Ni�)rAz
2000-01-01r%�B)r&�freqr$)rGr8Zperiod_ranger@r\)rOrFr*r*r.�test_repr_period_indexns
z"TestDataset.test_repr_period_indexc"Csddtjd�f}dtjd�f}ddgtjd�jdd�f}|jtd��t||d��WdQRX|jtd	��t||d
��WdQRX|jtd��tddi�WdQRX|jtd��tddddd
gfd��WdQRXt||d��}td|di�}|j||�dS)NrKr3rYi��yr#zconflicting sizes)�a�bzvariable 'x' has the same name)rorKzmust be given by arrays orrr4����zalready exists as a scalarr)rKrn)rK�zru)rr3r4rqrrrsrt)r6r:�reshape�assertRaisesRegexp�
ValueErrorr
�	TypeError�assertDatasetIdentical)rO�x1Zx2rurgrhr*r*r.�test_constructorus"zTestDataset.test_constructorcCs�ddtjd�f}|jt��td|idd�WdQRXddl}|jdd	��td|id
�}WdQRX|j|td|id��dS)NrKr3rYr{�*)�	data_varsZ
invalid_kwargrF)�record)�	variables)r~)r6r:�assertRaisesryr
�warnings�catch_warnings�assertDatasetEqual)rOr{r��dsr*r*r.�test_constructor_kwargs�sz#TestDataset.test_constructor_kwargscCsdtddgdtjd�fi�}tddtjd�i�}|j||�tddddddgi�}|j||�dS)NrKg@rrrsrtr!r")r
r6r:rz)rOrgrhr*r*r.�test_constructor_1d�s
zTestDataset.test_constructor_1dc
Cs�tdgdfi�}x4dtjd�|dgD]}td|i�}|j||�q&Wtjd�}dddtjdddtjd	�||j�g
}x<|D]4}t	|�tdg|fi�}td|i�}|j||�qzWdS)
NrKrz
2000-01-01T12Tg333333@Zhello�unisrawz
2000-01-01T00)
r
r6r?rzr8Z	Timestamp�nan�
datetime64Zto_datetimer^)rOrg�argrhr,�argsr*r*r.�test_constructor_0d�s

zTestDataset.test_constructor_0dc
Cs(tddgdddgfg�}tddgdddgfg�}tdddtjgfdtjddgfd��}t||d��}|j||�|j|jdt�dddgf}|jd	|i�}t|||d
��}|j||�ddddgf}|jd|i�}t|||d��}|j||�dddgf}	|j	t
d
��t|||	d��WdQRXdS)Nrr3rKrr4rq)rorprn�c)rorpr�r,)rorpr,zconflicting sizes)rorp�e)rr
r6r�rz�assertIsInstancer�r
�mergerwrx)
rOrorprgrhr�Z	expected2r,Z	expected3r�r*r*r.�test_constructor_auto_align�s$z'TestDataset.test_constructor_auto_aligncs~|j��t�fdd�dD��}t|�j�jd�}|j�|�t|dj�}|dj|�|d<t|�j�jd�}|j�|�dS)Nc3s|]}|�|j�fVqdS)N)�	to_pandas)r+�var_name)r�r*r.r/�sz?TestDataset.test_constructor_pandas_sequence.<locals>.<genexpr>r1rV)r~r@rJ)r�r@rJ)r1rV)	�make_example_math_datasetrr
r@rJr��reversed�index�reindex)rOZpandas_objs�ds_based_on_pandasZrearranged_indexr*)r�r.� test_constructor_pandas_sequence�sz,TestDataset.test_constructor_pandas_sequencecCs~ttjjdd�ddgd�ttjjddd�dddgd�g}x@|D]8}|j�}t|�}x"|jD]}|j||||�qZWq>WdS)Nrqr4rorp)rEr3r�)rr6r7Zrandr�r
r~�assertArrayEqual)rOZdas�daZ
pandas_objr��dimr*r*r.�test_constructor_pandas_single�s 
z*TestDataset.test_constructor_pandas_singlecCs�tdtdddid�fdddddgffg�}|jtd��t|dd	�WdQRXtddidddddgfi�}t|�}|j||�t|d
d	�}|j||�tdddddgffdtdddid�fg�}t|�}|j||�tddtjd�fiddtjd�fi�}tdtjd�fdtjd
�fd�ddtjd�fi�}ttd|ddd�dfj	d�fd|ddj	d�fg��}|j||�tddd
id�ddddgfd�}|jtd��t|�WdQRXtdddid�ddgd�}t|�}tddidddgi�}|j||�dS)NrKrrnr)r@ruzconflicting value�equals)�compat�broadcast_equalsror3r4r�)rorprp)rKrn)rKrn)r3r4)rKrn)r3r4)rKrn)r3r4)
rrrwrxr
rzr6rd�zeros�drop)rOrFrgrh�originalr*r*r.�test_constructor_compat�s8  z#TestDataset.test_constructor_compatcCsp|jtd��$tdddgfidddgfi�WdQRXtidddgfi�}|j|j�|j|jj�ddg�dS)Nzredundant variables and cororKr)rwrxr
�assertFalser~�assertItemsEqualr@�keys)rOr�r*r*r.�test_constructor_with_coordss
(z(TestDataset.test_constructor_with_coordscCs�t�}|j|jddddd��|j|t|j��|j|j�t|j��|jd|j�|jdt	|j��|jt
|�d�|j|jdd	d
g�|j|jj�dd	d
g�|jd|j�|jd|j�|jd|j�|jt
|j�d�|j|jdd
ddg�|jt
|j�d�|jdt	|j��|j|j
ddd
ddg�|jd|j
�|jd|j
�|jd|j
�|jt
|j
�d�|jttjd�tjddg�d��jd�dS)Nr!r"r#r%)rrrr$Zaasldfjalskdfjrrrr r5r4rrr$rqrrrr3)rKrn�)rGr_rEr�r;r�r��assertNotIn�assertInr\rbr~�indexesr@r
r6r'Zfloat32�nbytes)rOr�r*r*r.�test_propertiess2zTestDataset.test_propertiescCs�tdddgddifiddid�}|j|j|d�|j|jj|j�|j|j|jd�|j|jj|djd�|jt	ddg�t	t
|���|jdt	t
|j���d
|jd<|j|jdd�|j|j|d�dS)N�tminrKr}�unitsZCelcius�titlezMy test data)rJi�i���i���)r
�assertDataArrayIdenticalr�rKr_r�rJr�ZassertLessEqual�set�dirr�)rOr�r*r*r.�test_attr_access4s
zTestDataset.test_attr_accessc
s�t��tjjd
��d�f�d<|jd�jk�|jd�k�d�f�d<|jt��ddddg�|jt��fdd�tj�j	�D���|j
t��d
�jf�d	<WdQRXdS)Nr#r4r$rKr1rVcs"g|]}�d|j�|k�qS)r1)rI)r+�i)ror,r*r.�
<listcomp>Nsz-TestDataset.test_variable.<locals>.<listcomp>Zqux)r#r4)r$rK)r$rK)r$rK)
r
r6r7rfr�r_r;�allZndindex�shaper�rx�T)rOr*)ror,r.�
test_variableEszTestDataset.test_variablecCs^t�}tjjd�}ddi}d||f|d<|jd|jk�|j|jdj�tj�|j	|jd|j
d�t�}d||f|d<|j	|d|d�|j|j|j�d|dd�f|d<dtj
d�f|d<|jt��d|dd�f|d<WdQRXtjjd�}tjd	�}|jt��d
|f|d
<WdQRX|jt��d
|f|d
<WdQRX|jd
|jk�dS)
Nr#r1rVrKrrrurqrrrn)r#)r#r)r
r6r7rfr@r��to_indexr8�Index�assertVariableIdenticalr�r_rEr:r�rxr?)rOroZvec�
attributesrpZarrZscalr*r*r.�test_modify_inplaceTs.
zTestDataset.test_modify_inplacecCs�ttddtjddgd�ffddtjdddgd�ffdddgtjjdd�ffg�td	dtjd
dgd�ffdtjd�fg��}|jd
t|j	��|j
ddd	dgt|j	��|j|j	d|dj
�|j|j	d|dj
�|jd|j	�|jd	|j	�|jd|j	�|jd|j	�|jt��|j	dWdQRX|jt��|j	dWdQRXtd�}t|j	�}|j||�|jddd�|j	j�dS)NrKrr3r'rnrr1r4rorqrrrpr#z�        Coordinates:
          * x        (x) int64 -1 -2
          * y        (y) int64 0 1 2
            a        (x) int64 4 5
            b        int64 -10)rKrn������i����)r
rr6r?r7�randnr'r_rbr@r�r;r�r2r�r�r��KeyErrorrr\rE)rOrFrgrhr*r*r.�test_coords_propertiesos.
z"TestDataset.test_coords_propertiescCsvtdddgfddddgfddgtjjdd�fd�ddd	gfdd��}|jdd
�}dddgf|jd<|j|dddg�|jdd
�}dddgf|jd<|j|dddg�|jtd��ddgf|jd<WdQRX|j�}|jd=|j	ddd�}|j
||�|jt��|jd=WdQRX|jt��|jd=WdQRX|jdd
�}|jj
ddi�|jddi�jd�}|j
||�dS)NrKrr3rnrr4)rKrnr1rqrrr#)rorpT)�deeprorpruzconflicting sizes)r��	not_foundr1r��r�r�i����r�)r
r6r7r�rr@r�rwrx�reset_coordsrzr�r��updater��
set_coords)rOrFrhrgr*r*r.�test_coords_modify�s0zTestDataset.test_coords_modifycCs�tddgfddgfddgfd��}tdddgfiddgfddgfd��}tddgfddgfddgfd�d�}|jd�}|j||�|jdg�}|j||�|jd	�}|j||�|jd	dg�}|j||�|j�}|j||�|j�}|j||�|j�}|j||�|jd	dg�}|j||�|jd�}|j||�|jtd
��|jd�WdQRX|jddd�}|jd�}|j||�|jd�}|j||�dS)
NrKrrr3)rK�yy�zzzr�)rKr�)r@r�zcannot remove indexT)r�)r
r�rzr�rwrxr�)rOZ	one_coordZ
two_coordsZ
all_coordsrhrgr*r*r.�test_coords_set�sD






zTestDataset.test_coords_setcCsTtdddddgfiddddgd	��}tddddgd	�d
�}|jj�}|j||�dS)Nr1rnrrr#r3r4rq)rKrn)r@r�)r
r@�
to_datasetrz)rO�origrgrhr*r*r.�test_coords_to_dataset�s$
z"TestDataset.test_coords_to_datasetcCs�tddddgfid�j}tddddgfid�j}tdddgfdddgfd�d�}|j|�}|j||�|j|�}|j||�tdddgfid�j}|jtd��|j|�WdQRXtddddgfid�j}|jtd��|j|�WdQRXtddddd	gfid�j}|jtd��|j|�WdQRXtddd
dgfid�j}tdtd�id�}|j|�}|j||�|j|�}|j||�tdtjid�j}|j|�}|j|j	�|�|j|�}|j|j	�|�dS)NrorKrr3)r@rp)rorpznot alignedr�r!r")
r
r@r�rzrwrx�ranger6r�r�)rO�orig_coords�other_coordsrgrhr*r*r.�test_coords_merge�s8





zTestDataset.test_coords_mergecCs�tddddgfid�j}tddid�j}|j�}|j|�}|j||�tdddgfid�j}tdddgdgdggfid�}|j|�}|j||�|j|�}|j|j|�tddtjgfid�j}tdtjid�j}|j�}|j|�}|j||�dS)NrorKr)r@rn)r
r@r�r�rzr�r6r�)rOr�r�rgrhr*r*r.�"test_coords_merge_mismatched_shape	s 



z.TestDataset.test_coords_merge_mismatched_shapecCs�tdd�}|j|j|��|j|j|��tdd�}d|jd<|j|j|��|j|j|��|d=|j|j|��tdd�jddi�}|j|j|��|j|j|��|j�}|j|j|��|j|j|��dS)Nr})rA�baz�foobarr$r)rGrfr��	identicalrJr��renamer�)rOrF�data2r*r*r.�test_equals_and_identicals


z%TestDataset.test_equals_and_identicalcCs>t�}|j|jd��|j|jd��|j|jddi��dS)Nr1rUrr3)rGr�r�r�r�)rOrFr*r*r.�test_equals_failures3sz TestDataset.test_equals_failurescCsRtddid�}tddgid�}|j|j|��|j|j|��|j|j|��dS)NrKr)r@)r
rfr�r�r�r�)rO�data1r�r*r*r.�test_broadcast_equals9s
z!TestDataset.test_broadcast_equalscCs8tdd�}ddi|_|j|jdd�|j|jt�dS)Nr})rAr�r�)rGrJrfr�r)rOrFr*r*r.�
test_attrs@s

zTestDataset.test_attrsc
Cs t�}x"|jj�D]}|j|jtj�qW|j|ji�|j	�}x"|jj�D]}|j|jt
j�qLWtdd�|j
j�D��}|j|j|�|j	ddddd��}ddd
dd�}|j|j|�|j	|�}|j|j|�|j	|�}|j|j|�|j||�|jtd��|j	dd	i�WdQRXdS)Ncss|]\}}||ffVqdS)Nr*)r+r,�sr*r*r.r/Psz)TestDataset.test_chunk.<locals>.<genexpr>rr)r$rrrrqr4zsome chunksr1r#)rr)rrrrrrrr)rrr4)rrrq)rrrr)rGr�rIr�rFr6Zndarrayr_�chunks�chunkr��ArrayrNrEr=rzrwrx)rOrFrDZ	reblockedZexpected_chunksr*r*r.�
test_chunkFs(


zTestDataset.test_chunkcCs�t�}t�j|�t|�j�}|jt��|j�WdQRX|jt��|djWdQRX|j	j
|jdd�|jtd�dgd�jdd
d�|j
�|j�|jd�|jdd	i�|jd�|jd�dS)Nrr#)r$r)r$rr)rrrr�r�)rHrG�
dump_to_storerr�r�r�loadrIrrF�isel�slice�	transposere�fillnar�r�r�)rO�storer�r*r*r.�test_dask_is_lazycs 

zTestDataset.test_dask_is_lazycCs�t�}tddd�tdd�d�}|jf|�}|j|j|j�xX|jD]N}||krx|j|j|tj|j|�||j�qB|j|j||j|�qBWx�|D]�}|j||j||j�|j||j	||j	�td�g||j
j}xXt|�D]L\}}|||jkr�tj
tj||j�|k�d}x|D]}	|||	<�q(Wq�W||j
|}
||j
}tjj|
|�q�W|jt��|jtdd�d�WdQRX|jdd�}|jdddd	�|j�|j|j|j�|j|j|j�|j|jt|j�d
g�|jtd�dtd�d�}|jdddd	�|j�|j|j|j�|j|j|j�|j|jt|j�d
g�|jddtd�d�}|jddd
�|j�|j|j|j�|j|j|j�|j|jt|j�d
dg�dS)Nr3r)rr)Z	not_a_dim)rr%r"r#)r$rrrrr)r$rr)rrr$)rGr�r�r�rEr_r6r:r0rJrI�ndimrZnonzeror?�testing�assert_array_equalr�rxr~r@r�r;)rOrFZslicers�retr,rDZ
slice_listr�Zinds�indrgrhr*r*r.�	test_iselysN


zTestDataset.test_iselcCs�t�}tddd�td�td�d�}tddd�tdd�tdd�d�}|j|jf|�|jf|��dtjd	d
d�f|d<|j|jdd�|jd	d��|j|jtd
�d�|jtd	d�d��|j||jtdd�d��tjd	dd�}|j|jtd�d�|j|d��|j|jtd�d�|j|ddkd��tjtj	d�dd�}t
dtj	d�f|d��}|j||j|d��|j||jtd�d��|j|jdd�|jdd��|j|jdd�|jdd��|j|jtdd�d�|jtdd�d��dS)Nr3r4)rrrrg�?ror�r$z
2000-01-01r%)r&)r$r#z
2000-01-10Z1999Z2005ztime.dayofyear�days)�unit�td)rKr�)r�z3 daysz0 daysZ0hrz1 daysz2 days)rGr�r�r��selr8r9Zto_timedeltar6r:r
)rOrFZint_slicersZloc_slicers�timesr�r*r*r.�test_sel�s:

zTestDataset.test_selc1Cs�t�}dddg}dddg}dddg}|j|||dd�}d|jksDt�|jdjt|�fks^t�|j||d�}d	|jkszt�tjj||d
�|j	|j||d�|j||d��|j
td��|jddgdddgd�WdQRX|j
td
��|jddgd�WdQRX|j
td��|jddgd�WdQRX|j
td��|jdddgt
d�d�WdQRX|j
td��|jddd�WdQRX|j
td��|jddgddgdd�WdQRXtddddgdd��}|jdddgd�}|j|d|d�t�}ddddgf|d<ddddgf|d<ddddgf|d <|j|d|d |dd�}d|jk�sVt�d|jk�sft�|j|djd
dg�|d�|j|d|d dddgd�}d	|jk�s�t�|j|d|d tjddd!g�d�dS)"Nrr3r4rqrr�
test_coord)rrrr�)rr�pointsr)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 not validr)rrr�r)rKrn)rKrnZstation�Ark�CZdim1sZdim2srs)rG�isel_pointsr@rcr�rbr6r�r�rzrwrxryr�r
r�rEr�r?)rOrF�pdim1�pdim2�pdim3rhr�Zstationsr*r*r.�test_isel_points�sd



"""



zTestDataset.test_isel_pointsc
Cst�}dddg}dddg}dddg}|j|||dd�}|j|j||j||j|dd�}|j||�tddtj	d�j
dd�fi�}tddd
ddgfidtd�fdtd�fd��}|jdddgd
ddgdd�}|j||�tj
dk�r|jt��|jdgdgddd�WdQRXdS)Nrr3r4rqrrr�)rrrr�r1rKrnr"r�rr!)rKrng�������?g�������?g@g333333�?g@�pad)rKrn�methodz0.17g����MbP?)rKrnr�	tolerance)rKrn)rGrZ
sel_pointsrrrrzr
r6r:rvr�r8�__version__r�r�)rOrFrrrrgrhr*r*r.�test_sel_pointss&




zTestDataset.test_sel_pointscCs�t�}tjdkr6|jdd�}|jddd�}|j||�tjdkr�|jdddd�}|j||�|jt��|jd	dd
d�}WdQRX|jdgd�}|jd
gdd�}|j||�|jtd��|jt	dd�dd�WdQRX|jt
d��|j|�WdQRXdS)Nz0.16r)rgffffff�?Znearest)rrz0.17)rrrg�?rg�?)rg333333�?�backfill)rrz
slice objectsr4Zffillz
``method``)rGr8rr�rzr�r�rw�NotImplementedErrorr�ry)rOrFrgrhr*r*r.�test_sel_method&s"

zTestDataset.test_sel_methodcCszt�}|jdd�}|jtdd�}|j||�|jtd��|jdWdQRX|jt��d|jtdd�<WdQRXdS)Nro)rzcan only lookup dictr)rGr��locrNrzrwryr�)rOrFrgrhr*r*r.�test_loc@szTestDataset.test_loccCst�}dddgf|d<|jtd�td�d�}|j|�}|j||�|jdd�}dtd	�f|d<|d
dd�|d
dd
�<tj|d
dd�<|dj	t
�|d<tj|ddd�<|dj	t�|d<|ddd�j|ddd�<tj|ddd�<|j|�}|j||�dS)Nrr#ro�letters�
)rr$T)r��
cdefghijklr r3r5r�r�r�r�r�)
rGr�r��reindex_likerzrr;r6r��astype�object�floatrI)rOrFrgrhr*r*r.�test_reindex_likeJs 

zTestDataset.test_reindex_likecCs"t�}|j||j��|jtd�d�}|j|ddd�d�}|j||�|j|ddd�jd�}|j||�|j|ddd�j�d�}|j||�|jd|ddd�i�}|j||�|jtd��|jddidd�WdQRX|jtd��|jd	�WdQRX|jtd
��|jdd�WdQRX|j	|dddd�d�}|j|dddd�d�}|j||�t
dd
tjj
d�fi�}ttjd�dd�}|j|d�}|j||�t
d	ddgtjd�fi�}t
ddgtjd�fdddgd��}tj|d	d<|jdddgddgd�}|j||�dS)Nr#)rrzcannot specify bothrKr)rK�
dictionaryr1zinvalid reindex dim)�invalidrr$rr�time2)rE)r$rnr4rqr3)r1rK)rKrnr�r�)r4rq)r4r3r�)rGrzr�r�r�rIr�rwrxr�r
r6r7r�rr:r�r�)rOrFrgrhrr�r*r*r.�test_reindex^s<zTestDataset.test_reindexcCstddddgfi�}dddg}|j|dd�}tdddtjgf|d	��}|j||�tjd
kr�|j|ddd�}tdd
tjgf|d	��}|j||�n(|jtd��|j|ddd�WdQRX|j|dd�}tdtjddgf|d	��}|j||�td|i�}|j	|dd�}|j||�dS)NrKrnr#r%g�?g�?r
)rnr)rKrnz0.17g�������?)rnrrr4rr)rg�)
r
r�r6r�rzr8rrwrr)rOr�rnrhrgZaltr*r*r.�test_reindex_method�s"

zTestDataset.test_reindex_methodcCs�t�}|jdd�}dtd�f|d<|ddd�|ddd�<tjj|ddd�j�|ddd�<|ddd�|ddd�<d|ddd�<td	�}td
�}t||dd�\}}|j|d|�|j	||�t||d
d�\}}|j
|d|d�|j|d|�|j	|j|d�|j|d��|jtj
|ddd��j��|jtj
|ddd��j��t||dd�\}}|j
|d|d�|j
|d|d�|j	|j|d�|j|d��|jtj
|ddd��j��t||dd�\}}|j
|d|d�|j
|d|d�|j	|j|d�|j|d��|jtj
|ddd��j��|jtd��t||dd�WdQRX|jt��t||dd�WdQRXdS)NT)r�rrr r3r5r#ZcdefghijZabcdefghijkl�inner)r[�outer)r�left�rightzinvalid value for joinr�rV)r1r�r�r�r�i����r�r�r�)rGrr;r6r7r�r�rr�rz�assertVariableEqualr�rf�isnanr�rwrxr�ry)rOrr�intersection�unionZleft2Zright2r*r*r.�
test_align�sF&    zTestDataset.test_aligncCs,tdddgfdddgfd�ddd	gfi�}tdddggfd
ddggfdddggfd�ddd	gfi�}t|�\}|j||�td
ddgfi�}tddddgfi�}td
dddggfi�}tddddggfi�}t||�\}}	|j||�|j||	�|d}
|d}t||
�\}}	|j||�|j||	�dS)NrrKrrnr3r4)r1rVr�r�rqr1rV)rKrn)rKrn)rKrn)rKrn)rKrn)r
rrzr�)rOr�rgrhZds_xZds_yZ
expected_xZ
expected_yZactual_xZactual_yZarray_yr*r*r.�test_broadcast�s(
zTestDataset.test_broadcastcCst�}|d}|d}|d}|j|||j�|j|||�|j|dd�||dk�|j|dd�dd�f|dd�|dkf�|j|dd�dd�f||dk|dkf�|j|dd�dd�f|td�td�f�|j|dd�dd�f|j|dd�|dd�f�dS)Nrrrr4g�?r3)rGr rIr�r
)rOrFrDZd1Zd2r*r*r.�test_variable_indexing�s,,,z"TestDataset.test_variable_indexingc	s�t��|j��jg��tt�fdd��D���}�jd�}|j||��jdg�}|j||�tt�fdd�dD���}�jd�}|j||�|jtd	���jd
�WdQRXdS)Nc3s"|]}|dkr|�|fVqdS)r$Nr*)r+rM)rFr*r.r/�sz2TestDataset.test_drop_variables.<locals>.<genexpr>r$c3s|]}|�|fVqdS)Nr*)r+rM)rFr*r.r/�srrr5rzcannot be foundZnot_found_here)rrr$r5)rGrzr�r
rNrwrx)rOrgrhr*)rFr.�test_drop_variables�s

zTestDataset.test_drop_variablescCs�tddgtjjdd�fddgd��}|jdd�}|jd	dgd
�}|j||�|jdgd�}|jdgd�}|j||�|jddgd�}|jtd	d	�d�}|j||�|jt	��|jdgdd
�WdQRXdS)NrKrnr3r4rorp)r�rKrr)rn)rKr�)r�)
r
r6r7r�r�r�rzr�r�rx)rOrFrhrgr*r*r.�test_drop_index_labelssz"TestDataset.test_drop_index_labelscCs�t�}xt|jdd�t|�gD]\}|j||�x,|D]$}|j|}|j|}|j||�q2Wdtjd�f|d<|jd|�qWxV|jdd�t|�gD]>}|j||�x,|D]$}|j|}|j|}|j	||�q�Wq�WdS)NF)r�rurrr1T)
rGrrzr��assertIsr6r:r�r�assertIsNot)rOrF�copiedrMZv0Zv1r*r*r.�	test_copys





zTestDataset.test_copycCs�t�}ddd�}|j|�}t|j�}x"t|�D]\}}|j|�||<q.Wx�t|�D]�\}}t|j�}x*t|�D]\}}	||krn|	||j|�<qnW|j	t
||j|j�||�|j
|j||j�|j
t|�t|j|��qRW|jd|k�|jd|k�|jtd��|jddi�WdQRX|jtd	��|jd
di�WdQRX|d}
|
jt|
j�f|d<|j|�}|jt��|djWdQRXdS)NZrenamed_var1Zrenamed_dim2)rrrrzcannot rename 'not_a_var'Z	not_a_varZnadaz'var1' already existsr)rGr�rr�r�popr;rEr�r rrIrJr_�encoding�typerfrwrxrr�r)rOrFZnewnames�renamedr�rMrDrE�nameZnewnamerr*r*r.�test_rename,s4





zTestDataset.test_renamecCs�tjddd�}tddddgfd|fd��}|j�}|jdd	i�}|jdd	id
d�|j||�|j|j|��|j|j	ddd��|j
|d
dddg�dS)Nz
2000-01-01r4)r&rKr3rq�t)rur3rnT)�inplace)rnr3zt.dayofyearr)r8r9r
rr�rzr�r�ZassertEqualsrEr�)rOr�rFr+r0r*r*r.�test_rename_inplacePszTestDataset.test_rename_inplacecCstdddgdtd�fdd��}tddid	dddgftd�d
��}|jdd	i�}|j||�|j|jd	t�|j|jdt�|jd	di�}|j|jd	�|�|j	�}|jdd	idd�|j||�|j
td
��|jd	di�WdQRX|j
td��|jddi�WdQRXdS)Nrr3r4rK�abcr})rKrnrururn)rKrnT)r4zcannot swapzreplacement dimension)r
r;Z	swap_dimsrzr�r�r
rr�rrwrx)rOr�rgrh�roundtrippedr*r*r.�test_swap_dims\s"zTestDataset.test_swap_dimscCs�tdddgfdddgddggfddgd	��}tjjddgddggddgd
�}tdddddgfdddddgf|d��}|jddgd
�}|j||�tjjddgddggddgd
�}tdddddgfdddddgf|d��}|jddgd
�}|j||�dS)NrKrrrnr3r4rorp)rorprn)�namesru)rorpru)ru)rKrn)r
r8�
MultiIndex�from_product�stackrz)rOr��	exp_indexrgrhr*r*r.�
test_stackps"

zTestDataset.test_stackcCsvtjjddgddggddgd�}tdddd	d
gf|d��}td
ddgd	d
ggfddgd��}|jd�}|j||�dS)NrrrorprKrn)r9rur3r4)rpru)rprn)rKrn)r8r:r;r
�unstackrz)rOr�r�rgrhr*r*r.�test_unstack�s
zTestDataset.test_unstackcCs�tddddgi�}|jtd��|jd�WdQRX|jtd��|jd�WdQRXtdtjd
g�i�}|jtd	��|jd�WdQRXdS)NrKrr3r4zinvalid dimensionr1zdoes not have a MultiIndexrzunnamed levels)rr)r
rwrxr?r8r�)rOr��ds2r*r*r.�test_unstack_errors�szTestDataset.test_unstack_errorscCs�tdddgfdddgddggfddgd	��}|jddgd
�jd�}|j|�sPt�|dgjddgd
�jd�}|j|dg�s�t�dS)
NrKrrrnr3r4rorp)rorprn)ruru)rKrn)r
r<r?r�rcr�)rOr�rhr*r*r.�test_stack_unstack�szTestDataset.test_stack_unstackcCs�tdd�}|j�}tdtjd��}|jd|i�}||d<|j||�|j�}|j|dd�}|j||�|j||�|j|dd�}|}|j||�|j||�t	d	d
id�}|j�}|j|�|j||�dS)Nr)rArr!rT)r4F�new�attr)rJ)
rGrrr6r:r�rzr)r*r
)rOrFrgrrhZ
actual_result�otherr*r*r.�test_update�s$

zTestDataset.test_updatecCs�tddddgfi�}tdddgfdtjdgfd��}|j�}ddgfdgd�}|jtd	��|j|�WdQRX|jt|��|j||�|j�}tddgfd
gd��}|j|�tdddgfdtjgdfd��}|j||�dS)NrKr3r4rqrr)rKrnr)rnr3zconflicting sizesrYr3)r
r6r�rrwrxr�rz)rOr�rgrhrFr*r*r.�test_update_auto_align�s 
"z"TestDataset.test_update_auto_aligncCst�}|dg}|dg}|ddg}|j|�}|j||�|j|�}|j||�|j|�}|j||�|jdd�j|�}|j||�|j|jdd��}|j||�|jt��|j|jddi��WdQRX|jtd��|j�j|�WdQRX|jtd��|j|j��WdQRXdS)Nrr T)r�zcannot merge)rGr�rzr�r�rxr�rw)rOrF�ds1rArgrhr*r*r.�
test_merge�s(




zTestDataset.test_mergecCs�tddi�}tddddgfi�}|j|�}|j||�|j|�}|j||�|j�}|j|�|j||�tdtji�}tddtjtjgfi�}|j|�}|j||�dS)NrKrrn)r
r�rzrr�r6r�)rOrIrArhr*r*r.�test_merge_broadcast_equals�s



z'TestDataset.test_merge_broadcast_equalscCs�tddi�}tddi�}x2d
D]*}|jtd��|j||d�WdQRXqWtdddgi�}x2dD]*}|jtd��|j||d�WdQRXqbWtdfdd	d
ifi�}|jtd��|j|dd�WdQRX|jtd��|j|dd�WdQRXdS)NrKrrr�r�r�zconflicting value)r�r1rVzcompat=\S+ invalidr�)r�r�r�)r�r�)r
rwrxr�)rOrIrAr�r*r*r.�test_merge_compat�s

zTestDataset.test_merge_compatcCs�tddddgfi�}tdddgfddgd��}tdddtjgfdtjddgfd��}|j||j|��|j||j|��|jtd�d	�}|j||j|d
d��|j||j|dd��|jtdd�d	�}|j||j|d
d��|j||j|d
d��dS)NrorKrr3r4rq)rprK)rorp)rKr)r[rr)r
r6r�rzr�r�r�)rOrIrArgr*r*r.�test_merge_auto_align	sz!TestDataset.test_merge_auto_aligncCs�t�}|j|dt�|j|d|jd�|jt��|dWdQRX|jt��|ddgWdQRX|ddg}t|d|dd��}|j||�|d}t|dj	|d|dd�ddd�}|j
||�|td	d
�}|jd	d
�}|j
||�dS)NrZnotfoundr)rrr5r)rr5)rEr1r)r)rGr�rr r�r�r�r
r�r2r�rNr�rz)rOrFrhrgr*r*r.�test_getitems&


zTestDataset.test_getitemc
Cs\t�}|dd|d<|dd}d|_|j||d	�|jtd��|d
WdQRXdS)Nrrr4rqz('var1', 'var2')r)r4rq)r4rq)r4rq)rr)rGr1r�rwr�)rOrFrgr*r*r.�test_getitem_hashable1sz!TestDataset.test_getitem_hashablecCst�}tdtjd�|dgddd�}|j||d�|j|dj|jdj�j	�|j|djd	�|j|ddd
tjd��|jtj
|d�tj
dtjd���tid|di�}|dg}|j||�tddt
jd
dd�fi�}|j|ddkj��dS)Nrr%r$Z	dayofyear)r@rEr1ztime.dayofyearz
time.monthztime.season�DJFr3r3rKz
2000-01-01r4)r&zt.yeari�)rGrr6r:r�r�rIr�r��month�sinr
r�r8r9rfr�)rOrFrgrhr�r*r*r.�test_virtual_variables:s

z"TestDataset.test_virtual_variablescCsHtjdddd�}td|i�}|d}t|jd|idd�}|j||�dS)Nz
2000-01-01�Hrr)rlr&r$z	time.time)r1)r8r9r
rr$r�)rOr�rFrhrgr*r*r.�test_virtual_variable_same_nameOs
z+TestDataset.test_virtual_variable_same_namecCsZtdtjdddd�i�}dgddgd	d
gd	dgd	dg}|j||d�dS)
Nr3z
2000-01-01��M)r&rlrPr3ZMAMr4ZJJAZSONzt.season)r
r8r9r�)rOr�rgr*r*r.�test_time_seasonWs.zTestDataset.test_time_seasoncCsNt�}|j|ddd�tdgdtjd���|j|ddtgd��dS)Nztime.dayofyearr#r$rr)rGr rr6r:)rOrFr*r*r.�test_slice_virtual_variable\sz'TestDataset.test_slice_virtual_variablec Csztdgtjjd��}t�}||d<|j�}||d<|j||�d|d}|j|d<||d<|j||�|jt	d��|j
jdd�|d<WdQRX|j
|d<d|j
f|d<|j||�d	|d
<gd	f|d
<|j||�|jt	d��d
ddd
gf|d<WdQRX|jt	d��|ddd
�|d<WdQRXd|d|d<|j|dd|d�|j
t��d	|dd	i<WdQRXdS)Nrr!r�r3rkz$dimensions .* must have the same lenrqr�r�scalarzcannot merger4rrZnewvarzconflicting sizesrK)rr6r7r�rGrrzr2rwrxrIrvr r�r)rO�varr�r�Zdvr*r*r.�test_setitembs6

zTestDataset.test_setitemcCs0|j�}|j�}|dj�|d<|j||�dS)NrV)r�rr�r�)rOr�Zds_copyr*r*r.�test_setitem_pandas�szTestDataset.test_setitem_pandascCs$t�}dtd�f|d<dtjd�|d<tdtd�fdtjd�d��}|j||�ttd�dd�|d<tddtd�fi�}|j||�tddgdd�|d<tddddtjgfi�}|j||�d|d<tdtd�d��}|j||�td	d
ddgdd�|d<tddd	d
dgfi�}|j||�dS)
Nrnr4rKr)rKrn)rEr3r}rqrrrsrt)r
r�r6r:rzrr�)rOr�rgr*r*r.�test_setitem_auto_align�s" z#TestDataset.test_setitem_auto_aligncCs�t�}|jdddgdd�}tdddgdd��}|j||�|jt|�ddg�|j|t��|jdd�d	�}tddddd
gfi�}|j||�|jdd�}tddddd
gfiddi�}|j||�td
dtd�fidddgddgfi�}|jd�jdd�d�}|jddddd
gfi�}|j||�|jd�jdd�d�}|jdddddgfi�}|j||�|jd�jdd�d�}|j	d�}|j||�dS)Nrrr3)rKrnrKrncSs
|jdS)Nr3)rK)r�r*r*r.�<lambda>�sz)TestDataset.test_assign.<locals>.<lambda>)rnrq)rururor4rpr�rkcSs
d|jS)Nr3)ro)r�r*r*r.r_�s)r�r�cSs
|jj�S)N)ro�sum)r�r*r*r.r_�scSs
|jj�S)N)ror`)r�r*r*r.r_�s)
r
Zassignrzr_r;Z
assign_coordsr��groupbyr�r�)rOr�rhrgr*r*r.�test_assign�s,*
zTestDataset.test_assigncCstt�}t|�}|j||�|d=|j||tdg��|d=|j|tddddg��|jd|j�|jd|j�dS)Nrrr$rrr5)rGr�r�r�rEr@)rOrFZ	all_itemsr*r*r.�test_delitem�szTestDataset.test_delitemc	s�tddddgdgdgggfi�}xjgdggddgggD]R��fdd��tt�fd	d
�t|j�D���}|j|jdd�|j||j���q6W|jt	d
��|jd�WdQRXdS)Nr1rKrnrurr3cs �rt�d�t|j�@gSgS)Nr)r�rE)rD)r�r*r.�get_args�sz*TestDataset.test_squeeze.<locals>.get_argsc3s$|]\}}||j�|��fVqdS)N)�squeeze)r+rMrD)rdr*r.r/�sz+TestDataset.test_squeeze.<locals>.<genexpr>T)r4zcannot select a dimension)
r
rNrr�r�r@rzrerwrx)rOrFrgr*)r�rdr.�test_squeeze�s zTestDataset.test_squeezec	Cstdddgtjjdd�fidtd�fddddgfd	��}|jd�}|jt|�d�ddd
d�}|j|j|�d|j	dd
�fd|j	dd
�fd|j	d
d
�fg}x>t
||�D]0\}}|j|d|d�|j|d|d�q�Wdd�}x,dD]$}|j|dd�j|�}|j||�q�WdS)NrurKrnr4rrr6rr)rKr�r3)rorpr�ro)rKrpr�cSs|S)Nr*)rKr*r*r.r_�sz*TestDataset.test_groupby.<locals>.<lambda>F)re)rKr�rn)
r
r6r7r�r;rar_rb�groupsr��zipr��apply)	rOrFraZexpected_groupsZexpected_itemsrhrg�identityrMr*r*r.�test_groupby�s"


zTestDataset.test_groupbycCsrtdddgtjjdd�fi�}|jd�jdd��}|d}|j||�|djd�jdd��}|}|j||�dS)	NrurKrnr4rrcSs|dS)Nrur*)r�r*r*r.r_�sz;TestDataset.test_groupby_returns_new_type.<locals>.<lambda>cSs|j�S)N)r�)rKr*r*r.r_�s)r
r6r7r�rarir�rz)rOrFrhrgr*r*r.�test_groupby_returns_new_type�sz)TestDataset.test_groupby_returns_new_typecCs�t�}x�tt|jd��dd��D]p\}\}}|j|d||�|j|d||d�|j|d||d�|j|ddd�|f|d�q"WdS)Nrr4rrr )rG�	enumerater;rar_r )rOrF�nr3�subr*r*r.�test_groupby_iter�s(zTestDataset.test_groupby_itercCs�t�}|jtd��|jd�WdQRX|jtd��|jtjd��WdQRX|jtd��|j|ddd��WdQRX|jtd��|j|jdj��WdQRXdS)	Nzmust be 1 dimensionalrzmust have a namer#zlength does not matchrr4zmust have a 'dims')rGrwrxrar6r:r@r�)rOrFr*r*r.�test_groupby_errorss zTestDataset.test_groupby_errorsc	Cstddgtjjdd�fdtjjd�fdtjjd�fdddddgfd��}|jd�}|djjddi�|d<|jd�j�}|j||�|jd�jd�}|j||�|d	}t|d
j|�j�|dj�jjd	di�|dj|�j�d
��}|jd	�j�}|j||�dS)NrKrnr4rqrorp)�xy�xonly�yonlyrrtrrrrsr3)rrrsrt)	r
r6r7r�rer2Zexpand_dimsraZassertDatasetAllClose)rOrFrgrhrr*r*r.�test_groupby_reduces"
zTestDataset.test_groupby_reducec	-Csdd�}t�}x�dD]�}|jd|d�}|||jd�}||jd}|j|||��|jd|}|j|||��d|}|||�}||}|j|||��||}|j|||��qW|jd�}td	d	d	d	gdtd
�fg�}|tdtjd��j	ddd
d�}||}|j
||�||}|j
||�|jtd��||WdQRX|jtd��||WdQRX|jt
d��|dWdQRX|jt
d��||WdQRX|jt
d��||7}WdQRXtdtjd�ftjddd�d��}|jtd��||jd�WdQRXdS)NcSs|jdddd�S)Nrrrr$)r�)rKr*r*r.r_%sz/TestDataset.test_groupby_math.<locals>.<lambda>TFr)rer3r5rrqrr#rr$zdimensions .* do not existzonly support binary opsrzin-place operationsrYz
2000-01-01)r&)rKr$zno overlapping labelsz
time.month)TF)rGrar@rzrr�rr6r�r�r�rwrxryr
r:r8r9)	rOZreorder_dimsr�re�groupedrgrhrAr�r*r*r.�test_groupby_math$sJ

zTestDataset.test_groupby_mathcCsltdddddgfidtjddd�i�}|jd�}||j�}tddd	d	d	gfi|ddg�}|j||�dS)
NrKr3rr3r4Z20100101)r&zt.dayr)r
r8r9rarerz)rOr�rvrhrgr*r*r.�test_groupby_math_virtualTs
z%TestDataset.test_groupby_math_virtualcCsdtddddddgfidddddtjgfi�}|jd�j�}tdddgfddgd	��}|j||�dS)
Nr1rKrr3r4rqrVg�?)r1rV)r
r6r�rarerz)rOr�rhrgr*r*r.�test_groupby_nan]s
zTestDataset.test_groupby_nancCs�tjdddd�}tdddgtjjddd	�fdtjjd�d
dif|d��}|jd
ddd�}|jdddgd�}|j||�tjdddd�}|j	|d�}x4ddddtj
gD] }|jdd|d�}|j||�q�WdS)Nz
2000-01-01Z6Hr#)rlr&r$rKrnrrr4�metarF)r1rVr$Z1D�first)r��howrrqr!)r$Z3H�rer`�last)r|)r8r9r
r6r7r�Zresampler�rzr�rer�)rOr�r�rhrgZ
expected_timer|r*r*r.�test_resample_and_firstes
z#TestDataset.test_resample_and_firstcCs�ttddddddgffg�ddid	d
id�}dddgdddgg}td�dddgd�}d}t||||jd�}|j�}|j||�|jddd�}|jd
di�jd�}|j||�dS)NrorrprKr3r4r�r}ZConventions�None)r@rJ)rKr�r2r2)rJr6r1)r1)ror)r2rK)r
rr�rrJZto_arrayr�r�)rOr�rFr@rErgrhr*r*r.�
test_to_arrayvszTestDataset.test_to_arrayc	Cs2tjjd�}tjjd�}td�}ttdd|ffdd|ffdd|ffg��}tjtj||g�j	ddgtj
|dd�d�}|j�}|j|�s�t
||f��|jd�j�}|j|�s�t
||f��|j|tj|��tjjdd	�}td
d|fi�}dtd
�f|d<tjjddddddgddddddggddgd�}tj|jd �d
g|d�}|j�}|j|j|��|j|tj|��tjdg�}	tj|	�}tdddgfi�}|j||�tj�}	tj|	�}tdgid�}|j||�tjdgi�}	tj|	�}tdtgd!d�i�}|j||�ttj
dg�dtjdgd�fd��jdd�}|j�jdd�ddgf}tjddggtj
dgdd�ddgd�}|j|��s�t
||f��ttjdgd�tjdgd�d��}|j�}tjjdgdggddgd�}
tjgg|
d�}|j|��s�t
||f��tjtjd"��}	ddg|	_|jtd��tj|	�WdQRXdS)#Nr#r)ror3rp)r1)�columnsr�r3r4�wrKrnr6rrr�)r9r�)r@r�)rErVr')rKro)rK)r�r�)rKrn)r�r1znon-unique columns)rKrnr�)r�)r3r3)r6r7r�r;r
rr8Z	DataFramer?r�r�Zto_dataframer�rcr�rzZfrom_dataframer:Zfrom_arraysrvrfrr�r
r�r�rwrx)rOrKrnr3r�rgrhr�r=Zdf�idxr*r*r.�test_to_and_from_dataframe�sf



 
z&TestDataset.test_to_and_from_dataframecCs6t�}tjtj|��}|j||�|j|j|j�dS)N)rG�pickle�loads�dumpsrzr_rE)rOrFr7r*r*r.�test_pickle�szTestDataset.test_picklecCs�t�}t�j|�x�dD]x}t||d�}|jt��|j�WdQRX|jt��|djWdQRX|jdd�|jt	d�dgd�jddd
�qWdS)
NTF)�	decode_cfrr#)r$r)r$rr)rr)TFr�)
rHrGr�rr�rr�rIr�r�)rOr�r�r�r*r*r.�test_lazy_load�s
zTestDataset.test_lazy_loadcCs�tjjdd�}tj|ddd�df<tjjd�}tj|d<td|fd|fd��}|jtddd�d�}|jd�}|j||�|jtdd	�d
�}|jd�}|j||�|jdddgd
�}|j||�|jtdd�d
�}|jddgd
�}|j||�|jtd	�d
�}|jddgd
�}|j||�|jdgd
�}|j||�|jddgd
�}|j||�|jddd�}|j||�|jdddgd�}|jdddgd
�}|j||�|jdddgd�}|j||�|jddd�}|j||�|jddd�}|jddd	gd
�}|j||�|jdd	d�}|jdd	gd�}|j||�|j	t
d��|jd�WdQRX|j	t
d��|jddd�WdQRX|j	td��|jddd�WdQRXdS)Nrqr3rrrorp)r1rV)ror4)rpr1rV)�subsetr�)r|)r|r�)�threshr�)r�za single dataset dimensionzinvalid howZsomehowzmust specify how or threshr�)rorp)r6r7r�r�r
r�r�Zdropnarzrwrxry)rOrKrnr�rgrhr*r*r.�test_dropna�sX


zTestDataset.test_dropnacCsNtddtjdtjdgfi�}|jd�}tddddddgfi�}|j||�|jddi�}|j||�tddi�}|j|�}|j||�|jd|ji�}|j||�ttd�dd�}|j|�}|jd�j	�}|j||�|j|�}|j||�|jtd��}|j||�|j|dd��}|j||�tj|d<|jddd	��}tdddddgftjd
��}|j||�|j
td��|jddi�WdQRX|j
td��|jtddid
��WdQRXtddtd�fi�}x(||gD]}dddddgf|jd<�q�W|j
d�jtddgdd��}|j||�|j
d�jtddddgfi��}|j||�dS)NrorKrr4rq)rErpr�)ror�)rorpzno overlappingr)r@r3r�r�r�r�r�r�r�r�)r
r6r�r�rzrorr�r�r�rwrxr@ra)rOr�rhrgrFrp�targetr*r*r.�test_fillna"sH




 zTestDataset.test_fillnac	Cs�tddtd�fi�}tddtjtjdddgfi�}|j|dk�}|j||�|j|jdk�}|j||�|j|jjdk�}|j||�|jd�}|j||�|jdd	�}tjgd|d_|jd
�}|j||�tddddgddggfi�}tddtjdgddggfi�}|j|dk�}|j||�tddtd�fid
ddddddgfi�}tdd
dd
gfi�}|jdd	�}ddgtjgd|d_|j	d
�j|�}|j||�dS)NrorKrrr3r4rqrT)r�Frnrr�)rKrn)rKrn)
r
r�r6r��whererzrorIrra)rOr�rgrhZcondr*r*r.�
test_whereYs0

(zTestDataset.test_wherecCs�t�}|jt|j�j�d�|j�}ttdd�t|j	�D���}|j
||�|j
|jdgd�|jdd��xhddddgfddgddgfd	ddgffddddgfgD].\}}|j|d�j}t
|||�|j||�q�W|j
|jgd�|�dS)
Nrcss|]\}}||j�fVqdS)N)r`)r+rMrDr*r*r.r/�sz*TestDataset.test_reduce.<locals>.<genexpr>r)r�rrr$)rr$)rGr_rbrer@r`r
rNrr~r��minrEr^r�)rOrFrhrgZreductr*r*r.�test_reduce{s 

zTestDataset.test_reducec
Cs.t�}|jtd��|jdd�}WdQRXdS)NzDataset does not containZbad_dim)r�)rGrwrxre)rOrFr�r*r*r.�test_reduce_bad_dim�szTestDataset.test_reduce_bad_dimcs�tdd��tdd�}dddgi}xZt|j��D]J\}}t�fdd�|D��}tjjdd	|d
�jtj�}||ddif�|<q.W|j	d�j
�k�|j�j
�|j
��|j�j
dd
�|j
dd
��dS)N�,)rAZvar4rrc3s|]}�j|VqdS)N)rE)r+r,)r�r*r.r/�sz6TestDataset.test_reduce_non_numeric.<locals>.<genexpr>rrY)r0r1r2)r�)rGr<r=r>r6r7Zrandom_integersrZstr_rfrer�)rOr�Zadd_varsrDrEr0rFr*)r�r.�test_reduce_non_numeric�s

z#TestDataset.test_reduce_non_numericcCstddi�}tddddgfi�}|j�}|j||�tddi�}|j�}|j||�tddi�}|j�}|j||�tddi�}|j�}|j||�tddi�}tddtjddgd�fi�}|j�}|j||�tddi�}tddtjddgd	�fi�}|j�}|j||�dS)
NrKrornrprr�aZS1ZU1)r
r�rzr`�argminZargmaxr6r?)rOrgr�rhr*r*r.�test_reduce_strings�s*zTestDataset.test_reduce_stringscCs�tddi�}tddi�j�}|j||�tddi�}tddtjddgd�fi�j�}|j||�tdd	i�}tddddgfi�j�}|j||�dS)
NrKrTr4rnr3Zuint16y�?y�?�?)r
r`rzr6r?)rOrgrhr*r*r.�test_reduce_dtypes�s zTestDataset.test_reduce_dtypescCs�t�}ddd�}t|�}||_|j�}|j|ji�x |jj�D]}|j|ji�q@W|jdd�}|j|j|�x*|jj�D]\}}|j|j||j�q|WdS)NZvalue1iq)Zattr1Zattr2T)�
keep_attrs)rGrrJrer_r~rIr=)rOrF�_attrsrJr�rDrMr*r*r.�test_reduce_keep_attrs�s
z"TestDataset.test_reduce_keep_attrscCsRtddddgfi�}tdgdfi�}|j�}|j||�|jd�}|j||�dS)NrorKrr)r
r�rz)rOr�rgrhr*r*r.�test_reduce_argmin�s
zTestDataset.test_reduce_argmincCsFtdddgfdddgfd��}tdddd��}|j�}|j||�dS)Nror3rp)rKrnrur)r
r[rz)rOr�rgrhr*r*r.�test_reduce_scalars�szTestDataset.test_reduce_scalarscCs�dd�}tdddgdddd	d
ggfi�}tdddgfi�}|j|d�}|j||�|jtd��|j|�WdQRX|jtd��|j|ddg�WdQRXdS)NcSs"t|ttjf�std��|j|�S)Nznon-integer axis)�
isinstance�intr6�integerryre)rK�axisr*r*r.�mean_only_one_axis�szATestDataset.test_reduce_only_one_axis.<locals>.mean_only_one_axisrorKrnrrr3r4rqznon-integer axis)r
�reducerzrwry)rOr�r�rgrhr*r*r.�test_reduce_only_one_axis�s z%TestDataset.test_reduce_only_one_axiscCsDtdtjdgfdtjd��}tdddd��}|j�}|j||�dS)Nrorr)rKrnru)r
r6r��countrz)rOr�rgrhr*r*r.�
test_countszTestDataset.test_countcCs�t�}d|jd<|j|jtj�|j��|jdd�}|jdd�dd�}|j||�|j|jdd�dd�|jd��dd
d�}|j|dd
�}|j|dd|d�|j|d|d�|jtj	�}|jd�}|j
||�dS)NrVr1T)r�cSs|jdd�S)NT)r�)re)rKr*r*r.r_sz(TestDataset.test_apply.<locals>.<lambda>cSs|S)Nr*)rKr*r*r.r_sr$rcSs||S)Nr*)rK�multipler*r*r.�scalesz%TestDataset.test_apply.<locals>.scaler3)r�rr5)r)rGrJrzrir6rer�ZassertDataArrayEqualr�Zasarrayr�)rOrFrgrhr�r*r*r.�
test_applys


zTestDataset.test_applycCsrtddtjddd�ffdddtjd�jd	d
�ffg�}dddd
gfdtjd
�d�}t||�}tj|dd<|S)NrVrKrYi�r1rng�?rVr4rqrorpr�r#)r6rnr)rKrn)rr)rr6r:rvr
r�)rOr�r@r�r*r*r.r�#s"
z%TestDataset.make_example_math_datasetcCs�|j�}|j||
�|j||d�|j|d|�|j||tjd��|j|tjd�|�|jdd�}|d7}|j||�dS)NrT)r�)r�rzr6r?r)rOr�rhr*r*r.�test_dataset_number_math-sz$TestDataset.test_dataset_number_mathcCs�|j�}|j|jt�t|��|j|jdd��|d�x4dd�dd�dd�gD]}|j|j|�||��qPW|j|j�|j��|jt��|jWdQRX|jt��|j	WdQRXdS)NcSs|dS)Nrqr*)rKr*r*r.r_>sz,TestDataset.test_unary_ops.<locals>.<lambda>rqcSs|j�S)N)�isnull)rKr*r*r.r_@scSs|j�S)N)�round)rKr*r*r.r_AscSs
|jt�S)N)rr�)rKr*r*r.r_Bs)
r�rzri�absr��notnullr��AttributeError�itemZsearchsorted)rOr��funcr*r*r.�test_unary_ops:szTestDataset.test_unary_opscs6|j���j�fdd��}|j|��d�|j|�d��|j|��dj�|j|�dj���jdd�}|�d8}|j||��j�fdd��}|j|��d��jdd�}|�d7}|j||�td�dtjd�i�}|j|�dgtjd��|j|tjd��dg�dS)	Ncs|�dS)Nr1r*)rK)r�r*r.r_Psz5TestDataset.test_dataset_array_math.<locals>.<lambda>r1T)r�cs|�dS)NrVr*)rK)r�r*r.r_YsrVr4)r�rirzr2rr
r6r:)rOrgrhr*)r�r.�test_dataset_array_mathMs"z#TestDataset.test_dataset_array_mathcCs|j�}|j||d|�|j||ddd��|jdd��}|j|d|�|j|||�|j|||j�|j||t|j��|jdd�}t|�}||7}|j||�|j|t|��|j||k|j��|j	t
d�d�}d|}|j|||�|j|||�dS)	Nr)r1rVcSsd|S)Nr3r*)rKr*r*r.r_isz7TestDataset.test_dataset_dataset_math.<locals>.<lambda>r3T)r�)rn)r�rzrir~rNr�idr_r�r�r�)rOr�rgrhZexpected_idZ
subsampledr*r*r.�test_dataset_dataset_mathcs$z%TestDataset.test_dataset_dataset_mathc Cs�|j�}|jtd�ddgd�}d|}||}|j||�|jtd��(|jtd�d�|jtdd�d�WdQRX||dg}d|dgj|j�}|j||�|jtd��|t�WdQRX|jtd��t�t�WdQRXtdd	id
�}|jtd��||WdQRX|jt�dt��xj|jtd�d�|j	jtd�d�gD]D}|j
dd
�}|jtd�d�}||7}||j|�}|j||��qPWdS)Nr3rr4)rKrnzno overlapping labels)rKrVzno overlapping datar})r@rT)r�)r�r�r�rzrwrxr�r@r
rVrr)rOr�r�rgrhrArFr*r*r.�test_dataset_math_auto_align|s0,(z(TestDataset.test_dataset_math_auto_aligncCs�|j�}|jt��|d|7<WdQRX|jt��|dj|7_WdQRX|jtd��||dg7}WdQRXttjd�ddid�}|j	dd	�}|jt��||7}WdQRX|j
||�dS)
Nr1zmust have the samerVz
2000-01-01T12r�r3)r@T)r�)r�r�ryr2rwrxrr6r�rrz)rOr�rFrhr*r*r.�test_dataset_math_errors�sz$TestDataset.test_dataset_math_errorscs\tdtjjdd�fdtjjdd�fd����j�}�jdd��}|j||��j}|j||��jdd�}�jdd��}|j||�t���j�}x.�D]&�|j	|�j
ddd���j
�q�Wd}�j|�}x6�D].�t��fdd�|D��}|j	|�j
|�q�W|jt
d���jdd
d�WdQRX|jt
d���jdd
dd
d�WdQRXdS)NrKrnr4rq)rorpcSs|j�S)N)r�)rKr*r*r.r_�sz4TestDataset.test_dataset_transpose.<locals>.<lambda>cSs|jdd�S)NrKrn)r�)rKr*r*r.r_�srrrrr$c3s |]}|��jkr|VqdS)N)rE)r+r,)r�rMr*r.r/�sz5TestDataset.test_dataset_transpose.<locals>.<genexpr>zarguments to transposeZ	extra_dim)rKrn)rnrKr�)rrrr$)r
r6r7r�r�rirzr�rGr_rEr>rwrx)rOrhrgZ	new_orderZ
expected_dimsr*)r�rMr.�test_dataset_transpose�s.
&

z"TestDataset.test_dataset_transposecCsZtddddddgfi�}|jd�}tdddddgfi�}dddg|jd_|j||�dS)	Nr1rKrrrsrrr3r4)r
�diffr@rIr�)rOr�rhrgr*r*r.�test_dataset_diff_n1_simple�s

z'TestDataset.test_dataset_diff_n1_simplecCs^tddddddgfi�}|jddd�}tdddddgfi�}ddd	g|jd_|j||�dS)
Nr1rKrrrs�lower)�labelrrr3)r
r�r@rIr�)rOr�rhrgr*r*r.�test_dataset_diff_n1_lower�s
z&TestDataset.test_dataset_diff_n1_lowercCs�tdd�}|jd�}t�}ttj|djdd�|dj|djdd�gddg�|d<ttj|djdd�|dj|djdd�gddg�|d<|d|d<t|d	|d	jid
�}d|djf|jd<|j||�dS)
Nr)rArr)r�rrr r$)r@rr5)	rGr�rNrr6rIr
r@r�)rOr�rhrgr*r*r.�test_dataset_diff_n1�s

z TestDataset.test_dataset_diff_n1cCs�tdd�}|jddd�}t�}ttj|djddd�|dj|djdd�gddg�|d<ttj|d	jddd�|dj|djdd�gddg�|d	<|d
|d
<t|d|djid�}d
|djf|jd<|j||�dS)Nr)rArr3)rnr)r�rnrrr r$)r@rr5)	rGr�rNrr6rIr
r@r�)rOr�rhrgr*r*r.�test_dataset_diff_n2�s
z TestDataset.test_dataset_diff_n2cCs4tdd�}|jtd��|jddd�WdQRXdS)Nr)rAzmust be non-negativer)rnr�)rGrwrxr�)rOr�r*r*r.�!test_dataset_diff_exception_n_neg	s
z-TestDataset.test_dataset_diff_exception_n_negcCs4tdd�}|jtd��|jddd�WdQRXdS)Nr)rAz'label' argument has torZraise_me)r�)rGrwrxr�)rOr�r*r*r.�%test_dataset_diff_exception_label_str	s
z1TestDataset.test_dataset_diff_exception_label_strc
Cs�dtd�fdddgd�}ddi}td	dd
ddgfi||�}|jd
d�}td	dtjd
dgfi||�}|j||�|jtd��|jd
d�WdQRXdS)NrKr6rqr4r3)rVrKrzrFr1r)rK�
dimensionsrU)r1���)r;r
�shiftr6r�rzrwrx)rOr@rJr�rhrgr*r*r.�
test_shift
	szTestDataset.test_shiftc
Cs�dtd�fdddgd�}ddi}td	dd
ddgfi||�}|jd
d�}dtd�fdddgd�}td	ddd
dgfi||�}|j||�|jtd
��|jdd�WdQRXdS)NrKr6rqr4r3)rVrKrzrFr1r)rKZcabr�rU)r1r�r�)r;r
Zrollrzrwrx)rOr@rJr�rhZ	ex_coordsrgr*r*r.�	test_roll	szTestDataset.test_rollcCsjddi}tdfd|fi|d�}tdfd|fi|d�}|j|j|�tdfd|fi|d�}|j|j|�dS)	Nr1rVrKry@)rJr3y�?@)r
rz�real�imag)rOrJr�Zexpected_reZexpected_imr*r*r.�test_real_and_imag"	szTestDataset.test_real_and_imagcCsttiddiddid�}|jtd��d|_WdQRX|jtd��d|_WdQRX|jtd��d|_WdQRXdS)NrZrr1rV)r@rJzcannot set attrr3)r
rwr�rZr1rF)rOr�r*r*r.�test_setattr_raises,	szTestDataset.test_setattr_raisesN)trQrRrSrjrmr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�rr	rrrrrr$r%r&r'r(r,r2r5r8r>r@rBrCrGrHrJrKrLrMrNrOrSrUrXrYr\r]r^rbrcrfrkrlrprqrurwrxryrr�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.rT6s�7
% '!+!1 D
-+
$	
	&
0	L<7"


"

rT)N)+rr�textwrapr�cPickler��ImportErrorZ
dask.arrayr?r�Znumpyr6Zpandasr8Zxarrayrrrrr	r
rrr
rrrZxarray.corerrZxarray.core.pycompatrr�rrrrrrGZInMemoryDataStorerHrTr*r*r*r.�<module>s$8