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

���hͫ�@s�ddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
ZddlZddlZddlmZmZmZmZmZddlmZddlmZddlmZddlmZm Z d	d
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+d	dl,m-Z-yddl.Z/Wne0k
�rYnXyddl1Z1ddl2j3Z4Wne0k
�rLYnXdd
�Z5dd�Z6dd�Z7Gdd�de"�Z8Gdd�de9�Z:Gdd�de9�Z;Gdd�de;�Z<ej=�Z>ej?d7dd��Z@Gdd�de<�ZAe$Gdd �d eAe"��ZBe$e'Gd!d"�d"eB���ZCe#Gd#d$�d$e<e:e"��ZDe#Gd%d&�d&e<e:e"��ZEe$Gd'd(�d(e<e:e"��ZFe$Gd)d*�d*e<e:e"��ZGe&Gd+d,�d,e<e:e"��ZHe(e$Gd-d.�d.eAe"���ZIe'e#e$Gd/d0�d0e"����ZJe&e%Gd1d2�d2e"���ZKe#e)Gd3d4�d4e<e:e"���ZLGd5d6�d6e"�ZMdS)8�)�BytesIO)�LockN)�Dataset�open_dataset�open_mfdataset�backends�save_mfdataset)�robust_getitem)�_extract_nc4_encoding)�_extract_h5nc_encoding)�	iteritems�PY3�)
�TestCase�requires_scipy�requires_netCDF4�requires_pydap�requires_scipy_or_netCDF4�
requires_dask�requires_h5netcdf�requires_pynio�has_netCDF4�	has_scipy)�create_test_datacOs$ttjjtjjt�d|�f|�|�S)N�data)r�os�path�join�dirname�__file__)�name�args�kwargs�r#�9/tmp/pip-build-5_djhm0z/xray/xarray/test/test_backends.py�open_example_dataset'sr%cCs@tjtjtjdddg�}d
dtjd�dd�}tdd	|i|fi�S)N�
g333333$@gffffff$@rg�������?�i2)�
_FillValue�
add_offset�scale_factor�dtype�x�t���)�np�array�nan�float32r)r,�encodingr#r#r$�create_masked_and_scaled_data,sr4cCs.d	dtjd�d�}tddd
ddddg|fi�S)Nrr&g�������?)r(r)r*r,r-r�r.r.r.)r/r2r)�
attributesr#r#r$�%create_encoded_masked_and_scaled_data3sr7c@seZdZdd�ZdS)�
TestCommonc
s|Gdd�dt��G�fdd�dt�}|dg�}|j���|dWdQRX|j|dd�t|d�dd�}|j|d�dS)Nc@seZdZdS)z>TestCommon.test_robust_getitem.<locals>.UnreliableArrayFailureN)�__name__�
__module__�__qualname__r#r#r#r$�UnreliableArrayFailure<sr<cs"eZdZddd�Z�fdd�ZdS)z7TestCommon.test_robust_getitem.<locals>.UnreliableArrayrcSs||_||_dS)N)r0�failures)�selfr0r=r#r#r$�__init__@sz@TestCommon.test_robust_getitem.<locals>.UnreliableArray.__init__cs&|jdkr|jd8_��|j|S)Nrr)r=r0)r>�key)r<r#r$�__getitem__Ds
zCTestCommon.test_robust_getitem.<locals>.UnreliableArray.__getitem__N)r)r9r:r;r?rAr#)r<r#r$�UnreliableArray?s
rBr)ZcatchZ
initial_delay)�	Exception�object�assertRaises�assertEqualr	)r>rBr0�actualr#)r<r$�test_robust_getitem:s
zTestCommon.test_robust_getitemN)r9r:r;rHr#r#r#r$r89sr8c@seZdZdS)�Only32BitTypesN)r9r:r;r#r#r#r$rITsrIc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�DatasetIOTestCasescCst�dS)N)�NotImplementedError)r>r#r#r$�create_storeYszDatasetIOTestCases.create_storecKst�dS)N)rK)r>rr"r#r#r$�	roundtrip\szDatasetIOTestCases.roundtripc
CsTt�}gdddif|d<gtjddd�f|d<|j|��}|j||�WdQRXdS)	Nge��A�unitszunits of awesomeZ	float_var�foobar�S)r+Z
string_var)rr/r0rM�assertDatasetAllClose)r>�expectedrGr#r#r$�test_zero_dimensional_variable_s
z1DatasetIOTestCases.test_zero_dimensional_variablec
Cs>t�}|j��&}|j|�tj|�}|j||�WdQRXdS)N)rrLZ
dump_to_store�xr�	decode_cfrQ)r>rR�storerGr#r#r$�test_write_storefs



z#DatasetIOTestCases.test_write_storec
Cs,t�}|j|��}|j||�WdQRXdS)N)rrMrQ)r>rRrGr#r#r$�test_roundtrip_test_dataosz+DatasetIOTestCases.test_roundtrip_test_datac&s�t��tjd��fdd�	�}�jt��|��}WdQRXWdQRX|��}|j�WdQRX|dddg��}|dj�WdQRX�j���}|j�}WdQRX�j�|�dS)Nc
3s�|dkr�}�j���d}x|jj�D]}�j|j�q$W|Vx*|jj�D]\}}||krJ�j|j�qJW�j�|�WdQRXdS)N)rM�	variables�valuesZassertFalseZ
_in_memory�items�
assertTruerQ)�varsrG�v�k)rRr>r#r$�assert_loadswsz2DatasetIOTestCases.test_load.<locals>.assert_loadsZvar1�dim1�dim2)N)r�
contextlib�contextmanagerrE�AssertionError�loadrMrQ)r>r`�dsrGr#)rRr>r$�	test_loadtszDatasetIOTestCases.test_loadc
CsBtddddgddggfi�}|j|��}|j||�WdQRXdS)Nr,�yrrr5�)r,ri)rrMrQ)r>rRrGr#r#r$�test_roundtrip_None_variable�sz/DatasetIOTestCases.test_roundtrip_None_variablec	Cs8tjdddddgtd�}tjtjtjdddgtd�}tjdddgtd�}tjddtjgtd�}tjtjtjgtd�}td	|fd	|fd
|fd
|fd|fgtjfd��}|jd
d�}t|t�r�|djd�|d<|djd�|d<|j	|��F}y|j
||�Wn.tk
�r(d|dd<|j
||�YnXWdQRXdS)Ngg�?g@g@)r+�ab�cdef�g�a�b�c)�floats�floats_nans�letters�letters_nans�all_nansr1T)�deeprurPrt�rr.)r/r0rDr1r�copy�
isinstancerI�astyperM�assertDatasetIdenticalre)	r>rrrsrtrurv�originalrRrGr#r#r$�test_roundtrip_object_dtype�s*
z.DatasetIOTestCases.test_roundtrip_object_dtypec
CsVtddddgfi�}|j|��.}t|t�r<|djd�|d<|j||�WdQRXdS)Nr,r-rlrmrP)rrMrzrIr{r|)r>rRrGr#r#r$�test_roundtrip_string_data�s

z-DatasetIOTestCases.test_roundtrip_string_datac
Csttjdddg�}td|f|dd��}ddd	d
iii}|j||d��&}|j||�|j|jjd	d
�WdQRXdS)Nz
2000-01-01z
2000-01-02�NaTr-r)r-�t0r3r�rNzdays since 1950-01-01)�save_kwargs)�pdZto_datetimerrMr|ZassertEqualsr�r3)r>�timesrR�kwdsrGr#r#r$�test_roundtrip_datetime_data�sz/DatasetIOTestCases.test_roundtrip_datetime_datac
CsLtjdddg�}td|f|dd��}|j|��}|j||�WdQRXdS)NZ1hZ2hr��tdr)r�Ztd0)r�Zto_timedeltarrMr|)r>Ztime_deltasrRrGr#r#r$�test_roundtrip_timedelta_data�sz0DatasetIOTestCases.test_roundtrip_timedelta_datac
CsHtddtjddtjgdd�fi�}|j|��}|j||�WdQRXdS)Nr,rig�?g@Zfloat64)r+)rr/r0�pirMr|)r>rRrGr#r#r$�test_roundtrip_float64_data�s"z.DatasetIOTestCases.test_roundtrip_float64_datac
Cs.td�}|j|��}|j||�WdQRXdS)Nzexample_1.nc)r%rM�assertDatasetEqual)r>rRrGr#r#r$�test_roundtrip_example_1_netcdf�sz2DatasetIOTestCases.test_roundtrip_example_1_netcdfc,Cs
tddddgfiddgddgfdd	d
gfd��}|j|��}|j||�WdQRX|jd�}|j|��}|j||�WdQRX|j�}d|jd
<|jtd��|j|��WdQRXWdQRX|jdd�}d|djd
<|jtd��|j|��WdQRXWdQRXdS)N�foor,rrr5rjro�*��)r,ri�zzsomething random�coordinateszcannot serializeT)rw)rrMr|�dropry�attrs�assertRaisesRegexp�
ValueError)r>r}rGrRr#r#r$�test_roundtrip_coordinates�s" 

z-DatasetIOTestCases.test_roundtrip_coordinatescCszt�}|j|��`}tjd�tjd�tjd�d�}|jf|�}|jf|�}|j||�|jf|�}|j||�WdQRXdS)Nrjr�r�)rarb�dim3)rrMr/�arange�iselrQ)r>Z	in_memory�on_diskZindexersrRrGr#r#r$�test_orthogonal_indexing�sz+DatasetIOTestCases.test_orthogonal_indexingcCs(td�}tjtj|��}|j||�dS)Nzbears.nc)r%�pickle�loads�dumpsr|)r>r�Z	unpickledr#r#r$�test_pickle�szDatasetIOTestCases.test_pickleN)r9r:r;rLrMrSrWrXrhrkr~rr�r�r�r�r�r�r�r#r#r#r$rJXs 	 		
rJc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�CFEncodedDataTestcCs*tjddtjgtd�}tjd�tjd�d�}tdd|i|fi�}|jd	d
�}|dd�jd�|ddd�<|j	|��}|j
||�WdQRXtdd|id
difi�}t|t�s�|jd	d
�}t|t
�r�d|dd<n2t|ttf�s�to�t|�tk�rtjd�|dd<|j	|��}|j
||�WdQRXdS)Nrlrm)r+�X�S1)r(r+r,r-T)rwr5rPr(�rxrr.r.)r/r0r1rDZstring_r+rryr{rMr|rzrI�BaseNetCDF4Test�NetCDF3ViaNetCDF4DataTest� NetCDF4ClassicViaNetCDF4DataTestr�type�GenericNetCDFDataTest)r>rZr3r}rRrGr#r#r$�&test_roundtrip_strings_with_fill_values$

z8CFEncodedDataTest.test_roundtrip_strings_with_fill_valuec&Cs�t�}t�}|j|��}|j||�WdQRX|j|tdd�d��}|j||�WdQRX|j|tdd�d��}|j||�WdQRX|j|t��|j|��}|j||�WdQRX|j|tdd�d��}|j||�WdQRXdS)NF)rU)�open_kwargs)r4r7rMrQ�dictr|)r>�decoded�encodedrGr#r#r$�test_roundtrip_mask_and_scale sz/CFEncodedDataTest.test_roundtrip_mask_and_scalec.Cs�dd�}tdddgfdddgfd�dddgfdd	d
gfd��}|j|��}|j||�WdQRXt���}|j|�t|dd
��h}|j||djd��|j||djd��|jd|j�|jd|dj�|jd|dj�WdQRXWdQRX|j	ddg�}|j|��}|j||�WdQRXt��`}|j|�t|dd
��>}|j||jd��|jd|dj�|jd|dj�WdQRXWdQRXdS)NcSs|dkp|dkS)Nzlat lonzlon latr#)�objr#r#r$�
equals_latlon5szBCFEncodedDataTest.test_coordinates_encoding.<locals>.equals_latlonr,rr)�temp�precipr5rjr�r�)�lat�lonF)Z
decode_coordsr�r�r�r�r�r.)
rrMr|�create_tmp_file�	to_netcdfrr\r��assertNotInr�)r>r�r}rG�tmp_filerg�modifiedr#r#r$�test_coordinates_encoding4s,
&
z+CFEncodedDataTest.test_coordinates_encodingcCs�ttjdddd�tjdddd�tjdddd�d	tjddtjd�fd
��}|j|��}|j||�WdQRXt|�tkr�d|djd
<|j	t
��|j|��}WdQRXWdQRXdS)Nrjr&z>i2)r+�z<i4�z=i8r,)r,rir��w�bigr�Zendian)rr/r��floatrMr|r��NetCDF4DataTestr3rErK)r>rgrGr#r#r$�test_roundtrip_endianOsz'CFEncodedDataTest.test_roundtrip_endianc	Cs�tdf}tdf}tjjd	�}tj|�}x^tdd
ddg||||g�D]@\}}t||i�}|j|��|j	|��}WdQRXWdQRXqBWdS)Nzstring or Nonezstring must be length 1 orr5rr�r�Trx)r5r5)r�r�)
�	TypeErrorr�r/�randomrT�	DataArray�ziprr�rM)	r>�te�ver�dar �ergrGr#r#r$�"test_invalid_dataarray_names_raisebs
$z4CFEncodedDataTest.test_invalid_dataarray_names_raisec;Cs�tddtjd�fi�}tdddiid�}|j||d��}|j|jjdd�WdQRX|j|jji�tddd	iid�}|jt	d
�� |j||d��}WdQRXWdQRXtddid�}|jt	d�� |j||d��}WdQRXWdQRXtdiid�}|j
t�� |j||d��}WdQRXWdQRXtd
tj
ddd�i�}d}td
d|iid�}|j||d��&}|j|jjd|�|j||�WdQRXdS)Nr,rig$@r+Zf4)r3)r�r��barzunexpected encodingzmust be castable�invalidr-z
2000-01-01rj)�periodszdays since 1900-01-01rN)rr/r�r�rMrFr,r3r�r�rE�KeyErrorr��
date_ranger-r|)r>rgr"rGrNr#r#r$�test_encoding_kwargms.z%CFEncodedDataTest.test_encoding_kwargN)	r9r:r;r�r�r�r�r�r�r#r#r#r$r�sr��.ncccs>tj�}tjj|dtt�|f�}z
|VWdtj|�XdS)Nz	temp-%s%s)	�tempfile�mkdtemprrr�next�_counter�shutil�rmtree)�suffix�temp_dirrr#r#r$r��s

r�c@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)r�c	!Cst����}tj|d��P}|jd�}|}|jddd�tjd�}|jdtjdd�||j	ddd�<WdQRXt�}d|f|d<x8dD]0}t
||d��}|j|d|d�WdQRXq�W|jt
��t
|dd�WdQRX|jtd
��t
|dd�WdQRXWdQRXdS)Nr�r��timer&)�sizer,)�
dimensions�/foo�foo/�/foo/)�groupr�zmust be a stringrr5rj)r�)r�r�r�r�)rr5rj)r��nc4r�createGroup�createDimensionr/r��createVariable�int32rYr�assertVariableEqualrE�IOErrorr�r�)	r>r��rootgrp�foogrprgr,rRr�rGr#r#r$�test_open_group�s"



"zBaseNetCDF4Test.test_open_groupc
Cs�t���}tj|d�}|jd�}|jd�}|}|jddd�tjd�}|jdtjdd�||j	ddd�<|j
�t�}d|f|d<x8dD]0}t||d
��}	|j|	d|d�WdQRXq�WWdQRXdS)Nr�r�r�r�r&)r�r,)r��foo/bar�/foo/bar�foo/bar/�	/foo/bar/)r�)r�)r�r�r�r�)
r�r�rr�r�r/r�r�r�rY�closerr�)
r>r�r�r�Zbargrprgr,rRr�rGr#r#r$�test_open_subgroup�s



z"BaseNetCDF4Test.test_open_subgroupcCs�t�}|d}t��l}|j|dd�|j|ddd�t|dd��}|j||�WdQRXt|dd��}|j||�WdQRXWdQRXdS)Nr5zdata/1)r�zdata/2ro)r��mode)rr�r�rr|)r>Zdata1Zdata2r�Zactual1Zactual2r#r#r$�test_write_groups�sz!BaseNetCDF4Test.test_write_groupscCs�t���}tjdddgdddggdd�}tj|d	d
��>}|jdd�|jd
d�|jdtjd�d�}||dd�<WdQRXtjddgdd�}tdd|fi�}t|��4}|j	||�|j
|��}|j	||�WdQRXWdQRXWdQRXdS)Nrorprq�dr��frP)r+r�)r�r,r5�string3rjr��abc�def)r,r�)r�r/r0r�rr�r�r+rr|rM)r>r�rZ�ncr^rRrG�roundtrippedr#r#r$�test_roundtrip_character_array�s
z.BaseNetCDF4Test.test_roundtrip_character_arraycCsXtdtjddgdd�i�}|j|��*}|j||�|j|djtjd��WdQRXdS)Nr,r�ZzzzzrP)r+ZS4)rr/r0rMr|rFr+)r>rrGr#r#r$�test_default_to_char_arrays�sz+BaseNetCDF4Test.test_default_to_char_arrayscst����}tj|d��X}|jddd�|jdtjdd�d}|jdjd|�tj	d�d|jddd�<WdQRXt��t
jd	dd
�}|tjd�d�}d|i|f�d<t
|��L}|j|d�d�t�fd
d�t|dj�D��}|j|�dj�WdQRXWdQRXdS)Nr�r�r&)r�)r�zdays since 1999-01-01rNr�z
1999-01-05)r�r�)rNr+c3s(|] \}}|�djkr||fVqdS)r�N)r3)�.0r_r^)rRr#r$�	<genexpr>�sz6BaseNetCDF4Test.test_open_encodings.<locals>.<genexpr>)r�)r�r�rr�r�r/r�rY�	setncattrr�r�r�r+rr�r�rr3ZassertDictEqual)r>r�rgrNr�r3rGZactual_encodingr#)rRr$�test_open_encodings�s 
&
z#BaseNetCDF4Test.test_open_encodingsc
CsXtddtjd�fi�}tdddiid�}|j||d��}|j|jjd�WdQRXdS)Nr,rig$@�zlibT)r3)r�)rr/r�r�rMr\r,r3)r>rgr"rGr#r#r$�test_dump_encodingssz#BaseNetCDF4Test.test_dump_encodingsc'Cs�t���}tj|d��X}|jddd�|jdtjd
d�d}|jdjd|�tj	d�d|jddd�<WdQRXt
|��n}t��\}|j|�tj|d	��:}|j|jdj
d�|�|j|jdtj	d�d�WdQRXWdQRXWdQRXWdQRXdS)Nr�r�r&)r�)r�zdays since 1999-01-01rNr��r)r�)r�r�rr�r�r/r�rYr�r�rr�rFZ	getncattr�assertArrayEqual)r>r�rgrNZxarray_datasetZ	tmp_file2r#r#r$�test_dump_and_open_encodings
s&

z,BaseNetCDF4Test.test_dump_and_open_encodingscCs�t�}|djjddd|jjd��|j|��8}x0t|dj�D]\}}|j||dj|�q@WWdQRX|jdd�}|j|��}|j	||�WdQRXdS)N�var2Tr�)rZ
chunksizesZ
fletcher32Zoriginal_shaper)ra)r�r�)
rr3�updater�shaperMrrFr�r�)r>rrGr_r^rRr#r#r$�test_compression_encodings$z)BaseNetCDF4Test.test_compression_encodingcCst����}tj|dd��`}|jdd�|jddddd�|jd}|jd	�d
|_d|_t	j
ddddd
g�|dd�<WdQRXtj|dd��H}t	jj
ddd
ddgddd	d	d	gd�}|jddd�}|j||�WdQRXt
|��}t�}|j||�WdQRXWdQRXdS)Nr�)r�r-r�r,�int16r)Z
fill_valueFr&g�������?rr5rg333333$@gffffff$@T)�mask)r-r.r.r.r.r.)r�r�rr�r�rYZset_auto_maskandscaler)r*r/r0�marrr4r|)r>r�r�r^rRrGrgr#r#r$�test_mask_and_scale,s"


&
z#BaseNetCDF4Test.test_mask_and_scalecCstt��d}tj|dd��}|jdd�}d|d<WdQRXt|��"}tdfdfi�}|j||�WdQRXWdQRXdS)Nr�)r�r,r
�{.)r�r�rr�rr|)r>r�r�r^rgrRr#r#r$�test_0dimensional_variableCs
z*BaseNetCDF4Test.test_0dimensional_variablecCs�t���}tjdddgtd�}tj|dd��,}|jdd�|jdtd�}||dd�<WdQRXtdd|fi�}x8id	d
igD](}t	|f|��}|j
||�WdQRXqzWWdQRXdS)Nr�r�Zbaz)r+r�)r�r,rjrUT)r,)r�r/r0rDr�rr�r��strrr|)r>r�rZr�r^rRr"rGr#r#r$�test_variable_len_stringsOsz)BaseNetCDF4Test.test_variable_len_stringsN)r9r:r;r�r�r�r�r�rrrr	r
rrr#r#r#r$r��sr�c@s>eZdZejdd��Zejiifdd��Zdd�Zdd�Zd	S)
r�ccs6t��&}tj|dd��}|VWdQRXWdQRXdS)Nr�)r�)r�r�NetCDF4DataStore)r>r�rVr#r#r$rL`szNetCDF4DataTest.create_storeccsBt��2}|j|f|�t|f|��}|VWdQRXWdQRXdS)N)r�r�r)r>rr�r�r�rgr#r#r$rMfszNetCDF4DataTest.roundtripcCsVt�}d|d<d|d<d|d<d|jd<|j|��}|jt|�t|��WdQRXdS)	Nrror5r�rjrpr�rq)r�coordsrMrF�list)r>rgrGr#r#r$�test_variable_orderms
z#NetCDF4DataTest.test_variable_orderc
Cs�tjjdd�}ddddg}ddddddg}tj|d||d�dd
�}|j�}|j|��`}tj|�}|j|d�}yt|j	j
�Wn2tk
r�}	z|jdt
|	��WYdd}	~	XnXWdQRXdS)Nr��)r�rrr5rjr��dim0ra)rra�randovar)rZdimsrr )razfirst by calling .load)r�r)rra)r/r�rTr�Z
to_datasetrMZargsortr��printrrZ�
IndexError�assertInr)
r>Zrandom_datarrar�rgZondiskZindsZds2�errr#r#r$�test_unsorted_index_raisesxs
z*NetCDF4DataTest.test_unsorted_index_raisesN)	r9r:r;rcrdrLrMrrr#r#r#r$r�^s
r�c@s(eZdZejiifdd��Zdd�ZdS)�NetCDF4ViaDaskDataTestc	cs*tj||||��}|j�VWdQRXdS)N)r�rM�chunk)r>rr�r�rgr#r#r$rM�sz NetCDF4ViaDaskDataTest.roundtripcCsdS)Nr#)r>r#r#r$r�sz1NetCDF4ViaDaskDataTest.test_unsorted_index_raisesN)r9r:r;rcrdrMrr#r#r#r$r�src@s.eZdZejdd��Zejiifdd��ZdS)�ScipyInMemoryDataTestccst�}tj|d�VdS)Nr�)rr�ScipyDataStore)r>�fobjr#r#r$rL�sz"ScipyInMemoryDataTest.create_storec	cs2|jf|�}tt|�f|��}|VWdQRXdS)N)r�rr)r>rr�r�Z
serializedrgr#r#r$rM�szScipyInMemoryDataTest.roundtripN)r9r:r;rcrdrLrMr#r#r#r$r �sr c@sFeZdZejdd��Zejiifdd��Zdd�Zdd�Zd	d
�Z	dS)�ScipyOnDiskDataTestccs6t��&}tj|dd��}|VWdQRXWdQRXdS)Nr�)r�)r�rr!)r>r�rVr#r#r$rL�sz ScipyOnDiskDataTest.create_storeccsRt��B}|j|fddi|��t|fddi|���}|VWdQRXWdQRXdS)N�engine�scipy)r�r�r)r>rr�r�r�rgr#r#r$rM�szScipyOnDiskDataTest.roundtripcCsLtdddgddggid�}|jtd��|j|��}WdQRXWdQRXdS)Nr�rr5rjr�)r�zmust be 1-dimensional)rr�r�rM)r>rgr�r#r#r$�test_array_attrs�sz$ScipyOnDiskDataTest.test_array_attrscCsltjdd�dkr4|jtd��td�WdQRXn4td��&}td��}|j||�WdQRXWdQRXdS)Nr5�zgzipped netCDF not supportedzexample_1.nc.gzzexample_1.nc)r5r')�sys�version_infor�r�r%r|)r>rRrGr#r#r$�"test_roundtrip_example_1_netcdf_gz�s

z6ScipyOnDiskDataTest.test_roundtrip_example_1_netcdf_gzcCs0tddd�}x|j�D]}|j|jj�qWdS)Nzbears.ncr%)r$)r%rZr\r+Zisnative)r>rR�varr#r#r$�test_netcdf3_endianness�sz+ScipyOnDiskDataTest.test_netcdf3_endiannessN)
r9r:r;rcrdrLrMr&r*r,r#r#r#r$r#�s
r#c@s.eZdZejdd��Zejiifdd��ZdS)r�ccs8t��(}tj|ddd��}|VWdQRXWdQRXdS)Nr��NETCDF3_CLASSIC)r��format)r�rr)r>r�rVr#r#r$rL�s
z&NetCDF3ViaNetCDF4DataTest.create_storeccsTt��D}|j|fddd�|��t|fddi|���}|VWdQRXWdQRXdS)Nr-�netcdf4)r.r$r$)r�r�r)r>rr�r�r�rgr#r#r$rM�s

z#NetCDF3ViaNetCDF4DataTest.roundtripN)r9r:r;rcrdrLrMr#r#r#r$r��sr�c@s.eZdZejdd��Zejiifdd��ZdS)r�ccs8t��(}tj|ddd��}|VWdQRXWdQRXdS)Nr��NETCDF4_CLASSIC)r�r.)r�rr)r>r�rVr#r#r$rL�s
z-NetCDF4ClassicViaNetCDF4DataTest.create_storeccsTt��D}|j|fddd�|��t|fddi|���}|VWdQRXWdQRXdS)Nr0r/)r.r$r$)r�r�r)r>rr�r�r�rgr#r#r$rM�s

z*NetCDF4ClassicViaNetCDF4DataTest.roundtripN)r9r:r;rcrdrLrMr#r#r#r$r��sr�c@s8eZdZdd�Zejiifdd��Zdd�Zdd�Zd	S)
r�cCsdS)Nr#)r>r#r#r$rW�sz&GenericNetCDFDataTest.test_write_storeccsJt��:}|j|fddi|��t|f|��}|VWdQRXWdQRXdS)Nr.Z
netcdf3_64bit)r�r�r)r>rr�r�r�rgr#r#r$rM�szGenericNetCDFDataTest.roundtripc'Cs�t�}|jtd��|jddd�WdQRX|jtd��|jdd�WdQRXt��4}|j|�|jtd��t|dd�WdQRXWdQRX|j�}|jtd��tt|�dd�WdQRXdS)Nzunrecognized enginezfoo.ncrO)r$zinvalid enginer/z
can only read)rr�r�r�r�rr)r>rr�Znetcdf_bytesr#r#r$�test_engines
 z!GenericNetCDFDataTest.test_enginecCs�t�}t�}tr|jd�tr(|jd�xn|D]f}x`dD]X}t��H}|j|||d�x0|D](}t||d��}|j||�WdQRXqZWWdQRXq8Wq.WdS)Nr/r%r-�
NETCDF3_64BIT)r.r$)r$)r-r2)	r�setr�addrr�r�rrQ)r>r�
valid_engines�write_enginer.r��read_enginerGr#r#r$�$test_cross_engine_read_write_netcdf3s





z:GenericNetCDFDataTest.test_cross_engine_read_write_netcdf3N)	r9r:r;rWrcrdrMr1r8r#r#r#r$r��s
r�c@sNeZdZejdd��Zejiifdd��Zdd�Zdd�Zd	d
�Z	dd�Z
d
S)�H5NetCDFDataTestc
cs$t��}tj|d�VWdQRXdS)Nr�)r�rZ
H5NetCDFStore)r>r�r#r#r$rL'szH5NetCDFDataTest.create_storeccsRt��B}|j|fddi|��t|fddi|���}|VWdQRXWdQRXdS)Nr$�h5netcdf)r�r�r)r>rr�r�r�rgr#r#r$rM,szH5NetCDFDataTest.roundtripcCsdS)Nr#)r>r#r#r$r�3sz)H5NetCDFDataTest.test_orthogonal_indexingc
CsJtddtjd�dtjd�fi�}|j|��}|j||�WdQRXdS)Nr,rir�y�?)rr/ZonesrMr�)r>rRrGr#r#r$�test_complex7s$zH5NetCDFDataTest.test_complexcCs�trtjd��t�jd�}d|jd<ddg}x^|D]V}t��F}|j||d�x0|D](}t||d��}|j	||�WdQRXqRWWdQRXq2WdS)Nz/see https://github.com/pydata/xarray/issues/535r�r�r�r/r:)r$)
r
�unittestZSkipTestrr�r�r�r�rr|)r>rr5r6r�r7rGr#r#r$�$test_cross_engine_read_write_netcdf4<s



z5H5NetCDFDataTest.test_cross_engine_read_write_netcdf4cCsVt��F}tj|d��}d|_WdQRXt|�}tddid�}|j||�WdQRXdS)Nr�sbarr�r�)r�)r�r�rr�rr|)r>r�r�rGrRr#r#r$�test_read_byte_attrs_as_unicodeMsz0H5NetCDFDataTest.test_read_byte_attrs_as_unicodeN)r9r:r;rcrdrLrMr�r;r=r>r#r#r#r$r9$sr9c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�DaskTestc%Cstddtjjd�fi�}t���}t���}|jtd�d�j|�|jtdd�d�j|�t||g��:}|j	|j
jjt
j�|j|j
jjjd�|j||�WdQRXt||gddid��}|j|j
jjjd�WdQRXWdQRXWdQRX|jtd	��td
�WdQRXdS)Nr�r,r&r�)r,rj)�chunksr5zno files to openzfoo-bar-baz-*.nc�r�r�)rA�rjr5rjr5)rB)rr/r��randnr�r��slicer�r�assertIsInstancer��variablerr��ArrayrFr@rQr�r�)r>r}�tmp1�tmp2rGr#r#r$�test_open_mfdatasetZs$zDaskTest.test_open_mfdatasetcCsltddtjjd�fi�}t��D}|j|�dd�}||�}t||d��}|j||�WdQRXWdQRXdS)Nr�r,r&cSs|jdd�S)Nr)r�)Z
assign_coords)rgr#r#r$�
preprocessqsz6DaskTest.test_preprocess_mfdataset.<locals>.preprocess)rK)rr/r�rCr�r�rr|)r>r}�tmprKrRrGr#r#r$�test_preprocess_mfdatasetls
z"DaskTest.test_preprocess_mfdatasetc Cs
tddtjjd�fi�}t���}|j|dd�t|dd��4}|jjj	|jjj
df}|j|dtt
���WdQRXt|��4}|jjj	|jjj
df}|j|dtt
���WdQRXt|d	d
��4}|jjj	|jjj
df}|j|d
tt
���WdQRXWdQRXdS)Nr�r,r&r-)r.)r@rrr%)r$r.r.r.)rr/r�rCr�r�rr�r�daskr rEr�rrZassertNotIsInstance)r>r}rLrgZtaskr#r#r$�	test_lockxs 
 zDaskTest.test_lockcCs�tddtjjd�fi�}|jtd�d�|jtdd�d�g}t��J}t��8}t|||g�t||g��}|j	||�WdQRXWdQRXWdQRXdS)Nr�r,r&r�)r,)
rr/r�rCr�rDr�rrr|)r>r}ZdatasetsrHrIrGr#r#r$�test_save_mfdataset_roundtrip�sz&DaskTest.test_save_mfdataset_roundtripcCs\t�}|jtd��t||gddg�WdQRX|jtd��t||gdg�WdQRXdS)Nzcannot use modeZsamezsame lengthz
only one path)rr�r�r)r>rgr#r#r$�test_save_mfdataset_invalid�s
z$DaskTest.test_save_mfdataset_invalidcCs`tddtjjd�fi�}t��8}|j|�t|��}d|}|j||�WdQRXWdQRXdS)Nr�r,r&g�?)rr/r�rCr�r�rrQ)r>r}rLrgrGr#r#r$�test_open_and_do_math�s

zDaskTest.test_open_and_do_mathcCs�tddtjjd�fi�}t���}|j|�t|ddid��:}|j|jj	j
tj�|j
|jj	j
jd�|j||�WdQRXt|dd��}|j||�WdQRXt|��&}|j|jj	j
tj�|j||�WdQRXWdQRXdS)Nr�r,r&r�)r@�r�r�)rS)rr/r�rCr�r�rrEr�rFrr�rGrFr@r|Zndarray)r>r}rLrGr#r#r$�test_open_dataset�s

zDaskTest.test_open_datasetcCs�t���}t�}|j|�ddddd�}t||d��N}|j||�t��0}|j|�t|��}|j||�WdQRXWdQRXWdQRXWdQRXdS)Nr�r&)rarbr�r�)r@)r�rr�rr|)r>rLrr@Zdask_dsrIr�r#r#r$�test_dask_roundtrip�s


zDaskTest.test_dask_roundtripcCs�t���}t�}|j|�t|��}tdd�|j�D��}WdQRXt|��}tdd�|j�D��}WdQRXx,|j�D] \}}|j||�|j||�qvW|j||�WdQRXdS)Ncss|]\}}||jjfVqdS)N)rr )r�r_r^r#r#r$r��sz4DaskTest.test_deterministic_names.<locals>.<genexpr>css|]\}}||jjfVqdS)N)rr )r�r_r^r#r#r$r��s)r�rr�rr�r[rrF)r>rLrrg�original_namesZrepeat_names�var_nameZ	dask_namer#r#r$�test_deterministic_names�s

 
 z!DaskTest.test_deterministic_namesN)r9r:r;rJrMrOrPrQrRrTrUrXr#r#r#r$r?Vs
r?c@s.eZdZejdd��Zdd�Zedd��ZdS)�	PydapTestc	ksNd}t|fddi|��}td��$}|jd�}|jd�}||fVWdQRXdS)Nz6http://test.opendap.org/opendap/hyrax/data/nc/bears.ncr$Zpydapzbears.ncZbears)rr%r�)r>r"�urlrGrRr#r#r$�create_datasets�s


zPydapTest.create_datasetsc"Cs�|j��2\}}|j||�|jd|j�|jd|j�WdQRX|j��&\}}|j|jdd�|jdd��WdQRX|j��*\}}|j|jdd	d�|jdd
d��WdQRX|j��2\}}|j|jtdd�d�|jtdd�d��WdQRXdS)NZ	NC_GLOBAL�historyr5)�lrr)�i�j)r_r.r.)r[r�r�r�rr�rD)r>rGrRr#r#r$�test_cmp_local_file�s&zPydapTest.test_cmp_local_filec
Cs0|jddid��\}}|j||�WdQRXdS)Nr_r5)r@)r[r�)r>rGrRr#r#r$�	test_dask�szPydapTest.test_daskN)	r9r:r;rcrdr[r`rrar#r#r#r$rY�srYc@s8eZdZdd�Zdd�Zejiifdd��Zdd�Zd	S)
�	TestPyNiocCsdS)Nr#)r>r#r#r$rW�szTestPyNio.test_write_storecCsdS)Nr#)r>r#r#r$r��sz"TestPyNio.test_orthogonal_indexingccsRt��B}|j|fddi|��t|fddi|���}|VWdQRXWdQRXdS)Nr$r%�pynio)r�r�r)r>rr�r�r�rgr#r#r$rM�szTestPyNio.roundtripcCsttddtjd�fi�}|jddd��}t��>}|j|dd�t|d	d�}|jddd��}~|j||�WdQRXdS)
Nr�r,g@r�ri)r�r,r%)r$rc)rr/r��renamer�r�rr|)r>ZexamplerRr�r�rGr#r#r$�
test_weakrefsszTestPyNio.test_weakrefsN)	r9r:r;rWr�rcrdrMrer#r#r#r$rb�s
rbc@seZdZdd�Zdd�ZdS)�TestEncodingInvalidcCsptjddddgiddi�}|jtd��t|dd	�WdQRXtjddddgid
d
i�}t|�}|ji|�dS)Nr,rr5rjr�r�zunexpected encodingT)�raise_on_invalidZchunking)r,)r,)r5r)rT�Variabler�r�r
rF)r>r+r3r#r#r$�test_extract_nc4_encodingsz-TestEncodingInvalid.test_extract_nc4_encodingcCsBtjd	dddgiddi�}|jtd��t|dd�WdQRXdS)
Nr,rr5rjZleast_sigificant_digitzunexpected encodingT)rg)r,)rTrhr�r�r
)r>r+r#r#r$�test_extract_h5nc_encodings
z.TestEncodingInvalid.test_extract_h5nc_encodingN)r9r:r;rirjr#r#r#r$rf
s	rf)r�)N�ior�	threadingrrc�	itertools�os.pathrr�r�r�r<r(Znumpyr/Zpandasr�ZxarrayrTrrrrrZxarray.backends.commonr	Zxarray.backends.netCDF4_r
Zxarray.backends.h5netcdf_rZxarray.core.pycompatrr
rxrrrrrrrrrrZtest_datasetrZnetCDF4r��ImportErrorrNZ
dask.arrayr0r�r%r4r7r8rDrIrJr��countr�rdr�r�r�rr r#r�r�r�r9r?rYrbrfr#r#r#r$�<module>s�0-	G
+


%20n
&