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

���h��@sddlmZddlmZmZddlmZmZddlmZddlm	Z	ddl
ZddlZddl
ZddlmZmZmZddlmZdd	lmZmZmZdd
lmZmZddlmZmZdd
lm Z m!Z!Gdd�de"�Z#Gdd�de e#�Z$Gdd�de e#�Z%Gdd�de �Z&dS)�)�
namedtuple)�copy�deepcopy)�datetime�	timedelta)�dedent)�LooseVersionN)�Variable�Dataset�	DataArray)�indexing)�
Coordinate�as_variable�as_compatible_data)�PandasIndexAdapter�LazilyIndexedArray)�PY3�OrderedDict�)�TestCase�source_ndarrayc@s.eZdZdd�Zdd�Zdd�ZdJdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dS)K�VariableSubclassTestCasescCs�dtjd�}|jdg|ddi�}|j|jd�|j|j|�|j|jt�|j|j	d	�|j|j
d�|j|jd�|j|jd�|jt
|�d�|j|jddi�dS)
Ng�?�
�time�foo�bar�Pr)r)r)�np�arange�cls�assertEqual�dims�assertArrayEqual�values�dtype�float�shape�size�nbytes�ndim�len�attrs)�self�data�v�r/�9/tmp/pip-build-5_djhm0z/xray/xarray/test/test_variable.py�test_propertiessz)VariableSubclassTestCases.test_propertiescCsp|jdgdtjd��}|j|ji�ddi}||_|j|j|�|j|jt�d|jd<|j|jdd�dS)Nrg�?rrrZbaz)rrrr r+�assertIsInstancer)r,r.r+r/r/r0�
test_attrs"s
z$VariableSubclassTestCases.test_attrscCs:|jdgtjjd��}|ddi}|d}|j||�dS)N�x�r)rr�random�randn�assertVariableIdentical)r,r.�actual�expectedr/r/r0�test_getitem_dict,sz+VariableSubclassTestCases.test_getitem_dictNcCs�|j|djf�|j|djd�|j|djd�|j|j|j���|j|j|j���|j|jd|�|j|dj|�|dkr�|jt	|jd�t	|��|jt	|dj�t	|��n(|j|jdj
|�|j|djj
|�dS)zjGiven a 1-dimensional variable, verify that the variable is indexed
        like a numpy.ndarray.
        rrN)r r&r)r'�
assertTrue�equalsr�	identicalr#�typer$)r,�variableZexpected_value0Zexpected_dtyper/r/r0�assertIndexedLikeNDArray2sz2VariableSubclassTestCases.assertIndexedLikeNDArraycCsJxDdtjftjd�tjfgD]&\}}|jdg|g�}|j|||�qWdS)Nrr4)r�int_Zint32rrA)r,�valuer$r4r/r/r0�test_index_0d_intIs
z+VariableSubclassTestCases.test_index_0d_intcCsJxDdtjftjd�tjfgD]&\}}|jdg|g�}|j|||�qWdS)Ng�?r4)rZfloat_�float32rrA)r,rCr$r4r/r/r0�test_index_0d_floatOs
z-VariableSubclassTestCases.test_index_0d_floatcCsTxNdtjtrdnd�fdtjd�fgD]&\}}|jdg|g�}|j|||�q&WdS)Nr�U3�S3r4)rr$rrrA)r,rCr$r4r/r/r0�test_index_0d_stringUsz.VariableSubclassTestCases.test_index_0d_stringcCs�tddd�}|jdg|g�}|j|tj|��|jdgtj|�g�}|j|tj|�d�|jdgtj|g��}|j|tj|�d�dS)Ni�rr4zdatetime64[ns])rrrAr�
datetime64�pdZ
DatetimeIndex)r,�dr4r/r/r0�test_index_0d_datetime[sz0VariableSubclassTestCases.test_index_0d_datetimecCsbtdd�}|jdgtj|�g�}|j|tj|�d�|jdgtj|g��}|j|tj|�d�dS)Nr)�hoursr4ztimedelta64[ns])rrr�timedelta64rArK�to_timedelta)r,�tdr4r/r/r0�test_index_0d_timedelta64fs

z3VariableSubclassTestCases.test_index_0d_timedelta64cCs.tjdd�}|jdg|g�}|j||d�dS)NZNaT�nsr4)rrJrrA)r,rLr4r/r/r0�test_index_0d_not_a_timeosz2VariableSubclassTestCases.test_index_0d_not_a_timecCs6Gdd�dt�}|d�}|jd|g�}|j||�dS)Nc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
zKVariableSubclassTestCases.test_index_0d_object.<locals>.HashableItemWrappercSs
||_dS)N)�item)r,rUr/r/r0�__init__wszTVariableSubclassTestCases.test_index_0d_object.<locals>.HashableItemWrapper.__init__cSs|j|jkS)N)rU)r,�otherr/r/r0�__eq__zszRVariableSubclassTestCases.test_index_0d_object.<locals>.HashableItemWrapper.__eq__cSs
t|j�S)N)�hashrU)r,r/r/r0�__hash__}szTVariableSubclassTestCases.test_index_0d_object.<locals>.HashableItemWrapper.__hash__cSsdt|�j|jfS)Nz%s(item=%r))r?�__name__rU)r,r/r/r0�__repr__�szTVariableSubclassTestCases.test_index_0d_object.<locals>.HashableItemWrapper.__repr__N)r[�
__module__�__qualname__rVrXrZr\r/r/r/r0�HashableItemWrappervsr_r��r4)rr`ra)�objectrrA)r,r_rUr4r/r/r0�test_index_0d_objectts
z.VariableSubclassTestCases.test_index_0d_objectcs�tjddd�}x�||j|j�gD]�}|jd|��xp�fdd�td�D��fdd�td�D��fdd�td�D�gD],}tj|d�}|j�j	|j	�|j
�|�qrWq WdS)	Nz
2011-09-01r)�periods�tcsg|]}�|�qSr/r/)�.0�i)r:r/r0�
<listcomp>�szLVariableSubclassTestCases.test_index_and_concat_datetime.<locals>.<listcomp>csg|]}�||d��qS)rr/)rfrg)r:r/r0rh�scsg|]}�|g�qSr/r/)rfrg)r:r/r0rh�s)rK�
date_ranger#�
to_pydatetimer�ranger	�concatr r$r")r,ri�dates�timesr9r/)r:r0�test_index_and_concat_datetime�sz8VariableSubclassTestCases.test_index_and_concat_datetimecCs8|jdtjddd��}tjdd�}|j|dj|�dS)Nrz
2000-01-01r5)rdz2000-01-01T00ZrSr)rrKrirrJr r#)r,r4r:r/r/r0�test_0d_time_data�sz+VariableSubclassTestCases.test_0d_time_datacCs�tjddd�}x�|df|jdf|jjd�df|j�dfgD]n\}}|jdg|�}|j|jtjd��|j	|j|j�|j|jjtjd��t
|j�t
|�k}||ks:t�q:WdS)	Nz
2000-01-01ra)rdTz
datetime64[s]Frezdatetime64[ns])rKrir#�astyperjrr r$rr"r�AssertionError)r,rnr#�preserve_sourcer.�same_sourcer/r/r0�test_datetime64_conversion�sz4VariableSubclassTestCases.test_datetime64_conversioncCs�tjddd�}x�|df|jdf|jjd�df|j�dfgD]n\}}|jdg|�}|j|jtjd��|j	|j|j�|j|jjtjd��t
|j�t
|�k}||ks:t�q:WdS)	Nrra)�startrdTztimedelta64[s]Freztimedelta64[ns])rKZtimedelta_ranger#rqZto_pytimedeltarr r$rr"rrr)r,rnr#rsr.rtr/r/r0�test_timedelta64_conversion�sz5VariableSubclassTestCases.test_timedelta64_conversioncCs6tjd�jt�jt�}|jd|�}|j|j|j�dS)Nr5r4)rrrq�strrbrr r$)r,r-r9r/r/r0�test_object_conversion�sz0VariableSubclassTestCases.test_object_conversioncCsp|jdgtjdddgdddgd��}|j||dddg�|jdgtjdddg��}|j|dj|jd�dS)Nr4rrr`ra)�index)rrKZSeriesr8�Indexr r#)r,r.r/r/r0�test_pandas_data�s$z*VariableSubclassTestCases.test_pandas_datacCsH|jdgtjdddd��}|j|dtjddd��dt|�ksDt�dS)	Nr4�2000��B)rvrd�freqr)r�zPeriod('2000-01-03', 'B'))rrKZperiod_ranger ZPeriod�reprrr)r,r.r/r/r0�test_pandas_period_index�sz2VariableSubclassTestCases.test_pandas_period_indexcCsfdtjd�}tjd�}|jdg|�}|j||
�|j|t|��|j|j|�|j||d�|j|d|�|j||d�|j|dkj|dk�|jd|kjd|k�|j|dj|d�|jd|jd|�|j||j|d�|j||j|d�|j|||d�|j||d|�|jdg|ddi�}|j||
�|j||d|�|jdg|d	d
i�}|j|||jdg||��|j||j||�|j|d|d|j|d|d|�|jt	|
j
�|jt	|
jj
�|jt	d|j
�|jt	d|jj
�|j|
t�|j
|
t�|jd|t�|j
d|t�dS)Ng�?r5r4rrr`�unitsZmetersrr)rr�onesrr8�absr"r#r r%r$r2r	�assertNotIsInstancer
)r,r4�yr.�v2�wr/r/r0�test_1d_math�s@
.z&VariableSubclassTestCases.test_1d_mathcCsJtjd�}|jdg|�}|j�}tfd�}|j||�|jt|�t�dS)Nr5r4r)rrr�sumr	r8�assertIsr?)r,r4r.r9r:r/r/r0�test_1d_reduce�s

z(VariableSubclassTestCases.test_1d_reducecCs�tjd�}|jdg|�}|jtj|�|�|j|jt�|jt��|j|j�|�|j|j	dd�|jd|j	dd���|jtj
|�|jdgtj
|���|jtj
|�t�|j
tj
|�t�dS)Nr5r4r`ra)rrrr"�asarrayrqr%r8ZargsortZclip�sinr2r	r�r
)r,r4r.r/r/r0�test_array_interface�s
$"z.VariableSubclassTestCases.test_array_interfaceccsfx`td�dtjd�dtjdtjd�tjddd�tjdddgtd�gD]}|jd	|�|fVqHWdS)
Nrag�?)r$z
2000-01-01)rd�a�b�cr4)	rkrrrErKri�arrayrbr)r,r-r/r/r0�example_1d_objectssz,VariableSubclassTestCases.example_1d_objectscCs�x||j�D]p\}}|j|jtj|��|jtj|�tj|��|j|djtj|�d�|jtj|d�tj|�d�q
WdS)Nr)r�r"r#rr�r )r,r.r-r/r/r0�test___array__s
z(VariableSubclassTestCases.test___array__cCs�x�|j�D]�\}}|j�}|j|j|��|j|j|��|j|dj|d��|j|dj|d��|j|dd�j|dd���|j|dd�j|dd���q
WdS)Nrr`)r�rr<r=r>)r,r.�_r�r/r/r0�test_equals_all_dtypess z0VariableSubclassTestCases.test_equals_all_dtypescCsV|jdddg�}x>|j�D]2\}}d|k}|j||�d|k}|j||�qWdS)Nr4raF�z)rr�r8)r,r:r.r�r9r/r/r0�test_eq_all_dtypes s
z,VariableSubclassTestCases.test_eq_all_dtypesc	Cs�|jdtd�ddiddi�}xf|j|d|j�|jtd�d�|jddi�|jd	d
�|jdd
�gD] }|j||�|j	|j
|j
�q`WdS)Nr4rarrrr`.)r4T)�deepF)rrk�T�squeeze�isel�slice�expand_dimsrr8r �encoding)r,r:r9r/r/r0�test_encoding_preserved*s
z1VariableSubclassTestCases.test_encoding_preservedcCsNtjd�}tjdd�}|jdg|�}|jdg|�}|jtddgtj||g��tj||gd��|jtddgtj||g��tj||fd��|jtddgtj||g��tj||fd��|jtd��tj|tdg|�gd�WdQRXtj||gt	ddd�t	d	dd�gdd
�}tdtj||g�j
dd��}|j||�td
dgtjjd��}|j|tj|dd�|dd�gd
��|j|tj|dd�|dd�|dd�gd
��|j|tj|dd	�|d	d�gd
��|j|tj|dd�dd�f|dd�dd�fgd��|jtd��2tj|dd�df|dd�d	d�fgd�WdQRXdS)Nr5rr�r�zinconsistent dimensionsr�rr`r)Z	positions�dim�F)�orderrr4��zall input arrays must have)rr�)rrrr8r	r�rl�assertRaisesRegexp�
ValueErrorrkZravelr6)r,r4r�r.r�r9r:r/r/r0�test_concat6s.
"(2(8z%VariableSubclassTestCases.test_concatcCs�|jdtjd�ddi�}|jdtjd��}|jdtjtjd�tjd�g��}|j|tj||gd��d|jd<|j|tj||gd��d|jd<d|jd<|j|tj||gd��dS)Nr�r5rrr`)	rrrr�Zconcatenater8r	rlr+)r,r.r�r:r/r/r0�test_concat_attrsRs"


z+VariableSubclassTestCases.test_concat_attrscCsvxpdD]h}|jdtjdg|d��}|jdtjdg|d��}tj||gd�}tdtjddg|d��}|j||�qWdS)N�S�UZanimalZhorse)r$Zaardvark)r�r�)rrr�r	rlZassertVariableEqual)r,�kindr4r�r9r:r/r/r0�test_concat_fixed_len_str^s
z3VariableSubclassTestCases.test_concat_fixed_len_strcCs�|jddddg�}|jdddg�}tj||gdd�}tdtjd�jt�jt��}|j||�|j	|j
t�|j	t|jd	�t�dS)
Nr4�0�1�2�3�4)r�r5r)
rr	rlrrrqrxrbr8r r$r?r#)r,r�r�r9r:r/r/r0�test_concat_number_stringshsz4VariableSubclassTestCases.test_concat_number_stringscCs�|jddtjd�ddi�}x�d	D]�}|j|d�}|jt|�t|��|j||�|j|j|j�|jt	kr"|r�|j
t|j�t|j��q"|jt|j�t|j��q"W|j|t|��dS)
Nr4g�?rrrTF)r�)TF)
rrrrr�r?r8r r$r	�assertIsNotrr#)r,r.r�r�r/r/r0�	test_copyrs

z#VariableSubclassTestCases.test_copycCs�|jdtjd�dtjd�ddi�}|jdtjd�ddi�}|j|j|�|jdtjd�ddi�}|j|j|�|jdtjdtjd�d��}|jt|�|�dS)Nr4ray�?rrr`)	rrrr8�real�imag�sqrt�assertVariableAllCloser�)r,r.Zexpected_reZexpected_imZexpected_absr/r/r0�test_real_and_imag�s& z,VariableSubclassTestCases.test_real_and_imagcCs2|jdddtjg�}tfd�}|j|j�|�dS)Nr4ry@g�?y�?y�?�?)rr�nanr	r��mean)r,r.r:r/r/r0�test_aggregate_complex�s
z0VariableSubclassTestCases.test_aggregate_complexcCs:tjtjddd��}|jd|�}t|�|jdks6t�dS)NrZint64)r$r4)rKZCategoricalrrr�printr$rr)r,r-r.r/r/r0�test_pandas_cateogrical_dtype�sz7VariableSubclassTestCases.test_pandas_cateogrical_dtypecCsLtjdtjd�ddd�}|jd|�}t|�dt|j�krH|jdksHt�dS)Nz
2000-01-01zAmerica/New_YorkrZ1h)rv�tzrdr�r4rb)	rKri�pytz�timezonerr�rxr$rr)r,r-r.r/r/r0�test_pandas_datetime64_with_tz�s
z8VariableSubclassTestCases.test_pandas_datetime64_with_tzcCsRtjjtd�ddgg�}|jd|�}|jtfd�|d�|j||dd��dS)N�abcrrr4r�)r�r)rKZ
MultiIndexZfrom_product�listrr8r	)r,�idxr.r/r/r0�test_multiindex�sz)VariableSubclassTestCases.test_multiindex)N)'r[r]r^r1r3r;rArDrFrIrMrRrTrcrorprurwryr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r/r/r/r0rsH


	
*





rc@sLeZdZee�Zdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#d=d>�Z$d?d@�Z%dAdB�Z&dCdD�Z'dEdF�Z(dGdH�Z)dIdJ�Z*dKdL�Z+dMdN�Z,dOS)P�TestVariablecCstjjd�jtj�|_dS)Nrra)rra)rr6rqZfloat64rL)r,r/r/r0�setUp�szTestVariable.setUpc
Cs�tddg|j�}|j|j|j�|j|j|j�|jt|j�|j�|jt��t	j
j
d�|_WdQRXt	j
j
d�}||_|jt|j�|�t	j
j
d�}||_|jt|j�|�dS)Nrr4r5rra)rra)rra)r	rLr"r-r#r�r�assertRaisesr�rr6)r,r.Zd2Zd3r/r/r0�test_data_and_values�sz!TestVariable.test_data_and_valuescCsZtgtjd��}|j|j�d�|jt|j��t�tdtj	d��}|jd|j
d��dS)Ngrr4r5r`)r	rrEr rUr�r?r%r
rZsearchsorted)r,r.r/r/r0�test_numpy_same_methods�s
z$TestVariable.test_numpy_same_methodscCsztjdd�}xhtjd�tjd�tddd�gD]F}tg|�}|j|jtjd��|j|j|�|j|jjtjd��q,WdS)Nz2000-01-01T00:00:00ZrSz2000-01-01T00Zz
2000-01-01T00i�rzdatetime64[ns])	rrJrK�	Timestamprr	r r$r#)r,r:r#r.r/r/r0�!test_datetime64_conversion_scalar�s
z.TestVariable.test_datetime64_conversion_scalarcCsztjdd�}xhtjdd�tjd�tdd	�gD]F}tg|�}|j|jtjd
��|j|j|�|j|jjtjd
��q,WdS)N��<r�	rSr�Dz1 day)�daysztimedelta64[ns]i�i�Qiʚ;l�"R:)	rrOrKZ	Timedeltarr	r r$r#)r,r:r#r.r/r/r0�"test_timedelta64_conversion_scalar�s

z/TestVariable.test_timedelta64_conversion_scalarcCsptgd�}|j|jtjd��|j|jd�tgtjd��}|j|jtjd��|j|jtrftdd�nd�dS)NrrGrH�ascii)r	r r$rr#�string_r�bytes)r,r.r/r/r0�test_0d_str�s
zTestVariable.test_0d_strcCs>tgtjd��}|j|jtjd��|j|jtjdd��dS)Nz
2000-01-01zdatetime64[ns]z2000-01-01T00ZrS)r	rKr�r r$rr#rJ)r,r.r/r/r0�test_0d_datetime�szTestVariable.test_0d_datetimecCsXxRtjd�tjdd�gD]8}tg|�}|j|jtjd��|j|jtjdd��qWdS)	NZ1sr�sztimedelta64[ns]rr�rSiʚ;)rKrPrrOr	r r$r#)r,rQr.r/r/r0�test_0d_timedelta�s
zTestVariable.test_0d_timedeltacCs(tjjdd�}tj|d<td
|ddddgd�d	�}td|ddddgd�d	�}|j|j|��|j|j|��td|d�}|j|j|��td|d�}|j|j|��|j|j|��t	|�}tjjdd�|j
dd�<|j|j|��|j|jd��|j|j|��|j|jd��|j|j|��dS)Nrrar�dim1�dim2rr`)Zatt1Zatt2)r-r+�dim3)r-)rr)r�r�)r�r�)r�r�)r�r�)rr6Zrandr�r	r<r=r>�assertFalserr#)r,rL�v1r��v3�v4Zv5r/r/r0�test_equals_and_identical�s(
z&TestVariable.test_equals_and_identicalcCs�tftj�}tdtjtjg�}|j|j|��|j|j|��|j|j|��tdtjg�}|j|j|��|j|j|��|j|j|��|j|jd��tdtjgd�}|j|j|��dS)Nr4ra)r	rr�r<Zbroadcast_equalsr�r=r>)r,r�r�r�r�r/r/r0�test_broadcast_equalssz"TestVariable.test_broadcast_equalscCsBtjd�}td|�}|j|t|��td|i�}|j|t|d��|j|dt�|jt|d�t�|jt|ddd�t�t	dd�}||j
|j�}|j|t|��|j|j
f}|j|t|��|jt
d��tt|��WdQRX|jt
d��t|�WdQRXt|dd	�}|j||�td
�}tgd
�}|j||�dS)Nrr4F)�strict�FakeVariablezvalues dimszcannot convert argzcannot infer .+ dimensions)�keyr)rrr	r8rr
r�r2rrr#r!r��	TypeError�tuple)r,r-r:Zdsr�Zfake_xarrayZxarray_tupler9r/r/r0�test_as_variables,



zTestVariable.test_as_variablecCsDtddgdddgdddggd	d
i�}td�j�}|j|t|��dS)Nrr4rr`ra�r5r�rrz�
        <xarray.Variable (time: 2, x: 3)>
        array([[1, 2, 3],
               [4, 5, 6]])
        Attributes:
            foo: bar
        )r	r�stripr r�)r,r.r:r/r/r0�	test_repr>s$
zTestVariable.test_reprcCs6tdttjd���}|jdt|��|j|jt�dS)Nr4gjAz200000 values with dtype)r	rrrZassertInr�r2�_data)r,r.r/r/r0�test_repr_lazy_dataIsz TestVariable.test_repr_lazy_datacCs|tjjd�}tddg|�}|j||dd��|j||d�|jtdg|d�|d�|jtdg|dd�df�|dd�df�|jtddg|dd�dd�f�|dd�dd�f�tdgtjd��}tdgtjd��}|j|||j�|j|||�|j|dd�||dk�|j|dd�dd�f|dd�|dkf�|j|dd�dd�f||dk|dkf�|j|dd�dd�f||dd�|dd�f�|j|dd�dd�f|td�td�f�x.t|�D]"\}}|jtdg||�|��q�W|jt	d	��t
tgd��WdQRXd|jdd�<|jtj|jdk��d
|td�td�f<|j
|jtjd��dS)
Nr�r4r�.rrar`ziteration over a 0-dr)rr�)rr�)rr6r	r8rr#rk�	enumerater�r��iterr<�allr"r�)r,r-r.r4r��nrUr/r/r0�
test_itemsNs2, ,,4,zTestVariable.test_itemsc
Cs�tddg|j�}|j|jtd�d�|�|j|jdd�|d�|j|jtdd�d�|dd��|j|jdd�|dd�df�|jtd��|jdd�WdQRXdS)	Nrr4)rrra)r4zdo not exist)Z	not_a_dim)r	rLr8r�r�r�r�)r,r.r/r/r0�	test_iselns" zTestVariable.test_iselcCsDtgtjd��}|j|f|�tgtjd��}|j|f|�dS)NZasdf)r	rr�r8Zunicode_)r,r.r/r/r0�test_index_0d_numpy_stringwsz'TestVariable.test_index_0d_numpy_stringcCs.tddg�df}tfd�}|j||�dS)Nr4Ztmaxr)r	r8)r,r9r:r/r/r0�test_indexing_0d_unicodes
z%TestVariable.test_indexing_0d_unicodecCs|tddddddg�}|j||jdd��|j||jdd��tdtjddddg�}|j||jdd��tdtjtjdddg�}|j||jdd��tdddddtjg�}|j||jdd��tdtjgd�}|j||jdd��|j||jd	d��|jtd
��|jdd�WdQRXtddddddgdd
i�}|j||jdd��tdtjddddgdd
i�}|j||jdd��dS)Nr4rr`rar�r5r)r4r��	dimension)r�rr���)r	r8�shiftr�rr�r�r�)r,r.r:r/r/r0�
test_shift�s$zTestVariable.test_shiftcCsLtdddgddgg�}td	tjtjgtjdgg�}|j||jddd��dS)
Nr4r�rr`rar�)r4r�)r4r�)r4r�)r	rr�r8r�)r,r.r:r/r/r0�test_shift2d�szTestVariable.test_shift2dc
Cs�tddddddg�}|j||jdd��|j||jdd��tddddddg�}|j||jdd��|j||jdd��|j||jd	d��tddddddg�}|j||jdd��|j||jd
d��|jtd
��|jdd�WdQRXdS)Nr4rr`rar�r5r)r4r�r�)r�������)r	r8�rollr�r�r�)r,r.r:r/r/r0�	test_roll�szTestVariable.test_rollcCshtdtjjdd��}xNdD]F\}}x<dD]4}tj|j||d
�}|jf||i�j}|j||�q(WqWdS)Nr4r�r5r�rrra�r�)�axis)r4r��rr4�rr�)rrr)rrrrr�)r	rr6r7rr#r")r,r.rr�r�r:r9r/r/r0�test_roll_consistency�s
z"TestVariable.test_roll_consistencycCs�tddg|j�}tddg|jj�}|j||j��|j|j�|j�tjjdddd�}tddd	d
g|�}td
dd	dgtjd|��}|j	|j
d
�|j||jd
dd	d��|j||jddd	d
��tdd	d
dgtjd|��}|j||jddd	d
��dS)Nrr4r`rar�r5r�r�r�rLz
abcd->dbcaz
abcd->bcda)r5rar�r`)r	rLr�r8�	transposerr6r7�einsumr r&)r,r.r�r4r�Zw2Zw3r/r/r0�test_transpose�szTestVariable.test_transposec	Cstddgdgg�}|jtgd�|j��|jtdgdg�|jd��|jtdgdg�|jdg��|jtdgdg�|jd��|jtgd�|jddg��tddgddgg�}|jtdgddg�|j��|jtdgddg�|jd��|jtd��|jd�WdQRXdS)Nr4r�rr`zcannot select a dimension)r	r8r�r�r�)r,r.r/r/r0�test_squeeze�szTestVariable.test_squeezec	Cs�tdddgtjjddd��}|j|jd�d�|j|jdg�d�|j|jddg�d�|j|jdddg�d
�|jtd	��|jd
�WdQRXdS)Nr4r�r�r`rar�rrznot found in array dimZfoobar)r)rr)r`rr)r	rr6r7r Zget_axis_numr�r�)r,r.r/r/r0�test_get_axis_num�szTestVariable.test_get_axis_numc	Cs�tdgddg�}|jddg�}tddgdgdgg�}|j||�|jddg�}|j||j�|jtd	d
g��}tddgddgddgg�}|j||�tdgddg�}|jd�}|}|j||�|jtd��|jdg�WdQRXdS)Nr4rrr�r`rzmust be a supersetr�)r4r`)r�r`)r	r�r8r�rr�r�)r,r.r9r:r/r/r0�test_expand_dims�s
zTestVariable.test_expand_dimscCs�tddgddgddggddi�}|jdd	�}td
ddddg|j�}|j||�|jdd	�}td|jj|j�}|j||�|jfd	�}|j||�|jddd�jdd
�}td|j|j�}|j||�dS)Nr4r�rrr`rarr)r�r�)�X�Yrr)r4r�)r4)r�r�)r4)r�)rr)r	�stackr+r8r-r�r	)r,r.r9r:r/r/r0�
test_stack�s zTestVariable.test_stackcCsltddgddgddggddi�}|jtd	��|jdd�WdQRX|jtd��|jdd
�WdQRXdS)Nr4r�rrr`rarrzinvalid existing dim�x1)r�zcannot create a new dim)r4)r)r4)r	r�r�r)r,r.r/r/r0�test_stack_errorss
 zTestVariable.test_stack_errorscCs�tdddddgddi�}|jtdd
g�d
�}tdddgddgg|j�}|j||�|jtddg�d
�}tddgdgdgdgg|j�}|j||�|jtdg�d
�}tdddddg|j�}|j||�dS)Nr�rrr`rarrr4r�)r�r�)r4r`)r�r`)r4r�)r4r�)r�r)r4r�)r4r�)r	�unstackrr+r8)r,r.r9r:r/r/r0�test_unstackszTestVariable.test_unstackcCs�tdddddg�}|jtd��|jddid	�WdQRX|jtd
��|jdd�WdQRX|jtd��|jdd
id�WdQRXdS)Nr�rrr`razinvalid existing dimr4r�)rzcannot create a new dim)r�zthe product of the new dimr5)r�)r	r�r�rr)r,r.r/r/r0�test_unstack_errors"sz TestVariable.test_unstack_errorscCsxtddgddgddgg�}|jddid�}tddg|j�}|j||�|jddid	�}tddg|jj�}|j||�dS)
Nr4r�rrr`rar�)r�)r4)r	rr-r8r�)r,r.r9r:r/r/r0�test_unstack_2d+szTestVariable.test_unstack_2dcCsFtddgddgddgg�}|jdd�jtd	d
g�d�}|j||�dS)Nr4r�rrr`ra)r�)r4r�)r4r`)r�r`)r	rrrr8)r,r.r9r/r/r0�test_stack_unstack_consistency5sz+TestVariable.test_stack_unstack_consistencyc
Cs�tjjdd�}tddg|�}|j||tddgtjd||���|j||dtddgtjd||d���|j|d|tddgtjd|d|���|j|d|dd�dftddgtjd	|d|dd�df���tjjdd
d�}tddd
g|�}|j||tdddd
gtjd||���|j||tddd
dgtjd||���|j||dtdddd
gtjd||d���dS)Nr`rar�r�z	ab,ab->abrzab,b->abzb,ab->bazb,a->bar�r5r�rLzab,bcd->abcdzbcd,ab->bcdazab,cd->abcd)rr6r7r	r8r
)r,r4r.r�r�r/r/r0�test_broadcasting_math;s2

*z#TestVariable.test_broadcasting_mathcCs�tdgtjd��}tdgtjd��}tddgtjd�jdd��}|jtd��||WdQRX|jtd��||WdQRXdS)Nr4rr5�dzmismatched lengthszduplicate dimensions)r	rrZreshaper�r�)r,r�r�r�r/r/r0�test_broadcasting_failuresXsz'TestVariable.test_broadcasting_failurescCs�tjd�}tdg|�}|}|d7}|j||�|jt|j�|�|j|jtjd�d�|jtd��|tdtjd��7}WdQRXdS)Nr5r4rzdimensions cannot changer�)	rrr	r�rr#r"r�r�)r,r4r.r�r/r/r0�test_inplace_mathas
zTestVariable.test_inplace_mathcCs&tddg|jddi�}|j|jtjd�tdg|jjdd���|j|jtjdd�|jtjdd��|j|jtjddg�tg|jjdd���|j|jtj�tg|jj���|j|jtjd�jtjd�tg|jjdd�j���|j|jd�|jtjd��|jt	d	��|jddd
�WdQRXdS)Nr4r�Zignored�
attributesr)r)r�rzcannot supply both)r�r)rr)
r	rLr8�reducerZstdr�r�r�r�)r,r.r/r/r0�test_reducenszTestVariable.test_reducecCs8tjddd�}tdg|�}tgd�}|j||j��dS)Nr5z>f4)r$r4)rr�r	r8r�)r,r-r.r:r/r/r0�test_big_endian_reduce�s
z#TestVariable.test_big_endian_reducecCs�tdtjdtjddg��}|j|j�tgd��|j|jdd�tgd��|j|jdd�tgtj��|jtj|�tgd��|j|j�tgd��|j|j�tgd��ttj	�d
kr�|j
t��|j�WdQRXn|j|j�tgd��tddddg�}|j|j
�tgd��|j|jdd�tgd��tdtjd
dd��}|j
t��|jdd�WdQRX|j|j�tgtjd���dS)Nr4rr`raT)ZskipnaFr�g@z1.9)r�rez
2000-01-01)rdz
2000-01-03gUUUUUU�?)r	rr�r�r8r��prod�varr�__version__r��NotImplementedErrorZmedian�anyr�rKri�maxr�)r,r.r/r/r0�test_reduce_funcs�s&zTestVariable.test_reduce_funcscCszddd�}tddg|j|�}|j�}|jt|j�d�|j|jt��|jdd�}|jt|j�t|��|j|j|�dS)	N�testZtesting)r�Z	long_namer4r�rT)Z
keep_attrs)r	rLr�r r*r+r)r,�_attrsr.Zvmr/r/r0�test_reduce_keep_attrs�s
z#TestVariable.test_reduce_keep_attrscCs�tgd�}tdgdddtjg�j�}|j||�tdgtjdddtjgtd��}|j�}|j||�tdgd	d
d	g�j�}|j||�|j|jt	�tdgddg�}tddgddtjgdddgg�jd�}|j||�dS)
Nrar4rr`r�r�r�)r$TFr�r)
r	rr��countr8r�rbr r$�int)r,r:r9r.r/r/r0�
test_count�s
 &zTestVariable.test_countN)-r[r]r^�staticmethodr	rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrrrrrrrr r!r(r+r.r/r/r/r0r��sP	 				
	
r�c@s4eZdZee�Zdd�Zdd�Zdd�Zdd�Z	d	S)
�TestCoordinatec
Cs&|jtd��tfd�WdQRXdS)Nzmust be 1-dimensionalr)r�r�r
)r,r/r/r0�	test_init�szTestCoordinate.test_initcCsBdtjd�}tdg|ddi�}|jtj|dd�j|j���dS)Ng�?rrrr)�name)rrr
r<rKr{r>Zto_index)r,r-r.r/r/r0�
test_to_index�szTestCoordinate.test_to_indexcCs�tdtjd��}|jt|j�tj�|jt|j	�|j
tjd�|�|jt|jj	�|j|jt
�|jtd��d|dd�<WdQRXdS)Nr4g@razcannot be modifiedr)r
rrr�r?r��ndarrayr r%r$r"r#r2rr�r�)r,r4r/r/r0�	test_data�szTestCoordinate.test_datac	Cs:tddg�}|j|jd�|jt��d|_WdQRXdS)Nr4g$@r�)r
r r2r��AttributeError)r,Zcoordr/r/r0�	test_name�szTestCoordinate.test_nameN)
r[r]r^r/r
rr1r3r5r7r/r/r/r0r0�s
r0c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestAsCompatibleDatacCsptjttjf}x\|D]T}xNtjd�tjddd�tjddd�jgD]$}||�}|j	t
|�t
t|���q@WqWdS)Nraz
2000-01-01)rd)rr�rrrrrKrir#r�rr)r,�typesrer-r4r/r/r0�test_unchanged_types�s


z)TestAsCompatibleData.test_unchanged_typescCsnxhdddggtjdddgg�gD]F}t|�}|jtj|�|�|jtjt|��|jtj|�j	|j	�q WdS)Nrrr`)
rKZ	DataFramerr"rr�r r4r?r$)r,Zinput_arrayr9r/r/r0�test_converted_types�s
$z)TestAsCompatibleData.test_converted_typescCs�tjjtjd��}tjd�}t|�}|j||�|jtjt�|j�tjjtjd�ddgdgd�}tjd�}tj	|d<t|�}|j||�|jtjt
�|j�dS)	Nr5r�FT)�maskg@rr�)r�maZMaskedArrayrrr"r r$r-r�r%)r,�originalr:r9r/r/r0�test_masked_array�s
"

z&TestAsCompatibleData.test_masked_arraycCsXtjd�}t|�}|j||�|jtjt|��|jtjd�|j�tjtjd�g�}t|�}|jtj|�|�|jtjt|��|jtjd�|j�tjtjdd�g�}t|�}|jtj|�|�|jtjt|��|jtjd�|j�|j	|t
tj|���tjdd�}ttddd��}|jtj|�|�|jtjt|��|jtjd�|j�dS)Nz2000-01-01T00Zzdatetime64[ns]rSi�r)rrJrr r4r?r$r�r�r�rr)r,r:r9r/r/r0�
test_datetimes*
z"TestAsCompatibleData.test_datetimeN)r[r]r^r:r;r?r@r/r/r/r0r8�s
r8)'�collectionsrrrrr�textwraprZdistutils.versionrZnumpyrr�ZpandasrKZxarrayr	r
rZxarray.corerZxarray.core.variabler
rrZxarray.core.indexingrrZxarray.core.pycompatrr�rrrbrr�r0r8r/r/r/r0�<module>s0